| 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 035f755b4cbd6b67ed68bb86a9899b2d02a3fcb2..33492bf63856e6165007ad6c477d7c0c04506e37 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
|
| @@ -55,9 +54,9 @@ @interface CRWSessionController (ExposedForSerialization)
|
| session_controller.sessionCertificatePolicyManager;
|
| NSMutableArray* entries = [[NSMutableArray alloc] init];
|
| NavigationItemStorageBuilder item_storage_builder;
|
| - for (CRWSessionEntry* entry in session_controller.entries) {
|
| + for (size_t index = 0; index < session_controller.items.size(); ++index) {
|
| [entries addObject:item_storage_builder.BuildSerialization(
|
| - entry.navigationItemImpl)];
|
| + session_controller.items[index].get())];
|
| }
|
| serialized_navigation_manager.entries = entries;
|
| return serialized_navigation_manager;
|
| @@ -67,8 +66,20 @@ @interface CRWSessionController (ExposedForSerialization)
|
| NavigationManagerStorageBuilder::BuildNavigationManagerImpl(
|
| CRWNavigationManagerStorage* navigation_manager_serialization) const {
|
| DCHECK(navigation_manager_serialization);
|
| + web::ScopedNavigationItemList items;
|
| + NavigationItemStorageBuilder item_storage_builder;
|
| + NSArray* item_storages = navigation_manager_serialization.entries;
|
| + 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));
|
| + }
|
| + NSUInteger currentIndex =
|
| + 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
|
| @@ -77,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];
|
| @@ -87,17 +96,6 @@ @interface CRWSessionController (ExposedForSerialization)
|
| [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);
|
|
|