Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 38 NSString* const kSessionEntryTimestampKey = @"timestamp"; | 38 NSString* const kSessionEntryTimestampKey = @"timestamp"; |
| 39 NSString* const kSessionEntryTitleKey = @"title"; | 39 NSString* const kSessionEntryTitleKey = @"title"; |
| 40 NSString* const kSessionEntryPOSTDataKey = @"POSTData"; | 40 NSString* const kSessionEntryPOSTDataKey = @"POSTData"; |
| 41 NSString* const kSessionEntryHTTPRequestHeadersKey = @"httpHeaders"; | 41 NSString* const kSessionEntryHTTPRequestHeadersKey = @"httpHeaders"; |
| 42 NSString* const kSessionEntrySkipResubmitConfirmationKey = | 42 NSString* const kSessionEntrySkipResubmitConfirmationKey = |
| 43 @"skipResubmitDataConfirmation"; | 43 @"skipResubmitDataConfirmation"; |
| 44 NSString* const kSessionEntryUseDesktopUserAgentKey = @"useDesktopUserAgent"; | 44 NSString* const kSessionEntryUseDesktopUserAgentKey = @"useDesktopUserAgent"; |
| 45 } | 45 } |
| 46 | 46 |
| 47 @interface CRWSessionEntry () { | 47 @interface CRWSessionEntry () { |
| 48 // The original URL of the page. In cases where a redirect occurred, |url_| | |
| 49 // will contain the final post-redirect URL, and |originalUrl_| will contain | |
| 50 // the pre-redirect URL. This field is not persisted to disk. | |
| 51 GURL _originalUrl; | |
| 52 | |
| 53 // The NavigationItemImpl corresponding to this CRWSessionEntry. | 48 // The NavigationItemImpl corresponding to this CRWSessionEntry. |
| 54 // TODO(stuartmorgan): Move ownership to NavigationManagerImpl. | 49 // TODO(stuartmorgan): Move ownership to NavigationManagerImpl. |
| 55 std::unique_ptr<web::NavigationItemImpl> _navigationItem; | 50 std::unique_ptr<web::NavigationItemImpl> _navigationItem; |
| 56 } | 51 } |
| 57 // Redefine originalUrl to be read-write. | |
| 58 @property(nonatomic, readwrite) const GURL& originalUrl; | |
| 59 | 52 |
| 60 // Converts a serialized NSDictionary to a web::PageDisplayState. | 53 // Converts a serialized NSDictionary to a web::PageDisplayState. |
| 61 + (web::PageDisplayState)pageDisplayStateFromDictionary: | 54 + (web::PageDisplayState)pageDisplayStateFromDictionary: |
| 62 (NSDictionary*)dictionary; | 55 (NSDictionary*)dictionary; |
| 63 // Serializes a web::PageDisplayState to an NSDictionary. | 56 // Serializes a web::PageDisplayState to an NSDictionary. |
| 64 + (NSDictionary*)dictionaryFromPageDisplayState: | 57 + (NSDictionary*)dictionaryFromPageDisplayState: |
| 65 (const web::PageDisplayState&)displayState; | 58 (const web::PageDisplayState&)displayState; |
| 66 // Returns a readable description of |displayState|. | 59 // Returns a readable description of |displayState|. |
| 67 + (NSString*)descriptionForPageDisplayState: | 60 + (NSString*)descriptionForPageDisplayState: |
| 68 (const web::PageDisplayState&)displayState; | 61 (const web::PageDisplayState&)displayState; |
| 69 @end | 62 @end |
| 70 | 63 |
| 71 @implementation CRWSessionEntry | 64 @implementation CRWSessionEntry |
| 72 | 65 |
| 73 @synthesize originalUrl = _originalUrl; | |
| 74 | |
| 75 - (instancetype)initWithNavigationItem: | 66 - (instancetype)initWithNavigationItem: |
| 76 (std::unique_ptr<web::NavigationItem>)item { | 67 (std::unique_ptr<web::NavigationItem>)item { |
| 77 self = [super init]; | 68 self = [super init]; |
| 78 if (self) { | 69 if (self) { |
| 79 _navigationItem.reset( | 70 _navigationItem.reset( |
| 80 static_cast<web::NavigationItemImpl*>(item.release())); | 71 static_cast<web::NavigationItemImpl*>(item.release())); |
| 81 self.originalUrl = _navigationItem->GetURL(); | |
|
Eugene But (OOO till 7-30)
2016/12/16 22:18:18
Do we need to do this?:
|_navigationItem->SetOrigi
kkhorimoto
2017/01/21 02:41:29
This line is no longer necessary, as the original
| |
| 82 } | 72 } |
| 83 return self; | 73 return self; |
| 84 } | 74 } |
| 85 | 75 |
| 86 - (instancetype)initWithCoder:(NSCoder*)aDecoder { | 76 - (instancetype)initWithCoder:(NSCoder*)aDecoder { |
| 87 self = [super init]; | 77 self = [super init]; |
| 88 if (self) { | 78 if (self) { |
| 89 _navigationItem.reset(new web::NavigationItemImpl()); | 79 _navigationItem.reset(new web::NavigationItemImpl()); |
| 90 | 80 |
| 91 // Desktop chrome only persists virtualUrl_ and uses it to feed the url | 81 // Desktop chrome only persists virtualUrl_ and uses it to feed the url |
| 92 // when creating a NavigationEntry. | 82 // when creating a NavigationEntry. |
| 93 GURL url; | 83 GURL url; |
| 94 if ([aDecoder containsValueForKey:web::kSessionEntryURLKey]) { | 84 if ([aDecoder containsValueForKey:web::kSessionEntryURLKey]) { |
| 95 url = GURL( | 85 url = GURL( |
| 96 web::nscoder_util::DecodeString(aDecoder, web::kSessionEntryURLKey)); | 86 web::nscoder_util::DecodeString(aDecoder, web::kSessionEntryURLKey)); |
| 97 } else { | 87 } else { |
| 98 // Backward compatibility. | 88 // Backward compatibility. |
| 99 url = net::GURLWithNSURL( | 89 url = net::GURLWithNSURL( |
| 100 [aDecoder decodeObjectForKey:web::kSessionEntryURLDeperecatedKey]); | 90 [aDecoder decodeObjectForKey:web::kSessionEntryURLDeperecatedKey]); |
| 101 } | 91 } |
| 92 _navigationItem->SetOriginalRequestURL(url); | |
| 102 _navigationItem->SetURL(url); | 93 _navigationItem->SetURL(url); |
| 103 self.originalUrl = url; | |
| 104 | 94 |
| 105 if ([aDecoder containsValueForKey:web::kSessionEntryReferrerURLKey]) { | 95 if ([aDecoder containsValueForKey:web::kSessionEntryReferrerURLKey]) { |
| 106 const std::string referrerString(web::nscoder_util::DecodeString( | 96 const std::string referrerString(web::nscoder_util::DecodeString( |
| 107 aDecoder, web::kSessionEntryReferrerURLKey)); | 97 aDecoder, web::kSessionEntryReferrerURLKey)); |
| 108 web::ReferrerPolicy referrerPolicy = static_cast<web::ReferrerPolicy>( | 98 web::ReferrerPolicy referrerPolicy = static_cast<web::ReferrerPolicy>( |
| 109 [aDecoder decodeIntForKey:web::kSessionEntryReferrerPolicyKey]); | 99 [aDecoder decodeIntForKey:web::kSessionEntryReferrerPolicyKey]); |
| 110 _navigationItem->SetReferrer( | 100 _navigationItem->SetReferrer( |
| 111 web::Referrer(GURL(referrerString), referrerPolicy)); | 101 web::Referrer(GURL(referrerString), referrerPolicy)); |
| 112 } else { | 102 } else { |
| 113 // Backward compatibility. | 103 // Backward compatibility. |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 169 [aCoder encodeObject:_navigationItem->GetHttpRequestHeaders() | 159 [aCoder encodeObject:_navigationItem->GetHttpRequestHeaders() |
| 170 forKey:web::kSessionEntryHTTPRequestHeadersKey]; | 160 forKey:web::kSessionEntryHTTPRequestHeadersKey]; |
| 171 } | 161 } |
| 172 | 162 |
| 173 // TODO(ios): Shall we overwrite EqualTo:? | 163 // TODO(ios): Shall we overwrite EqualTo:? |
| 174 | 164 |
| 175 - (instancetype)copyWithZone:(NSZone*)zone { | 165 - (instancetype)copyWithZone:(NSZone*)zone { |
| 176 CRWSessionEntry* copy = [[[self class] alloc] init]; | 166 CRWSessionEntry* copy = [[[self class] alloc] init]; |
| 177 copy->_navigationItem.reset( | 167 copy->_navigationItem.reset( |
| 178 new web::NavigationItemImpl(*_navigationItem.get())); | 168 new web::NavigationItemImpl(*_navigationItem.get())); |
| 179 copy->_originalUrl = _originalUrl; | |
| 180 return copy; | 169 return copy; |
| 181 } | 170 } |
| 182 | 171 |
| 183 - (NSString*)description { | 172 - (NSString*)description { |
| 184 return [NSString | 173 return [NSString |
| 185 stringWithFormat: | 174 stringWithFormat: |
| 186 @"url:%@ originalurl:%@ title:%@ transition:%d displayState:%@ " | 175 @"url:%@ originalurl:%@ title:%@ transition:%d displayState:%@ " |
| 187 @"desktopUA:%d", | 176 @"desktopUA:%d", |
| 188 base::SysUTF8ToNSString(_navigationItem->GetURL().spec()), | 177 base::SysUTF8ToNSString(_navigationItem->GetURL().spec()), |
| 189 base::SysUTF8ToNSString(self.originalUrl.spec()), | 178 base::SysUTF8ToNSString( |
| 179 _navigationItem->GetOriginalRequestURL().spec()), | |
| 190 base::SysUTF16ToNSString(_navigationItem->GetTitle()), | 180 base::SysUTF16ToNSString(_navigationItem->GetTitle()), |
| 191 _navigationItem->GetTransitionType(), | 181 _navigationItem->GetTransitionType(), |
| 192 [[self class] descriptionForPageDisplayState: | 182 [[self class] |
| 193 _navigationItem->GetPageDisplayState()], | 183 descriptionForPageDisplayState:_navigationItem |
| 184 ->GetPageDisplayState()], | |
| 194 _navigationItem->IsOverridingUserAgent()]; | 185 _navigationItem->IsOverridingUserAgent()]; |
| 195 } | 186 } |
| 196 | 187 |
| 197 - (web::NavigationItem*)navigationItem { | 188 - (web::NavigationItem*)navigationItem { |
| 198 return _navigationItem.get(); | 189 return _navigationItem.get(); |
| 199 } | 190 } |
| 200 | 191 |
| 201 - (web::NavigationItemImpl*)navigationItemImpl { | 192 - (web::NavigationItemImpl*)navigationItemImpl { |
| 202 return _navigationItem.get(); | 193 return _navigationItem.get(); |
| 203 } | 194 } |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 246 return | 237 return |
| 247 [NSString stringWithFormat:kPageScrollStateDescriptionFormat, | 238 [NSString stringWithFormat:kPageScrollStateDescriptionFormat, |
| 248 displayState.scroll_state().offset_x(), | 239 displayState.scroll_state().offset_x(), |
| 249 displayState.scroll_state().offset_y(), | 240 displayState.scroll_state().offset_y(), |
| 250 displayState.zoom_state().minimum_zoom_scale(), | 241 displayState.zoom_state().minimum_zoom_scale(), |
| 251 displayState.zoom_state().maximum_zoom_scale(), | 242 displayState.zoom_state().maximum_zoom_scale(), |
| 252 displayState.zoom_state().zoom_scale()]; | 243 displayState.zoom_state().zoom_scale()]; |
| 253 } | 244 } |
| 254 | 245 |
| 255 @end | 246 @end |
| OLD | NEW |