Reimplement the settings to use async callbacks
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 91b08a3..cb51b50 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -28,6 +28,7 @@
 import android.preference.PreferenceScreen;
 import android.webkit.CookieManager;
 import android.webkit.GeolocationPermissions;
+import android.webkit.ValueCallback;
 import android.webkit.WebView;
 import android.webkit.WebViewDatabase;
 import android.webkit.WebIconDatabase;
@@ -36,8 +37,9 @@
 import android.preference.PreferenceManager;
 import android.provider.Browser;
 
-import java.util.Set;
 import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
 import java.util.Observable;
 
 /*
@@ -534,16 +536,25 @@
     }
 
     private void maybeDisableWebsiteSettings(Context context) {
-        Set webStorageOrigins = WebStorage.getInstance().getOrigins();
-        Set geolocationOrigins =
-                 GeolocationPermissions.getInstance().getOrigins();
-        if (((webStorageOrigins == null) || webStorageOrigins.isEmpty()) &&
-            ((geolocationOrigins == null) || geolocationOrigins.isEmpty())) {
-            PreferenceActivity activity = (PreferenceActivity) context;
-            PreferenceScreen screen = (PreferenceScreen)
-                activity.findPreference(BrowserSettings.PREF_WEBSITE_SETTINGS);
-            screen.setEnabled(false);
-        }
+        PreferenceActivity activity = (PreferenceActivity) context;
+        final PreferenceScreen screen = (PreferenceScreen)
+            activity.findPreference(BrowserSettings.PREF_WEBSITE_SETTINGS);
+        screen.setEnabled(false);
+        WebStorage.getInstance().getOrigins(new ValueCallback<Map>() {
+            public void onReceiveValue(Map webStorageOrigins) {
+                if ((webStorageOrigins != null) && !webStorageOrigins.isEmpty()) {
+                    screen.setEnabled(true);
+                }
+            }
+        });
+
+        GeolocationPermissions.getInstance().getOrigins(new ValueCallback<Set>() {
+            public void onReceiveValue(Set geolocationOrigins) {
+                if ((geolocationOrigins != null) && !geolocationOrigins.isEmpty()) {
+                    screen.setEnabled(true);
+                }
+            }
+        });
     }
 
     /*package*/ void clearDatabases(Context context) {