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

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

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

Powered by Google App Engine
This is Rietveld 408576698