Set correct permission value for distracting_contents
- Set appropiate flag for webrefiner
- Call reset permissions on reset default preferences.
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index eb36023..ca5c283 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -27,6 +27,7 @@
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.util.DisplayMetrics;
+import android.webkit.ValueCallback;
import android.webkit.WebStorage;
import com.android.browser.homepages.HomeProvider;
@@ -39,8 +40,10 @@
import com.android.browser.search.SearchEngines;
import java.lang.ref.WeakReference;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
+import java.util.Set;
import org.codeaurora.swe.AutoFillProfile;
import org.codeaurora.swe.CookieManager;
@@ -125,6 +128,47 @@
public void onEngineInitializationComplete() {
mEngineInitialized = true;
+
+ // Intialize Web Refiner only once
+ final WebRefiner refiner = WebRefiner.getInstance();
+ if (refiner != null) {
+ refiner.setRulesEnabled(WebRefiner.CATEGORY_ALL,
+ PermissionsServiceFactory.getDefaultPermissions(
+ PermissionsServiceFactory.PermissionType.WEBREFINER));
+
+ PermissionsServiceFactory.getPermissionsService(
+ new ValueCallback<PermissionsServiceFactory.PermissionsService>() {
+ @Override
+ public void onReceiveValue(
+ PermissionsServiceFactory.PermissionsService value) {
+ Set<String> origins = value.getOrigins();
+ ArrayList<String> allowList = new ArrayList<>();
+ ArrayList<String> blockList = new ArrayList<>();
+ for (String origin : origins) {
+ PermissionsServiceFactory.PermissionsService.OriginInfo
+ info = value.getOriginInfo(origin);
+ int perm = info.getPermission(
+ PermissionsServiceFactory.PermissionType.WEBREFINER);
+ if (perm == PermissionsServiceFactory.Permission.ALLOW) {
+ allowList.add(origin);
+ } else if (perm == PermissionsServiceFactory.Permission.BLOCK) {
+ blockList.add(origin);
+ }
+ }
+ if (!allowList.isEmpty()) {
+ refiner.enableRulesForDomains(WebRefiner.CATEGORY_ALL,
+ allowList.toArray(new String[allowList.size()]));
+ }
+
+ if (!blockList.isEmpty()) {
+ refiner.disableRulesForDomains(WebRefiner.CATEGORY_ALL,
+ blockList.toArray(new String[blockList.size()]));
+ }
+ }
+ }
+ );
+ }
+
mAutofillHandler = new AutofillHandler(mContext);
if (mSyncManagedSettings) {
syncManagedSettings();
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index af06161..5be0c9f 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -88,9 +88,7 @@
import org.codeaurora.swe.CookieSyncManager;
import org.codeaurora.swe.Engine;
import org.codeaurora.swe.HttpAuthHandler;
-import org.codeaurora.swe.PermissionsServiceFactory;
import org.codeaurora.swe.SslErrorHandler;
-import org.codeaurora.swe.WebRefiner;
import org.codeaurora.swe.WebSettings;
import org.codeaurora.swe.WebView;
import org.codeaurora.swe.WebBackForwardList;
@@ -127,7 +125,6 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import java.util.Set;
/**
* Controller for browser
@@ -294,45 +291,6 @@
mNetworkHandler = new NetworkStateHandler(mActivity, this);
mHomepageHandler = new HomepageHandler(browser, this);
mAppMenuHandler = new AppMenuHandler(browser, this, R.menu.browser);
-
- final WebRefiner refiner = WebRefiner.getInstance();
- if (refiner != null) {
- refiner.setRulesEnabled(WebRefiner.CATEGORY_ALL,
- !PermissionsServiceFactory.getDefaultPermissions(
- PermissionsServiceFactory.PermissionType.WEBREFINER));
-
- PermissionsServiceFactory.getPermissionsService(
- new ValueCallback<PermissionsServiceFactory.PermissionsService>() {
- @Override
- public void onReceiveValue(
- PermissionsServiceFactory.PermissionsService value) {
- Set<String> origins = value.getOrigins();
- ArrayList<String> allowList = new ArrayList<>();
- ArrayList<String> blockList = new ArrayList<>();
- for (String origin : origins) {
- PermissionsServiceFactory.PermissionsService.OriginInfo
- info = value.getOriginInfo(origin);
- int perm = info.getPermission(
- PermissionsServiceFactory.PermissionType.WEBREFINER);
- if (perm == PermissionsServiceFactory.Permission.ALLOW) {
- allowList.add(origin);
- } else if (perm == PermissionsServiceFactory.Permission.BLOCK) {
- blockList.add(origin);
- }
- }
- if (!allowList.isEmpty()) {
- refiner.enableRulesForDomains(WebRefiner.CATEGORY_ALL,
- allowList.toArray(new String[allowList.size()]));
- }
-
- if (!blockList.isEmpty()) {
- refiner.disableRulesForDomains(WebRefiner.CATEGORY_ALL,
- blockList.toArray(new String[blockList.size()]));
- }
- }
- }
- );
- }
}
@Override
diff --git a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
index 40e0106..cadc924 100644
--- a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
+++ b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
@@ -37,6 +37,7 @@
import com.android.browser.R;
import org.codeaurora.swe.BrowserCommandLine;
+import org.codeaurora.swe.PermissionsServiceFactory;
public class AdvancedPreferencesFragment
implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener {
@@ -146,6 +147,7 @@
if (pref.getKey().equals(PreferenceKeys.PREF_RESET_DEFAULT_PREFERENCES)) {
Boolean value = (Boolean) objValue;
if (value.booleanValue() == true) {
+ PermissionsServiceFactory.resetDefaultPermissions();
mFragment.startActivity(new Intent(BrowserActivity.ACTION_RESTART, null,
mFragment.getActivity(), BrowserActivity.class));
return true;
diff --git a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
index f7aa217..68c5607 100644
--- a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
+++ b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
@@ -57,8 +57,13 @@
readAndShowPermission("camera", PermissionsServiceFactory.PermissionType.VIDEO);
- readAndShowPermission("distracting_contents",
- PermissionsServiceFactory.PermissionType.WEBREFINER);
+ // since webrefiner and distracting_contents are paradoxes
+ // the value needs to be flipped
+ Preference pref = findPreference("distracting_contents");
+ pref.setOnPreferenceChangeListener(this);
+ showPermission(pref,
+ !PermissionsServiceFactory.getDefaultPermissions(
+ PermissionsServiceFactory.PermissionType.WEBREFINER));
readAndShowPermission("popup_windows", PermissionsServiceFactory.PermissionType.POPUP);
@@ -118,12 +123,8 @@
}
if (pref.getKey().toString().equalsIgnoreCase("distracting_contents")) {
- WebRefiner refiner = WebRefiner.getInstance();
PermissionsServiceFactory.setDefaultPermissions(
- PermissionsServiceFactory.PermissionType.WEBREFINER, flag);
- if (refiner != null) {
- refiner.setRulesEnabled(WebRefiner.CATEGORY_ALL, !flag);
- }
+ PermissionsServiceFactory.PermissionType.WEBREFINER, !flag);
return true;
}