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

Side by Side Diff: ios/web/navigation/crw_session_entry.mm

Issue 2672953005: Updated ownership of NavigationItems within CRWSessionController. (Closed)
Patch Set: fix unittests Created 3 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "ios/web/navigation/crw_session_entry.h" 5 #import "ios/web/navigation/crw_session_entry.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 10
11 #import "base/mac/scoped_nsobject.h" 11 #import "base/mac/scoped_nsobject.h"
12 #include "base/strings/sys_string_conversions.h" 12 #include "base/strings/sys_string_conversions.h"
13 #import "ios/web/navigation/navigation_item_impl.h" 13 #import "ios/web/navigation/navigation_item_impl.h"
14 #import "ios/web/navigation/nscoder_util.h" 14 #import "ios/web/navigation/nscoder_util.h"
15 #import "ios/web/public/navigation_item.h" 15 #import "ios/web/public/navigation_item.h"
16 #import "ios/web/public/web_state/page_display_state.h" 16 #import "ios/web/public/web_state/page_display_state.h"
17 #import "net/base/mac/url_conversions.h" 17 #import "net/base/mac/url_conversions.h"
18 18
19 #if !defined(__has_feature) || !__has_feature(objc_arc) 19 #if !defined(__has_feature) || !__has_feature(objc_arc)
20 #error "This file requires ARC support." 20 #error "This file requires ARC support."
21 #endif 21 #endif
22 22
23 @interface CRWSessionEntry () { 23 @interface CRWSessionEntry () {
24 // The NavigationItemImpl corresponding to this CRWSessionEntry. 24 // The NavigationItem passed on initialization.
25 // TODO(stuartmorgan): Move ownership to NavigationManagerImpl. 25 web::NavigationItemImpl* _item;
26 std::unique_ptr<web::NavigationItemImpl> _navigationItem;
27 } 26 }
28 27
29 @end 28 @end
30 29
31 @implementation CRWSessionEntry 30 @implementation CRWSessionEntry
32 31
33 - (instancetype)initWithNavigationItem: 32 - (instancetype)initWithNavigationItem:(web::NavigationItem*)item {
34 (std::unique_ptr<web::NavigationItem>)item {
35 self = [super init]; 33 self = [super init];
36 if (self) { 34 if (self) {
37 _navigationItem.reset( 35 DCHECK(item);
38 static_cast<web::NavigationItemImpl*>(item.release())); 36 _item = static_cast<web::NavigationItemImpl*>(item);
39 } 37 }
40 return self; 38 return self;
41 } 39 }
42 40
43 // TODO(ios): Shall we overwrite EqualTo:?
44
45 - (instancetype)copyWithZone:(NSZone*)zone {
46 CRWSessionEntry* copy = [[[self class] alloc] init];
47 copy->_navigationItem.reset(
48 new web::NavigationItemImpl(*_navigationItem.get()));
49 return copy;
50 }
51
52 - (NSString*)description { 41 - (NSString*)description {
53 return [NSString 42 return [NSString
54 stringWithFormat: 43 stringWithFormat:
55 @"url:%@ originalurl:%@ title:%@ transition:%d displayState:%@ " 44 @"url:%@ originalurl:%@ title:%@ transition:%d displayState:%@ "
56 @"desktopUA:%d", 45 @"desktopUA:%d",
57 base::SysUTF8ToNSString(_navigationItem->GetURL().spec()), 46 base::SysUTF8ToNSString(_item->GetURL().spec()),
58 base::SysUTF8ToNSString( 47 base::SysUTF8ToNSString(_item->GetOriginalRequestURL().spec()),
59 _navigationItem->GetOriginalRequestURL().spec()), 48 base::SysUTF16ToNSString(_item->GetTitle()),
60 base::SysUTF16ToNSString(_navigationItem->GetTitle()), 49 _item->GetTransitionType(),
61 _navigationItem->GetTransitionType(), 50 _item->GetPageDisplayState().GetDescription(),
62 _navigationItem->GetPageDisplayState().GetDescription(), 51 _item->IsOverridingUserAgent()];
63 _navigationItem->IsOverridingUserAgent()];
64 } 52 }
65 53
66 - (web::NavigationItem*)navigationItem { 54 - (web::NavigationItem*)navigationItem {
67 return _navigationItem.get(); 55 return _item;
68 } 56 }
69 57
70 - (web::NavigationItemImpl*)navigationItemImpl { 58 - (web::NavigationItemImpl*)navigationItemImpl {
71 return _navigationItem.get(); 59 return _item;
72 } 60 }
73 61
74 @end 62 @end
OLDNEW
« no previous file with comments | « ios/web/navigation/crw_session_entry.h ('k') | ios/web/navigation/crw_session_entry_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698