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();