Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(260)

Side by Side Diff: ios/web/navigation/session_storage_builder.mm

Issue 2766063002: Remove the concept of currentItemIndex (Closed)
Patch Set: fix unit tests Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "ios/web/navigation/session_storage_builder.h" 5 #import "ios/web/navigation/session_storage_builder.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/mac/foundation_util.h" 8 #include "base/mac/foundation_util.h"
9 #import "ios/web/navigation/crw_session_controller+private_constructors.h" 9 #import "ios/web/navigation/crw_session_controller+private_constructors.h"
10 #import "ios/web/navigation/crw_session_controller.h" 10 #import "ios/web/navigation/crw_session_controller.h"
11 #import "ios/web/navigation/navigation_item_impl.h" 11 #import "ios/web/navigation/navigation_item_impl.h"
12 #import "ios/web/navigation/navigation_item_storage_builder.h" 12 #import "ios/web/navigation/navigation_item_storage_builder.h"
13 #include "ios/web/navigation/navigation_manager_impl.h" 13 #include "ios/web/navigation/navigation_manager_impl.h"
14 #import "ios/web/public/crw_session_storage.h" 14 #import "ios/web/public/crw_session_storage.h"
15 #import "ios/web/public/serializable_user_data_manager.h" 15 #import "ios/web/public/serializable_user_data_manager.h"
16 #import "ios/web/web_state/web_state_impl.h" 16 #import "ios/web/web_state/web_state_impl.h"
17 17
18 // CRWSessionController's readonly properties redefined as readwrite. These 18 // CRWSessionController's readonly properties redefined as readwrite. These
19 // will be removed and NavigationManagerImpl's ivars will be written directly 19 // will be removed and NavigationManagerImpl's ivars will be written directly
20 // as this functionality moves from CRWSessionController to 20 // as this functionality moves from CRWSessionController to
21 // NavigationManagerImpl; 21 // NavigationManagerImpl;
22 @interface CRWSessionController (ExposedForSerialization) 22 @interface CRWSessionController (ExposedForSerialization)
23 @property(nonatomic, readwrite, assign) NSInteger previousNavigationIndex; 23 @property(nonatomic, readwrite, assign) NSInteger previousItemIndex;
24 @property(nonatomic, readwrite, retain) 24 @property(nonatomic, readwrite, retain)
25 CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager; 25 CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager;
26 @end 26 @end
27 27
28 namespace web { 28 namespace web {
29 29
30 CRWSessionStorage* SessionStorageBuilder::BuildStorage( 30 CRWSessionStorage* SessionStorageBuilder::BuildStorage(
31 WebStateImpl* web_state) const { 31 WebStateImpl* web_state) const {
32 DCHECK(web_state); 32 DCHECK(web_state);
33 web::NavigationManagerImpl* navigation_manager = 33 web::NavigationManagerImpl* navigation_manager =
34 web_state->navigation_manager_.get(); 34 web_state->navigation_manager_.get();
35 DCHECK(navigation_manager); 35 DCHECK(navigation_manager);
36 CRWSessionStorage* session_storage = [[CRWSessionStorage alloc] init]; 36 CRWSessionStorage* session_storage = [[CRWSessionStorage alloc] init];
37 session_storage.hasOpener = web_state->HasOpener(); 37 session_storage.hasOpener = web_state->HasOpener();
38 CRWSessionController* session_controller = 38 CRWSessionController* session_controller =
39 navigation_manager->GetSessionController(); 39 navigation_manager->GetSessionController();
40 session_storage.currentNavigationIndex = 40 session_storage.lastCommittedItemIndex =
41 session_controller.currentNavigationIndex; 41 session_controller.lastCommittedItemIndex;
42 session_storage.previousNavigationIndex = 42 session_storage.previousItemIndex = session_controller.previousItemIndex;
43 session_controller.previousNavigationIndex;
44 session_storage.sessionCertificatePolicyManager = 43 session_storage.sessionCertificatePolicyManager =
45 session_controller.sessionCertificatePolicyManager; 44 session_controller.sessionCertificatePolicyManager;
46 NSMutableArray* item_storages = [[NSMutableArray alloc] init]; 45 NSMutableArray* item_storages = [[NSMutableArray alloc] init];
47 NavigationItemStorageBuilder item_storage_builder; 46 NavigationItemStorageBuilder item_storage_builder;
48 for (size_t index = 0; index < session_controller.items.size(); ++index) { 47 for (size_t index = 0; index < session_controller.items.size(); ++index) {
49 web::NavigationItemImpl* item = session_controller.items[index].get(); 48 web::NavigationItemImpl* item = session_controller.items[index].get();
50 [item_storages addObject:item_storage_builder.BuildStorage(item)]; 49 [item_storages addObject:item_storage_builder.BuildStorage(item)];
51 } 50 }
52 session_storage.itemStorages = item_storages; 51 session_storage.itemStorages = item_storages;
53 web::SerializableUserDataManager* user_data_manager = 52 web::SerializableUserDataManager* user_data_manager =
(...skipping 10 matching lines...) Expand all
64 DCHECK(storage); 63 DCHECK(storage);
65 web_state->created_with_opener_ = storage.hasOpener; 64 web_state->created_with_opener_ = storage.hasOpener;
66 NSArray* item_storages = storage.itemStorages; 65 NSArray* item_storages = storage.itemStorages;
67 web::ScopedNavigationItemList items(item_storages.count); 66 web::ScopedNavigationItemList items(item_storages.count);
68 NavigationItemStorageBuilder item_storage_builder; 67 NavigationItemStorageBuilder item_storage_builder;
69 for (size_t index = 0; index < item_storages.count; ++index) { 68 for (size_t index = 0; index < item_storages.count; ++index) {
70 std::unique_ptr<NavigationItemImpl> item_impl = 69 std::unique_ptr<NavigationItemImpl> item_impl =
71 item_storage_builder.BuildNavigationItemImpl(item_storages[index]); 70 item_storage_builder.BuildNavigationItemImpl(item_storages[index]);
72 items[index] = std::move(item_impl); 71 items[index] = std::move(item_impl);
73 } 72 }
74 NSUInteger current_index = storage.currentNavigationIndex; 73 NSUInteger last_committed_item_index = storage.lastCommittedItemIndex;
75 base::scoped_nsobject<CRWSessionController> session_controller( 74 base::scoped_nsobject<CRWSessionController> session_controller(
76 [[CRWSessionController alloc] initWithBrowserState:nullptr 75 [[CRWSessionController alloc]
77 navigationItems:std::move(items) 76 initWithBrowserState:nullptr
78 currentIndex:current_index]); 77 navigationItems:std::move(items)
79 [session_controller 78 lastCommittedItemIndex:last_committed_item_index]);
80 setPreviousNavigationIndex:storage.previousNavigationIndex]; 79 [session_controller setPreviousItemIndex:storage.previousItemIndex];
81 [session_controller 80 [session_controller
82 setSessionCertificatePolicyManager:storage 81 setSessionCertificatePolicyManager:storage
83 .sessionCertificatePolicyManager]; 82 .sessionCertificatePolicyManager];
84 web_state->navigation_manager_.reset(new NavigationManagerImpl()); 83 web_state->navigation_manager_.reset(new NavigationManagerImpl());
85 web_state->navigation_manager_->SetSessionController(session_controller); 84 web_state->navigation_manager_->SetSessionController(session_controller);
86 web::SerializableUserDataManager::FromWebState(web_state) 85 web::SerializableUserDataManager::FromWebState(web_state)
87 ->AddSerializableUserData(storage.userData); 86 ->AddSerializableUserData(storage.userData);
88 } 87 }
89 88
90 } // namespace web 89 } // namespace web
OLDNEW
« no previous file with comments | « ios/web/navigation/navigation_manager_impl_unittest.mm ('k') | ios/web/net/crw_ssl_status_updater_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698