| 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..972e1432cc7802ee3174fe350f77ea705665e74d
|
| --- /dev/null
|
| +++ b/ios/web/navigation/serialized_navigation_manager_builder.mm
|
| @@ -0,0 +1,90 @@
|
| +// 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 "base/mac/scoped_nsobject.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];
|
| + 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);
|
| + base::scoped_nsobject<CRWSessionController> session_controller(
|
| + [[CRWSessionController alloc] init]);
|
| + [session_controller setTabId:serialized_navigation_manager.tabID];
|
| + [session_controller setOpenerId:serialized_navigation_manager.openerID];
|
| + [session_controller setOpenedByDOM:serialized_navigation_manager.openedByDOM];
|
| + [session_controller setOpenerNavigationIndex:
|
| + serialized_navigation_manager.openerNavigationIndex];
|
| + [session_controller setWindowName:serialized_navigation_manager.windowName];
|
| + [session_controller setCurrentNavigationIndex:
|
| + serialized_navigation_manager.currentNavigationIndex];
|
| + [session_controller setPreviousNavigationIndex:
|
| + serialized_navigation_manager.previousNavigationIndex];
|
| + [session_controller setLastVisitedTimestamp:
|
| + serialized_navigation_manager.lastVisitedTimestamp];
|
| + [session_controller setEntries:serialized_navigation_manager.entries];
|
| + [session_controller setSessionCertificatePolicyManager:
|
| + serialized_navigation_manager.sessionCertificatePolicyManager];
|
| + [session_controller setXCallbackParameters:
|
| + serialized_navigation_manager.XCallbackParameters];
|
| + scoped_ptr<NavigationManagerImpl> navigation_manager(
|
| + new NavigationManagerImpl());
|
| + navigation_manager->SetSessionController(session_controller);
|
| + return navigation_manager.Pass();
|
| +}
|
| +
|
| +} // namespace web
|
|
|