| Index: ios/web/navigation/crw_session_entry.mm
|
| diff --git a/ios/web/navigation/crw_session_entry.mm b/ios/web/navigation/crw_session_entry.mm
|
| index 5fd5d4ad738355dadb3130fd55fe5043f3da3ae3..31d695caadab022c108bdd618717369072cfd044 100644
|
| --- a/ios/web/navigation/crw_session_entry.mm
|
| +++ b/ios/web/navigation/crw_session_entry.mm
|
| @@ -14,13 +14,28 @@
|
| #include "ios/web/public/web_state/page_scroll_state.h"
|
| #import "net/base/mac/url_conversions.h"
|
|
|
| -namespace {
|
| +namespace web {
|
| // Keys used to serialize web::PageScrollState properties.
|
| -NSString* const kScrollOffsetXKey = @"scrollX";
|
| -NSString* const kScrollOffsetYKey = @"scrollY";
|
| -NSString* const kMinimumZoomScaleKey = @"minZoom";
|
| -NSString* const kMaximumZoomScaleKey = @"maxZoom";
|
| -NSString* const kZoomScaleKey = @"zoom";
|
| +NSString* const kSessionEntryPageScrollStateKey = @"state";
|
| +NSString* const kSessionEntryScrollOffsetXKey = @"scrollX";
|
| +NSString* const kSessionEntryScrollOffsetYKey = @"scrollY";
|
| +NSString* const kSessionEntryMinimumZoomScaleKey = @"minZoom";
|
| +NSString* const kSessionEntryMaximumZoomScaleKey = @"maxZoom";
|
| +NSString* const kSessionEntryZoomScaleKey = @"zoom";
|
| +
|
| +// Keys used to serialize navigation properties.
|
| +NSString* const kSessionEntryURLKey = @"virtualUrlString";
|
| +NSString* const kSessionEntryURLDeperecatedKey = @"virtualUrl";
|
| +NSString* const kSessionEntryReferrerURLKey = @"referrerUrlString";
|
| +NSString* const kSessionEntryReferrerURLDeprecatedKey = @"referrer";
|
| +NSString* const kSessionEntryReferrerPolicyKey = @"referrerPolicy";
|
| +NSString* const kSessionEntryTimestampKey = @"timestamp";
|
| +NSString* const kSessionEntryTitleKey = @"title";
|
| +NSString* const kSessionEntryPOSTDataKey = @"POSTData";
|
| +NSString* const kSessionEntryHTTPRequestHeadersKey = @"httpHeaders";
|
| +NSString* const kSessionEntrySkipResubmitConfirmationKey =
|
| + @"skipResubmitDataConfirmation";
|
| +NSString* const kSessionEntryUseDesktopUserAgentKey = @"useDesktopUserAgent";
|
| }
|
|
|
| @interface CRWSessionEntry () {
|
| @@ -71,51 +86,55 @@ NSString* const kZoomScaleKey = @"zoom";
|
| // Desktop chrome only persists virtualUrl_ and uses it to feed the url
|
| // when creating a NavigationEntry.
|
| GURL url;
|
| - if ([aDecoder containsValueForKey:@"virtualUrlString"]) {
|
| + if ([aDecoder containsValueForKey:web::kSessionEntryURLKey]) {
|
| url = GURL(
|
| - web::nscoder_util::DecodeString(aDecoder, @"virtualUrlString"));
|
| + web::nscoder_util::DecodeString(aDecoder, web::kSessionEntryURLKey));
|
| } else {
|
| // Backward compatibility.
|
| - url = net::GURLWithNSURL([aDecoder decodeObjectForKey:@"virtualUrl"]);
|
| + url = net::GURLWithNSURL(
|
| + [aDecoder decodeObjectForKey:web::kSessionEntryURLDeperecatedKey]);
|
| }
|
| _navigationItem->SetURL(url);
|
| self.originalUrl = url;
|
|
|
| - if ([aDecoder containsValueForKey:@"referrerUrlString"]) {
|
| + if ([aDecoder containsValueForKey:web::kSessionEntryReferrerURLKey]) {
|
| const std::string referrerString(web::nscoder_util::DecodeString(
|
| - aDecoder, @"referrerUrlString"));
|
| - web::ReferrerPolicy referrerPolicy =
|
| - static_cast<web::ReferrerPolicy>(
|
| - [aDecoder decodeIntForKey:@"referrerPolicy"]);
|
| + aDecoder, web::kSessionEntryReferrerURLKey));
|
| + web::ReferrerPolicy referrerPolicy = static_cast<web::ReferrerPolicy>(
|
| + [aDecoder decodeIntForKey:web::kSessionEntryReferrerPolicyKey]);
|
| _navigationItem->SetReferrer(
|
| web::Referrer(GURL(referrerString), referrerPolicy));
|
| } else {
|
| // Backward compatibility.
|
| - NSURL* referrer = [aDecoder decodeObjectForKey:@"referrer"];
|
| + NSURL* referrer = [aDecoder
|
| + decodeObjectForKey:web::kSessionEntryReferrerURLDeprecatedKey];
|
| _navigationItem->SetReferrer(web::Referrer(
|
| net::GURLWithNSURL(referrer), web::ReferrerPolicyDefault));
|
| }
|
|
|
| - if ([aDecoder containsValueForKey:@"timestamp"]) {
|
| - int64 us = [aDecoder decodeInt64ForKey:@"timestamp"];
|
| + if ([aDecoder containsValueForKey:web::kSessionEntryTimestampKey]) {
|
| + int64 us = [aDecoder decodeInt64ForKey:web::kSessionEntryTimestampKey];
|
| _navigationItem->SetTimestamp(base::Time::FromInternalValue(us));
|
| }
|
|
|
| - NSString* title = [aDecoder decodeObjectForKey:@"title"];
|
| + NSString* title = [aDecoder decodeObjectForKey:web::kSessionEntryTitleKey];
|
| // Use a transition type of reload so that we don't incorrectly increase
|
| // the typed count. This is what desktop chrome does.
|
| _navigationItem->SetPageID(-1);
|
| _navigationItem->SetTitle(base::SysNSStringToUTF16(title));
|
| _navigationItem->SetTransitionType(ui::PAGE_TRANSITION_RELOAD);
|
| _navigationItem->SetPageScrollState([[self class]
|
| - scrollStateFromDictionary:[aDecoder decodeObjectForKey:@"state"]]);
|
| - _navigationItem->SetShouldSkipResubmitDataConfirmation(
|
| - [aDecoder decodeBoolForKey:@"skipResubmitDataConfirmation"]);
|
| + scrollStateFromDictionary:
|
| + [aDecoder
|
| + decodeObjectForKey:web::kSessionEntryPageScrollStateKey]]);
|
| + _navigationItem->SetShouldSkipResubmitDataConfirmation([aDecoder
|
| + decodeBoolForKey:web::kSessionEntrySkipResubmitConfirmationKey]);
|
| _navigationItem->SetIsOverridingUserAgent(
|
| - [aDecoder decodeBoolForKey:@"useDesktopUserAgent"]);
|
| - _navigationItem->SetPostData([aDecoder decodeObjectForKey:@"POSTData"]);
|
| + [aDecoder decodeBoolForKey:web::kSessionEntryUseDesktopUserAgentKey]);
|
| + _navigationItem->SetPostData(
|
| + [aDecoder decodeObjectForKey:web::kSessionEntryPOSTDataKey]);
|
| _navigationItem->AddHttpRequestHeaders(
|
| - [aDecoder decodeObjectForKey:@"httpHeaders"]);
|
| + [aDecoder decodeObjectForKey:web::kSessionEntryHTTPRequestHeadersKey]);
|
| }
|
| return self;
|
| }
|
| @@ -123,27 +142,28 @@ NSString* const kZoomScaleKey = @"zoom";
|
| - (void)encodeWithCoder:(NSCoder*)aCoder {
|
| // Desktop Chrome doesn't persist |url_| or |originalUrl_|, only
|
| // |virtualUrl_|.
|
| - web::nscoder_util::EncodeString(aCoder, @"virtualUrlString",
|
| + web::nscoder_util::EncodeString(aCoder, web::kSessionEntryURLKey,
|
| _navigationItem->GetVirtualURL().spec());
|
| - web::nscoder_util::EncodeString(aCoder, @"referrerUrlString",
|
| + web::nscoder_util::EncodeString(aCoder, web::kSessionEntryReferrerURLKey,
|
| _navigationItem->GetReferrer().url.spec());
|
| [aCoder encodeInt:_navigationItem->GetReferrer().policy
|
| - forKey:@"referrerPolicy"];
|
| + forKey:web::kSessionEntryReferrerPolicyKey];
|
| [aCoder encodeInt64:_navigationItem->GetTimestamp().ToInternalValue()
|
| - forKey:@"timestamp"];
|
| + forKey:web::kSessionEntryTimestampKey];
|
|
|
| [aCoder encodeObject:base::SysUTF16ToNSString(_navigationItem->GetTitle())
|
| - forKey:@"title"];
|
| + forKey:web::kSessionEntryTitleKey];
|
| [aCoder encodeObject:[[self class] dictionaryFromScrollState:
|
| _navigationItem->GetPageScrollState()]
|
| - forKey:@"state"];
|
| + forKey:web::kSessionEntryPageScrollStateKey];
|
| [aCoder encodeBool:_navigationItem->ShouldSkipResubmitDataConfirmation()
|
| - forKey:@"skipResubmitDataConfirmation"];
|
| + forKey:web::kSessionEntrySkipResubmitConfirmationKey];
|
| [aCoder encodeBool:_navigationItem->IsOverridingUserAgent()
|
| - forKey:@"useDesktopUserAgent"];
|
| - [aCoder encodeObject:_navigationItem->GetPostData() forKey:@"POSTData"];
|
| + forKey:web::kSessionEntryUseDesktopUserAgentKey];
|
| + [aCoder encodeObject:_navigationItem->GetPostData()
|
| + forKey:web::kSessionEntryPOSTDataKey];
|
| [aCoder encodeObject:_navigationItem->GetHttpRequestHeaders()
|
| - forKey:@"httpHeaders"];
|
| + forKey:web::kSessionEntryHTTPRequestHeadersKey];
|
| }
|
|
|
| // TODO(ios): Shall we overwrite EqualTo:?
|
| @@ -184,15 +204,15 @@ NSString* const kZoomScaleKey = @"zoom";
|
| + (web::PageScrollState)scrollStateFromDictionary:(NSDictionary*)dictionary {
|
| web::PageScrollState scrollState;
|
| NSNumber* serializedValue = nil;
|
| - if ((serializedValue = dictionary[kScrollOffsetXKey]))
|
| + if ((serializedValue = dictionary[web::kSessionEntryScrollOffsetXKey]))
|
| scrollState.set_scroll_offset_x([serializedValue doubleValue]);
|
| - if ((serializedValue = dictionary[kScrollOffsetYKey]))
|
| + if ((serializedValue = dictionary[web::kSessionEntryScrollOffsetYKey]))
|
| scrollState.set_scroll_offset_y([serializedValue doubleValue]);
|
| - if ((serializedValue = dictionary[kMinimumZoomScaleKey]))
|
| + if ((serializedValue = dictionary[web::kSessionEntryMinimumZoomScaleKey]))
|
| scrollState.set_minimum_zoom_scale([serializedValue doubleValue]);
|
| - if ((serializedValue = dictionary[kMaximumZoomScaleKey]))
|
| + if ((serializedValue = dictionary[web::kSessionEntryMaximumZoomScaleKey]))
|
| scrollState.set_maximum_zoom_scale([serializedValue doubleValue]);
|
| - if ((serializedValue = dictionary[kZoomScaleKey]))
|
| + if ((serializedValue = dictionary[web::kSessionEntryZoomScaleKey]))
|
| scrollState.set_zoom_scale([serializedValue doubleValue]);
|
| return scrollState;
|
| }
|
| @@ -200,11 +220,11 @@ NSString* const kZoomScaleKey = @"zoom";
|
| + (NSDictionary*)dictionaryFromScrollState:
|
| (const web::PageScrollState&)scrollState {
|
| return @{
|
| - kScrollOffsetXKey : @(scrollState.scroll_offset_x()),
|
| - kScrollOffsetYKey : @(scrollState.scroll_offset_y()),
|
| - kMinimumZoomScaleKey : @(scrollState.minimum_zoom_scale()),
|
| - kMaximumZoomScaleKey : @(scrollState.maximum_zoom_scale()),
|
| - kZoomScaleKey : @(scrollState.zoom_scale())
|
| + web::kSessionEntryScrollOffsetXKey : @(scrollState.scroll_offset_x()),
|
| + web::kSessionEntryScrollOffsetYKey : @(scrollState.scroll_offset_y()),
|
| + web::kSessionEntryMinimumZoomScaleKey : @(scrollState.minimum_zoom_scale()),
|
| + web::kSessionEntryMaximumZoomScaleKey : @(scrollState.maximum_zoom_scale()),
|
| + web::kSessionEntryZoomScaleKey : @(scrollState.zoom_scale()),
|
| };
|
| }
|
|
|
|
|