Update font/display size pages for support large screen in SuW

- Follow the SuW design of the UI guideline.
- Add the footer button for each pages.
- Add a new AccessibilityScreenSizeForSetupWizardActivity for SuW.
- Add suw_font_size_fragment.xml and suw_screen_zoom_fragment.xml
  for each fragment.
- Shorten 50% of the preview height.

Bug: 194447311
Fixes: 199369859
Test: manual test
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.accessibility
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.display
Change-Id: I2685e96d37d542490521ec24cfce490f87cbd88d
This commit is contained in:
Sunny Shao
2021-09-02 14:16:04 +08:00
parent 71d5798d3e
commit f9beef43c9
18 changed files with 579 additions and 53 deletions

View File

@@ -1679,6 +1679,10 @@
android:value="com.android.settings.accessibility.AccessibilitySettingsForSetupWizard" />
</activity-alias>
<activity
android:name=".accessibility.AccessibilityScreenSizeForSetupWizardActivity"
android:exported="false"/>
<activity
android:name="Settings$AccessibilityDaltonizerSettingsActivity"
android:exported="true"

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2021 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.
-->
<com.google.android.setupdesign.GlifLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/setup_wizard_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:icon="@drawable/ic_accessibility_visibility"
app:sucHeaderText="@string/title_font_size"
app:sudDescriptionText="@string/short_summary_font_size">
<FrameLayout
android:id="@+id/content_frame"
android:layout_marginTop="@dimen/preview_size_top_margin"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</com.google.android.setupdesign.GlifLayout>

View File

@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2021 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.
-->
<androidx.core.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include layout="@layout/suw_preview_seek_bar_view_pager"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
<com.android.settings.widget.DotsPageIndicator
android:id="@+id/page_indicator"
style="@style/PreviewPagerPageIndicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="3dp"/>
<TextView
android:id="@+id/current_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="6dp"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Widget.TextView"
android:elevation="2dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingTop="8dp">
<ImageView
android:id="@+id/smaller"
android:src="@drawable/ic_font_size_16dp"
android:contentDescription="@string/font_size_make_smaller_desc"
style="@style/screen_size_imageview_style"/>
<com.android.settings.widget.LabeledSeekBar
android:id="@+id/seek_bar"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="1"
style="@android:style/Widget.Material.SeekBar.Discrete"/>
<ImageView
android:id="@+id/larger"
android:src="@drawable/ic_font_size_24dp"
android:contentDescription="@string/font_size_make_larger_desc"
style="@style/screen_size_imageview_style"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/font_size_summary"
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Subhead"/>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2021 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.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:paddingStart="@dimen/preview_pager_padding"
android:paddingEnd="@dimen/preview_pager_padding"
android:background="@drawable/preview_seek_bar_outline" >
<androidx.viewpager.widget.ViewPager
android:id="@+id/preview_pager"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_weight="1"
android:background="?android:attr/colorBackground"
android:contentDescription="@string/preview_pager_content_description" />
<TextView
android:layout_width="match_parent"
android:layout_height="36dp"
android:paddingStart="32dp"
android:gravity="start|center"
android:text="@string/screen_zoom_preview_title"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title"
android:importantForAccessibility="no" />
</LinearLayout>

View File

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2021 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.
-->
<androidx.core.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include layout="@layout/suw_preview_seek_bar_view_pager"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
<com.android.settings.widget.DotsPageIndicator
android:id="@+id/page_indicator"
style="@style/PreviewPagerPageIndicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="3dp"/>
<TextView
android:id="@+id/current_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="6dp"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Widget.TextView"
android:elevation="2dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<ImageView
android:id="@+id/smaller"
android:src="@drawable/ic_remove_24dp"
android:contentDescription="@string/screen_zoom_make_smaller_desc"
style="@style/screen_size_imageview_style"/>
<com.android.settings.widget.LabeledSeekBar
android:id="@+id/seek_bar"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="1"
style="@android:style/Widget.Material.SeekBar.Discrete"/>
<ImageView
android:id="@+id/larger"
android:src="@drawable/ic_add_24dp"
android:contentDescription="@string/screen_zoom_make_larger_desc"
style="@style/screen_size_imageview_style"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/screen_zoom_summary"
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Subhead"/>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2021 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.
-->
<resources>
<!-- Top margin for preview view pager -->
<dimen name="preview_size_top_margin">0dp</dimen>
</resources>

View File

@@ -434,6 +434,9 @@
<!-- Choose SIM Activity dimens -->
<dimen name="subtitle_bottom_padding">24dp</dimen>
<!-- Top margin for preview view pager -->
<dimen name="preview_size_top_margin">-12dp</dimen>
<!-- Battery usage chart view component -->
<dimen name="chartview_text_padding">6dp</dimen>
<dimen name="chartview_divider_width">1dp</dimen>

View File

@@ -21,4 +21,9 @@
<integer name="job_anomaly_detection">102</integer>
<integer name="device_index_update">103</integer>
<integer name="sim_notification_send">104</integer>
<!-- Define the font/display size fragment id in the
accessibility_settings_for_setup_wizard.xml. -->
<integer name="suw_font_size_fragment_no">0</integer>
<integer name="suw_display_size_fragment_no">1</integer>
</resources>

View File

@@ -237,6 +237,16 @@
<item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault.Small</item>
</style>
<style name="screen_size_imageview_style">
<item name="android:layout_width">48dp</item>
<item name="android:layout_height">48dp</item>
<item name="android:background">?android:attr/selectableItemBackgroundBorderless</item>
<item name="android:tint">?android:attr/textColorPrimary</item>
<item name="android:tintMode">src_in</item>
<item name="android:scaleType">center</item>
<item name="android:focusable">true</item>
</style>
<style name="TextAppearance" parent="android:TextAppearance.DeviceDefault"/>
<style name="TextAppearance.info_label">

View File

@@ -21,18 +21,28 @@
android:title="@string/vision_settings_title">
<Preference
android:fragment="com.android.settings.display.FontSizePreferenceFragmentForSetupWizard"
android:key="font_size_preference"
android:icon="@drawable/ic_font_size"
android:summary="@string/short_summary_font_size"
android:title="@string/title_font_size"/>
android:title="@string/title_font_size">
<intent
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity">
<extra android:name="vision_fragment_no" android:value="@integer/suw_font_size_fragment_no"/>
</intent>
</Preference>
<com.android.settings.display.ScreenZoomPreference
android:fragment="com.android.settings.display.ScreenZoomPreferenceFragmentForSetupWizard"
android:key="force_density_preference"
android:icon="@drawable/ic_screen_zoom"
android:summary="@string/screen_zoom_short_summary"
android:title="@string/screen_zoom_title"/>
android:title="@string/screen_zoom_title">
<intent
android:targetPackage="com.android.settings"
android:targetClass="com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity">
<extra android:name="vision_fragment_no" android:value="@integer/suw_display_size_fragment_no"/>
</intent>
</com.android.settings.display.ScreenZoomPreference>
<Preference
android:fragment="com.android.settings.accessibility.MagnificationPreferenceFragment"

View File

@@ -0,0 +1,127 @@
/*
* Copyright (C) 2021 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.accessibility;
import android.app.settings.SettingsEnums;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ScrollView;
import android.widget.TextView;
import androidx.annotation.VisibleForTesting;
import androidx.preference.PreferenceFragmentCompat;
import com.android.settings.R;
import com.android.settings.core.InstrumentedActivity;
import com.android.settings.display.FontSizePreferenceFragmentForSetupWizard;
import com.android.settings.display.ScreenZoomPreferenceFragmentForSetupWizard;
import com.google.android.setupcompat.template.FooterBarMixin;
import com.google.android.setupcompat.template.FooterButton;
import com.google.android.setupdesign.GlifLayout;
import com.google.android.setupdesign.util.ThemeHelper;
/** Settings font/display size activity for SUW. */
public class AccessibilityScreenSizeForSetupWizardActivity extends InstrumentedActivity {
private static final String TAG = "ScreenSizeForSetup";
// A parameter decides which fragment ({@link FontSizePreferenceFragmentForSetupWizard} or
// {@link ScreenZoomPreferenceFragmentForSetupWizard}) will be visioned.
static final String VISION_FRAGMENT_NO = "vision_fragment_no";
private int mFragmentNo;
private int mFontSizeFragmentNo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mFontSizeFragmentNo = getResources().getInteger(R.integer.suw_font_size_fragment_no);
final int appliedTheme = ThemeHelper.trySetDynamicColor(this)
? R.style.SudDynamicColorThemeGlifV3_DayNight : R.style.SudThemeGlifV3_DayNight;
setTheme(appliedTheme);
setContentView(R.layout.accessibility_screen_size_setup_wizard);
mFragmentNo = getIntent().getExtras().getInt(VISION_FRAGMENT_NO);
Log.d(TAG, "onCreate: fragment no: " + mFragmentNo);
generateHeader(mFragmentNo);
scrollToBottom();
initFooterButton();
if (savedInstanceState == null) {
final PreferenceFragmentCompat fragment =
(mFragmentNo == mFontSizeFragmentNo)
? new FontSizePreferenceFragmentForSetupWizard()
: new ScreenZoomPreferenceFragmentForSetupWizard();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, fragment)
.commit();
}
}
@Override
public int getMetricsCategory() {
return mFragmentNo == mFontSizeFragmentNo ? SettingsEnums.SUW_ACCESSIBILITY_FONT_SIZE
: SettingsEnums.SUW_ACCESSIBILITY_DISPLAY_SIZE;
}
@VisibleForTesting
void generateHeader(int fragmentNo) {
((TextView) findViewById(R.id.suc_layout_title)).setText(
fragmentNo == mFontSizeFragmentNo ? R.string.title_font_size
: R.string.screen_zoom_title);
((TextView) findViewById(R.id.sud_layout_subtitle)).setText(
fragmentNo == mFontSizeFragmentNo ? R.string.short_summary_font_size
: R.string.screen_zoom_short_summary);
}
@VisibleForTesting
void initFooterButton() {
final GlifLayout layout = findViewById(R.id.setup_wizard_layout);
final FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class);
final View.OnClickListener nextButtonListener =
v -> {
onBackPressed();
};
final FooterButton primaryButton =
new FooterButton.Builder(this)
.setText(R.string.done)
.setListener(nextButtonListener)
.setButtonType(FooterButton.ButtonType.NEXT)
.setTheme(R.style.SudGlifButton_Primary)
.build();
mixin.setPrimaryButton(primaryButton);
}
/**
* Scrolls to bottom while {@link ScrollView} layout changed.
*/
private void scrollToBottom() {
final GlifLayout layout = findViewById(R.id.setup_wizard_layout);
final ScrollView scrollView = layout.getScrollView();
scrollView.getViewTreeObserver().addOnGlobalLayoutListener(() -> {
final int scrollViewHeight = scrollView.getHeight();
if (scrollViewHeight > 0) {
scrollView.post(() -> {
// Here is no need to show the scrolling animation. So disabled first and
// then enabled it after scrolling finished.
scrollView.setSmoothScrollingEnabled(false);
scrollView.fullScroll(View.FOCUS_DOWN);
scrollView.setSmoothScrollingEnabled(true);
});
}
});
}
}

View File

@@ -16,7 +16,10 @@
package com.android.settings.accessibility;
import static com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity.VISION_FRAGMENT_NO;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
@@ -30,7 +33,6 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.SetupWizardUtils;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.display.FontSizePreferenceFragmentForSetupWizard;
import com.android.settings.search.actionbar.SearchMenuController;
import com.android.settings.support.actionbar.HelpResourceProvider;
import com.android.settingslib.core.instrumentation.Instrumentable;
@@ -123,19 +125,12 @@ public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivit
&& new ComponentName(getPackageName(),
CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW).equals(
getIntent().getComponent())) {
final Bundle args = new Bundle();
args.putInt(HelpResourceProvider.HELP_URI_RESOURCE_KEY, 0);
args.putBoolean(SearchMenuController.NEED_SEARCH_ICON_IN_ACTION_BAR, false);
final SubSettingLauncher subSettingLauncher = new SubSettingLauncher(this)
.setDestination(FontSizePreferenceFragmentForSetupWizard.class.getName())
.setArguments(args)
.setSourceMetricsCategory(Instrumentable.METRICS_CATEGORY_UNKNOWN)
.setExtras(SetupWizardUtils.copyLifecycleExtra(getIntent().getExtras(),
new Bundle()))
.setTransitionType(SettingsTransitionHelper.TransitionType.TRANSITION_FADE);
final Intent intent = new Intent(this,
AccessibilityScreenSizeForSetupWizardActivity.class);
intent.putExtra(VISION_FRAGMENT_NO,
getResources().getInteger(R.integer.suw_font_size_fragment_no));
startActivity(intent);
Log.d(LOG_TAG, "Launch font size settings");
subSettingLauncher.launch();
finish();
}
}

View File

@@ -18,9 +18,16 @@ package com.android.settings.display;
import android.app.settings.SettingsEnums;
import com.android.settings.R;
public class FontSizePreferenceFragmentForSetupWizard
extends ToggleFontSizePreferenceFragment {
@Override
protected int getActivityLayoutResId() {
return R.layout.suw_font_size_fragment;
}
@Override
public int getMetricsCategory() {
return SettingsEnums.SUW_ACCESSIBILITY_FONT_SIZE;

View File

@@ -109,6 +109,10 @@ public class PreviewPagerAdapter extends PagerAdapter {
return (view == object);
}
FrameLayout[] getPreviewFrames() {
return mPreviewFrames;
}
boolean isAnimating() {
return mAnimationCounter > 0;
}

View File

@@ -264,6 +264,12 @@ public abstract class PreviewSeekBarPreferenceFragment extends SettingsPreferenc
@Override
public void onPageSelected(int position) {
mPreviewPager.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT);
// To avoid displaying previous page on the left side in SUW landscape mode for
// large size.
if (position > 0) {
mPreviewPagerAdapter.getPreviewFrames()[position - 1].setVisibility(View.INVISIBLE);
}
mPreviewPagerAdapter.getPreviewFrames()[position].setVisibility(View.VISIBLE);
}
};

View File

@@ -18,8 +18,15 @@ package com.android.settings.display;
import android.app.settings.SettingsEnums;
import com.android.settings.R;
public class ScreenZoomPreferenceFragmentForSetupWizard extends ScreenZoomSettings {
@Override
protected int getActivityLayoutResId() {
return R.layout.suw_screen_zoom_fragment;
}
@Override
public int getMetricsCategory() {
return SettingsEnums.SUW_ACCESSIBILITY_DISPLAY_SIZE;

View File

@@ -0,0 +1,84 @@
/*
* Copyright (C) 2021 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.accessibility;
import static com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity.VISION_FRAGMENT_NO;
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.content.Intent;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import com.google.android.setupcompat.template.FooterBarMixin;
import com.google.android.setupdesign.GlifLayout;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
/** Tests for {@link AccessibilityScreenSizeForSetupWizardActivity} */
@RunWith(RobolectricTestRunner.class)
public class AccessibilityScreenSizeForSetupWizardActivityTest {
private static final int DISPLAY_SIZE_FRAGMENT_NO = 1;
private Context mContext = ApplicationProvider.getApplicationContext();
private AccessibilityScreenSizeForSetupWizardActivity mActivity;
@Before
public void setup() {
final Intent intent = new Intent();
intent.putExtra(VISION_FRAGMENT_NO,
mContext.getResources().getInteger(R.integer.suw_font_size_fragment_no));
mActivity = Robolectric.buildActivity(AccessibilityScreenSizeForSetupWizardActivity.class,
intent).create().get();
}
@Test
public void generateHeader_setPageNoAsFontSize_returnFontSizeTitle() {
mActivity.generateHeader(
mActivity.getResources().getInteger(R.integer.suw_font_size_fragment_no));
final GlifLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
assertThat(layout.getHeaderText()).isEqualTo(mContext.getText(R.string.title_font_size));
}
@Test
public void generateHeader_setPageNoAsDisplaySize_returnDisplaySizeTitle() {
mActivity.generateHeader(DISPLAY_SIZE_FRAGMENT_NO);
final GlifLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
assertThat(layout.getHeaderText()).isEqualTo(mContext.getText(R.string.screen_zoom_title));
}
@Test
public void initFooterButton_generateDoneButton() {
mActivity.initFooterButton();
final GlifLayout layout = mActivity.findViewById(R.id.setup_wizard_layout);
final FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class);
assertThat(mixin.getPrimaryButton().getText()).isEqualTo(mContext.getText(R.string.done));
}
}

View File

@@ -16,6 +16,7 @@
package com.android.settings.accessibility;
import static com.android.settings.accessibility.AccessibilityScreenSizeForSetupWizardActivity.VISION_FRAGMENT_NO;
import static com.android.settings.accessibility.AccessibilitySettingsForSetupWizardActivity.CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW;
import static com.google.common.truth.Truth.assertThat;
@@ -26,8 +27,6 @@ import android.content.Intent;
import androidx.test.filters.SmallTest;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.display.FontSizePreferenceFragmentForSetupWizard;
import com.google.android.setupcompat.util.WizardManagerHelper;
@@ -42,45 +41,47 @@ import org.robolectric.Shadows;
@SmallTest
public class AccessibilitySettingsForSetupWizardActivityTest {
@Test
public void createSetupAccessibilityActivity_shouldBeSUWTheme() {
final Intent intent = new Intent();
AccessibilitySettingsForSetupWizardActivity activity =
Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class, intent).get();
@Test
public void createSetupAccessibilityActivity_shouldBeSUWTheme() {
final Intent intent = new Intent();
AccessibilitySettingsForSetupWizardActivity activity =
Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
intent).get();
assertThat(activity.getThemeResId()).isEqualTo(R.style.GlifV3Theme_Light);
}
assertThat(activity.getThemeResId()).isEqualTo(R.style.GlifV3Theme_Light);
}
@Test
public void onCreate_hasFontSizeComponent_shouldGoToFontSizePreferenceDirectly() {
AccessibilitySettingsForSetupWizardActivity activity =
Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
new Intent(Intent.ACTION_MAIN).setComponent(new ComponentName(
RuntimeEnvironment.application, CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW)).
putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true).
putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
@Test
public void onCreate_hasFontSizeComponent_shouldGoToFontSizePreferenceDirectly() {
AccessibilitySettingsForSetupWizardActivity activity =
Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
new Intent(Intent.ACTION_MAIN).setComponent(new ComponentName(
RuntimeEnvironment.application,
CLASS_NAME_FONT_SIZE_SETTINGS_FOR_SUW))
.putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true)
.putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
activity.tryLaunchFontSizeSettings();
activity.tryLaunchFontSizeSettings();
final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
assertThat(launchIntent).isNotNull();
assertThat(launchIntent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)).isEqualTo(
FontSizePreferenceFragmentForSetupWizard.class.getName());
assertThat(activity.isFinishing()).isTrue();
}
final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
assertThat(launchIntent).isNotNull();
assertThat(launchIntent.getIntExtra(VISION_FRAGMENT_NO, -1)).isEqualTo(
activity.getResources().getInteger(R.integer.suw_font_size_fragment_no));
assertThat(activity.isFinishing()).isTrue();
}
@Test
public void onCreate_noFontSizeComponent_shouldNotFinishCurrentActivity() {
AccessibilitySettingsForSetupWizardActivity activity =
Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
new Intent(Intent.ACTION_MAIN).
putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true).
putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
@Test
public void onCreate_noFontSizeComponent_shouldNotFinishCurrentActivity() {
AccessibilitySettingsForSetupWizardActivity activity =
Robolectric.buildActivity(AccessibilitySettingsForSetupWizardActivity.class,
new Intent(Intent.ACTION_MAIN)
.putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true)
.putExtra(WizardManagerHelper.EXTRA_IS_SETUP_FLOW, true)).get();
activity.tryLaunchFontSizeSettings();
activity.tryLaunchFontSizeSettings();
final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
assertThat(launchIntent).isNull();
assertThat(activity.isFinishing()).isFalse();
}
final Intent launchIntent = Shadows.shadowOf(activity).getNextStartedActivity();
assertThat(launchIntent).isNull();
assertThat(activity.isFinishing()).isFalse();
}
}