diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 753b1c8..04da119 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -139,8 +139,7 @@
         // Intialize Web Refiner only once
         final WebRefiner refiner = WebRefiner.getInstance();
         if (refiner != null) {
-            refiner.setRulesEnabled(WebRefiner.CATEGORY_ALL,
-                    PermissionsServiceFactory.getDefaultPermissions(
+            refiner.setDefaultPermission(PermissionsServiceFactory.getDefaultPermissions(
                             PermissionsServiceFactory.PermissionType.WEBREFINER));
 
             PermissionsServiceFactory.getPermissionsService(
@@ -163,13 +162,13 @@
                             }
                         }
                         if (!allowList.isEmpty()) {
-                            refiner.enableRulesForDomains(WebRefiner.CATEGORY_ALL,
-                                    allowList.toArray(new String[allowList.size()]));
+                            refiner.setPermissionForOrigins(
+                                    allowList.toArray(new String[allowList.size()]), true);
                         }
 
                         if (!blockList.isEmpty()) {
-                            refiner.disableRulesForDomains(WebRefiner.CATEGORY_ALL,
-                                    blockList.toArray(new String[blockList.size()]));
+                            refiner.setPermissionForOrigins(
+                                    blockList.toArray(new String[blockList.size()]), false);
                         }
                     }
                 }
diff --git a/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java b/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java
index 1059507..9d74329 100644
--- a/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java
+++ b/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java
@@ -553,7 +553,7 @@
                                         if (refiner != null) {
                                             String[] origins = new String[1];
                                             origins[0] = mOriginInfo.getOrigin();
-                                            refiner.useGlobalRulesForDomains(origins);
+                                            refiner.useDefaultPermissionForOrigins(origins);
                                         }
 
                                         finish();
@@ -660,11 +660,7 @@
                 boolean disable = (boolean) objValue;
                 String[] origins = new String[1];
                 origins[0] = mOriginInfo.getOrigin();
-                if (disable) {
-                    refiner.disableRulesForDomains(WebRefiner.CATEGORY_ALL, origins);
-                } else {
-                    refiner.enableRulesForDomains(WebRefiner.CATEGORY_ALL, origins);
-                }
+                refiner.setPermissionForOrigins(origins, !disable);
             }
             updateTwoStatePreference(pref,
                     PermissionsServiceFactory.PermissionType.WEBREFINER, (boolean)objValue);
diff --git a/src/com/android/browser/preferences/WebsiteSettingsFragment.java b/src/com/android/browser/preferences/WebsiteSettingsFragment.java
index 96ed983..f447ced 100644
--- a/src/com/android/browser/preferences/WebsiteSettingsFragment.java
+++ b/src/com/android/browser/preferences/WebsiteSettingsFragment.java
@@ -175,7 +175,7 @@
 
                 WebRefiner refiner = WebRefiner.getInstance();
                 if (refiner != null) {
-                    refiner.useGlobalRulesForDomains(originArray);
+                    refiner.useDefaultPermissionForOrigins(originArray);
                 }
             }
         }
