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

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

Issue 2664113003: Moved serialization out of CRWSessionEntry. (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/navigation_manager_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.h" 9 #import "ios/web/navigation/crw_session_controller.h"
10 #import "ios/web/navigation/crw_session_entry.h" 10 #import "ios/web/navigation/crw_session_entry.h"
11 #import "ios/web/navigation/navigation_item_impl.h"
12 #import "ios/web/navigation/navigation_item_storage_builder.h"
11 #include "ios/web/navigation/navigation_manager_impl.h" 13 #include "ios/web/navigation/navigation_manager_impl.h"
12 #import "ios/web/public/crw_navigation_manager_storage.h" 14 #import "ios/web/public/crw_navigation_manager_storage.h"
13 15
14 // CRWSessionController's readonly properties redefined as readwrite. These 16 // CRWSessionController's readonly properties redefined as readwrite. These
15 // will be removed and NavigationManagerImpl's ivars will be written directly 17 // will be removed and NavigationManagerImpl's ivars will be written directly
16 // as this functionality moves from CRWSessionController to 18 // as this functionality moves from CRWSessionController to
17 // NavigationManagerImpl; 19 // NavigationManagerImpl;
18 @interface CRWSessionController (ExposedForSerialization) 20 @interface CRWSessionController (ExposedForSerialization)
19 @property(nonatomic, readwrite, retain) NSString* tabId; 21 @property(nonatomic, readwrite, retain) NSString* tabId;
20 @property(nonatomic, readwrite, copy) NSString* openerId; 22 @property(nonatomic, readwrite, copy) NSString* openerId;
21 @property(nonatomic, readwrite, getter=isOpenedByDOM) BOOL openedByDOM; 23 @property(nonatomic, readwrite, getter=isOpenedByDOM) BOOL openedByDOM;
22 @property(nonatomic, readwrite, assign) NSInteger openerNavigationIndex; 24 @property(nonatomic, readwrite, assign) NSInteger openerNavigationIndex;
23 @property(nonatomic, readwrite, assign) NSInteger currentNavigationIndex; 25 @property(nonatomic, readwrite, assign) NSInteger currentNavigationIndex;
24 @property(nonatomic, readwrite, assign) NSInteger previousNavigationIndex; 26 @property(nonatomic, readwrite, assign) NSInteger previousNavigationIndex;
25 @property(nonatomic, readwrite, retain) NSArray* entries; 27 @property(nonatomic, readwrite, retain) NSArray* entries;
26 @property(nonatomic, readwrite, retain) 28 @property(nonatomic, readwrite, retain)
27 CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager; 29 CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager;
28 @end 30 @end
29 31
30 namespace web { 32 namespace web {
31 33
32 CRWNavigationManagerStorage* 34 CRWNavigationManagerStorage* NavigationManagerStorageBuilder::BuildStorage(
33 NavigationManagerStorageBuilder::BuildSerialization(
34 NavigationManagerImpl* navigation_manager) const { 35 NavigationManagerImpl* navigation_manager) const {
35 DCHECK(navigation_manager); 36 DCHECK(navigation_manager);
36 CRWNavigationManagerStorage* serialized_navigation_manager = 37 CRWNavigationManagerStorage* serialized_navigation_manager =
37 [[CRWNavigationManagerStorage alloc] init]; 38 [[CRWNavigationManagerStorage alloc] init];
38 CRWSessionController* session_controller = 39 CRWSessionController* session_controller =
39 navigation_manager->GetSessionController(); 40 navigation_manager->GetSessionController();
40 serialized_navigation_manager.tabID = session_controller.tabId; 41 serialized_navigation_manager.tabID = session_controller.tabId;
41 serialized_navigation_manager.openerID = session_controller.openerId; 42 serialized_navigation_manager.openerID = session_controller.openerId;
42 serialized_navigation_manager.openedByDOM = session_controller.openedByDOM; 43 serialized_navigation_manager.openedByDOM = session_controller.openedByDOM;
43 serialized_navigation_manager.openerNavigationIndex = 44 serialized_navigation_manager.openerNavigationIndex =
44 session_controller.openerNavigationIndex; 45 session_controller.openerNavigationIndex;
45 serialized_navigation_manager.windowName = session_controller.windowName; 46 serialized_navigation_manager.windowName = session_controller.windowName;
46 serialized_navigation_manager.currentNavigationIndex = 47 serialized_navigation_manager.currentNavigationIndex =
47 session_controller.currentNavigationIndex; 48 session_controller.currentNavigationIndex;
48 serialized_navigation_manager.previousNavigationIndex = 49 serialized_navigation_manager.previousNavigationIndex =
49 session_controller.previousNavigationIndex; 50 session_controller.previousNavigationIndex;
50 serialized_navigation_manager.lastVisitedTimestamp = 51 serialized_navigation_manager.lastVisitedTimestamp =
51 session_controller.lastVisitedTimestamp; 52 session_controller.lastVisitedTimestamp;
52 serialized_navigation_manager.sessionCertificatePolicyManager = 53 serialized_navigation_manager.sessionCertificatePolicyManager =
53 session_controller.sessionCertificatePolicyManager; 54 session_controller.sessionCertificatePolicyManager;
54 NSMutableArray* entries = [[NSMutableArray alloc] init]; 55 NSMutableArray* item_storages = [[NSMutableArray alloc] init];
55 // Perform a deep copy of the NavigationItems. 56 NavigationItemStorageBuilder item_storage_builder;
56 for (CRWSessionEntry* entry in session_controller.entries) 57 for (CRWSessionEntry* entry in session_controller.entries) {
57 [entries addObject:[entry copy]]; 58 [item_storages
58 serialized_navigation_manager.entries = entries; 59 addObject:item_storage_builder.BuildStorage(entry.navigationItemImpl)];
60 }
61 serialized_navigation_manager.itemStorages = item_storages;
59 return serialized_navigation_manager; 62 return serialized_navigation_manager;
60 } 63 }
61 64
62 std::unique_ptr<NavigationManagerImpl> 65 std::unique_ptr<NavigationManagerImpl>
63 NavigationManagerStorageBuilder::BuildNavigationManagerImpl( 66 NavigationManagerStorageBuilder::BuildNavigationManagerImpl(
64 CRWNavigationManagerStorage* navigation_manager_serialization) const { 67 CRWNavigationManagerStorage* navigation_manager_serialization) const {
65 DCHECK(navigation_manager_serialization); 68 DCHECK(navigation_manager_serialization);
66 base::scoped_nsobject<CRWSessionController> session_controller( 69 base::scoped_nsobject<CRWSessionController> session_controller(
67 [[CRWSessionController alloc] init]); 70 [[CRWSessionController alloc] init]);
68 [session_controller setTabId:navigation_manager_serialization.tabID]; 71 [session_controller setTabId:navigation_manager_serialization.tabID];
69 [session_controller setOpenerId:navigation_manager_serialization.openerID]; 72 [session_controller setOpenerId:navigation_manager_serialization.openerID];
70 [session_controller 73 [session_controller
71 setOpenedByDOM:navigation_manager_serialization.openedByDOM]; 74 setOpenedByDOM:navigation_manager_serialization.openedByDOM];
72 [session_controller setOpenerNavigationIndex:navigation_manager_serialization 75 [session_controller setOpenerNavigationIndex:navigation_manager_serialization
73 .openerNavigationIndex]; 76 .openerNavigationIndex];
74 [session_controller 77 [session_controller
75 setWindowName:navigation_manager_serialization.windowName]; 78 setWindowName:navigation_manager_serialization.windowName];
76 [session_controller setCurrentNavigationIndex:navigation_manager_serialization 79 [session_controller setCurrentNavigationIndex:navigation_manager_serialization
77 .currentNavigationIndex]; 80 .currentNavigationIndex];
78 [session_controller 81 [session_controller
79 setPreviousNavigationIndex:navigation_manager_serialization 82 setPreviousNavigationIndex:navigation_manager_serialization
80 .previousNavigationIndex]; 83 .previousNavigationIndex];
81 [session_controller setLastVisitedTimestamp:navigation_manager_serialization 84 [session_controller setLastVisitedTimestamp:navigation_manager_serialization
82 .lastVisitedTimestamp]; 85 .lastVisitedTimestamp];
83 [session_controller setEntries:navigation_manager_serialization.entries];
84 [session_controller 86 [session_controller
85 setSessionCertificatePolicyManager:navigation_manager_serialization 87 setSessionCertificatePolicyManager:navigation_manager_serialization
86 .sessionCertificatePolicyManager]; 88 .sessionCertificatePolicyManager];
89 NavigationItemStorageBuilder item_storage_builder;
90 NSArray* item_storages = navigation_manager_serialization.itemStorages;
91 NSMutableArray* entries = [[NSMutableArray alloc] init];
92 for (CRWNavigationItemStorage* item_storage in item_storages) {
93 std::unique_ptr<NavigationItemImpl> item_impl =
94 item_storage_builder.BuildNavigationItemImpl(item_storage);
95 std::unique_ptr<NavigationItem> item(item_impl.release());
96 [entries addObject:[[CRWSessionEntry alloc]
97 initWithNavigationItem:std::move(item)]];
98 }
99 [session_controller setEntries:entries];
87 std::unique_ptr<NavigationManagerImpl> navigation_manager( 100 std::unique_ptr<NavigationManagerImpl> navigation_manager(
88 new NavigationManagerImpl()); 101 new NavigationManagerImpl());
89 navigation_manager->SetSessionController(session_controller); 102 navigation_manager->SetSessionController(session_controller);
90 return navigation_manager; 103 return navigation_manager;
91 } 104 }
92 105
93 } // namespace web 106 } // namespace web
OLDNEW
« no previous file with comments | « ios/web/navigation/navigation_manager_storage_builder.h ('k') | ios/web/public/crw_navigation_item_storage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698