Useragent switcher tweaks

 Children inherit parent tab's setting
 Setting is now save/restored across kills

Change-Id: I664d2d887281df7b99e8239e3ba41ba540f4bbec
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index dd46314..46d47b0 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -399,6 +399,9 @@
     }
 
     public void toggleDesktopUseragent(WebView view) {
+        if (view == null) {
+            return;
+        }
         WebSettings settings = view.getSettings();
         if (mCustomUserAgents.get(settings) != null) {
             mCustomUserAgents.remove(settings);
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index e1dd1ca..8962475 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -191,6 +191,7 @@
     static final String APPID = "appid";
     static final String INCOGNITO = "privateBrowsingEnabled";
     static final String SCREENSHOT = "screenshot";
+    static final String USERAGENT = "useragent";
 
     // -------------------------------------------------------------------------
 
@@ -1449,6 +1450,12 @@
                 mSavedState.putLong(PARENTTAB, parent.getId());
             }
         }
+
+        // Sync the WebView useragent with the parent
+        if (parent != null && mSettings.hasDesktopUseragent(parent.getWebView())
+                != mSettings.hasDesktopUseragent(getWebView())) {
+            mSettings.toggleDesktopUseragent(getWebView());
+        }
     }
 
     /**
@@ -1739,6 +1746,8 @@
         if (mScreenshot != null) {
             mSavedState.putParcelable(SCREENSHOT, mScreenshot);
         }
+        mSavedState.putBoolean(USERAGENT,
+                mSettings.hasDesktopUseragent(getWebView()));
         return true;
     }
 
@@ -1755,6 +1764,10 @@
         mId = b.getLong(ID);
         mAppId = b.getString(APPID);
         mScreenshot = b.getParcelable(SCREENSHOT);
+        if (b.getBoolean(USERAGENT)
+                != mSettings.hasDesktopUseragent(getWebView())) {
+            mSettings.toggleDesktopUseragent(getWebView());
+        }
 
         final WebBackForwardList list = mMainView.restoreState(b);
         if (list == null) {