Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(143)

Unified Diff: ios/web/navigation/navigation_manager_storage_builder.mm

Issue 2664113003: Moved serialization out of CRWSessionEntry. (Closed)
Patch Set: BuildSerialization => BuildStorage, entries => itemStorages Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698