diff options
Diffstat (limited to 'input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/multidatasetservice/datasource/SharedPrefsAutofillRepository.java')
-rw-r--r-- | input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/multidatasetservice/datasource/SharedPrefsAutofillRepository.java | 78 |
1 files changed, 47 insertions, 31 deletions
diff --git a/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/multidatasetservice/datasource/SharedPrefsAutofillRepository.java b/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/multidatasetservice/datasource/SharedPrefsAutofillRepository.java index 9d29fb3a..7b55ef26 100644 --- a/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/multidatasetservice/datasource/SharedPrefsAutofillRepository.java +++ b/input/autofill/AutofillFramework/Application/src/main/java/com/example/android/autofillframework/multidatasetservice/datasource/SharedPrefsAutofillRepository.java @@ -16,7 +16,6 @@ package com.example.android.autofillframework.multidatasetservice.datasource; import android.content.Context; -import android.content.SharedPreferences; import android.util.ArraySet; import com.example.android.autofillframework.multidatasetservice.model.FilledAutofillFieldCollection; @@ -32,36 +31,33 @@ import java.util.Set; * Disclaimer: you should not store sensitive fields like user data unencrypted. This is done * here only for simplicity and learning purposes. */ -public class SharedPrefsAutofillRepository implements AutofillRepository { - private static final String SHARED_PREF_KEY = "com.example.android.autofillframework.service"; +public class SharedPrefsAutofillRepository implements AutofillDataSource { + private static final String SHARED_PREF_KEY = "com.example.android.autofillframework" + + ".multidatasetservice.datasource.AutofillDataSource"; private static final String CLIENT_FORM_DATA_KEY = "loginCredentialDatasets"; private static final String DATASET_NUMBER_KEY = "datasetNumber"; - private static SharedPrefsAutofillRepository sInstance; - private final SharedPreferences mPrefs; - - private SharedPrefsAutofillRepository(Context context) { - mPrefs = context.getApplicationContext() - .getSharedPreferences(SHARED_PREF_KEY, Context.MODE_PRIVATE); + private SharedPrefsAutofillRepository() { } - public static SharedPrefsAutofillRepository getInstance(Context context) { + public static SharedPrefsAutofillRepository getInstance() { if (sInstance == null) { - sInstance = new SharedPrefsAutofillRepository(context); + sInstance = new SharedPrefsAutofillRepository(); } return sInstance; } @Override - public HashMap<String, FilledAutofillFieldCollection> getFilledAutofillFieldCollection(List<String> focusedAutofillHints, - List<String> allAutofillHints) { + public HashMap<String, FilledAutofillFieldCollection> getFilledAutofillFieldCollection( + Context context, List<String> focusedAutofillHints, List<String> allAutofillHints) { boolean hasDataForFocusedAutofillHints = false; HashMap<String, FilledAutofillFieldCollection> clientFormDataMap = new HashMap<>(); - Set<String> clientFormDataStringSet = getAllAutofillDataStringSet(); + Set<String> clientFormDataStringSet = getAllAutofillDataStringSet(context); for (String clientFormDataString : clientFormDataStringSet) { Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); - FilledAutofillFieldCollection filledAutofillFieldCollection = gson.fromJson(clientFormDataString, FilledAutofillFieldCollection.class); + FilledAutofillFieldCollection filledAutofillFieldCollection = + gson.fromJson(clientFormDataString, FilledAutofillFieldCollection.class); if (filledAutofillFieldCollection != null) { if (filledAutofillFieldCollection.helpsWithHints(focusedAutofillHints)) { // Saved data has data relevant to at least 1 of the hints associated with the @@ -71,7 +67,8 @@ public class SharedPrefsAutofillRepository implements AutofillRepository { if (filledAutofillFieldCollection.helpsWithHints(allAutofillHints)) { // Saved data has data relevant to at least 1 of these hints associated with any // of the Views in the hierarchy. - clientFormDataMap.put(filledAutofillFieldCollection.getDatasetName(), filledAutofillFieldCollection); + clientFormDataMap.put(filledAutofillFieldCollection.getDatasetName(), + filledAutofillFieldCollection); } } } @@ -83,42 +80,61 @@ public class SharedPrefsAutofillRepository implements AutofillRepository { } @Override - public void saveFilledAutofillFieldCollection(FilledAutofillFieldCollection filledAutofillFieldCollection) { - String datasetName = "dataset-" + getDatasetNumber(); + public void saveFilledAutofillFieldCollection(Context context, + FilledAutofillFieldCollection filledAutofillFieldCollection) { + String datasetName = "dataset-" + getDatasetNumber(context); filledAutofillFieldCollection.setDatasetName(datasetName); - Set<String> allAutofillData = getAllAutofillDataStringSet(); + Set<String> allAutofillData = getAllAutofillDataStringSet(context); Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); allAutofillData.add(gson.toJson(filledAutofillFieldCollection)); - saveAllAutofillDataStringSet(allAutofillData); - incrementDatasetNumber(); + saveAllAutofillDataStringSet(context, allAutofillData); + incrementDatasetNumber(context); } @Override - public void clear() { - mPrefs.edit().remove(CLIENT_FORM_DATA_KEY).apply(); + public void clear(Context context) { + context.getApplicationContext() + .getSharedPreferences(SHARED_PREF_KEY, Context.MODE_PRIVATE) + .edit() + .remove(CLIENT_FORM_DATA_KEY) + .remove(DATASET_NUMBER_KEY) + .apply(); } - private Set<String> getAllAutofillDataStringSet() { - return mPrefs.getStringSet(CLIENT_FORM_DATA_KEY, new ArraySet<String>()); + private Set<String> getAllAutofillDataStringSet(Context context) { + return context.getApplicationContext() + .getSharedPreferences(SHARED_PREF_KEY, Context.MODE_PRIVATE) + .getStringSet(CLIENT_FORM_DATA_KEY, new ArraySet<String>()); } - private void saveAllAutofillDataStringSet(Set<String> allAutofillDataStringSet) { - mPrefs.edit().putStringSet(CLIENT_FORM_DATA_KEY, allAutofillDataStringSet).apply(); + private void saveAllAutofillDataStringSet(Context context, + Set<String> allAutofillDataStringSet) { + context.getApplicationContext() + .getSharedPreferences(SHARED_PREF_KEY, Context.MODE_PRIVATE) + .edit() + .putStringSet(CLIENT_FORM_DATA_KEY, allAutofillDataStringSet) + .apply(); } /** * For simplicity, datasets will be named in the form "dataset-X" where X means * this was the Xth dataset saved. */ - private int getDatasetNumber() { - return mPrefs.getInt(DATASET_NUMBER_KEY, 0); + private int getDatasetNumber(Context context) { + return context.getApplicationContext() + .getSharedPreferences(SHARED_PREF_KEY, Context.MODE_PRIVATE) + .getInt(DATASET_NUMBER_KEY, 0); } /** * Every time a dataset is saved, this should be called to increment the dataset number. * (only important for this service's dataset naming scheme). */ - private void incrementDatasetNumber() { - mPrefs.edit().putInt(DATASET_NUMBER_KEY, getDatasetNumber() + 1).apply(); + private void incrementDatasetNumber(Context context) { + context.getApplicationContext() + .getSharedPreferences(SHARED_PREF_KEY, Context.MODE_PRIVATE) + .edit() + .putInt(DATASET_NUMBER_KEY, getDatasetNumber(context) + 1) + .apply(); } }
\ No newline at end of file |