Hide options button when user starts entering pattern

Test: cd tests/robotests && mma
Bug: 72409245
Change-Id: I82ab8822f13bc8bf8b74bc67f6d4d3a9fd2cc0c8
(cherry picked from commit ad554244b6)
This commit is contained in:
Maurice Lam
2018-03-02 19:32:48 -08:00
parent 4f5a113d8f
commit 4723abfe26
2 changed files with 39 additions and 5 deletions

View File

@@ -20,7 +20,10 @@ import android.app.Fragment;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
@@ -54,16 +57,20 @@ public class SetupChooseLockPattern extends ChooseLockPattern {
public static class SetupChooseLockPatternFragment extends ChooseLockPatternFragment public static class SetupChooseLockPatternFragment extends ChooseLockPatternFragment
implements ChooseLockTypeDialogFragment.OnLockTypeSelectedListener { implements ChooseLockTypeDialogFragment.OnLockTypeSelectedListener {
@Nullable
private Button mOptionsButton;
@Override @Override
public void onViewCreated(View view, Bundle savedInstanceState) { public View onCreateView(
super.onViewCreated(view, savedInstanceState); LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
if (!getResources().getBoolean(R.bool.config_lock_pattern_minimal_ui)) { if (!getResources().getBoolean(R.bool.config_lock_pattern_minimal_ui)) {
Button optionsButton = view.findViewById(R.id.screen_lock_options); mOptionsButton = view.findViewById(R.id.screen_lock_options);
optionsButton.setVisibility(View.VISIBLE); mOptionsButton.setOnClickListener((btn) ->
optionsButton.setOnClickListener((btn) ->
ChooseLockTypeDialogFragment.newInstance(mUserId) ChooseLockTypeDialogFragment.newInstance(mUserId)
.show(getChildFragmentManager(), null)); .show(getChildFragmentManager(), null));
} }
return view;
} }
@Override @Override
@@ -84,6 +91,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 @Override
public void handleLeftButton() { public void handleLeftButton() {
SetupSkipDialog dialog = SetupSkipDialog.newInstance( SetupSkipDialog dialog = SetupSkipDialog.newInstance(

View File

@@ -27,6 +27,7 @@ import android.os.UserHandle;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import com.android.internal.widget.LockPatternView;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SetupRedactionInterstitial; import com.android.settings.SetupRedactionInterstitial;
import com.android.settings.password.ChooseLockPattern.ChooseLockPatternFragment; import com.android.settings.password.ChooseLockPattern.ChooseLockPatternFragment;
@@ -44,6 +45,11 @@ import org.robolectric.Shadows;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowAlertDialog; import org.robolectric.shadows.ShadowAlertDialog;
import org.robolectric.shadows.ShadowPackageManager; 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) @RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = { @Config(shadows = {
@@ -83,6 +89,17 @@ public class SetupChooseLockPatternTest {
assertThat(componentEnabled).isEqualTo(PackageManager.COMPONENT_ENABLED_STATE_ENABLED); assertThat(componentEnabled).isEqualTo(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
} }
@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") @Config(qualifiers = "sw400dp")
@Test @Test
public void sw400dp_shouldShowScreenLockOptions() { public void sw400dp_shouldShowScreenLockOptions() {