| 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..82da72bc3c2d08b047972dce595b66dc0d6726b9 100644
|
| --- a/ios/web/navigation/navigation_manager_storage_builder.mm
|
| +++ b/ios/web/navigation/navigation_manager_storage_builder.mm
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/logging.h"
|
| #include "base/mac/foundation_util.h"
|
| +#import "ios/web/navigation/crw_session_controller+private_constructors.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"
|
| @@ -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);
|
| + NSArray* item_storages = navigation_manager_serialization.itemStorages;
|
| + web::ScopedNavigationItemList items(item_storages.count);
|
| + NavigationItemStorageBuilder item_storage_builder;
|
| + for (size_t index = 0; index < item_storages.count; ++index) {
|
| + std::unique_ptr<NavigationItemImpl> item_impl =
|
| + item_storage_builder.BuildNavigationItemImpl(item_storages[index]);
|
| + items[index] = std::move(item_impl);
|
| + }
|
| + NSUInteger current_index =
|
| + navigation_manager_serialization.currentNavigationIndex;
|
| base::scoped_nsobject<CRWSessionController> session_controller(
|
| - [[CRWSessionController alloc] init]);
|
| + [[CRWSessionController alloc] initWithNavigationItems:std::move(items)
|
| + currentIndex:current_index
|
| + 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);
|
|
|