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

Unified Diff: ios/chrome/browser/tabs/tab.mm

Issue 2789433006: Implement request mobile site. (Closed)
Patch Set: Fix failing eg tests on iPad. Created 3 years, 8 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
« no previous file with comments | « ios/chrome/browser/tabs/tab.h ('k') | ios/chrome/browser/ui/browser_view_controller.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/tabs/tab.mm
diff --git a/ios/chrome/browser/tabs/tab.mm b/ios/chrome/browser/tabs/tab.mm
index 3b94a7e5f17d072ce6a37b4b3b194c18548b963c..29e6c97cf7639d70992406f2fda3314575ef1aa7 100644
--- a/ios/chrome/browser/tabs/tab.mm
+++ b/ios/chrome/browser/tabs/tab.mm
@@ -198,6 +198,15 @@ bool IsApplicationStateNotActive(UIApplicationState state) {
state == UIApplicationStateInactive);
}
+// Returns true if |item| is the result of a HTTP redirect.
+// Returns false if |item| is nullptr;
+bool IsItemRedirectItem(web::NavigationItem* item) {
+ if (!item)
+ return false;
+
+ return (ui::PageTransition::PAGE_TRANSITION_IS_REDIRECT_MASK &
+ item->GetTransitionType()) == 0;
+}
} // namespace
@interface Tab ()<CRWWebStateObserver,
@@ -1358,7 +1367,7 @@ - (BOOL)usesDesktopUserAgent {
visibleItem->GetUserAgentType() == web::UserAgentType::DESKTOP;
}
-- (void)reloadForDesktopUserAgent {
+- (void)reloadWithUserAgentType:(web::UserAgentType)userAgentType {
// This removes the web view, which will be recreated at the end of this.
[self.webController requirePageReconstruction];
@@ -1367,25 +1376,41 @@ - (void)reloadForDesktopUserAgent {
// navigation from new navigations.
web::NavigationManager* navigationManager = [self navigationManager];
DCHECK(navigationManager);
- web::NavigationItem* lastNonRedirectedItem =
- GetLastCommittedNonRedirectedItem(navigationManager);
- if (!lastNonRedirectedItem)
+
+ web::NavigationItem* lastNonRedirectItem =
+ navigationManager->GetTransientItem();
+ if (!lastNonRedirectItem || IsItemRedirectItem(lastNonRedirectItem))
+ lastNonRedirectItem = navigationManager->GetVisibleItem();
+ if (!lastNonRedirectItem || IsItemRedirectItem(lastNonRedirectItem))
+ lastNonRedirectItem = GetLastCommittedNonRedirectedItem(navigationManager);
+
+ if (!lastNonRedirectItem)
return;
// |reloadURL| will be empty if a page was open by DOM.
- GURL reloadURL(lastNonRedirectedItem->GetOriginalRequestURL());
+ GURL reloadURL(lastNonRedirectItem->GetOriginalRequestURL());
if (reloadURL.is_empty()) {
DCHECK(self.webState && self.webState->HasOpener());
- reloadURL = lastNonRedirectedItem->GetVirtualURL();
+ reloadURL = lastNonRedirectItem->GetVirtualURL();
}
web::NavigationManager::WebLoadParams params(reloadURL);
- params.referrer = lastNonRedirectedItem->GetReferrer();
- // A new navigation is needed here for reloading with desktop User-Agent.
- params.user_agent_override_option =
- web::NavigationManager::UserAgentOverrideOption::DESKTOP;
- params.transition_type =
- ui::PageTransitionFromInt(ui::PAGE_TRANSITION_FORM_SUBMIT);
+ params.referrer = lastNonRedirectItem->GetReferrer();
+ params.transition_type = ui::PAGE_TRANSITION_RELOAD;
+
+ switch (userAgentType) {
+ case web::UserAgentType::DESKTOP:
+ params.user_agent_override_option =
+ web::NavigationManager::UserAgentOverrideOption::DESKTOP;
+ break;
+ case web::UserAgentType::MOBILE:
+ params.user_agent_override_option =
+ web::NavigationManager::UserAgentOverrideOption::MOBILE;
+ break;
+ case web::UserAgentType::NONE:
+ NOTREACHED();
+ }
+
navigationManager->LoadURLWithParams(params);
}
« no previous file with comments | « ios/chrome/browser/tabs/tab.h ('k') | ios/chrome/browser/ui/browser_view_controller.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698