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

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

Issue 1360993002: Moved NavigationManagerImpl serialization out of CRWSessionController. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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/serialized_navigation_manager_builder.mm
diff --git a/ios/web/navigation/serialized_navigation_manager_builder.mm b/ios/web/navigation/serialized_navigation_manager_builder.mm
new file mode 100644
index 0000000000000000000000000000000000000000..6feddac4b074b688d34df2b49f911aff8addf492
--- /dev/null
+++ b/ios/web/navigation/serialized_navigation_manager_builder.mm
@@ -0,0 +1,89 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ios/web/navigation/serialized_navigation_manager_builder.h"
+
+#include "base/logging.h"
+#import "ios/web/navigation/crw_serialized_navigation_manager.h"
+#import "ios/web/navigation/crw_session_controller.h"
+#include "ios/web/navigation/navigation_manager_impl.h"
+
+// CRWSessionController's readonly properties redefined as readwrite. These
+// will be removed and NavigationManagerImpl's ivars will be written directly
+// as this functionality moves from CRWSessionController to
+// NavigationManagerImpl;
+@interface CRWSessionController (ExposedForSerialization)
+@property(nonatomic, readwrite, retain) NSString* tabId;
+@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
+
+namespace web {
+
+// static
+CRWSerializedNavigationManager*
+SerializedNavigationManagerBuilder::FromNavigationManager(
+ web::NavigationManagerImpl* navigation_manager) {
+ DCHECK(navigation_manager);
+ CRWSerializedNavigationManager* serialized_navigation_manager =
+ [[[CRWSerializedNavigationManager alloc] init] autorelease];
Eugene But (OOO till 7-30) 2015/09/23 16:33:44 Please use scoped_nsobject instead of autorelease
kkhorimoto 2015/09/24 18:12:59 Why? I've created functions that returned scoped_
Eugene But (OOO till 7-30) 2015/09/24 18:44:29 I apologies, I missed that fact that you return se
+ CRWSessionController* session_controller =
+ navigation_manager->GetSessionController();
+ serialized_navigation_manager.tabId = session_controller.tabId;
+ serialized_navigation_manager.openerId = session_controller.openerId;
+ serialized_navigation_manager.openedByDOM = session_controller.openedByDOM;
+ serialized_navigation_manager.openerNavigationIndex =
+ session_controller.openerNavigationIndex;
+ serialized_navigation_manager.windowName = session_controller.windowName;
+ serialized_navigation_manager.currentNavigationIndex =
+ session_controller.currentNavigationIndex;
+ serialized_navigation_manager.previousNavigationIndex =
+ session_controller.previousNavigationIndex;
+ serialized_navigation_manager.lastVisitedTimestamp =
+ session_controller.lastVisitedTimestamp;
+ serialized_navigation_manager.entries = session_controller.entries;
+ serialized_navigation_manager.sessionCertificatePolicyManager =
+ session_controller.sessionCertificatePolicyManager;
+ serialized_navigation_manager.xCallbackParameters =
+ session_controller.xCallbackParameters;
+ return serialized_navigation_manager;
+}
+
+// static
+scoped_ptr<NavigationManagerImpl>
+SerializedNavigationManagerBuilder::ToNavigationManager(
+ CRWSerializedNavigationManager* serialized_navigation_manager) {
+ DCHECK(serialized_navigation_manager);
+ CRWSessionController* session_controller =
+ [[[CRWSessionController alloc] init] autorelease];
Eugene But (OOO till 7-30) 2015/09/23 16:33:44 ditto
kkhorimoto 2015/09/24 18:12:59 Done.
+ session_controller.tabId = serialized_navigation_manager.tabId;
+ session_controller.openerId = serialized_navigation_manager.openerId;
+ session_controller.openedByDOM = serialized_navigation_manager.openedByDOM;
+ session_controller.openerNavigationIndex =
+ serialized_navigation_manager.openerNavigationIndex;
+ session_controller.windowName = serialized_navigation_manager.windowName;
+ session_controller.currentNavigationIndex =
+ serialized_navigation_manager.currentNavigationIndex;
+ session_controller.previousNavigationIndex =
+ serialized_navigation_manager.previousNavigationIndex;
+ session_controller.lastVisitedTimestamp =
+ serialized_navigation_manager.lastVisitedTimestamp;
+ session_controller.entries = serialized_navigation_manager.entries;
+ session_controller.sessionCertificatePolicyManager =
+ serialized_navigation_manager.sessionCertificatePolicyManager;
+ session_controller.xCallbackParameters =
+ serialized_navigation_manager.xCallbackParameters;
+ scoped_ptr<NavigationManagerImpl> navigation_manager(
+ new NavigationManagerImpl());
+ navigation_manager->SetSessionController(session_controller);
+ return navigation_manager.Pass();
+}
+
+} // namespace web

Powered by Google App Engine
This is Rietveld 408576698