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

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

Issue 2687353003: Created SerializableUserDataManager. (Closed)
Patch Set: Eugene's comments Created 3 years, 10 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/navigation_manager_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/crw_session_entry.h" 11 #import "ios/web/navigation/crw_session_entry.h"
12 #import "ios/web/navigation/navigation_item_impl.h" 12 #import "ios/web/navigation/navigation_item_impl.h"
13 #import "ios/web/navigation/navigation_item_storage_builder.h" 13 #import "ios/web/navigation/navigation_item_storage_builder.h"
14 #include "ios/web/navigation/navigation_manager_impl.h" 14 #include "ios/web/navigation/navigation_manager_impl.h"
15 #import "ios/web/public/crw_navigation_manager_storage.h" 15 #import "ios/web/public/crw_session_storage.h"
16 #import "ios/web/public/serializable_user_data_manager.h"
17 #import "ios/web/web_state/web_state_impl.h"
16 18
17 // CRWSessionController's readonly properties redefined as readwrite. These 19 // CRWSessionController's readonly properties redefined as readwrite. These
18 // will be removed and NavigationManagerImpl's ivars will be written directly 20 // will be removed and NavigationManagerImpl's ivars will be written directly
19 // as this functionality moves from CRWSessionController to 21 // as this functionality moves from CRWSessionController to
20 // NavigationManagerImpl; 22 // NavigationManagerImpl;
21 @interface CRWSessionController (ExposedForSerialization) 23 @interface CRWSessionController (ExposedForSerialization)
22 @property(nonatomic, readwrite, retain) NSString* tabId; 24 @property(nonatomic, readwrite, retain) NSString* tabId;
23 @property(nonatomic, readwrite, copy) NSString* openerId; 25 @property(nonatomic, readwrite, copy) NSString* openerId;
24 @property(nonatomic, readwrite, getter=isOpenedByDOM) BOOL openedByDOM; 26 @property(nonatomic, readwrite, getter=isOpenedByDOM) BOOL openedByDOM;
25 @property(nonatomic, readwrite, assign) NSInteger openerNavigationIndex; 27 @property(nonatomic, readwrite, assign) NSInteger openerNavigationIndex;
26 @property(nonatomic, readwrite, assign) NSInteger previousNavigationIndex; 28 @property(nonatomic, readwrite, assign) NSInteger previousNavigationIndex;
27 @property(nonatomic, readwrite, retain) 29 @property(nonatomic, readwrite, retain)
28 CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager; 30 CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager;
29 @end 31 @end
30 32
31 namespace web { 33 namespace web {
32 34
33 CRWNavigationManagerStorage* NavigationManagerStorageBuilder::BuildStorage( 35 CRWSessionStorage* SessionStorageBuilder::BuildStorage(
34 NavigationManagerImpl* navigation_manager) const { 36 WebStateImpl* web_state) const {
37 DCHECK(web_state);
38 web::NavigationManagerImpl* navigation_manager =
39 web_state->navigation_manager_.get();
35 DCHECK(navigation_manager); 40 DCHECK(navigation_manager);
36 CRWNavigationManagerStorage* serialized_navigation_manager = 41 CRWSessionStorage* serialized_navigation_manager =
37 [[CRWNavigationManagerStorage alloc] init]; 42 [[CRWSessionStorage alloc] init];
38 CRWSessionController* session_controller = 43 CRWSessionController* session_controller =
39 navigation_manager->GetSessionController(); 44 navigation_manager->GetSessionController();
40 serialized_navigation_manager.tabID = session_controller.tabId; 45 serialized_navigation_manager.tabID = session_controller.tabId;
41 serialized_navigation_manager.openerID = session_controller.openerId; 46 serialized_navigation_manager.openerID = session_controller.openerId;
42 serialized_navigation_manager.openedByDOM = session_controller.openedByDOM; 47 serialized_navigation_manager.openedByDOM = session_controller.openedByDOM;
43 serialized_navigation_manager.openerNavigationIndex = 48 serialized_navigation_manager.openerNavigationIndex =
44 session_controller.openerNavigationIndex; 49 session_controller.openerNavigationIndex;
45 serialized_navigation_manager.windowName = session_controller.windowName; 50 serialized_navigation_manager.windowName = session_controller.windowName;
46 serialized_navigation_manager.currentNavigationIndex = 51 serialized_navigation_manager.currentNavigationIndex =
47 session_controller.currentNavigationIndex; 52 session_controller.currentNavigationIndex;
48 serialized_navigation_manager.previousNavigationIndex = 53 serialized_navigation_manager.previousNavigationIndex =
49 session_controller.previousNavigationIndex; 54 session_controller.previousNavigationIndex;
50 serialized_navigation_manager.lastVisitedTimestamp = 55 serialized_navigation_manager.lastVisitedTimestamp =
51 session_controller.lastVisitedTimestamp; 56 session_controller.lastVisitedTimestamp;
52 serialized_navigation_manager.sessionCertificatePolicyManager = 57 serialized_navigation_manager.sessionCertificatePolicyManager =
53 session_controller.sessionCertificatePolicyManager; 58 session_controller.sessionCertificatePolicyManager;
54 NSMutableArray* item_storages = [[NSMutableArray alloc] init]; 59 NSMutableArray* item_storages = [[NSMutableArray alloc] init];
55 NavigationItemStorageBuilder item_storage_builder; 60 NavigationItemStorageBuilder item_storage_builder;
56 for (size_t index = 0; index < session_controller.items.size(); ++index) { 61 for (size_t index = 0; index < session_controller.items.size(); ++index) {
57 web::NavigationItemImpl* item = session_controller.items[index].get(); 62 web::NavigationItemImpl* item = session_controller.items[index].get();
58 [item_storages addObject:item_storage_builder.BuildStorage(item)]; 63 [item_storages addObject:item_storage_builder.BuildStorage(item)];
59 } 64 }
60 serialized_navigation_manager.itemStorages = item_storages; 65 serialized_navigation_manager.itemStorages = item_storages;
66 web::SerializableUserDataManager* user_data_manager =
67 web::SerializableUserDataManager::FromWebState(web_state);
68 [serialized_navigation_manager
69 setSerializableUserData:user_data_manager->CreateSerializableUserData()];
61 return serialized_navigation_manager; 70 return serialized_navigation_manager;
62 } 71 }
63 72
64 std::unique_ptr<NavigationManagerImpl> 73 void SessionStorageBuilder::ExtractSessionState(
65 NavigationManagerStorageBuilder::BuildNavigationManagerImpl( 74 WebStateImpl* web_state,
66 CRWNavigationManagerStorage* navigation_manager_serialization) const { 75 CRWSessionStorage* storage) const {
67 DCHECK(navigation_manager_serialization); 76 DCHECK(web_state);
68 NSArray* item_storages = navigation_manager_serialization.itemStorages; 77 DCHECK(storage);
78 NSArray* item_storages = storage.itemStorages;
69 web::ScopedNavigationItemList items(item_storages.count); 79 web::ScopedNavigationItemList items(item_storages.count);
70 NavigationItemStorageBuilder item_storage_builder; 80 NavigationItemStorageBuilder item_storage_builder;
71 for (size_t index = 0; index < item_storages.count; ++index) { 81 for (size_t index = 0; index < item_storages.count; ++index) {
72 std::unique_ptr<NavigationItemImpl> item_impl = 82 std::unique_ptr<NavigationItemImpl> item_impl =
73 item_storage_builder.BuildNavigationItemImpl(item_storages[index]); 83 item_storage_builder.BuildNavigationItemImpl(item_storages[index]);
74 items[index] = std::move(item_impl); 84 items[index] = std::move(item_impl);
75 } 85 }
76 NSUInteger current_index = 86 NSUInteger current_index = storage.currentNavigationIndex;
77 navigation_manager_serialization.currentNavigationIndex;
78 base::scoped_nsobject<CRWSessionController> session_controller( 87 base::scoped_nsobject<CRWSessionController> session_controller(
79 [[CRWSessionController alloc] initWithNavigationItems:std::move(items) 88 [[CRWSessionController alloc] initWithNavigationItems:std::move(items)
80 currentIndex:current_index 89 currentIndex:current_index
81 browserState:nullptr]); 90 browserState:nullptr]);
82 [session_controller setTabId:navigation_manager_serialization.tabID]; 91 [session_controller setTabId:storage.tabID];
83 [session_controller setOpenerId:navigation_manager_serialization.openerID]; 92 [session_controller setOpenerId:storage.openerID];
93 [session_controller setOpenedByDOM:storage.openedByDOM];
94 [session_controller setOpenerNavigationIndex:storage.openerNavigationIndex];
95 [session_controller setWindowName:storage.windowName];
84 [session_controller 96 [session_controller
85 setOpenedByDOM:navigation_manager_serialization.openedByDOM]; 97 setPreviousNavigationIndex:storage.previousNavigationIndex];
86 [session_controller setOpenerNavigationIndex:navigation_manager_serialization 98 [session_controller setLastVisitedTimestamp:storage.lastVisitedTimestamp];
87 .openerNavigationIndex];
88 [session_controller 99 [session_controller
89 setWindowName:navigation_manager_serialization.windowName]; 100 setSessionCertificatePolicyManager:storage
90 [session_controller
91 setPreviousNavigationIndex:navigation_manager_serialization
92 .previousNavigationIndex];
93 [session_controller setLastVisitedTimestamp:navigation_manager_serialization
94 .lastVisitedTimestamp];
95 [session_controller
96 setSessionCertificatePolicyManager:navigation_manager_serialization
97 .sessionCertificatePolicyManager]; 101 .sessionCertificatePolicyManager];
98 std::unique_ptr<NavigationManagerImpl> navigation_manager( 102 web_state->navigation_manager_.reset(new NavigationManagerImpl());
99 new NavigationManagerImpl()); 103 web_state->navigation_manager_->SetSessionController(session_controller);
100 navigation_manager->SetSessionController(session_controller); 104 web::SerializableUserDataManager::FromWebState(web_state)
101 return navigation_manager; 105 ->AddSerializableUserData(storage.userData);
102 } 106 }
103 107
104 } // namespace web 108 } // namespace web
OLDNEW
« no previous file with comments | « ios/web/navigation/session_storage_builder.h ('k') | ios/web/public/crw_navigation_manager_storage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698