Chromium Code Reviews| Index: ios/web/navigation/navigation_manager_storage_builder.mm |
| diff --git a/ios/web/navigation/navigation_manager_storage_builder.mm b/ios/web/navigation/navigation_manager_storage_builder.mm |
| index 7b454f66985c510139af7a65e91070d1b175544c..b8d933083f646621bf149868eb27701682cb31b2 100644 |
| --- a/ios/web/navigation/navigation_manager_storage_builder.mm |
| +++ b/ios/web/navigation/navigation_manager_storage_builder.mm |
| @@ -7,6 +7,7 @@ |
| #include "base/logging.h" |
| #include "base/mac/foundation_util.h" |
| #import "ios/web/navigation/crw_session_controller.h" |
| +#import "ios/web/navigation/crw_session_controller+private_constructors.h" |
| #import "ios/web/navigation/crw_session_entry.h" |
| #import "ios/web/navigation/navigation_item_impl.h" |
| #import "ios/web/navigation/navigation_item_storage_builder.h" |
| @@ -22,9 +23,7 @@ @interface CRWSessionController (ExposedForSerialization) |
| @property(nonatomic, readwrite, copy) NSString* openerId; |
| @property(nonatomic, readwrite, getter=isOpenedByDOM) BOOL openedByDOM; |
| @property(nonatomic, readwrite, assign) NSInteger openerNavigationIndex; |
| -@property(nonatomic, readwrite, assign) NSInteger currentNavigationIndex; |
| @property(nonatomic, readwrite, assign) NSInteger previousNavigationIndex; |
| -@property(nonatomic, readwrite, retain) NSArray* entries; |
| @property(nonatomic, readwrite, retain) |
| CRWSessionCertificatePolicyManager* sessionCertificatePolicyManager; |
| @end |
| @@ -54,9 +53,10 @@ @interface CRWSessionController (ExposedForSerialization) |
| session_controller.sessionCertificatePolicyManager; |
| NSMutableArray* item_storages = [[NSMutableArray alloc] init]; |
| NavigationItemStorageBuilder item_storage_builder; |
| - for (CRWSessionEntry* entry in session_controller.entries) { |
| - [item_storages |
| - addObject:item_storage_builder.BuildStorage(entry.navigationItemImpl)]; |
| + for (size_t index = 0; index < session_controller.items.size(); ++index) { |
| + web::NavigationItemImpl* item = |
| + static_cast<web::NavigationItemImpl*>(session_controller.items[index]); |
| + [item_storages addObject:item_storage_builder.BuildStorage(item)]; |
| } |
| serialized_navigation_manager.itemStorages = item_storages; |
| return serialized_navigation_manager; |
| @@ -66,8 +66,20 @@ @interface CRWSessionController (ExposedForSerialization) |
| NavigationManagerStorageBuilder::BuildNavigationManagerImpl( |
| CRWNavigationManagerStorage* navigation_manager_serialization) const { |
| DCHECK(navigation_manager_serialization); |
| + web::ScopedNavigationItemList items; |
|
Eugene But (OOO till 7-30)
2017/02/03 23:33:33
Construct with size?
kkhorimoto
2017/02/04 02:45:30
Done.
|
| + NavigationItemStorageBuilder item_storage_builder; |
| + NSArray* item_storages = navigation_manager_serialization.itemStorages; |
| + for (CRWNavigationItemStorage* item_storage in item_storages) { |
| + std::unique_ptr<NavigationItemImpl> item_impl = |
| + item_storage_builder.BuildNavigationItemImpl(item_storage); |
| + items.push_back(std::move(item_impl)); |
|
Eugene But (OOO till 7-30)
2017/02/03 23:33:33
emplace_back?
kkhorimoto
2017/02/04 02:45:30
It makes sense for BuildNavigationItemImpl() to re
|
| + } |
| + NSUInteger currentIndex = |
|
Eugene But (OOO till 7-30)
2017/02/03 23:33:33
s/currentIndex/current_index
kkhorimoto
2017/02/04 02:45:31
Done.
|
| + navigation_manager_serialization.currentNavigationIndex; |
| base::scoped_nsobject<CRWSessionController> session_controller( |
| - [[CRWSessionController alloc] init]); |
| + [[CRWSessionController alloc] initWithNavigationItems:std::move(items) |
| + currentIndex:currentIndex |
| + browserState:nullptr]); |
| [session_controller setTabId:navigation_manager_serialization.tabID]; |
| [session_controller setOpenerId:navigation_manager_serialization.openerID]; |
| [session_controller |
| @@ -76,8 +88,6 @@ @interface CRWSessionController (ExposedForSerialization) |
| .openerNavigationIndex]; |
| [session_controller |
| setWindowName:navigation_manager_serialization.windowName]; |
| - [session_controller setCurrentNavigationIndex:navigation_manager_serialization |
| - .currentNavigationIndex]; |
| [session_controller |
| setPreviousNavigationIndex:navigation_manager_serialization |
| .previousNavigationIndex]; |
| @@ -86,17 +96,6 @@ @interface CRWSessionController (ExposedForSerialization) |
| [session_controller |
| setSessionCertificatePolicyManager:navigation_manager_serialization |
| .sessionCertificatePolicyManager]; |
| - NavigationItemStorageBuilder item_storage_builder; |
| - NSArray* item_storages = navigation_manager_serialization.itemStorages; |
| - NSMutableArray* entries = [[NSMutableArray alloc] init]; |
| - for (CRWNavigationItemStorage* item_storage in item_storages) { |
| - std::unique_ptr<NavigationItemImpl> item_impl = |
| - item_storage_builder.BuildNavigationItemImpl(item_storage); |
| - std::unique_ptr<NavigationItem> item(item_impl.release()); |
| - [entries addObject:[[CRWSessionEntry alloc] |
| - initWithNavigationItem:std::move(item)]]; |
| - } |
| - [session_controller setEntries:entries]; |
| std::unique_ptr<NavigationManagerImpl> navigation_manager( |
| new NavigationManagerImpl()); |
| navigation_manager->SetSessionController(session_controller); |