Merge "Makes Use Color correction and Color correction shortcut searchable." into main

This commit is contained in:
Jean Chen
2024-10-09 12:08:04 +00:00
committed by Android (Google) Code Review
2 changed files with 72 additions and 3 deletions

View File

@@ -25,6 +25,7 @@ import static com.android.settings.accessibility.DaltonizerPreferenceUtil.isSecu
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.provider.Settings; import android.provider.Settings;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@@ -38,6 +39,7 @@ import com.android.settings.accessibility.AccessibilityUtil.QuickSettingsTooltip
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.widget.SettingsMainSwitchPreference; import com.android.settings.widget.SettingsMainSwitchPreference;
import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.search.SearchIndexableRaw;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -53,6 +55,11 @@ public class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceF
private static final String KEY_PROTANOMALY = "daltonizer_mode_protanomaly"; private static final String KEY_PROTANOMALY = "daltonizer_mode_protanomaly";
private static final String KEY_TRITANOMEALY = "daltonizer_mode_tritanomaly"; private static final String KEY_TRITANOMEALY = "daltonizer_mode_tritanomaly";
private static final String KEY_GRAYSCALE = "daltonizer_mode_grayscale"; private static final String KEY_GRAYSCALE = "daltonizer_mode_grayscale";
@VisibleForTesting
static final String KEY_SHORTCUT_PREFERENCE = "daltonizer_shortcut_key";
@VisibleForTesting
static final String KEY_SWITCH_PREFERENCE = "daltonizer_switch_preference_key";
@VisibleForTesting @VisibleForTesting
static final String KEY_SATURATION = "daltonizer_saturation"; static final String KEY_SATURATION = "daltonizer_saturation";
@@ -170,6 +177,11 @@ public class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceF
switchPreference.setTitle(R.string.accessibility_daltonizer_primary_switch_title); switchPreference.setTitle(R.string.accessibility_daltonizer_primary_switch_title);
} }
@Override
protected String getUseServicePreferenceKey() {
return KEY_SWITCH_PREFERENCE;
}
@Override @Override
protected CharSequence getShortcutTitle() { protected CharSequence getShortcutTitle() {
return getText(R.string.accessibility_daltonizer_shortcut_title); return getText(R.string.accessibility_daltonizer_shortcut_title);
@@ -203,5 +215,27 @@ public class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceF
} }
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.accessibility_daltonizer_settings); new BaseSearchIndexProvider(R.xml.accessibility_daltonizer_settings) {
@Override
public List<SearchIndexableRaw> getRawDataToIndex(Context context,
boolean enabled) {
final List<SearchIndexableRaw> rawData =
super.getRawDataToIndex(context, enabled);
if (Flags.fixA11ySettingsSearch()) {
SearchIndexableRaw shortcutRaw = new SearchIndexableRaw(context);
shortcutRaw.key = KEY_SHORTCUT_PREFERENCE;
shortcutRaw.title = context.getString(
R.string.accessibility_daltonizer_shortcut_title);
rawData.add(shortcutRaw);
SearchIndexableRaw mainSwitchRaw = new SearchIndexableRaw(context);
mainSwitchRaw.key = KEY_SWITCH_PREFERENCE;
mainSwitchRaw.title = context.getString(
R.string.accessibility_daltonizer_primary_switch_title);
rawData.add(mainSwitchRaw);
}
return rawData;
}
};
} }

View File

@@ -18,6 +18,8 @@ package com.android.settings.accessibility;
import static com.android.settings.accessibility.AccessibilityUtil.State.OFF; import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
import static com.android.settings.accessibility.AccessibilityUtil.State.ON; import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
import static com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment.KEY_SHORTCUT_PREFERENCE;
import static com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment.KEY_SWITCH_PREFERENCE;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
@@ -26,9 +28,9 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule; import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.Settings; import android.provider.Settings;
import android.view.accessibility.Flags;
import android.widget.PopupWindow; import android.widget.PopupWindow;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
@@ -38,6 +40,7 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.testutils.XmlTestUtils; import com.android.settings.testutils.XmlTestUtils;
import com.android.settings.widget.SettingsMainSwitchPreference; import com.android.settings.widget.SettingsMainSwitchPreference;
import com.android.settingslib.search.SearchIndexableRaw;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
@@ -48,6 +51,7 @@ import org.robolectric.android.controller.ActivityController;
import org.robolectric.shadow.api.Shadow; import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowApplication; import org.robolectric.shadows.ShadowApplication;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** Tests for {@link ToggleDaltonizerPreferenceFragment} */ /** Tests for {@link ToggleDaltonizerPreferenceFragment} */
@@ -103,7 +107,7 @@ public class ToggleDaltonizerPreferenceFragmentTest {
} }
@Test @Test
@DisableFlags(Flags.FLAG_A11Y_QS_SHORTCUT) @DisableFlags(android.view.accessibility.Flags.FLAG_A11Y_QS_SHORTCUT)
public void onPreferenceToggled_colorCorrectDisabled_shouldReturnTrueAndShowTooltipView() { public void onPreferenceToggled_colorCorrectDisabled_shouldReturnTrueAndShowTooltipView() {
Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, OFF); Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, OFF);
@@ -168,6 +172,37 @@ public class ToggleDaltonizerPreferenceFragmentTest {
assertThat(keys).containsAtLeastElementsIn(niks); assertThat(keys).containsAtLeastElementsIn(niks);
} }
@Test
@DisableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
public void getRawDataToIndex_flagOff_returnEmptyData() {
List<SearchIndexableRaw> rawData = ToggleDaltonizerPreferenceFragment
.SEARCH_INDEX_DATA_PROVIDER.getRawDataToIndex(mContext, /* enabled= */ true);
assertThat(rawData).isEmpty();
}
@Test
@EnableFlags(Flags.FLAG_FIX_A11Y_SETTINGS_SEARCH)
public void getRawDataToIndex_flagOn_returnAllIndexablePreferences() {
String[] expectedKeys = {KEY_SHORTCUT_PREFERENCE, KEY_SWITCH_PREFERENCE};
String[] expectedTitles = {
mContext.getString(R.string.accessibility_daltonizer_shortcut_title),
mContext.getString(R.string.accessibility_daltonizer_primary_switch_title)};
List<String> keysResultList = new ArrayList<>();
List<String> titlesResultList = new ArrayList<>();
List<SearchIndexableRaw> rawData = ToggleDaltonizerPreferenceFragment
.SEARCH_INDEX_DATA_PROVIDER.getRawDataToIndex(mContext, /* enabled= */ true);
for (SearchIndexableRaw rawDataItem : rawData) {
keysResultList.add(rawDataItem.key);
titlesResultList.add(rawDataItem.title);
}
assertThat(rawData).hasSize(2);
assertThat(keysResultList).containsExactly(expectedKeys);
assertThat(titlesResultList).containsExactly(expectedTitles);
}
private static PopupWindow getLatestPopupWindow() { private static PopupWindow getLatestPopupWindow() {
final ShadowApplication shadowApplication = final ShadowApplication shadowApplication =
Shadow.extract(ApplicationProvider.getApplicationContext()); Shadow.extract(ApplicationProvider.getApplicationContext());