| 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..035f755b4cbd6b67ed68bb86a9899b2d02a3fcb2 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"
|
|
|
| @@ -52,9 +54,11 @@ @interface CRWSessionController (ExposedForSerialization)
|
| 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]];
|
| + NavigationItemStorageBuilder item_storage_builder;
|
| + for (CRWSessionEntry* entry in session_controller.entries) {
|
| + [entries addObject:item_storage_builder.BuildSerialization(
|
| + entry.navigationItemImpl)];
|
| + }
|
| serialized_navigation_manager.entries = entries;
|
| return serialized_navigation_manager;
|
| }
|
| @@ -80,10 +84,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.entries;
|
| + 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);
|
|
|