Commit df13cdcb authored by Xiaoqian Dai's avatar Xiaoqian Dai Committed by Commit Bot

Update the user agent to request the mobile version site.

When we requeste a tab's mobile version site, we overwrite the user
agent's OS to Android OS so that the site can use its mobile version
layout. In this CL, when overwriting the user agent
- Update the Android version from Android 4.0.3 to Android 9
- Add "Chrome tablet" into its OS string
- Change product name from "Chrome" to "Chrome Mobile"
to increase the likelihood of sites adopting the user agent and
displaying the mobile version sites.

Bug: 953577
Change-Id: Ib72bd7abb1fa05dbcf9861b1d4d7ff8552c1f01d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1637649
Commit-Queue: Xiaoqian Dai <xdai@chromium.org>
Reviewed-by: default avatarElly Fong-Jones <ellyjones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#665168}
parent 6a5f5504
...@@ -175,16 +175,8 @@ class CustomTabSessionImpl : public arc::mojom::CustomTabSession { ...@@ -175,16 +175,8 @@ class CustomTabSessionImpl : public arc::mojom::CustomTabSession {
std::unique_ptr<content::WebContents> web_contents = std::unique_ptr<content::WebContents> web_contents =
content::WebContents::Create(create_params); content::WebContents::Create(create_params);
// Use the same version number as browser_commands.cc
// TODO(hashimoto): Get the actual Android version from the container.
constexpr char kOsOverrideForTabletSite[] = "Linux; Android 4.0.3";
// Override the user agent to request mobile version web sites. // Override the user agent to request mobile version web sites.
const std::string product = chrome::SetAndroidOsForTabletSite(web_contents.get());
version_info::GetProductNameAndVersionForUserAgent();
const std::string user_agent = content::BuildUserAgentFromOSAndProduct(
kOsOverrideForTabletSite, product);
web_contents->SetUserAgentOverride(user_agent,
false /* override_in_new_tabs */);
content::NavigationController::LoadURLParams load_url_params(url); content::NavigationController::LoadURLParams load_url_params(url);
load_url_params.source_site_instance = site_instance; load_url_params.source_site_instance = site_instance;
......
...@@ -134,7 +134,7 @@ ...@@ -134,7 +134,7 @@
namespace { namespace {
const char kOsOverrideForTabletSite[] = "Linux; Android 4.0.3"; const char kOsOverrideForTabletSite[] = "Linux; Android 9; Chrome tablet";
translate::TranslateBubbleUiEvent TranslateBubbleResultToUiEvent( translate::TranslateBubbleUiEvent TranslateBubbleResultToUiEvent(
ShowTranslateBubbleResult result) { ShowTranslateBubbleResult result) {
...@@ -1243,16 +1243,24 @@ void ToggleRequestTabletSite(Browser* browser) { ...@@ -1243,16 +1243,24 @@ void ToggleRequestTabletSite(Browser* browser) {
NavigationEntry* entry = controller.GetLastCommittedEntry(); NavigationEntry* entry = controller.GetLastCommittedEntry();
if (!entry) if (!entry)
return; return;
if (entry->GetIsOverridingUserAgent()) { if (entry->GetIsOverridingUserAgent())
entry->SetIsOverridingUserAgent(false); entry->SetIsOverridingUserAgent(false);
} else { else
SetAndroidOsForTabletSite(current_tab);
controller.Reload(content::ReloadType::ORIGINAL_REQUEST_URL, true);
}
void SetAndroidOsForTabletSite(content::WebContents* current_tab) {
DCHECK(current_tab);
NavigationEntry* entry = current_tab->GetController().GetLastCommittedEntry();
if (entry) {
entry->SetIsOverridingUserAgent(true); entry->SetIsOverridingUserAgent(true);
std::string product = version_info::GetProductNameAndVersionForUserAgent(); std::string product =
version_info::GetProductNameAndVersionForUserAgent() + " Mobile";
current_tab->SetUserAgentOverride(content::BuildUserAgentFromOSAndProduct( current_tab->SetUserAgentOverride(content::BuildUserAgentFromOSAndProduct(
kOsOverrideForTabletSite, product), kOsOverrideForTabletSite, product),
false); false);
} }
controller.Reload(content::ReloadType::ORIGINAL_REQUEST_URL, true);
} }
void ToggleFullscreenMode(Browser* browser) { void ToggleFullscreenMode(Browser* browser) {
......
...@@ -159,6 +159,10 @@ void DistillCurrentPage(Browser* browser); ...@@ -159,6 +159,10 @@ void DistillCurrentPage(Browser* browser);
bool CanRequestTabletSite(content::WebContents* current_tab); bool CanRequestTabletSite(content::WebContents* current_tab);
bool IsRequestingTabletSite(Browser* browser); bool IsRequestingTabletSite(Browser* browser);
void ToggleRequestTabletSite(Browser* browser); void ToggleRequestTabletSite(Browser* browser);
// Overwrite the user agent's OS with Android OS so that the web content is
// using its mobile version layout. Note it won't take effect until the web
// contents is reloaded.
void SetAndroidOsForTabletSite(content::WebContents* current_tab);
void ToggleFullscreenMode(Browser* browser); void ToggleFullscreenMode(Browser* browser);
void ClearCache(Browser* browser); void ClearCache(Browser* browser);
bool IsDebuggerAttachedToCurrentTab(Browser* browser); bool IsDebuggerAttachedToCurrentTab(Browser* browser);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment