| Index: chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java
|
| index fe19baaa4b8a989dac549b7ba1c400cbc802d928..092ae3a2c4b39bdb69dfb519717b78ff2c5d3f1a 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappRegistry.java
|
| @@ -8,6 +8,10 @@ import android.content.Context;
|
| import android.content.SharedPreferences;
|
| import android.os.AsyncTask;
|
|
|
| +import org.chromium.base.ThreadUtils;
|
| +import org.chromium.base.VisibleForTesting;
|
| +import org.chromium.base.annotations.CalledByNative;
|
| +
|
| import java.util.Collections;
|
| import java.util.HashSet;
|
| import java.util.Set;
|
| @@ -35,10 +39,8 @@ public class WebappRegistry {
|
| new AsyncTask<Void, Void, Void>() {
|
| @Override
|
| protected final Void doInBackground(Void... nothing) {
|
| - SharedPreferences preferences = context.getSharedPreferences(
|
| - REGISTRY_FILE_NAME, Context.MODE_PRIVATE);
|
| - Set<String> webapps = new HashSet<String>(
|
| - preferences.getStringSet(KEY_WEBAPP_SET, Collections.<String>emptySet()));
|
| + SharedPreferences preferences = openSharedPreferences(context);
|
| + Set<String> webapps = new HashSet<String>(getRegisteredWebappIds(preferences));
|
| boolean added = webapps.add(webappId);
|
| assert added;
|
|
|
| @@ -61,9 +63,7 @@ public class WebappRegistry {
|
| new AsyncTask<Void, Void, Set<String>>() {
|
| @Override
|
| protected final Set<String> doInBackground(Void... nothing) {
|
| - SharedPreferences preferences = context.getSharedPreferences(
|
| - REGISTRY_FILE_NAME, Context.MODE_PRIVATE);
|
| - return preferences.getStringSet(KEY_WEBAPP_SET, Collections.<String>emptySet());
|
| + return getRegisteredWebappIds(openSharedPreferences(context));
|
| }
|
|
|
| @Override
|
| @@ -73,6 +73,36 @@ public class WebappRegistry {
|
| }.execute();
|
| }
|
|
|
| + /** Deletes the data of all webapps as well as the registry tracking the webapps. */
|
| + @VisibleForTesting
|
| + static void unregisterAllWebapps(final Context context) {
|
| + new AsyncTask<Void, Void, Void>() {
|
| + @Override
|
| + protected final Void doInBackground(Void... nothing) {
|
| + unregisterAllWebappsInBackground(context);
|
| + return null;
|
| + }
|
| + }.execute();
|
| + }
|
| +
|
| + private static SharedPreferences openSharedPreferences(Context context) {
|
| + return context.getSharedPreferences(REGISTRY_FILE_NAME, Context.MODE_PRIVATE);
|
| + }
|
| +
|
| + private static Set<String> getRegisteredWebappIds(SharedPreferences preferences) {
|
| + return preferences.getStringSet(KEY_WEBAPP_SET, Collections.<String>emptySet());
|
| + }
|
| +
|
| + @CalledByNative
|
| + private static void unregisterAllWebappsInBackground(Context context) {
|
| + assert !ThreadUtils.runningOnUiThread();
|
| + SharedPreferences preferences = openSharedPreferences(context);
|
| + for (String id : getRegisteredWebappIds(preferences)) {
|
| + WebappDataStorage.delete(context, id);
|
| + }
|
| + preferences.edit().clear().commit();
|
| + }
|
| +
|
| private WebappRegistry() {
|
| }
|
|
|
|
|