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

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

Issue 2755823002: Moved |openedByDOM| to WebState's CreateParams and public interface. (Closed)
Patch Set: . 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, getter=isOpenedByDOM) BOOL openedByDOM;
24 @property(nonatomic, readwrite, assign) NSInteger previousNavigationIndex; 23 @property(nonatomic, readwrite, assign) NSInteger previousNavigationIndex;
25 @property(nonatomic, readwrite, retain) 24 @property(nonatomic, readwrite, retain)
26 CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager; 25 CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager;
27 @end 26 @end
28 27
29 namespace web { 28 namespace web {
30 29
31 CRWSessionStorage* SessionStorageBuilder::BuildStorage( 30 CRWSessionStorage* SessionStorageBuilder::BuildStorage(
32 WebStateImpl* web_state) const { 31 WebStateImpl* web_state) const {
33 DCHECK(web_state); 32 DCHECK(web_state);
34 web::NavigationManagerImpl* navigation_manager = 33 web::NavigationManagerImpl* navigation_manager =
35 web_state->navigation_manager_.get(); 34 web_state->navigation_manager_.get();
36 DCHECK(navigation_manager); 35 DCHECK(navigation_manager);
37 CRWSessionStorage* serialized_navigation_manager = 36 CRWSessionStorage* session_storage = [[CRWSessionStorage alloc] init];
38 [[CRWSessionStorage alloc] init]; 37 session_storage.hasOpener = web_state->HasOpener();
39 CRWSessionController* session_controller = 38 CRWSessionController* session_controller =
40 navigation_manager->GetSessionController(); 39 navigation_manager->GetSessionController();
41 serialized_navigation_manager.openedByDOM = session_controller.openedByDOM; 40 session_storage.currentNavigationIndex =
42 serialized_navigation_manager.currentNavigationIndex =
43 session_controller.currentNavigationIndex; 41 session_controller.currentNavigationIndex;
44 serialized_navigation_manager.previousNavigationIndex = 42 session_storage.previousNavigationIndex =
45 session_controller.previousNavigationIndex; 43 session_controller.previousNavigationIndex;
46 serialized_navigation_manager.sessionCertificatePolicyManager = 44 session_storage.sessionCertificatePolicyManager =
47 session_controller.sessionCertificatePolicyManager; 45 session_controller.sessionCertificatePolicyManager;
48 NSMutableArray* item_storages = [[NSMutableArray alloc] init]; 46 NSMutableArray* item_storages = [[NSMutableArray alloc] init];
49 NavigationItemStorageBuilder item_storage_builder; 47 NavigationItemStorageBuilder item_storage_builder;
50 for (size_t index = 0; index < session_controller.items.size(); ++index) { 48 for (size_t index = 0; index < session_controller.items.size(); ++index) {
51 web::NavigationItemImpl* item = session_controller.items[index].get(); 49 web::NavigationItemImpl* item = session_controller.items[index].get();
52 [item_storages addObject:item_storage_builder.BuildStorage(item)]; 50 [item_storages addObject:item_storage_builder.BuildStorage(item)];
53 } 51 }
54 serialized_navigation_manager.itemStorages = item_storages; 52 session_storage.itemStorages = item_storages;
55 web::SerializableUserDataManager* user_data_manager = 53 web::SerializableUserDataManager* user_data_manager =
56 web::SerializableUserDataManager::FromWebState(web_state); 54 web::SerializableUserDataManager::FromWebState(web_state);
57 [serialized_navigation_manager 55 [session_storage
58 setSerializableUserData:user_data_manager->CreateSerializableUserData()]; 56 setSerializableUserData:user_data_manager->CreateSerializableUserData()];
59 return serialized_navigation_manager; 57 return session_storage;
60 } 58 }
61 59
62 void SessionStorageBuilder::ExtractSessionState( 60 void SessionStorageBuilder::ExtractSessionState(
63 WebStateImpl* web_state, 61 WebStateImpl* web_state,
64 CRWSessionStorage* storage) const { 62 CRWSessionStorage* storage) const {
65 DCHECK(web_state); 63 DCHECK(web_state);
66 DCHECK(storage); 64 DCHECK(storage);
65 web_state->created_with_opener_ = storage.hasOpener;
67 NSArray* item_storages = storage.itemStorages; 66 NSArray* item_storages = storage.itemStorages;
68 web::ScopedNavigationItemList items(item_storages.count); 67 web::ScopedNavigationItemList items(item_storages.count);
69 NavigationItemStorageBuilder item_storage_builder; 68 NavigationItemStorageBuilder item_storage_builder;
70 for (size_t index = 0; index < item_storages.count; ++index) { 69 for (size_t index = 0; index < item_storages.count; ++index) {
71 std::unique_ptr<NavigationItemImpl> item_impl = 70 std::unique_ptr<NavigationItemImpl> item_impl =
72 item_storage_builder.BuildNavigationItemImpl(item_storages[index]); 71 item_storage_builder.BuildNavigationItemImpl(item_storages[index]);
73 items[index] = std::move(item_impl); 72 items[index] = std::move(item_impl);
74 } 73 }
75 NSUInteger current_index = storage.currentNavigationIndex; 74 NSUInteger current_index = storage.currentNavigationIndex;
76 base::scoped_nsobject<CRWSessionController> session_controller( 75 base::scoped_nsobject<CRWSessionController> session_controller(
77 [[CRWSessionController alloc] initWithBrowserState:nullptr 76 [[CRWSessionController alloc] initWithBrowserState:nullptr
78 navigationItems:std::move(items) 77 navigationItems:std::move(items)
79 currentIndex:current_index]); 78 currentIndex:current_index]);
80 [session_controller setOpenedByDOM:storage.openedByDOM];
81 [session_controller 79 [session_controller
82 setPreviousNavigationIndex:storage.previousNavigationIndex]; 80 setPreviousNavigationIndex:storage.previousNavigationIndex];
83 [session_controller 81 [session_controller
84 setSessionCertificatePolicyManager:storage 82 setSessionCertificatePolicyManager:storage
85 .sessionCertificatePolicyManager]; 83 .sessionCertificatePolicyManager];
86 web_state->navigation_manager_.reset(new NavigationManagerImpl()); 84 web_state->navigation_manager_.reset(new NavigationManagerImpl());
87 web_state->navigation_manager_->SetSessionController(session_controller); 85 web_state->navigation_manager_->SetSessionController(session_controller);
88 web::SerializableUserDataManager::FromWebState(web_state) 86 web::SerializableUserDataManager::FromWebState(web_state)
89 ->AddSerializableUserData(storage.userData); 87 ->AddSerializableUserData(storage.userData);
90 } 88 }
91 89
92 } // namespace web 90 } // namespace web
OLDNEW
« no previous file with comments | « ios/web/navigation/navigation_manager_impl_unittest.mm ('k') | ios/web/public/crw_session_storage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698