Merge "Remove WebSettings from BrowserSettings in destroy"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 23bc975..0c2e6b3 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -66,7 +66,7 @@
                   android:label="@string/application_name"
                   android:launchMode="singleTask"
                   android:alwaysRetainTaskState="true"
-                  android:configChanges="orientation|keyboardHidden|keyboard|screenSize"
+                  android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
                   android:theme="@style/BrowserTheme"
                   android:windowSoftInputMode="adjustResize" >
             <intent-filter>
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 923dfed..0b49aff 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -604,6 +604,8 @@
 
     protected void onConfgurationChanged(Configuration config) {
         mConfigChanged = true;
+        // update the menu in case of a locale change
+        mActivity.invalidateOptionsMenu();
         if (mPageDialogsHandler != null) {
             mPageDialogsHandler.onConfigurationChanged(config);
         }
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 837ca47..acccb31 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -1548,6 +1548,7 @@
                 mMainView.setPictureListener(this);
             }
             if (restore && (mSavedState != null)) {
+                restoreUserAgent();
                 WebBackForwardList restoredState
                         = mMainView.restoreState(mSavedState);
                 if (restoredState == null || restoredState.getSize() == 0) {
@@ -2010,10 +2011,7 @@
         mId = b.getLong(ID);
         mAppId = b.getString(APPID);
         mCloseOnBack = b.getBoolean(CLOSEFLAG);
-        if (b.getBoolean(USERAGENT)
-                != mSettings.hasDesktopUseragent(getWebView())) {
-            mSettings.toggleDesktopUseragent(getWebView());
-        }
+        restoreUserAgent();
         String url = b.getString(CURRURL);
         String title = b.getString(CURRTITLE);
         boolean incognito = b.getBoolean(INCOGNITO);
@@ -2026,6 +2024,16 @@
         }
     }
 
+    private void restoreUserAgent() {
+        if (mMainView == null || mSavedState == null) {
+            return;
+        }
+        if (mSavedState.getBoolean(USERAGENT)
+                != mSettings.hasDesktopUseragent(mMainView)) {
+            mSettings.toggleDesktopUseragent(mMainView);
+        }
+    }
+
     public void updateBookmarkedStatus() {
         mDataController.queryBookmarkStatus(getUrl(), mIsBookmarkCallback);
     }