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
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user