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

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

Issue 2944093002: Extract NavigationManagerImpl interface for navigation experiment. (Closed)
Patch Set: Patch for landing Created 3 years, 6 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 <memory> 7 #include <memory>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/mac/foundation_util.h" 10 #include "base/mac/foundation_util.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #import "ios/web/navigation/crw_session_controller+private_constructors.h" 12 #import "ios/web/navigation/crw_session_controller+private_constructors.h"
13 #import "ios/web/navigation/crw_session_controller.h" 13 #import "ios/web/navigation/crw_session_controller.h"
14 #import "ios/web/navigation/legacy_navigation_manager_impl.h"
14 #import "ios/web/navigation/navigation_item_impl.h" 15 #import "ios/web/navigation/navigation_item_impl.h"
15 #import "ios/web/navigation/navigation_item_storage_builder.h" 16 #import "ios/web/navigation/navigation_item_storage_builder.h"
16 #include "ios/web/navigation/navigation_manager_impl.h" 17 #include "ios/web/navigation/navigation_manager_impl.h"
17 #import "ios/web/public/crw_session_storage.h" 18 #import "ios/web/public/crw_session_storage.h"
18 #import "ios/web/public/serializable_user_data_manager.h" 19 #import "ios/web/public/serializable_user_data_manager.h"
19 #import "ios/web/web_state/session_certificate_policy_cache_impl.h" 20 #import "ios/web/web_state/session_certificate_policy_cache_impl.h"
20 #include "ios/web/web_state/session_certificate_policy_cache_storage_builder.h" 21 #include "ios/web/web_state/session_certificate_policy_cache_storage_builder.h"
21 #import "ios/web/web_state/web_state_impl.h" 22 #import "ios/web/web_state/web_state_impl.h"
22 23
23 #if !defined(__has_feature) || !__has_feature(objc_arc) 24 #if !defined(__has_feature) || !__has_feature(objc_arc)
(...skipping 11 matching lines...) Expand all
35 namespace web { 36 namespace web {
36 37
37 CRWSessionStorage* SessionStorageBuilder::BuildStorage( 38 CRWSessionStorage* SessionStorageBuilder::BuildStorage(
38 WebStateImpl* web_state) const { 39 WebStateImpl* web_state) const {
39 DCHECK(web_state); 40 DCHECK(web_state);
40 web::NavigationManagerImpl* navigation_manager = 41 web::NavigationManagerImpl* navigation_manager =
41 web_state->navigation_manager_.get(); 42 web_state->navigation_manager_.get();
42 DCHECK(navigation_manager); 43 DCHECK(navigation_manager);
43 CRWSessionStorage* session_storage = [[CRWSessionStorage alloc] init]; 44 CRWSessionStorage* session_storage = [[CRWSessionStorage alloc] init];
44 session_storage.hasOpener = web_state->HasOpener(); 45 session_storage.hasOpener = web_state->HasOpener();
45 CRWSessionController* session_controller =
46 navigation_manager->GetSessionController();
47 session_storage.lastCommittedItemIndex = 46 session_storage.lastCommittedItemIndex =
48 session_controller.lastCommittedItemIndex; 47 navigation_manager->GetLastCommittedItemIndex();
49 session_storage.previousItemIndex = session_controller.previousItemIndex; 48 session_storage.previousItemIndex =
49 static_cast<NSInteger>(navigation_manager->GetPreviousItemIndex());
50 NSMutableArray* item_storages = [[NSMutableArray alloc] init]; 50 NSMutableArray* item_storages = [[NSMutableArray alloc] init];
51 NavigationItemStorageBuilder item_storage_builder; 51 NavigationItemStorageBuilder item_storage_builder;
52 for (size_t index = 0; index < session_controller.items.size(); ++index) { 52 for (size_t index = 0;
53 web::NavigationItemImpl* item = session_controller.items[index].get(); 53 index < static_cast<size_t>(navigation_manager->GetItemCount());
54 ++index) {
55 web::NavigationItemImpl* item =
56 navigation_manager->GetNavigationItemImplAtIndex(index);
57 ;
54 [item_storages addObject:item_storage_builder.BuildStorage(item)]; 58 [item_storages addObject:item_storage_builder.BuildStorage(item)];
55 } 59 }
56 session_storage.itemStorages = item_storages; 60 session_storage.itemStorages = item_storages;
57 SessionCertificatePolicyCacheStorageBuilder cert_builder; 61 SessionCertificatePolicyCacheStorageBuilder cert_builder;
58 session_storage.certPolicyCacheStorage = cert_builder.BuildStorage( 62 session_storage.certPolicyCacheStorage = cert_builder.BuildStorage(
59 &web_state->GetSessionCertificatePolicyCacheImpl()); 63 &web_state->GetSessionCertificatePolicyCacheImpl());
60 web::SerializableUserDataManager* user_data_manager = 64 web::SerializableUserDataManager* user_data_manager =
61 web::SerializableUserDataManager::FromWebState(web_state); 65 web::SerializableUserDataManager::FromWebState(web_state);
62 [session_storage 66 [session_storage
63 setSerializableUserData:user_data_manager->CreateSerializableUserData()]; 67 setSerializableUserData:user_data_manager->CreateSerializableUserData()];
(...skipping 14 matching lines...) Expand all
78 item_storage_builder.BuildNavigationItemImpl(item_storages[index]); 82 item_storage_builder.BuildNavigationItemImpl(item_storages[index]);
79 items[index] = std::move(item_impl); 83 items[index] = std::move(item_impl);
80 } 84 }
81 NSUInteger last_committed_item_index = storage.lastCommittedItemIndex; 85 NSUInteger last_committed_item_index = storage.lastCommittedItemIndex;
82 base::scoped_nsobject<CRWSessionController> session_controller( 86 base::scoped_nsobject<CRWSessionController> session_controller(
83 [[CRWSessionController alloc] 87 [[CRWSessionController alloc]
84 initWithBrowserState:nullptr 88 initWithBrowserState:nullptr
85 navigationItems:std::move(items) 89 navigationItems:std::move(items)
86 lastCommittedItemIndex:last_committed_item_index]); 90 lastCommittedItemIndex:last_committed_item_index]);
87 [session_controller setPreviousItemIndex:storage.previousItemIndex]; 91 [session_controller setPreviousItemIndex:storage.previousItemIndex];
88 web_state->navigation_manager_.reset(new NavigationManagerImpl()); 92
89 web_state->navigation_manager_->SetSessionController(session_controller); 93 auto navigation_manager = base::MakeUnique<LegacyNavigationManagerImpl>();
94 navigation_manager->SetSessionController(session_controller);
95 web_state->navigation_manager_.reset(navigation_manager.release());
96
90 SessionCertificatePolicyCacheStorageBuilder cert_builder; 97 SessionCertificatePolicyCacheStorageBuilder cert_builder;
91 std::unique_ptr<SessionCertificatePolicyCacheImpl> cert_policy_cache = 98 std::unique_ptr<SessionCertificatePolicyCacheImpl> cert_policy_cache =
92 cert_builder.BuildSessionCertificatePolicyCache( 99 cert_builder.BuildSessionCertificatePolicyCache(
93 storage.certPolicyCacheStorage); 100 storage.certPolicyCacheStorage);
94 if (!cert_policy_cache) 101 if (!cert_policy_cache)
95 cert_policy_cache = base::MakeUnique<SessionCertificatePolicyCacheImpl>(); 102 cert_policy_cache = base::MakeUnique<SessionCertificatePolicyCacheImpl>();
96 web_state->certificate_policy_cache_ = std::move(cert_policy_cache); 103 web_state->certificate_policy_cache_ = std::move(cert_policy_cache);
97 web::SerializableUserDataManager::FromWebState(web_state) 104 web::SerializableUserDataManager::FromWebState(web_state)
98 ->AddSerializableUserData(storage.userData); 105 ->AddSerializableUserData(storage.userData);
99 } 106 }
100 107
101 } // namespace web 108 } // namespace web
OLDNEW
« no previous file with comments | « ios/web/navigation/navigation_manager_util_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