From 212dd952a125fa777f3ec02edef537f155ae195d Mon Sep 17 00:00:00 2001 From: Maurice Lam Date: Wed, 14 Feb 2018 16:02:33 -0800 Subject: [PATCH] Improve pattern layout for tiiiny screens On small screens < sw400dp, - Don't show icon - Don't show "Screen lock options" button Test: cd tests/robotests && mma Bug: 72764729 Change-Id: I8d9863d43c877fcc18f504d91d3183760b3fafc2 --- res/layout/choose_lock_pattern_common.xml | 3 ++- .../confirm_lock_pattern_internal_base.xml | 2 +- res/values-sw400dp/{styles.xml => config.xml} | 10 ++++++---- res/values/config.xml | 6 ++++++ res/values/styles.xml | 5 ----- .../settings/password/ChooseLockPattern.java | 11 +++++++++-- .../password/SetupChooseLockPattern.java | 12 +++++++----- .../settings/password/ChooseLockPatternTest.java | 15 ++++++++++++++- .../SetupChooseLockPatternTest.java | 16 +++++++++++++--- 9 files changed, 58 insertions(+), 22 deletions(-) rename res/values-sw400dp/{styles.xml => config.xml} (63%) mode change 100755 => 100644 rename tests/robotests/src/com/android/settings/{ => password}/SetupChooseLockPatternTest.java (91%) diff --git a/res/layout/choose_lock_pattern_common.xml b/res/layout/choose_lock_pattern_common.xml index 6aee0f99c3e..b3006a63115 100644 --- a/res/layout/choose_lock_pattern_common.xml +++ b/res/layout/choose_lock_pattern_common.xml @@ -42,7 +42,7 @@ @@ -73,6 +73,7 @@ style="@style/SuwDescription.Glif" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginHorizontal="?attr/suwMarginSides" android:minLines="2" /> - - - - diff --git a/src/com/android/settings/password/ChooseLockPattern.java b/src/com/android/settings/password/ChooseLockPattern.java index 0df1a11c9f2..75a78f8b36c 100644 --- a/src/com/android/settings/password/ChooseLockPattern.java +++ b/src/com/android/settings/password/ChooseLockPattern.java @@ -452,8 +452,15 @@ public class ChooseLockPattern extends SettingsActivity { final GlifLayout layout = (GlifLayout) inflater.inflate( R.layout.choose_lock_pattern, container, false); layout.setHeaderText(getActivity().getTitle()); - if (mForFingerprint) { - layout.setIcon(getActivity().getDrawable(R.drawable.ic_fingerprint_header)); + if (getResources().getBoolean(R.bool.config_lock_pattern_minimal_ui)) { + View iconView = layout.findViewById(R.id.suw_layout_icon); + if (iconView != null) { + iconView.setVisibility(View.GONE); + } + } else { + if (mForFingerprint) { + layout.setIcon(getActivity().getDrawable(R.drawable.ic_fingerprint_header)); + } } return layout; } diff --git a/src/com/android/settings/password/SetupChooseLockPattern.java b/src/com/android/settings/password/SetupChooseLockPattern.java index 4ae58392e18..864c5c2a606 100644 --- a/src/com/android/settings/password/SetupChooseLockPattern.java +++ b/src/com/android/settings/password/SetupChooseLockPattern.java @@ -57,11 +57,13 @@ public class SetupChooseLockPattern extends ChooseLockPattern { @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - Button optionsButton = (Button) view.findViewById(R.id.screen_lock_options); - optionsButton.setVisibility(View.VISIBLE); - optionsButton.setOnClickListener((btn) -> - ChooseLockTypeDialogFragment.newInstance(mUserId) - .show(getChildFragmentManager(), null)); + if (!getResources().getBoolean(R.bool.config_lock_pattern_minimal_ui)) { + Button optionsButton = view.findViewById(R.id.screen_lock_options); + optionsButton.setVisibility(View.VISIBLE); + optionsButton.setOnClickListener((btn) -> + ChooseLockTypeDialogFragment.newInstance(mUserId) + .show(getChildFragmentManager(), null)); + } } @Override diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java index e17136ea3da..f3af2df6884 100644 --- a/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java +++ b/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java @@ -22,6 +22,7 @@ import static org.robolectric.RuntimeEnvironment.application; import android.content.Intent; import android.os.UserHandle; +import android.view.View; import com.android.settings.R; import com.android.settings.TestConfig; @@ -102,15 +103,27 @@ public class ChooseLockPatternTest { .isEqualTo(123); } + @Config(qualifiers = "sw400dp") @Test - public void assertThat_chooseLockIconChanged_WhenFingerprintExtraSet() { + public void fingerprintExtraSet_shouldDisplayFingerprintIcon() { ChooseLockPattern activity = createActivity(true); ChooseLockPatternFragment fragment = (ChooseLockPatternFragment) activity.getFragmentManager().findFragmentById(R.id.main_content); + ShadowDrawable drawable = Shadows.shadowOf(((GlifLayout) fragment.getView()).getIcon()); assertThat(drawable.getCreatedFromResId()).isEqualTo(R.drawable.ic_fingerprint_header); } + @Test + public void smallScreens_shouldHideIcon() { + ChooseLockPattern activity = createActivity(true); + ChooseLockPatternFragment fragment = (ChooseLockPatternFragment) + activity.getFragmentManager().findFragmentById(R.id.main_content); + + View iconView = fragment.getView().findViewById(R.id.suw_layout_icon); + assertThat(iconView.getVisibility()).isEqualTo(View.GONE); + } + private ChooseLockPattern createActivity(boolean addFingerprintExtra) { return Robolectric.buildActivity( ChooseLockPattern.class, diff --git a/tests/robotests/src/com/android/settings/SetupChooseLockPatternTest.java b/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java similarity index 91% rename from tests/robotests/src/com/android/settings/SetupChooseLockPatternTest.java rename to tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java index 81a6bb31e18..ea3264172ce 100644 --- a/tests/robotests/src/com/android/settings/SetupChooseLockPatternTest.java +++ b/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java @@ -14,7 +14,7 @@ * limitations under the License */ -package com.android.settings; +package com.android.settings.password; import static com.google.common.truth.Truth.assertThat; @@ -28,9 +28,11 @@ import android.os.UserHandle; import android.view.View; import android.widget.Button; +import com.android.settings.R; +import com.android.settings.SetupRedactionInterstitial; +import com.android.settings.TestConfig; import com.android.settings.password.ChooseLockPattern.ChooseLockPatternFragment; import com.android.settings.password.ChooseLockPattern.IntentBuilder; -import com.android.settings.password.SetupChooseLockPattern; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.SettingsShadowResources; import com.android.settings.testutils.shadow.SettingsShadowResourcesImpl; @@ -89,8 +91,9 @@ public class SetupChooseLockPatternTest { .isEqualTo(PackageManager.COMPONENT_ENABLED_STATE_ENABLED); } + @Config(qualifiers = "sw400dp") @Test - public void screenLockOptions_shouldBeVisible() { + public void sw400dp_shouldShowScreenLockOptions() { Button button = mActivity.findViewById(R.id.screen_lock_options); assertThat(button).isNotNull(); assertThat(button.getVisibility()).isEqualTo(View.VISIBLE); @@ -102,6 +105,13 @@ public class SetupChooseLockPatternTest { assertThat(count).named("List items shown").isEqualTo(3); } + @Test + public void smallScreens_shouldHideScreenLockOptions() { + Button button = mActivity.findViewById(R.id.screen_lock_options); + assertThat(button).isNotNull(); + assertThat(button.getVisibility()).isEqualTo(View.GONE); + } + @Test public void skipButton_shouldBeVisible_duringNonFingerprintFlow() { Button button = mActivity.findViewById(R.id.footerLeftButton);