Merge "fix menu state after fullscreen video" into honeycomb
diff --git a/src/com/android/browser/GoogleAccountLogin.java b/src/com/android/browser/GoogleAccountLogin.java
index 6bec8dc..f019b52 100644
--- a/src/com/android/browser/GoogleAccountLogin.java
+++ b/src/com/android/browser/GoogleAccountLogin.java
@@ -280,13 +280,15 @@
             return false;
         }
 
+        // Use /a/ to grab hosted cookies as well as the base set of google.com
+        // cookies.
         String cookies = CookieManager.getInstance().getCookie(
-                "http://www.google.com");
+                "http://www.google.com/a/");
         if (cookies != null) {
             StringTokenizer tokenizer = new StringTokenizer(cookies, ";");
             while (tokenizer.hasMoreTokens()) {
                 String cookie = tokenizer.nextToken().trim();
-                if (cookie.startsWith("SID=")) {
+                if (cookie.startsWith("SID=") || cookie.startsWith("ASIDAP=")) {
                     return true;
                 }
             }
diff --git a/src/com/android/browser/SuggestionsAdapter.java b/src/com/android/browser/SuggestionsAdapter.java
index 3c1a689..6e55539 100644
--- a/src/com/android/browser/SuggestionsAdapter.java
+++ b/src/com/android/browser/SuggestionsAdapter.java
@@ -78,8 +78,6 @@
 
         public void onSelect(String txt, int type, String extraData);
 
-        public void onFilterComplete(int count);
-
     }
 
     public SuggestionsAdapter(Context ctx, CompletionListener listener) {
@@ -240,7 +238,6 @@
             mSuggestResults = items;
             mMixedResults = buildSuggestionResults();
             notifyDataSetChanged();
-            mListener.onFilterComplete(mMixedResults.getLineCount());
         }
     }
 
@@ -334,9 +331,8 @@
         protected void publishResults(CharSequence constraint, FilterResults fresults) {
             if (fresults.values instanceof SuggestionResults) {
                 mMixedResults = (SuggestionResults) fresults.values;
-                mListener.onFilterComplete(fresults.count);
+                notifyDataSetChanged();
             }
-            notifyDataSetChanged();
         }
 
     }
diff --git a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
index 91705e5..409ddb7 100644
--- a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
+++ b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
@@ -71,8 +71,12 @@
         values[i] = "";
         autologinPref.setEntries(names);
         autologinPref.setEntryValues(values);
-        autologinPref.setValue(BrowserSettings.getInstance()
-                .getAutoLoginAccount(getActivity()));
+        BrowserSettings bs = BrowserSettings.getInstance();
+        if (bs.isAutoLoginEnabled()) {
+            autologinPref.setValue(bs.getAutoLoginAccount(getActivity()));
+        } else {
+            autologinPref.setValue("");
+        }
     }
 
     private void updateAutoLoginSummary(Preference pref) {
diff --git a/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java b/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java
index 631bf84..cc06349 100644
--- a/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java
+++ b/src/com/android/browser/widget/BookmarkThumbnailWidgetService.java
@@ -109,7 +109,10 @@
             int[] ids = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);
             if (ids != null) {
                 for (int id : ids) {
-                    mFactories.remove(id);
+                    BookmarkFactory bf = mFactories.remove(id);
+                    // Workaround a known framework bug
+                    // onDestroy is currently never called
+                    bf.onDestroy();
                 }
             }
         } else if (ACTION_CHANGE_FOLDER.equals(action)) {
@@ -309,9 +312,18 @@
 
         @Override
         public void onDestroy() {
-            recycleBitmaps();
             SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
             prefs.unregisterOnSharedPreferenceChangeListener(this);
+
+            // Workaround known framework bug
+            // This class currently leaks, so free as much memory as we can
+            recycleBitmaps();
+            mBookmarks.clear();
+            mBreadcrumbs.clear();
+            if (mLoadTask != null) {
+                mLoadTask.cancel(false);
+                mLoadTask = null;
+            }
         }
 
         @Override