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

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

Issue 2664113003: Moved serialization out of CRWSessionEntry. (Closed)
Patch Set: 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;
(...skipping 24 matching lines...) Expand all
45 serialized_navigation_manager.windowName = session_controller.windowName; 47 serialized_navigation_manager.windowName = session_controller.windowName;
46 serialized_navigation_manager.currentNavigationIndex = 48 serialized_navigation_manager.currentNavigationIndex =
47 session_controller.currentNavigationIndex; 49 session_controller.currentNavigationIndex;
48 serialized_navigation_manager.previousNavigationIndex = 50 serialized_navigation_manager.previousNavigationIndex =
49 session_controller.previousNavigationIndex; 51 session_controller.previousNavigationIndex;
50 serialized_navigation_manager.lastVisitedTimestamp = 52 serialized_navigation_manager.lastVisitedTimestamp =
51 session_controller.lastVisitedTimestamp; 53 session_controller.lastVisitedTimestamp;
52 serialized_navigation_manager.sessionCertificatePolicyManager = 54 serialized_navigation_manager.sessionCertificatePolicyManager =
53 session_controller.sessionCertificatePolicyManager; 55 session_controller.sessionCertificatePolicyManager;
54 NSMutableArray* entries = [[NSMutableArray alloc] init]; 56 NSMutableArray* entries = [[NSMutableArray alloc] init];
55 // Perform a deep copy of the NavigationItems. 57 NavigationItemStorageBuilder item_storage_builder;
56 for (CRWSessionEntry* entry in session_controller.entries) 58 for (CRWSessionEntry* entry in session_controller.entries) {
57 [entries addObject:[entry copy]]; 59 [entries addObject:item_storage_builder.BuildSerialization(
60 entry.navigationItemImpl)];
61 }
58 serialized_navigation_manager.entries = entries; 62 serialized_navigation_manager.entries = entries;
59 return serialized_navigation_manager; 63 return serialized_navigation_manager;
60 } 64 }
61 65
62 std::unique_ptr<NavigationManagerImpl> 66 std::unique_ptr<NavigationManagerImpl>
63 NavigationManagerStorageBuilder::BuildNavigationManagerImpl( 67 NavigationManagerStorageBuilder::BuildNavigationManagerImpl(
64 CRWNavigationManagerStorage* navigation_manager_serialization) const { 68 CRWNavigationManagerStorage* navigation_manager_serialization) const {
65 DCHECK(navigation_manager_serialization); 69 DCHECK(navigation_manager_serialization);
66 base::scoped_nsobject<CRWSessionController> session_controller( 70 base::scoped_nsobject<CRWSessionController> session_controller(
67 [[CRWSessionController alloc] init]); 71 [[CRWSessionController alloc] init]);
68 [session_controller setTabId:navigation_manager_serialization.tabID]; 72 [session_controller setTabId:navigation_manager_serialization.tabID];
69 [session_controller setOpenerId:navigation_manager_serialization.openerID]; 73 [session_controller setOpenerId:navigation_manager_serialization.openerID];
70 [session_controller 74 [session_controller
71 setOpenedByDOM:navigation_manager_serialization.openedByDOM]; 75 setOpenedByDOM:navigation_manager_serialization.openedByDOM];
72 [session_controller setOpenerNavigationIndex:navigation_manager_serialization 76 [session_controller setOpenerNavigationIndex:navigation_manager_serialization
73 .openerNavigationIndex]; 77 .openerNavigationIndex];
74 [session_controller 78 [session_controller
75 setWindowName:navigation_manager_serialization.windowName]; 79 setWindowName:navigation_manager_serialization.windowName];
76 [session_controller setCurrentNavigationIndex:navigation_manager_serialization 80 [session_controller setCurrentNavigationIndex:navigation_manager_serialization
77 .currentNavigationIndex]; 81 .currentNavigationIndex];
78 [session_controller 82 [session_controller
79 setPreviousNavigationIndex:navigation_manager_serialization 83 setPreviousNavigationIndex:navigation_manager_serialization
80 .previousNavigationIndex]; 84 .previousNavigationIndex];
81 [session_controller setLastVisitedTimestamp:navigation_manager_serialization 85 [session_controller setLastVisitedTimestamp:navigation_manager_serialization
82 .lastVisitedTimestamp]; 86 .lastVisitedTimestamp];
83 [session_controller setEntries:navigation_manager_serialization.entries];
84 [session_controller 87 [session_controller
85 setSessionCertificatePolicyManager:navigation_manager_serialization 88 setSessionCertificatePolicyManager:navigation_manager_serialization
86 .sessionCertificatePolicyManager]; 89 .sessionCertificatePolicyManager];
90 NavigationItemStorageBuilder item_storage_builder;
91 NSArray* item_storages = navigation_manager_serialization.entries;
92 NSMutableArray* entries = [[NSMutableArray alloc] init];
93 for (CRWNavigationItemStorage* item_storage in item_storages) {
94 std::unique_ptr<NavigationItemImpl> item_impl =
95 item_storage_builder.BuildNavigationItemImpl(item_storage);
96 std::unique_ptr<NavigationItem> item(item_impl.release());
97 [entries addObject:[[CRWSessionEntry alloc]
98 initWithNavigationItem:std::move(item)]];
99 }
100 [session_controller setEntries:entries];
87 std::unique_ptr<NavigationManagerImpl> navigation_manager( 101 std::unique_ptr<NavigationManagerImpl> navigation_manager(
88 new NavigationManagerImpl()); 102 new NavigationManagerImpl());
89 navigation_manager->SetSessionController(session_controller); 103 navigation_manager->SetSessionController(session_controller);
90 return navigation_manager; 104 return navigation_manager;
91 } 105 }
92 106
93 } // namespace web 107 } // namespace web
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698