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 78a37ed97dc8ad3102d8abc899854d3878c32b25..34399e8bcdd5ea826aa2c6779568180f47206158 100644 |
| --- a/ios/web/navigation/navigation_manager_storage_builder.mm |
| +++ b/ios/web/navigation/navigation_manager_storage_builder.mm |
| @@ -8,6 +8,8 @@ |
| #include "base/mac/foundation_util.h" |
| #import "ios/web/navigation/crw_session_controller.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" |
| #include "ios/web/navigation/navigation_manager_impl.h" |
| #import "ios/web/public/crw_navigation_manager_storage.h" |
| @@ -29,8 +31,7 @@ @interface CRWSessionController (ExposedForSerialization) |
| namespace web { |
| -CRWNavigationManagerStorage* |
| -NavigationManagerStorageBuilder::BuildSerialization( |
| +CRWNavigationManagerStorage* NavigationManagerStorageBuilder::BuildStorage( |
| NavigationManagerImpl* navigation_manager) const { |
| DCHECK(navigation_manager); |
| CRWNavigationManagerStorage* serialized_navigation_manager = |
| @@ -51,11 +52,13 @@ @interface CRWSessionController (ExposedForSerialization) |
| session_controller.lastVisitedTimestamp; |
| serialized_navigation_manager.sessionCertificatePolicyManager = |
| session_controller.sessionCertificatePolicyManager; |
| - NSMutableArray* entries = [[NSMutableArray alloc] init]; |
| - // Perform a deep copy of the NavigationItems. |
| - for (CRWSessionEntry* entry in session_controller.entries) |
| - [entries addObject:[entry copy]]; |
| - serialized_navigation_manager.entries = entries; |
| + NSMutableArray* itemStorages = [[NSMutableArray alloc] init]; |
|
Eugene But (OOO till 7-30)
2017/02/03 01:52:34
s/itemStorages/item_storages
kkhorimoto
2017/02/03 02:47:23
Done.
|
| + NavigationItemStorageBuilder item_storage_builder; |
| + for (CRWSessionEntry* entry in session_controller.entries) { |
| + [itemStorages |
| + addObject:item_storage_builder.BuildStorage(entry.navigationItemImpl)]; |
| + } |
| + serialized_navigation_manager.itemStorages = itemStorages; |
| return serialized_navigation_manager; |
| } |
| @@ -80,10 +83,20 @@ @interface CRWSessionController (ExposedForSerialization) |
| .previousNavigationIndex]; |
| [session_controller setLastVisitedTimestamp:navigation_manager_serialization |
| .lastVisitedTimestamp]; |
| - [session_controller setEntries:navigation_manager_serialization.entries]; |
| [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); |