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;
         }