diff --git a/res/values/strings.xml b/res/values/strings.xml
index f92fd2aca84..0711156add1 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2753,6 +2753,9 @@
Brightness level
Adaptive brightness
+
+
+ About adaptive brightness
Your screen brightness will automatically adjust to your environment and activities. You can move the slider manually to help adaptive brightness learn your preferences.
diff --git a/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizard.java b/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizard.java
index ad1ae96b03b..19db2668df9 100644
--- a/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizard.java
+++ b/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizard.java
@@ -27,11 +27,13 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.preference.PreferenceScreen;
import androidx.recyclerview.widget.RecyclerView;
import com.android.settings.R;
import com.android.settings.display.AutoBrightnessSettings;
import com.android.settingslib.Utils;
+import com.android.settingslib.widget.FooterPreference;
import com.google.android.setupcompat.template.FooterBarMixin;
import com.google.android.setupdesign.GlifPreferenceLayout;
@@ -41,10 +43,14 @@ import com.google.android.setupdesign.GlifPreferenceLayout;
*/
public class AutoBrightnessPreferenceFragmentForSetupWizard extends AutoBrightnessSettings {
+ private static final String FOOTER_PREFERENCE_KEY = "auto_brightness_footer";
+
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
+ updateFooterContentDescription();
+
if (view instanceof GlifPreferenceLayout) {
final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
final String title = getContext().getString(
@@ -78,4 +84,15 @@ public class AutoBrightnessPreferenceFragmentForSetupWizard extends AutoBrightne
public int getMetricsCategory() {
return SettingsEnums.SUW_ACCESSIBILITY_AUTO_BRIGHTNESS;
}
+
+ private void updateFooterContentDescription() {
+ final PreferenceScreen screen = getPreferenceScreen();
+ final FooterPreference footerPreference = screen.findPreference(FOOTER_PREFERENCE_KEY);
+ if (footerPreference != null) {
+ String title = getString(R.string.auto_brightness_content_description_title);
+ final StringBuilder sb = new StringBuilder();
+ sb.append(title).append("\n\n").append(footerPreference.getTitle());
+ footerPreference.setContentDescription(sb);
+ }
+ }
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizardTest.java b/tests/robotests/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizardTest.java
index 1e6e068cae6..c0b9dbd2104 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizardTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AutoBrightnessPreferenceFragmentForSetupWizardTest.java
@@ -18,66 +18,97 @@ package com.android.settings.accessibility;
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
import android.app.settings.SettingsEnums;
-import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
-import androidx.lifecycle.LifecycleOwner;
-import androidx.test.core.app.ApplicationProvider;
+import androidx.fragment.app.FragmentFactory;
+import androidx.fragment.app.testing.FragmentScenario;
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
import com.android.settings.R;
+import com.android.settingslib.widget.FooterPreference;
import com.google.android.setupcompat.template.FooterBarMixin;
+import com.google.android.setupdesign.GlifLayout;
import com.google.android.setupdesign.GlifPreferenceLayout;
+import org.junit.After;
import org.junit.Before;
-import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.Spy;
-import org.mockito.junit.MockitoJUnit;
-import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;
/** Tests for {@link AutoBrightnessPreferenceFragmentForSetupWizard}. */
@RunWith(RobolectricTestRunner.class)
public class AutoBrightnessPreferenceFragmentForSetupWizardTest {
- @Rule
- public final MockitoRule mMockito = MockitoJUnit.rule();
+ // Same as AutoBrightnessPreferenceFragmentForSetupWizard#FOOTER_PREFERENCE_KEY
+ private static final String FOOTER_PREFERENCE_KEY = "auto_brightness_footer";
+
+ private FragmentScenario mFragmentScenario;
- @Spy
- private final Context mContext = ApplicationProvider.getApplicationContext();
- @Mock
- private GlifPreferenceLayout mGlifLayoutView;
- @Mock
- private FooterBarMixin mFooterBarMixin;
private AutoBrightnessPreferenceFragmentForSetupWizard mFragment;
+ private GlifLayout mGlifLayout;
@Before
public void setUp() {
- mFragment = spy(new AutoBrightnessPreferenceFragmentForSetupWizard());
- doReturn(mock(LifecycleOwner.class)).when(mFragment).getViewLifecycleOwner();
- doReturn(mContext).when(mFragment).getContext();
- when(mGlifLayoutView.getMixin(eq(FooterBarMixin.class))).thenReturn(mFooterBarMixin);
+ mFragmentScenario = FragmentScenario
+ .launch(
+ AutoBrightnessPreferenceFragmentForSetupWizard.class,
+ /* fragmentArgs= */ (Bundle) null,
+ R.style.GlifTheme,
+ /* factory= */ (FragmentFactory) null)
+ .moveToState(Lifecycle.State.RESUMED);
+ mFragmentScenario.onFragment(fragment -> mFragment = fragment);
+
+ View view = mFragment.getView();
+ assertThat(view).isInstanceOf(GlifPreferenceLayout.class);
+ mGlifLayout = (GlifLayout) view;
+ }
+
+ @After
+ public void tearDown() {
+ mFragmentScenario.close();
}
@Test
- public void setHeaderText_onViewCreated_verifyAction() {
- final String title = "title";
- doReturn(title).when(mContext).getString(R.string.auto_brightness_title);
+ public void onViewCreated_verifyGlifHerderText() {
+ assertThat(mGlifLayout.getHeaderText())
+ .isEqualTo(mFragment.getString(R.string.auto_brightness_title));
+ }
- mFragment.onViewCreated(mGlifLayoutView, null);
+ @Test
+ public void onViewCreated_verifyGlifFooter() {
+ FooterBarMixin footerMixin = mGlifLayout.getMixin(FooterBarMixin.class);
+ assertThat(footerMixin).isNotNull();
- verify(mGlifLayoutView).setHeaderText(title);
+ Button footerButton = footerMixin.getPrimaryButtonView();
+ assertThat(footerButton).isNotNull();
+ assertThat(footerButton.getText().toString()).isEqualTo(mFragment.getString(R.string.done));
+
+ footerButton.performClick();
+ assertThat(mFragment.getActivity().isFinishing()).isTrue();
+ }
+
+ @Test
+ public void onViewCreated_verifyFooterPreference() {
+ Preference pref = mFragment.findPreference(FOOTER_PREFERENCE_KEY);
+ assertThat(pref).isInstanceOf(FooterPreference.class);
+
+ FooterPreference footerPref = (FooterPreference) pref;
+ String exactTitle = footerPref.getTitle().toString();
+ assertThat(exactTitle).isEqualTo(mFragment.getString(R.string.auto_brightness_description));
+
+ // Ensure that footer content description has "About XXX" prefix for consistency with other
+ // accessibility suw pages
+ String expectedContentDescription =
+ mFragment.getString(R.string.auto_brightness_content_description_title)
+ + "\n\n" + exactTitle;
+ assertThat(footerPref.getContentDescription().toString())
+ .isEqualTo(expectedContentDescription);
}
@Test
@@ -85,11 +116,4 @@ public class AutoBrightnessPreferenceFragmentForSetupWizardTest {
assertThat(mFragment.getMetricsCategory()).isEqualTo(
SettingsEnums.SUW_ACCESSIBILITY_AUTO_BRIGHTNESS);
}
-
- @Test
- public void onViewCreated_verifyAction() {
- mFragment.onViewCreated(mGlifLayoutView, null);
-
- verify(mFooterBarMixin).setPrimaryButton(any());
- }
}