Reimplement the settings to use async callbacks
diff --git a/src/com/android/browser/BrowserPreferencesPage.java b/src/com/android/browser/BrowserPreferencesPage.java
index ec3561f..fb0b2ba 100644
--- a/src/com/android/browser/BrowserPreferencesPage.java
+++ b/src/com/android/browser/BrowserPreferencesPage.java
@@ -17,8 +17,9 @@
package com.android.browser;
import java.util.List;
-import java.util.Vector;
+import java.util.Map;
import java.util.Set;
+import java.util.Vector;
import android.content.Intent;
import android.net.Uri;
@@ -30,13 +31,14 @@
import android.preference.PreferenceScreen;
import android.util.Log;
import android.webkit.GeolocationPermissions;
+import android.webkit.ValueCallback;
import android.webkit.WebStorage;
import android.webkit.WebView;
public class BrowserPreferencesPage extends PreferenceActivity
implements Preference.OnPreferenceChangeListener {
- String TAG = "BrowserPreferencesPage";
+ private String LOGTAG = "BrowserPreferencesPage";
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -86,14 +88,23 @@
@Override
protected void onResume() {
super.onResume();
- PreferenceScreen websiteSettings = (PreferenceScreen)
+ final PreferenceScreen websiteSettings = (PreferenceScreen)
findPreference(BrowserSettings.PREF_WEBSITE_SETTINGS);
- Set webStorageOrigins = WebStorage.getInstance().getOrigins();
- Set geolocationOrigins =
- GeolocationPermissions.getInstance().getOrigins();
- websiteSettings.setEnabled(
- ((webStorageOrigins != null) && !webStorageOrigins.isEmpty()) ||
- ((geolocationOrigins != null) && !geolocationOrigins.isEmpty()));
+ websiteSettings.setEnabled(false);
+ WebStorage.getInstance().getOrigins(new ValueCallback<Map>() {
+ public void onReceiveValue(Map webStorageOrigins) {
+ if ((webStorageOrigins != null) && !webStorageOrigins.isEmpty()) {
+ websiteSettings.setEnabled(true);
+ }
+ }
+ });
+ GeolocationPermissions.getInstance().getOrigins(new ValueCallback<Set>() {
+ public void onReceiveValue(Set geolocationOrigins) {
+ if ((geolocationOrigins != null) && !geolocationOrigins.isEmpty()) {
+ websiteSettings.setEnabled(true);
+ }
+ }
+ });
}
@Override