Loading src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java +23 −11 Original line number Diff line number Diff line Loading @@ -136,11 +136,26 @@ public final class AccessibilityGestureNavigationTutorial { linkButtonListener) .create(); final TutorialPageChangeListener.OnPageSelectedCallback callback = type -> alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility( type == UserShortcutType.SOFTWARE ? VISIBLE : GONE); final List<TutorialPage> tutorialPages = createShortcutTutorialPages(context, shortcutTypes); Preconditions.checkArgument(!tutorialPages.isEmpty(), /* errorMessage= */ "Unexpected tutorial pages size"); final TutorialPageChangeListener.OnPageSelectedCallback callback = index -> { final int pageType = tutorialPages.get(index).getType(); alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility( pageType == UserShortcutType.SOFTWARE ? VISIBLE : GONE); }; alertDialog.setView(createShortcutNavigationContentView(context, shortcutTypes, callback)); alertDialog.setView(createShortcutNavigationContentView(context, tutorialPages, callback)); // Showing first page won't invoke onPageSelectedCallback. Need to check the first tutorial // page type manually to set correct visibility of the link button. alertDialog.setOnShowListener(dialog -> { final int firstPageType = tutorialPages.get(0).getType(); alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility( firstPageType == UserShortcutType.SOFTWARE ? VISIBLE : GONE); }); return alertDialog; } Loading Loading @@ -274,16 +289,13 @@ public final class AccessibilityGestureNavigationTutorial { return inflater.inflate(R.layout.accessibility_lottie_animation_view, /* root= */ null); } private static View createShortcutNavigationContentView(Context context, int shortcutTypes, private static View createShortcutNavigationContentView(Context context, List<TutorialPage> tutorialPages, TutorialPageChangeListener.OnPageSelectedCallback onPageSelectedCallback) { final LayoutInflater inflater = context.getSystemService(LayoutInflater.class); final View contentView = inflater.inflate( R.layout.accessibility_shortcut_tutorial_dialog, /* root= */ null); final List<TutorialPage> tutorialPages = createShortcutTutorialPages(context, shortcutTypes); Preconditions.checkArgument(!tutorialPages.isEmpty(), /* errorMessage= */ "Unexpected tutorial pages size"); final LinearLayout indicatorContainer = contentView.findViewById(R.id.indicator_container); indicatorContainer.setVisibility(tutorialPages.size() > 1 ? VISIBLE : GONE); Loading Loading @@ -575,7 +587,7 @@ public final class AccessibilityGestureNavigationTutorial { currentPageNumber, mTutorialPages.size())); if (mOnPageSelectedCallback != null) { mOnPageSelectedCallback.onPageSelected(mTutorialPages.get(position).getType()); mOnPageSelectedCallback.onPageSelected(position); } } Loading @@ -588,7 +600,7 @@ public final class AccessibilityGestureNavigationTutorial { private interface OnPageSelectedCallback { /** The callback method after tutorial page is selected. */ void onPageSelected(int type); void onPageSelected(int index); } } } tests/robotests/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorialTest.java +39 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.app.settings.SettingsEnums; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.view.View; import androidx.appcompat.app.AlertDialog; import androidx.test.core.app.ApplicationProvider; Loading Loading @@ -111,6 +112,44 @@ public final class AccessibilityGestureNavigationTutorialTest { assertThat(alertDialog).isNotNull(); } @Test public void createTutorialPages_turnOnSoftwareShortcut_linkButtonVisible() { mShortcutTypes |= UserShortcutType.SOFTWARE; final AlertDialog alertDialog = createAccessibilityTutorialDialog(mContext, mShortcutTypes); alertDialog.show(); assertThat(alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()) .isEqualTo(View.VISIBLE); } @Test public void createTutorialPages_turnOnSoftwareAndHardwareShortcut_linkButtonVisible() { mShortcutTypes |= UserShortcutType.SOFTWARE; mShortcutTypes |= UserShortcutType.HARDWARE; final AlertDialog alertDialog = createAccessibilityTutorialDialog(mContext, mShortcutTypes); alertDialog.show(); assertThat(alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()) .isEqualTo(View.VISIBLE); } @Test public void createTutorialPages_turnOnHardwareShortcut_linkButtonGone() { mShortcutTypes |= UserShortcutType.HARDWARE; final AlertDialog alertDialog = createAccessibilityTutorialDialog(mContext, mShortcutTypes); alertDialog.show(); assertThat(alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()) .isEqualTo(View.GONE); } @Test public void performClickOnPositiveButton_turnOnSoftwareShortcut_dismiss() { mShortcutTypes |= UserShortcutType.SOFTWARE; Loading Loading
src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java +23 −11 Original line number Diff line number Diff line Loading @@ -136,11 +136,26 @@ public final class AccessibilityGestureNavigationTutorial { linkButtonListener) .create(); final TutorialPageChangeListener.OnPageSelectedCallback callback = type -> alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility( type == UserShortcutType.SOFTWARE ? VISIBLE : GONE); final List<TutorialPage> tutorialPages = createShortcutTutorialPages(context, shortcutTypes); Preconditions.checkArgument(!tutorialPages.isEmpty(), /* errorMessage= */ "Unexpected tutorial pages size"); final TutorialPageChangeListener.OnPageSelectedCallback callback = index -> { final int pageType = tutorialPages.get(index).getType(); alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility( pageType == UserShortcutType.SOFTWARE ? VISIBLE : GONE); }; alertDialog.setView(createShortcutNavigationContentView(context, shortcutTypes, callback)); alertDialog.setView(createShortcutNavigationContentView(context, tutorialPages, callback)); // Showing first page won't invoke onPageSelectedCallback. Need to check the first tutorial // page type manually to set correct visibility of the link button. alertDialog.setOnShowListener(dialog -> { final int firstPageType = tutorialPages.get(0).getType(); alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility( firstPageType == UserShortcutType.SOFTWARE ? VISIBLE : GONE); }); return alertDialog; } Loading Loading @@ -274,16 +289,13 @@ public final class AccessibilityGestureNavigationTutorial { return inflater.inflate(R.layout.accessibility_lottie_animation_view, /* root= */ null); } private static View createShortcutNavigationContentView(Context context, int shortcutTypes, private static View createShortcutNavigationContentView(Context context, List<TutorialPage> tutorialPages, TutorialPageChangeListener.OnPageSelectedCallback onPageSelectedCallback) { final LayoutInflater inflater = context.getSystemService(LayoutInflater.class); final View contentView = inflater.inflate( R.layout.accessibility_shortcut_tutorial_dialog, /* root= */ null); final List<TutorialPage> tutorialPages = createShortcutTutorialPages(context, shortcutTypes); Preconditions.checkArgument(!tutorialPages.isEmpty(), /* errorMessage= */ "Unexpected tutorial pages size"); final LinearLayout indicatorContainer = contentView.findViewById(R.id.indicator_container); indicatorContainer.setVisibility(tutorialPages.size() > 1 ? VISIBLE : GONE); Loading Loading @@ -575,7 +587,7 @@ public final class AccessibilityGestureNavigationTutorial { currentPageNumber, mTutorialPages.size())); if (mOnPageSelectedCallback != null) { mOnPageSelectedCallback.onPageSelected(mTutorialPages.get(position).getType()); mOnPageSelectedCallback.onPageSelected(position); } } Loading @@ -588,7 +600,7 @@ public final class AccessibilityGestureNavigationTutorial { private interface OnPageSelectedCallback { /** The callback method after tutorial page is selected. */ void onPageSelected(int type); void onPageSelected(int index); } } }
tests/robotests/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorialTest.java +39 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.app.settings.SettingsEnums; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.view.View; import androidx.appcompat.app.AlertDialog; import androidx.test.core.app.ApplicationProvider; Loading Loading @@ -111,6 +112,44 @@ public final class AccessibilityGestureNavigationTutorialTest { assertThat(alertDialog).isNotNull(); } @Test public void createTutorialPages_turnOnSoftwareShortcut_linkButtonVisible() { mShortcutTypes |= UserShortcutType.SOFTWARE; final AlertDialog alertDialog = createAccessibilityTutorialDialog(mContext, mShortcutTypes); alertDialog.show(); assertThat(alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()) .isEqualTo(View.VISIBLE); } @Test public void createTutorialPages_turnOnSoftwareAndHardwareShortcut_linkButtonVisible() { mShortcutTypes |= UserShortcutType.SOFTWARE; mShortcutTypes |= UserShortcutType.HARDWARE; final AlertDialog alertDialog = createAccessibilityTutorialDialog(mContext, mShortcutTypes); alertDialog.show(); assertThat(alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()) .isEqualTo(View.VISIBLE); } @Test public void createTutorialPages_turnOnHardwareShortcut_linkButtonGone() { mShortcutTypes |= UserShortcutType.HARDWARE; final AlertDialog alertDialog = createAccessibilityTutorialDialog(mContext, mShortcutTypes); alertDialog.show(); assertThat(alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility()) .isEqualTo(View.GONE); } @Test public void performClickOnPositiveButton_turnOnSoftwareShortcut_dismiss() { mShortcutTypes |= UserShortcutType.SOFTWARE; Loading