From 4723abfe2606672260a0d8f70c653de470d23eef Mon Sep 17 00:00:00 2001 From: Maurice Lam Date: Fri, 2 Mar 2018 19:32:48 -0800 Subject: [PATCH] Hide options button when user starts entering pattern Test: cd tests/robotests && mma Bug: 72409245 Change-Id: I82ab8822f13bc8bf8b74bc67f6d4d3a9fd2cc0c8 (cherry picked from commit ad554244b69d91e0304e9e5a45642b585c9e1fde) --- .../settings/password/SetupChooseLockPattern.java | 27 ++++++++++++++++++---- .../password/SetupChooseLockPatternTest.java | 17 ++++++++++++++ 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/password/SetupChooseLockPattern.java b/src/com/android/settings/password/SetupChooseLockPattern.java index 864c5c2a60..8853950c63 100644 --- a/src/com/android/settings/password/SetupChooseLockPattern.java +++ b/src/com/android/settings/password/SetupChooseLockPattern.java @@ -20,7 +20,10 @@ import android.app.Fragment; import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.support.annotation.Nullable; +import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; @@ -54,16 +57,20 @@ public class SetupChooseLockPattern extends ChooseLockPattern { public static class SetupChooseLockPatternFragment extends ChooseLockPatternFragment implements ChooseLockTypeDialogFragment.OnLockTypeSelectedListener { + @Nullable + private Button mOptionsButton; + @Override - public void onViewCreated(View view, Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); + public View onCreateView( + LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view = super.onCreateView(inflater, container, savedInstanceState); 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) -> + mOptionsButton = view.findViewById(R.id.screen_lock_options); + mOptionsButton.setOnClickListener((btn) -> ChooseLockTypeDialogFragment.newInstance(mUserId) .show(getChildFragmentManager(), null)); } + return view; } @Override @@ -85,6 +92,16 @@ public class SetupChooseLockPattern extends ChooseLockPattern { } @Override + protected void updateStage(Stage stage) { + super.updateStage(stage); + if (!getResources().getBoolean(R.bool.config_lock_pattern_minimal_ui) + && mOptionsButton != null) { + mOptionsButton.setVisibility( + stage == Stage.Introduction ? View.VISIBLE : View.INVISIBLE); + } + } + + @Override public void handleLeftButton() { SetupSkipDialog dialog = SetupSkipDialog.newInstance( getActivity().getIntent() diff --git a/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java b/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java index e0df818f84..ab08a9011f 100644 --- a/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java +++ b/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java @@ -27,6 +27,7 @@ import android.os.UserHandle; import android.view.View; import android.widget.Button; +import com.android.internal.widget.LockPatternView; import com.android.settings.R; import com.android.settings.SetupRedactionInterstitial; import com.android.settings.password.ChooseLockPattern.ChooseLockPatternFragment; @@ -44,6 +45,11 @@ import org.robolectric.Shadows; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowAlertDialog; import org.robolectric.shadows.ShadowPackageManager; +import org.robolectric.util.ReflectionHelpers; +import org.robolectric.util.ReflectionHelpers.ClassParameter; + +import java.util.Collections; +import java.util.List; @RunWith(SettingsRobolectricTestRunner.class) @Config(shadows = { @@ -85,6 +91,17 @@ public class SetupChooseLockPatternTest { @Config(qualifiers = "sw400dp") @Test + public void selectPattern_shouldHideOptionsButton() { + Button button = mActivity.findViewById(R.id.screen_lock_options); + assertThat(button).isNotNull(); + assertThat(button.getVisibility()).isEqualTo(View.VISIBLE); + + LockPatternView lockPatternView = mActivity.findViewById(R.id.lockPattern); + ReflectionHelpers.callInstanceMethod(lockPatternView, "notifyPatternDetected"); + } + + @Config(qualifiers = "sw400dp") + @Test public void sw400dp_shouldShowScreenLockOptions() { Button button = mActivity.findViewById(R.id.screen_lock_options); assertThat(button).isNotNull(); -- 2.11.0