From 869c614ab24720bc2128ad89872443caec6e1188 Mon Sep 17 00:00:00 2001 From: Peter_Liang Date: Sat, 27 Mar 2021 01:07:19 +0800 Subject: [PATCH 01/32] Provide a way to Accessibility button settings via intent. Frameworks need a way to launch Accessibility button settings. Bug: 175365399 Test: atest AccessibilityDetailsSettingsFragmentTest Change-Id: I53063c6c6f34752370813cc035db531c664580ed --- .../AccessibilityDetailsSettingsFragment.java | 7 ++++ ...essibilityDetailsSettingsFragmentTest.java | 40 ++++++++++++++----- 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java index 58cdb72b718..7ff3dba7fcd 100644 --- a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java +++ b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java @@ -16,6 +16,7 @@ package com.android.settings.accessibility; +import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_BUTTON_COMPONENT_NAME; import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_COMPONENT_NAME; import android.accessibilityservice.AccessibilityServiceInfo; @@ -101,6 +102,12 @@ public class AccessibilityDetailsSettingsFragment extends InstrumentedFragment { arguments, getContext()); return new LaunchFragmentArguments(destination, arguments); } + + if (ACCESSIBILITY_BUTTON_COMPONENT_NAME.equals(componentName)) { + final String destination = AccessibilityButtonFragment.class.getName(); + return new LaunchFragmentArguments(destination, /* arguments= */ null); + } + return null; } diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java index a04f0cf120e..f5021730313 100644 --- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java @@ -16,6 +16,7 @@ package com.android.settings.accessibility; +import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_BUTTON_COMPONENT_NAME; import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_COMPONENT_NAME; import static com.google.common.truth.Truth.assertThat; @@ -85,7 +86,18 @@ public class AccessibilityDetailsSettingsFragmentTest { } @Test - public void onCreate_hasValidExtraComponentName_launchExpectedFragmentAndFinish() { + public void onCreate_afterSuccessfullyLaunch_shouldBeFinished() { + final Intent intent = new Intent(); + intent.putExtra(Intent.EXTRA_COMPONENT_NAME, COMPONENT_NAME); + doReturn(intent).when(mActivity).getIntent(); + + mFragment.onCreate(Bundle.EMPTY); + + verify(mActivity).finish(); + } + + @Test + public void onCreate_hasValidExtraComponentName_launchExpectedFragment() { final Intent intent = new Intent(); intent.putExtra(Intent.EXTRA_COMPONENT_NAME, COMPONENT_NAME); doReturn(intent).when(mActivity).getIntent(); @@ -94,11 +106,10 @@ public class AccessibilityDetailsSettingsFragmentTest { assertStartActivityWithExpectedFragment(mActivity, ToggleAccessibilityServicePreferenceFragment.class.getName()); - verify(mActivity).finish(); } @Test - public void onCreate_hasInvalidExtraComponentName_launchAccessibilitySettingsAndFinish() { + public void onCreate_hasInvalidExtraComponentName_launchAccessibilitySettings() { final Intent intent = new Intent(); intent.putExtra(Intent.EXTRA_COMPONENT_NAME, PACKAGE_NAME + "/.service"); doReturn(intent).when(mActivity).getIntent(); @@ -106,22 +117,20 @@ public class AccessibilityDetailsSettingsFragmentTest { mFragment.onCreate(Bundle.EMPTY); assertStartActivityWithExpectedFragment(mActivity, AccessibilitySettings.class.getName()); - verify(mActivity).finish(); } @Test - public void onCreate_hasNoExtraComponentName_launchAccessibilitySettingsAndFinish() { + public void onCreate_hasNoExtraComponentName_launchAccessibilitySettings() { final Intent intent = new Intent(); doReturn(intent).when(mActivity).getIntent(); mFragment.onCreate(Bundle.EMPTY); assertStartActivityWithExpectedFragment(mActivity, AccessibilitySettings.class.getName()); - verify(mActivity).finish(); } @Test - public void onCreate_extraComponentNameIsDisallowed_launchAccessibilitySettingsAndFinish() { + public void onCreate_extraComponentNameIsDisallowed_launchAccessibilitySettings() { final Intent intent = new Intent(); intent.putExtra(Intent.EXTRA_COMPONENT_NAME, COMPONENT_NAME); doReturn(intent).when(mActivity).getIntent(); @@ -130,11 +139,10 @@ public class AccessibilityDetailsSettingsFragmentTest { mFragment.onCreate(Bundle.EMPTY); assertStartActivityWithExpectedFragment(mActivity, AccessibilitySettings.class.getName()); - verify(mActivity).finish(); } @Test - public void onCreate_magnificationComponentName_launchMagnificationFragmentAndFinish() { + public void onCreate_magnificationComponentName_launchMagnificationFragment() { final Intent intent = new Intent(); intent.putExtra(Intent.EXTRA_COMPONENT_NAME, MAGNIFICATION_COMPONENT_NAME.flattenToString()); @@ -145,7 +153,19 @@ public class AccessibilityDetailsSettingsFragmentTest { assertStartActivityWithExpectedFragment(mActivity, ToggleScreenMagnificationPreferenceFragment.class.getName()); - verify(mActivity).finish(); + } + + @Test + public void onCreate_accessibilityButton_launchAccessibilityButtonFragment() { + final Intent intent = new Intent(); + intent.putExtra(Intent.EXTRA_COMPONENT_NAME, + ACCESSIBILITY_BUTTON_COMPONENT_NAME.flattenToString()); + doReturn(intent).when(mActivity).getIntent(); + + mFragment.onCreate(Bundle.EMPTY); + + assertStartActivityWithExpectedFragment(mActivity, + AccessibilityButtonFragment.class.getName()); } private AccessibilityServiceInfo getMockAccessibilityServiceInfo() { From 1fbe34fbc7256c4693ede1ab8271a35f62c33245 Mon Sep 17 00:00:00 2001 From: lucaslin Date: Thu, 22 Apr 2021 01:46:05 +0800 Subject: [PATCH 02/32] Use [set|get]PrivateDnsMode directly The value of PRIVATE_DNS_MODE_* has changed from String to int and ConnectivityManager provides 2 new APIs to set and get private DNS mode, the caller can use them directly and doesn't need to update Settings by itself. Bug: 185311744 Test: 1. make RunSettingsRoboTests ROBOTEST_FILTER=PrivateDnsModeDialogPreferenceTest 2. make RunSettingsRoboTests ROBOTEST_FILTER=PrivateDnsPreferenceControllerTest Change-Id: I47706efe9c53a00438fdec97fda244638cecb3dc Merged-In: I47706efe9c53a00438fdec97fda244638cecb3dc (Cherry-picked from ag/14230401) --- .../PrivateDnsModeDialogPreference.java | 22 ++++++------ .../PrivateDnsPreferenceController.java | 9 ++--- .../PrivateDnsModeDialogPreferenceTest.java | 34 +++++++------------ .../PrivateDnsPreferenceControllerTest.java | 30 +++++++--------- 4 files changed, 42 insertions(+), 53 deletions(-) diff --git a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java index 822aad05f49..1c3fc76dbae 100644 --- a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java +++ b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java @@ -15,9 +15,9 @@ */ package com.android.settings.network; -import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; -import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; -import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; +import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OFF; +import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; +import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; @@ -27,7 +27,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; -import android.net.ConnectivityManager; +import android.net.ConnectivitySettingsManager; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; @@ -70,7 +70,7 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat private static final String TAG = "PrivateDnsModeDialog"; // DNS_MODE -> RadioButton id - private static final Map PRIVATE_DNS_MAP; + private static final Map PRIVATE_DNS_MAP; static { PRIVATE_DNS_MAP = new HashMap<>(); @@ -93,7 +93,7 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat @VisibleForTesting RadioGroup mRadioGroup; @VisibleForTesting - String mMode; + int mMode; public PrivateDnsModeDialogPreference(Context context) { super(context); @@ -160,7 +160,7 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat final Context context = getContext(); final ContentResolver contentResolver = context.getContentResolver(); - mMode = ConnectivityManager.getPrivateDnsMode(context); + mMode = ConnectivitySettingsManager.getPrivateDnsMode(context); mEditText = view.findViewById(R.id.private_dns_mode_provider_hostname); mEditText.addTextChangedListener(this); @@ -196,15 +196,15 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat public void onClick(DialogInterface dialog, int which) { if (which == DialogInterface.BUTTON_POSITIVE) { final Context context = getContext(); - if (mMode.equals(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME)) { + if (mMode == PRIVATE_DNS_MODE_PROVIDER_HOSTNAME) { // Only clickable if hostname is valid, so we could save it safely - Settings.Global.putString(context.getContentResolver(), HOSTNAME_KEY, + ConnectivitySettingsManager.setPrivateDnsHostname(context, mEditText.getText().toString()); } FeatureFactory.getFactory(context).getMetricsFeatureProvider().action(context, SettingsEnums.ACTION_PRIVATE_DNS_MODE, mMode); - Settings.Global.putString(context.getContentResolver(), MODE_KEY, mMode); + ConnectivitySettingsManager.setPrivateDnsMode(context, mMode); } } @@ -264,7 +264,7 @@ public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat } private void updateDialogInfo() { - final boolean modeProvider = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME.equals(mMode); + final boolean modeProvider = PRIVATE_DNS_MODE_PROVIDER_HOSTNAME == mMode; if (mEditText != null) { mEditText.setEnabled(modeProvider); } diff --git a/src/com/android/settings/network/PrivateDnsPreferenceController.java b/src/com/android/settings/network/PrivateDnsPreferenceController.java index 4aa92f4e500..07d57140ec1 100644 --- a/src/com/android/settings/network/PrivateDnsPreferenceController.java +++ b/src/com/android/settings/network/PrivateDnsPreferenceController.java @@ -16,9 +16,9 @@ package com.android.settings.network; -import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; -import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; -import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; +import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OFF; +import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; +import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; import static android.provider.Settings.Global.PRIVATE_DNS_DEFAULT_MODE; import static android.provider.Settings.Global.PRIVATE_DNS_MODE; import static android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER; @@ -29,6 +29,7 @@ import android.content.res.Resources; import android.database.ContentObserver; import android.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; +import android.net.ConnectivitySettingsManager; import android.net.LinkProperties; import android.net.Network; import android.net.Uri; @@ -118,7 +119,7 @@ public class PrivateDnsPreferenceController extends BasePreferenceController public CharSequence getSummary() { final Resources res = mContext.getResources(); final ContentResolver cr = mContext.getContentResolver(); - final String mode = ConnectivityManager.getPrivateDnsMode(mContext); + final int mode = ConnectivitySettingsManager.getPrivateDnsMode(mContext); final LinkProperties lp = mLatestLinkProperties; final List dnses = (lp == null) ? null : lp.getValidatedPrivateDnsServers(); final boolean dnsesResolved = !ArrayUtils.isEmpty(dnses); diff --git a/tests/robotests/src/com/android/settings/network/PrivateDnsModeDialogPreferenceTest.java b/tests/robotests/src/com/android/settings/network/PrivateDnsModeDialogPreferenceTest.java index 5fd417d7825..85a67f6d62f 100644 --- a/tests/robotests/src/com/android/settings/network/PrivateDnsModeDialogPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/network/PrivateDnsModeDialogPreferenceTest.java @@ -16,10 +16,9 @@ package com.android.settings.network; -import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; -import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; -import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; -import static android.provider.Settings.Global.PRIVATE_DNS_MODE; +import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OFF; +import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; +import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; @@ -28,11 +27,9 @@ import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; -import android.net.ConnectivityManager; -import android.provider.Settings; +import android.net.ConnectivitySettingsManager; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; @@ -118,10 +115,8 @@ public class PrivateDnsModeDialogPreferenceTest { public void testOnBindDialogView_containsCorrectData() { // Don't set settings to the default value ("opportunistic") as that // risks masking failure to read the mode from settings. - Settings.Global.putString(mContext.getContentResolver(), - PrivateDnsModeDialogPreference.MODE_KEY, PRIVATE_DNS_MODE_OFF); - Settings.Global.putString(mContext.getContentResolver(), - PrivateDnsModeDialogPreference.HOSTNAME_KEY, HOST_NAME); + ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OFF); + ConnectivitySettingsManager.setPrivateDnsHostname(mContext, HOST_NAME); final LayoutInflater inflater = LayoutInflater.from(mContext); final View view = inflater.inflate(R.layout.private_dns_mode_dialog, @@ -159,29 +154,26 @@ public class PrivateDnsModeDialogPreferenceTest { @Test public void testOnClick_positiveButtonClicked_saveData() { // Set the default settings to OFF - final ContentResolver contentResolver = mContext.getContentResolver(); - Settings.Global.putString(contentResolver, PRIVATE_DNS_MODE, PRIVATE_DNS_MODE_OFF); + ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OFF); - mPreference.mMode = ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; + mPreference.mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC; mPreference.onClick(null, DialogInterface.BUTTON_POSITIVE); // Change to OPPORTUNISTIC - assertThat(Settings.Global.getString(contentResolver, PRIVATE_DNS_MODE)).isEqualTo( + assertThat(ConnectivitySettingsManager.getPrivateDnsMode(mContext)).isEqualTo( PRIVATE_DNS_MODE_OPPORTUNISTIC); } @Test public void testOnClick_negativeButtonClicked_doNothing() { // Set the default settings to OFF - final ContentResolver contentResolver = mContext.getContentResolver(); - Settings.Global.putString(contentResolver, PRIVATE_DNS_MODE, PRIVATE_DNS_MODE_OFF); + ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OFF); - mPreference.mMode = ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; + mPreference.mMode = PRIVATE_DNS_MODE_OPPORTUNISTIC; mPreference.onClick(null, DialogInterface.BUTTON_NEGATIVE); // Still equal to OFF - assertThat(Settings.Global.getString(contentResolver, - Settings.Global.PRIVATE_DNS_MODE)).isEqualTo( - ConnectivityManager.PRIVATE_DNS_MODE_OFF); + assertThat(ConnectivitySettingsManager.getPrivateDnsMode(mContext)).isEqualTo( + PRIVATE_DNS_MODE_OFF); } } diff --git a/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java index 390a6744d1d..e31d959622a 100644 --- a/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/PrivateDnsPreferenceControllerTest.java @@ -16,10 +16,9 @@ package com.android.settings.network; -import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; -import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; -import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; -import static android.provider.Settings.Global.PRIVATE_DNS_DEFAULT_MODE; +import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OFF; +import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_OPPORTUNISTIC; +import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME; import static android.provider.Settings.Global.PRIVATE_DNS_MODE; import static android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER; @@ -48,6 +47,7 @@ import android.content.ContentResolver; import android.content.Context; import android.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; +import android.net.ConnectivitySettingsManager; import android.net.LinkProperties; import android.net.Network; import android.os.Handler; @@ -193,8 +193,8 @@ public class PrivateDnsPreferenceControllerTest { @Test public void getSummary_PrivateDnsModeOff() { - setPrivateDnsMode(PRIVATE_DNS_MODE_OFF); - setPrivateDnsProviderHostname(HOSTNAME); + ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OFF); + ConnectivitySettingsManager.setPrivateDnsHostname(mContext, HOSTNAME); mController.updateState(mPreference); verify(mController, atLeastOnce()).getSummary(); verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_off)); @@ -203,8 +203,8 @@ public class PrivateDnsPreferenceControllerTest { @Test public void getSummary_PrivateDnsModeOpportunistic() { mLifecycle.handleLifecycleEvent(ON_START); - setPrivateDnsMode(PRIVATE_DNS_MODE_OPPORTUNISTIC); - setPrivateDnsProviderHostname(HOSTNAME); + ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OPPORTUNISTIC); + ConnectivitySettingsManager.setPrivateDnsHostname(mContext, HOSTNAME); mController.updateState(mPreference); verify(mController, atLeastOnce()).getSummary(); verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_opportunistic)); @@ -226,8 +226,8 @@ public class PrivateDnsPreferenceControllerTest { @Test public void getSummary_PrivateDnsModeProviderHostname() { mLifecycle.handleLifecycleEvent(ON_START); - setPrivateDnsMode(PRIVATE_DNS_MODE_PROVIDER_HOSTNAME); - setPrivateDnsProviderHostname(HOSTNAME); + ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_PROVIDER_HOSTNAME); + ConnectivitySettingsManager.setPrivateDnsHostname(mContext, HOSTNAME); mController.updateState(mPreference); verify(mController, atLeastOnce()).getSummary(); verify(mPreference).setSummary( @@ -252,7 +252,7 @@ public class PrivateDnsPreferenceControllerTest { public void getSummary_PrivateDnsDefaultMode() { // Default mode is opportunistic, unless overridden by a Settings push. setPrivateDnsMode(""); - setPrivateDnsProviderHostname(""); + ConnectivitySettingsManager.setPrivateDnsHostname(mContext, ""); mController.updateState(mPreference); verify(mController, atLeastOnce()).getSummary(); verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_opportunistic)); @@ -260,7 +260,7 @@ public class PrivateDnsPreferenceControllerTest { reset(mController); reset(mPreference); // Pretend an emergency gservices setting has disabled default-opportunistic. - Settings.Global.putString(mContentResolver, PRIVATE_DNS_DEFAULT_MODE, PRIVATE_DNS_MODE_OFF); + ConnectivitySettingsManager.setPrivateDnsDefaultMode(mContext, PRIVATE_DNS_MODE_OFF); mController.updateState(mPreference); verify(mController, atLeastOnce()).getSummary(); verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_off)); @@ -270,7 +270,7 @@ public class PrivateDnsPreferenceControllerTest { // The user interacting with the Private DNS menu, explicitly choosing // opportunistic mode, will be able to use despite the change to the // default setting above. - setPrivateDnsMode(PRIVATE_DNS_MODE_OPPORTUNISTIC); + ConnectivitySettingsManager.setPrivateDnsMode(mContext, PRIVATE_DNS_MODE_OPPORTUNISTIC); mController.updateState(mPreference); verify(mController, atLeastOnce()).getSummary(); verify(mPreference).setSummary(getResourceString(R.string.private_dns_mode_opportunistic)); @@ -305,10 +305,6 @@ public class PrivateDnsPreferenceControllerTest { Settings.Global.putString(mContentResolver, PRIVATE_DNS_MODE, mode); } - private void setPrivateDnsProviderHostname(String name) { - Settings.Global.putString(mContentResolver, PRIVATE_DNS_SPECIFIER, name); - } - private String getResourceString(int which) { return mContext.getResources().getString(which); } From 55ab3f91e5434c2c10675a44a9aec6b8b092d05a Mon Sep 17 00:00:00 2001 From: Tsung-Mao Fang Date: Mon, 10 May 2021 16:15:46 +0800 Subject: [PATCH 03/32] Fix color contrast problem for VPN page Test: A11y scanner doesn't show text contrast problem Fix: 187399519 Fix: 181185518 Change-Id: I830a8b16d817bbdf2c68332e38fad0a15b87ce45 --- res/layout/preference_list_fragment.xml | 1 + res/values/styles.xml | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/res/layout/preference_list_fragment.xml b/res/layout/preference_list_fragment.xml index 7225df14589..f8ffa8f2e47 100644 --- a/res/layout/preference_list_fragment.xml +++ b/res/layout/preference_list_fragment.xml @@ -49,6 +49,7 @@ android:padding="@*android:dimen/preference_fragment_padding_side" android:layout_gravity="center" android:gravity="center_vertical" + android:textAppearance="?android:attr/textAppearanceMedium" android:visibility="gone" /> match_parent wrap_content - @android:style/TextAppearance.DeviceDefault.Small + ?android:attr/textAppearanceSmall