crbug.com/127841 - Request Tablet Site on CB with touch screen.

Allow user to request tablet site via a toggle on the wrench menu. Under about-flag & cmd line switch:
--enable-request-tablet-site

BUG=127841
TEST=Run with flag; 
URLs to try: whatsmyuseragent.com, whatsmyua.com, slashdot.org, www.espn.com, www,facebook.com, www.google.com
toggle "Request tablet site" under wrench menu


Review URL: https://chromiumcodereview.appspot.com/10827146

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@155872 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/ui/browser_commands.cc b/chrome/browser/ui/browser_commands.cc
index 4ebcfdd..9c31248 100644
--- a/chrome/browser/ui/browser_commands.cc
+++ b/chrome/browser/ui/browser_commands.cc
@@ -63,12 +63,14 @@
 #include "content/public/browser/web_contents.h"
 #include "content/public/browser/web_contents_view.h"
 #include "content/public/browser/web_intents_dispatcher.h"
+#include "content/public/common/content_client.h"
 #include "content/public/common/content_restriction.h"
 #include "content/public/common/renderer_preferences.h"
 #include "content/public/common/url_constants.h"
 #include "net/base/escape.h"
 #include "webkit/glue/web_intent_data.h"
 #include "webkit/glue/webkit_glue.h"
+#include "webkit/user_agent/user_agent_util.h"
 
 #if defined(OS_MACOSX)
 #include "ui/base/cocoa/find_pasteboard.h"
@@ -78,6 +80,10 @@
 #include "base/win/metro.h"
 #endif
 
+namespace {
+const char kOsOverrideForTabletSite[] = "Linux; Android 4.0.3";
+}
+
 using content::NavigationController;
 using content::NavigationEntry;
 using content::OpenURLParams;
@@ -869,6 +875,43 @@
   GetActiveWebContents(browser)->GetRenderViewHost()->ToggleSpeechInput();
 }
 
+bool CanRequestTabletSite(WebContents* current_tab) {
+  if (!current_tab)
+    return false;
+  return current_tab->GetController().GetActiveEntry() != NULL;
+}
+
+bool IsRequestingTabletSite(Browser* browser) {
+  WebContents* current_tab = chrome::GetActiveWebContents(browser);
+  if (!current_tab)
+    return false;
+  content::NavigationEntry* entry =
+      current_tab->GetController().GetActiveEntry();
+  if (!entry)
+    return false;
+  return entry->GetIsOverridingUserAgent();
+}
+
+void ToggleRequestTabletSite(Browser* browser) {
+  WebContents* current_tab = GetActiveWebContents(browser);
+  if (!current_tab)
+    return;
+  NavigationController& controller = current_tab->GetController();
+  NavigationEntry* entry = controller.GetActiveEntry();
+  if (!entry)
+    return;
+  if (entry->GetIsOverridingUserAgent()) {
+    entry->SetIsOverridingUserAgent(false);
+  } else {
+    entry->SetIsOverridingUserAgent(true);
+    current_tab->SetUserAgentOverride(
+        webkit_glue::BuildUserAgentFromOSAndProduct(
+            kOsOverrideForTabletSite,
+            content::GetContentClient()->GetProduct()));
+  }
+  controller.ReloadOriginalRequestURL(true);
+}
+
 void ToggleFullscreenMode(Browser* browser) {
   browser->fullscreen_controller()->ToggleFullscreenMode();
 }