New useragent switcher design

 Uses a popup menu off of the globe on tablets or favicon on phones

Change-Id: Ia3634b5a218456127abb8b266a6cfc664836b037
diff --git a/src/com/android/browser/TitleBarBase.java b/src/com/android/browser/TitleBarBase.java
index 4dc960c..b95711e 100644
--- a/src/com/android/browser/TitleBarBase.java
+++ b/src/com/android/browser/TitleBarBase.java
@@ -35,6 +35,8 @@
 import android.view.Gravity;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.View.OnFocusChangeListener;
@@ -48,6 +50,8 @@
 import android.widget.Button;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
+import android.widget.PopupMenu;
+import android.widget.PopupMenu.OnMenuItemClickListener;
 import android.widget.ProgressBar;
 import android.widget.RelativeLayout;
 import android.widget.Spinner;
@@ -60,7 +64,8 @@
  */
 public class TitleBarBase extends RelativeLayout
         implements OnClickListener, OnFocusChangeListener, UrlInputListener,
-        TextChangeWatcher, DeviceAccountLogin.AutoLoginCallback {
+        TextChangeWatcher, DeviceAccountLogin.AutoLoginCallback,
+        OnMenuItemClickListener {
 
     protected static final int PROGRESS_MAX = 100;
 
@@ -75,7 +80,7 @@
     protected UrlInputView mUrlInput;
     protected boolean mInVoiceMode;
     protected View mContainer;
-
+    private View mUaSwitcher;
 
     // Auto-login UI
     protected View mAutoLogin;
@@ -385,6 +390,14 @@
         return mAutoLoginHandler != null;
     }
 
+    public void setUaSwitcher(View v) {
+        if (mUaSwitcher != null) {
+            mUaSwitcher.setOnClickListener(null);
+        }
+        mUaSwitcher = v;
+        mUaSwitcher.setOnClickListener(this);
+    }
+
     @Override
     public void onClick(View v) {
         if (mAutoLoginCancel == v) {
@@ -402,10 +415,45 @@
                 mAutoLoginHandler.login(
                         mAutoLoginAccount.getSelectedItemPosition(), this);
             }
+        } else if (mUaSwitcher == v) {
+            BrowserSettings settings = BrowserSettings.getInstance();
+            WebView web = getCurrentWebView();
+            if (web == null) return;
+            boolean desktop = settings.hasDesktopUseragent(web);
+            PopupMenu popup = new PopupMenu(mContext, mUaSwitcher);
+            Menu menu = popup.getMenu();
+            popup.getMenuInflater().inflate(R.menu.ua_switcher, menu);
+            menu.findItem(R.id.ua_mobile_menu_id).setChecked(!desktop);
+            menu.findItem(R.id.ua_desktop_menu_id).setChecked(desktop);
+            popup.setOnMenuItemClickListener(this);
+            popup.show();
         }
     }
 
     @Override
+    public boolean onMenuItemClick(MenuItem item) {
+        BrowserSettings settings = BrowserSettings.getInstance();
+        WebView web = getCurrentWebView();
+        if (web == null) return false;
+        boolean desktop = settings.hasDesktopUseragent(web);
+        switch (item.getItemId()) {
+        case R.id.ua_mobile_menu_id:
+            if (desktop) {
+                settings.toggleDesktopUseragent(web);
+                web.loadUrl(web.getOriginalUrl());
+            }
+            return true;
+        case R.id.ua_desktop_menu_id:
+            if (!desktop) {
+                settings.toggleDesktopUseragent(web);
+                web.loadUrl(web.getOriginalUrl());
+            }
+            return true;
+        }
+        return false;
+    }
+
+    @Override
     public void onFocusChange(View view, boolean hasFocus) {
         // if losing focus and not in touch mode, leave as is
         if (hasFocus || view.isInTouchMode() || mUrlInput.needsUpdate()) {