| 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..7b454f66985c510139af7a65e91070d1b175544c 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* 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)];
|
| + }
|
| + serialized_navigation_manager.itemStorages = item_storages;
|
| 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);
|
|
|