/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License */ package com.android.browser.preferences; import com.android.browser.BrowserSettings; import com.android.browser.R; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; import android.webkit.GeolocationPermissions; import android.webkit.ValueCallback; import android.webkit.WebStorage; import java.util.Map; import java.util.Set; public class AdvancedPreferencesFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Load the XML preferences file addPreferencesFromResource(R.xml.advanced_preferences); PreferenceScreen websiteSettings = (PreferenceScreen) findPreference( BrowserSettings.PREF_WEBSITE_SETTINGS); websiteSettings.setFragment(WebsiteSettingsFragment.class.getName()); } /* * We need to set the PreferenceScreen state in onResume(), as the number of * origins with active features (WebStorage, Geolocation etc) could have * changed after calling the WebsiteSettingsActivity. */ @Override public void onResume() { super.onResume(); final PreferenceScreen websiteSettings = (PreferenceScreen) findPreference( BrowserSettings.PREF_WEBSITE_SETTINGS); websiteSettings.setEnabled(false); WebStorage.getInstance().getOrigins(new ValueCallback() { @Override public void onReceiveValue(Map webStorageOrigins) { if ((webStorageOrigins != null) && !webStorageOrigins.isEmpty()) { websiteSettings.setEnabled(true); } } }); GeolocationPermissions.getInstance().getOrigins(new ValueCallback >() { @Override public void onReceiveValue(Set geolocationOrigins) { if ((geolocationOrigins != null) && !geolocationOrigins.isEmpty()) { websiteSettings.setEnabled(true); } } }); } @Override public boolean onPreferenceChange(Preference pref, Object objValue) { if (pref.getKey().equals(BrowserSettings.PREF_EXTRAS_RESET_DEFAULTS)) { Boolean value = (Boolean) objValue; if (value.booleanValue() == true) { getActivity().finish(); return true; } } return false; } }