diff options
author | Andrei Popescu <andreip@google.com> | 2009-07-14 14:11:20 -0700 |
---|---|---|
committer | Andrei Popescu <andreip@google.com> | 2009-07-14 14:24:04 -0700 |
commit | 190adf7fb20373b2dcbebfa949e47ad399b2524f (patch) | |
tree | 1aab57d987823ae021d5568c82c14bc4a7141fbb /core | |
parent | 3660c09500a4d01eb6a733b5f0b15545855f8fe8 (diff) | |
download | frameworks_base-190adf7fb20373b2dcbebfa949e47ad399b2524f.zip frameworks_base-190adf7fb20373b2dcbebfa949e47ad399b2524f.tar.gz frameworks_base-190adf7fb20373b2dcbebfa949e47ad399b2524f.tar.bz2 |
Remove the Google domains from the Gears permission table when the global location setting is set to false
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/webkit/GearsPermissionsManager.java | 42 |
1 files changed, 32 insertions, 10 deletions
diff --git a/core/java/android/webkit/GearsPermissionsManager.java b/core/java/android/webkit/GearsPermissionsManager.java index 876f3d7..e70e449 100644 --- a/core/java/android/webkit/GearsPermissionsManager.java +++ b/core/java/android/webkit/GearsPermissionsManager.java @@ -55,6 +55,8 @@ class GearsPermissionsManager { // The Gears permissions db schema version table. private final static String GEARS_SCHEMA_VERSION_TABLE_NAME = "VersionInfo"; + // The Gears permission value that denotes "allow access to location". + private static final int GEARS_ALLOW_LOCATION_ACCESS = 1; // The shared pref name. private static final String LAST_KNOWN_LOCATION_SETTING = "lastKnownLocationSystemSetting"; @@ -119,8 +121,14 @@ class GearsPermissionsManager { } private void setGearsPermissionForGoogleDomains(int systemPermission) { - // Transform the system permission into a Gears permission - int gearsPermission = (systemPermission == 1 ? 1 : 2); + // Transform the system permission into a boolean flag. When this + // flag is true, it means the origins in gGearsWhiteList are added + // to the Gears location permission table with permission 1 (allowed). + // When the flag is false, the origins in gGearsWhiteList are removed + // from the Gears location permission table. Next time the user + // navigates to one of these origins, she will see the normal Gears + // permission prompt. + boolean addToGearsLocationTable = (systemPermission == 1 ? true : false); // Build the path to the Gears library. File file = new File(mGearsPath).getParentFile(); @@ -132,6 +140,13 @@ class GearsPermissionsManager { + GEARS_DATABASE_DIR + File.separator + GEARS_DATABASE_FILE); // Remember whether or not we need to create the LocationAccess table. boolean needToCreateTables = !file.exists(); + // If the database file does not yet exist and the system location + // setting says that the Gears origins need to be removed from the + // location permission table, it means that we don't actually need + // to do anything at all. + if (needToCreateTables && !addToGearsLocationTable) { + return; + } // Try opening the Gears database. SQLiteDatabase permissions; try { @@ -177,14 +192,21 @@ class GearsPermissionsManager { schema); } - ContentValues permissionValues = new ContentValues(); - - for (String url : sGearsWhiteList) { - permissionValues.put("Name", url); - permissionValues.put("Value", gearsPermission); - permissions.replace(GEARS_LOCATION_ACCESS_TABLE_NAME, null, - permissionValues); - permissionValues.clear(); + if (addToGearsLocationTable) { + ContentValues permissionValues = new ContentValues(); + + for (String url : sGearsWhiteList) { + permissionValues.put("Name", url); + permissionValues.put("Value", GEARS_ALLOW_LOCATION_ACCESS); + permissions.replace(GEARS_LOCATION_ACCESS_TABLE_NAME, null, + permissionValues); + permissionValues.clear(); + } + } else { + for (String url : sGearsWhiteList) { + permissions.delete(GEARS_LOCATION_ACCESS_TABLE_NAME, "Name=?", + new String[] { url }); + } } // Commit the transaction. permissions.setTransactionSuccessful(); |