summaryrefslogtreecommitdiff
path: root/src/com/android/settings/development/autofill/AutofillLoggingLevelPreferenceController.java
diff options
context:
space:
mode:
authorFelipe Leme <felipeal@google.com>2018-07-24 17:24:40 -0700
committerFelipe Leme <felipeal@google.com>2018-07-26 09:53:11 -0700
commit9bf591b8324bd10d693726b4d37c62a0d6517ec2 (patch)
tree175ec6cd880da587c5b39bbfe70ca16accdaf3db /src/com/android/settings/development/autofill/AutofillLoggingLevelPreferenceController.java
parentf24b749ec0f2ec09a4253f1c8aba1d1d804a7673 (diff)
Added autofill options on Developer Options screen.
Test: manual verification Test: atest AutofillResetOptionsPreferenceControllerTest\ AutofillLoggingLevelPreferenceControllerTest Test: runtest --path packages/apps/Settings/tests/unit/src/com/android/settings/core/PreferenceControllerContractTest.java Fixes: 65700540 Change-Id: I6b35fbf549529f4d97df164ce3fb6d641ee37650
Diffstat (limited to 'src/com/android/settings/development/autofill/AutofillLoggingLevelPreferenceController.java')
-rw-r--r--src/com/android/settings/development/autofill/AutofillLoggingLevelPreferenceController.java100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/com/android/settings/development/autofill/AutofillLoggingLevelPreferenceController.java b/src/com/android/settings/development/autofill/AutofillLoggingLevelPreferenceController.java
new file mode 100644
index 0000000000..a22295c557
--- /dev/null
+++ b/src/com/android/settings/development/autofill/AutofillLoggingLevelPreferenceController.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.development.autofill;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.provider.Settings;
+import android.view.autofill.AutofillManager;
+
+import com.android.settings.R;
+import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.development.DeveloperOptionsPreferenceController;
+
+import androidx.preference.ListPreference;
+import androidx.preference.Preference;
+
+public final class AutofillLoggingLevelPreferenceController
+ extends DeveloperOptionsPreferenceController
+ implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
+
+ private static final String AUTOFILL_LOGGING_LEVEL_KEY = "autofill_logging_level";
+
+ private final String[] mListValues;
+ private final String[] mListSummaries;
+ private final AutofillDeveloperSettingsObserver mObserver;
+
+ public AutofillLoggingLevelPreferenceController(Context context) {
+ super(context);
+
+ Resources resources = context.getResources();
+ mListValues = resources.getStringArray(R.array.autofill_logging_level_values);
+ mListSummaries = resources.getStringArray(R.array.autofill_logging_level_entries);
+ mObserver = new AutofillDeveloperSettingsObserver(mContext, () -> updateOptions());
+ mObserver.register();
+ // TODO: there should be a hook on AbstractPreferenceController where we could unregister it
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return AUTOFILL_LOGGING_LEVEL_KEY;
+ }
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ writeLevel(newValue);
+ updateOptions();
+ return true;
+ }
+
+ @Override
+ public void updateState(Preference preference) {
+ updateOptions();
+ }
+
+ @Override
+ protected void onDeveloperOptionsSwitchDisabled() {
+ super.onDeveloperOptionsSwitchDisabled();
+ writeLevel(null);
+ }
+
+ private void updateOptions() {
+ final int level = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.AUTOFILL_LOGGING_LEVEL, AutofillManager.DEFAULT_LOGGING_LEVEL);
+
+ final int index;
+ if (level == AutofillManager.FLAG_ADD_CLIENT_DEBUG) {
+ index = 1;
+ } else if (level == AutofillManager.FLAG_ADD_CLIENT_VERBOSE) {
+ index = 2;
+ } else {
+ index = 0;
+ }
+ final ListPreference listPreference = (ListPreference) mPreference;
+ listPreference.setValue(mListValues[index]);
+ listPreference.setSummary(mListSummaries[index]);
+ }
+
+ private void writeLevel(Object newValue) {
+ int level = AutofillManager.NO_LOGGING;
+ if (newValue instanceof String) {
+ level = Integer.parseInt((String) newValue);
+ }
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.AUTOFILL_LOGGING_LEVEL, level);
+ }
+}