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

Unified Diff: ios/web/navigation/crw_session_entry.mm

Issue 2664113003: Moved serialization out of CRWSessionEntry. (Closed)
Patch Set: Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
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 c5bd035b0f852eff8350db39c3eaaab7293b9f96..816fef83915216132a04e8bff96bd1a2450b762d 100644
--- a/ios/web/navigation/crw_session_entry.mm
+++ b/ios/web/navigation/crw_session_entry.mm
@@ -50,12 +50,6 @@ @interface CRWSessionEntry () {
std::unique_ptr<web::NavigationItemImpl> _navigationItem;
}
-// Converts a serialized NSDictionary to a web::PageDisplayState.
-+ (web::PageDisplayState)pageDisplayStateFromDictionary:
- (NSDictionary*)dictionary;
-// Serializes a web::PageDisplayState to an NSDictionary.
-+ (NSDictionary*)dictionaryFromPageDisplayState:
- (const web::PageDisplayState&)displayState;
// Returns a readable description of |displayState|.
+ (NSString*)descriptionForPageDisplayState:
(const web::PageDisplayState&)displayState;
@@ -73,93 +67,6 @@ - (instancetype)initWithNavigationItem:
return self;
}
-- (instancetype)initWithCoder:(NSCoder*)aDecoder {
- self = [super init];
- if (self) {
- _navigationItem.reset(new web::NavigationItemImpl());
-
- // Desktop chrome only persists virtualUrl_ and uses it to feed the url
- // when creating a NavigationEntry.
- GURL url;
- if ([aDecoder containsValueForKey:web::kSessionEntryURLKey]) {
- url = GURL(
- web::nscoder_util::DecodeString(aDecoder, web::kSessionEntryURLKey));
- } else {
- // Backward compatibility.
- url = net::GURLWithNSURL(
- [aDecoder decodeObjectForKey:web::kSessionEntryURLDeperecatedKey]);
- }
- _navigationItem->SetOriginalRequestURL(url);
- _navigationItem->SetURL(url);
-
- if ([aDecoder containsValueForKey:web::kSessionEntryReferrerURLKey]) {
- const std::string referrerString(web::nscoder_util::DecodeString(
- 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:web::kSessionEntryReferrerURLDeprecatedKey];
- _navigationItem->SetReferrer(web::Referrer(
- net::GURLWithNSURL(referrer), web::ReferrerPolicyDefault));
- }
-
- if ([aDecoder containsValueForKey:web::kSessionEntryTimestampKey]) {
- int64_t us = [aDecoder decodeInt64ForKey:web::kSessionEntryTimestampKey];
- _navigationItem->SetTimestamp(base::Time::FromInternalValue(us));
- }
-
- 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->SetTitle(base::SysNSStringToUTF16(title));
- _navigationItem->SetTransitionType(ui::PAGE_TRANSITION_RELOAD);
- _navigationItem->SetPageDisplayState([[self class]
- pageDisplayStateFromDictionary:
- [aDecoder
- decodeObjectForKey:web::kSessionEntryPageScrollStateKey]]);
- _navigationItem->SetShouldSkipRepostFormConfirmation([aDecoder
- decodeBoolForKey:web::kSessionEntrySkipRepostFormConfirmationKey]);
- _navigationItem->SetIsOverridingUserAgent(
- [aDecoder decodeBoolForKey:web::kSessionEntryUseDesktopUserAgentKey]);
- _navigationItem->SetPostData(
- [aDecoder decodeObjectForKey:web::kSessionEntryPOSTDataKey]);
- _navigationItem->AddHttpRequestHeaders(
- [aDecoder decodeObjectForKey:web::kSessionEntryHTTPRequestHeadersKey]);
- }
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder*)aCoder {
- // Desktop Chrome doesn't persist |url_| or |originalUrl_|, only
- // |virtualUrl_|.
- web::nscoder_util::EncodeString(aCoder, web::kSessionEntryURLKey,
- _navigationItem->GetVirtualURL().spec());
- web::nscoder_util::EncodeString(aCoder, web::kSessionEntryReferrerURLKey,
- _navigationItem->GetReferrer().url.spec());
- [aCoder encodeInt:_navigationItem->GetReferrer().policy
- forKey:web::kSessionEntryReferrerPolicyKey];
- [aCoder encodeInt64:_navigationItem->GetTimestamp().ToInternalValue()
- forKey:web::kSessionEntryTimestampKey];
-
- [aCoder encodeObject:base::SysUTF16ToNSString(_navigationItem->GetTitle())
- forKey:web::kSessionEntryTitleKey];
- [aCoder encodeObject:[[self class] dictionaryFromPageDisplayState:
- _navigationItem->GetPageDisplayState()]
- forKey:web::kSessionEntryPageScrollStateKey];
- [aCoder encodeBool:_navigationItem->ShouldSkipRepostFormConfirmation()
- forKey:web::kSessionEntrySkipRepostFormConfirmationKey];
- [aCoder encodeBool:_navigationItem->IsOverridingUserAgent()
- forKey:web::kSessionEntryUseDesktopUserAgentKey];
- [aCoder encodeObject:_navigationItem->GetPostData()
- forKey:web::kSessionEntryPOSTDataKey];
- [aCoder encodeObject:_navigationItem->GetHttpRequestHeaders()
- forKey:web::kSessionEntryHTTPRequestHeadersKey];
-}
-
// TODO(ios): Shall we overwrite EqualTo:?
- (instancetype)copyWithZone:(NSZone*)zone {
@@ -193,41 +100,7 @@ - (NSString*)description {
return _navigationItem.get();
}
-#pragma mark - Serialization helpers
-
-+ (web::PageDisplayState)pageDisplayStateFromDictionary:
- (NSDictionary*)dictionary {
- NSNumber* serializedValue = nil;
- web::PageScrollState scrollState;
- if ((serializedValue = dictionary[web::kSessionEntryScrollOffsetXKey]))
- scrollState.set_offset_x([serializedValue doubleValue]);
- if ((serializedValue = dictionary[web::kSessionEntryScrollOffsetYKey]))
- scrollState.set_offset_y([serializedValue doubleValue]);
- web::PageZoomState zoomState;
- if ((serializedValue = dictionary[web::kSessionEntryMinimumZoomScaleKey]))
- zoomState.set_minimum_zoom_scale([serializedValue doubleValue]);
- if ((serializedValue = dictionary[web::kSessionEntryMaximumZoomScaleKey]))
- zoomState.set_maximum_zoom_scale([serializedValue doubleValue]);
- if ((serializedValue = dictionary[web::kSessionEntryZoomScaleKey]))
- zoomState.set_zoom_scale([serializedValue doubleValue]);
- return web::PageDisplayState(scrollState, zoomState);
-}
-
-+ (NSDictionary*)dictionaryFromPageDisplayState:
- (const web::PageDisplayState&)displayState {
- return @{
- web::kSessionEntryScrollOffsetXKey :
- @(displayState.scroll_state().offset_x()),
- web::kSessionEntryScrollOffsetYKey :
- @(displayState.scroll_state().offset_y()),
- web::kSessionEntryMinimumZoomScaleKey :
- @(displayState.zoom_state().minimum_zoom_scale()),
- web::kSessionEntryMaximumZoomScaleKey :
- @(displayState.zoom_state().maximum_zoom_scale()),
- web::kSessionEntryZoomScaleKey :
- @(displayState.zoom_state().zoom_scale())
- };
-}
+#pragma mark -
+ (NSString*)descriptionForPageDisplayState:
(const web::PageDisplayState&)displayState {

Powered by Google App Engine
This is Rietveld 408576698