Multiple fixes for permissions of site specific setting

- web refiner permission for site specific setting
- fix NPE when fetching origins
- fix clearing of storage data

Change-Id: I366b7292338ee417dda8b5fb6a9548dc9108ef5a
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 60f13d5..9de584d 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -155,6 +155,9 @@
                         for (String origin : origins) {
                             PermissionsServiceFactory.PermissionsService.OriginInfo
                                     info = value.getOriginInfo(origin);
+                            if (info == null) {
+                                continue;
+                            }
                             int perm = info.getPermission(
                                     PermissionsServiceFactory.PermissionType.WEBREFINER);
                             if (perm == PermissionsServiceFactory.Permission.ALLOW) {
diff --git a/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java b/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java
index a67d96d..7ee84b2 100644
--- a/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java
+++ b/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java
@@ -706,8 +706,9 @@
                 origins[0] = mOriginInfo.getOrigin();
                 refiner.setPermissionForOrigins(origins, !disable);
             }
+            // Distracting contents and web refiner complimentary of each other
             updateTwoStatePreference(pref,
-                    PermissionsServiceFactory.PermissionType.WEBREFINER, (boolean)objValue);
+                    PermissionsServiceFactory.PermissionType.WEBREFINER, !(boolean)objValue);
         } else if (pref.getKey().toString().equalsIgnoreCase("popup_windows")) {
             updateTwoStatePreference(pref,
                     PermissionsServiceFactory.PermissionType.POPUP, (boolean)objValue);
diff --git a/src/com/android/browser/preferences/WebsiteSettingsFragment.java b/src/com/android/browser/preferences/WebsiteSettingsFragment.java
index f447ced..3f0215b 100644
--- a/src/com/android/browser/preferences/WebsiteSettingsFragment.java
+++ b/src/com/android/browser/preferences/WebsiteSettingsFragment.java
@@ -166,6 +166,13 @@
                 Set<String> origins = mPermServ.getOrigins();
                 String[] originArray = origins.toArray(new String[origins.size()]);
 
+                for (String origin : originArray) {
+                    PermissionsServiceFactory.PermissionsService.OriginInfo info =
+                            mPermServ.getOriginInfo(origin);
+                    if (info != null) {
+                        info.clearAllStoredData();
+                    }
+                }
                 // purge the permissionservice since its not needed
                 mPermServ.purge();
                 mPermServ = null;
@@ -313,7 +320,6 @@
                         new AlertDialog.OnClickListener() {
                             public void onClick(DialogInterface dlg, int which) {
                                 mAdapter.deleteAllOrigins();
-                                WebStorage.getInstance().deleteAllData();
                                 if (GeolocationPermissions.isIncognitoCreated()) {
                                     GeolocationPermissions.getIncognitoInstance().clearAll();
                                 }