OSDN Git Service

Hide options button when user starts entering pattern
authorMaurice Lam <yukl@google.com>
Sat, 3 Mar 2018 03:32:48 +0000 (19:32 -0800)
committerMaurice Lam <yukl@google.com>
Thu, 8 Mar 2018 18:59:29 +0000 (18:59 +0000)
Test: cd tests/robotests && mma
Bug: 72409245
Change-Id: I82ab8822f13bc8bf8b74bc67f6d4d3a9fd2cc0c8
(cherry picked from commit ad554244b69d91e0304e9e5a45642b585c9e1fde)

src/com/android/settings/password/SetupChooseLockPattern.java
tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java

index 864c5c2..8853950 100644 (file)
@@ -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()
index e0df818..ab08a90 100644 (file)
@@ -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();