Chromium Code Reviews| 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 |