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

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

Issue 2698773002: [iOS] Refactoring web CRWSessionController user agent code. (Closed)
Patch Set: Addressed feedback 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 side-by-side diff with in-line comments
Download patch
Index: ios/web/navigation/crw_session_controller.mm
diff --git a/ios/web/navigation/crw_session_controller.mm b/ios/web/navigation/crw_session_controller.mm
index aa98921e620a5bc72c68361aaeca35d56bf95462..fdac04d133848210783972b64263d9a390bc9868 100644
--- a/ios/web/navigation/crw_session_controller.mm
+++ b/ios/web/navigation/crw_session_controller.mm
@@ -114,7 +114,6 @@ - (void)discardTransientItem;
- (CRWSessionEntry*)sessionEntryWithURL:(const GURL&)url
referrer:(const web::Referrer&)referrer
transition:(ui::PageTransition)transition
- useDesktopUserAgent:(BOOL)useDesktopUserAgent
rendererInitiated:(BOOL)rendererInitiated;
// Returns YES if the PageTransition for the underlying navigationItem at
// |index| in |entries_| has ui::PAGE_TRANSITION_IS_REDIRECT_MASK.
@@ -367,10 +366,17 @@ - (void)addPendingItem:(const GURL&)url
CRWSessionEntry* currentEntry = self.currentEntry;
if (currentEntry) {
web::NavigationItem* item = [currentEntry navigationItem];
- if (item->GetURL() == url &&
- (!PageTransitionCoreTypeIs(trans, ui::PAGE_TRANSITION_FORM_SUBMIT) ||
- PageTransitionCoreTypeIs(item->GetTransitionType(),
- ui::PAGE_TRANSITION_FORM_SUBMIT))) {
+
+ BOOL hasSameURL = item->GetURL() == url;
+ BOOL isPendingTransitionFormSubmit =
+ PageTransitionCoreTypeIs(trans, ui::PAGE_TRANSITION_FORM_SUBMIT);
+ BOOL isCurrentTransitionFormSubmit = PageTransitionCoreTypeIs(
+ item->GetTransitionType(), ui::PAGE_TRANSITION_FORM_SUBMIT);
+ BOOL shouldCreatePendingItem =
+ !hasSameURL ||
+ (isPendingTransitionFormSubmit && !isCurrentTransitionFormSubmit);
+
+ if (!shouldCreatePendingItem) {
// Send the notification anyway, to preserve old behavior. It's unknown
// whether anything currently relies on this, but since both this whole
// hack and the content facade will both be going away, it's not worth
@@ -382,15 +388,9 @@ - (void)addPendingItem:(const GURL&)url
}
}
- BOOL useDesktopUserAgent =
- _useDesktopUserAgentForNextPendingItem ||
- (self.currentEntry.navigationItem &&
- self.currentEntry.navigationItem->IsOverridingUserAgent());
- _useDesktopUserAgentForNextPendingItem = NO;
_pendingEntry.reset([self sessionEntryWithURL:url
referrer:ref
transition:trans
- useDesktopUserAgent:useDesktopUserAgent
rendererInitiated:rendererInitiated]);
if (_navigationManager && _navigationManager->GetFacadeDelegate()) {
@@ -484,7 +484,6 @@ - (void)addTransientItemWithURL:(const GURL&)URL {
sessionEntryWithURL:URL
referrer:web::Referrer()
transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT
- useDesktopUserAgent:NO
rendererInitiated:NO]);
web::NavigationItem* navigationItem = [_transientEntry navigationItem];
@@ -502,15 +501,17 @@ - (void)pushNewItemWithURL:(const GURL&)URL
CHECK(
web::history_state_util::IsHistoryStateChangeValid(item->GetURL(), URL));
web::Referrer referrer(item->GetURL(), web::ReferrerPolicyDefault);
- bool overrideUserAgent =
- self.currentEntry.navigationItem->IsOverridingUserAgent();
+
base::scoped_nsobject<CRWSessionEntry> pushedEntry([self
sessionEntryWithURL:URL
referrer:referrer
transition:transition
- useDesktopUserAgent:overrideUserAgent
rendererInitiated:NO]);
+
web::NavigationItemImpl* pushedItem = [pushedEntry navigationItemImpl];
+ bool overrideUserAgent =
+ self.currentEntry.navigationItem->IsOverridingUserAgent();
Eugene But (OOO till 7-30) 2017/02/16 02:20:48 nit: How about this?: pushedItem->SetIsOverridingU
liaoyuke 2017/02/16 22:04:29 Done.
+ pushedItem->SetIsOverridingUserAgent(overrideUserAgent);
pushedItem->SetSerializedStateObject(stateObject);
pushedItem->SetIsCreatedFromPushState(true);
web::SSLStatus& sslStatus = [self currentEntry].navigationItem->GetSSL();
@@ -679,13 +680,6 @@ - (CRWSessionEntry*)lastUserEntry {
return [_entries objectAtIndex:index];
}
-- (void)useDesktopUserAgentForNextPendingItem {
- if (_pendingEntry)
- [_pendingEntry navigationItem]->SetIsOverridingUserAgent(true);
- else
- _useDesktopUserAgentForNextPendingItem = YES;
-}
-
- (NSInteger)indexOfItem:(const web::NavigationItem*)item {
web::NavigationItemList items = self.items;
for (NSInteger i = 0; i < static_cast<NSInteger>(items.size()); ++i) {
@@ -712,7 +706,6 @@ - (NSString*)uniqueID {
- (CRWSessionEntry*)sessionEntryWithURL:(const GURL&)url
referrer:(const web::Referrer&)referrer
transition:(ui::PageTransition)transition
- useDesktopUserAgent:(BOOL)useDesktopUserAgent
rendererInitiated:(BOOL)rendererInitiated {
GURL loaded_url(url);
BOOL urlWasRewritten = NO;
@@ -733,7 +726,6 @@ - (CRWSessionEntry*)sessionEntryWithURL:(const GURL&)url
item->SetURL(loaded_url);
item->SetReferrer(referrer);
item->SetTransitionType(transition);
- item->SetIsOverridingUserAgent(useDesktopUserAgent);
item->set_is_renderer_initiated(rendererInitiated);
return [[CRWSessionEntry alloc] initWithNavigationItem:std::move(item)];
}

Powered by Google App Engine
This is Rietveld 408576698