Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f9f3a45 authored by Alejandro Nijamkin's avatar Alejandro Nijamkin
Browse files

Fixes nav stack issue.

By marking the Intent that's being sent to WPP as "launched from
settings", the code in CustomizationPickerActivity can correctly
conclude that the multi-pane wrapper does not need to be applied to the
intent, preventing the odd "disordering" of the back stack in the bug.

Fix: 284809020
Test: manually verified, on a large screen device with a multi-pane
settings configuration, that going to Display > Lock screen > Shortcuts
and then swiping back off the left edge of the display correctly exits
settings instead of revealing an incorrect screen like it did in the
bug.
Test: also manually verified that the long-press on the home screena and
on the lock screen paths both open the right tab in WPP in settings
correctly.

Change-Id: Iac2b4e9fa5bab91b6a5251f1c51b4d21a0824f00
parent b2ed35b2
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -60,6 +60,12 @@ public final class CustomizableLockScreenUtils {
    @VisibleForTesting
    static final String AFFORDANCE_NAME = "affordance_name";

    @VisibleForTesting
    static final String WALLPAPER_LAUNCH_SOURCE = "com.android.wallpaper.LAUNCH_SOURCE";
    @VisibleForTesting
    static final String LAUNCH_SOURCE_SETTINGS = "app_launched_settings";


    private CustomizableLockScreenUtils() {}

    /**
@@ -163,7 +169,14 @@ public final class CustomizableLockScreenUtils {
     * activity.
     */
    public static Intent newIntent() {
        return new Intent(Intent.ACTION_SET_WALLPAPER);
        final Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER);
        // By adding the launch source here, we tell our destination (in this case, the wallpaper
        // picker app) that it's been launched from within settings. That way, if we are in a
        // multi-pane configuration (for example, for large screens), the wallpaper picker app can
        // safely skip redirecting to the multi-pane version of its activity, as it's already opened
        // within a multi-pane configuration context.
        intent.putExtra(WALLPAPER_LAUNCH_SOURCE, LAUNCH_SOURCE_SETTINGS);
        return intent;
    }

    private static boolean isWallpaperPickerInstalled(Context context) {
+3 −0
Original line number Diff line number Diff line
@@ -114,6 +114,9 @@ public class CustomizableLockScreenQuickAffordancesPreferenceControllerTest {
        assertThat(intentCaptor.getValue().getPackage()).isEqualTo(
                mContext.getString(R.string.config_wallpaper_picker_package));
        assertThat(intentCaptor.getValue().getAction()).isEqualTo(Intent.ACTION_SET_WALLPAPER);
        assertThat(intentCaptor.getValue().getStringExtra(
                CustomizableLockScreenUtils.WALLPAPER_LAUNCH_SOURCE)).isEqualTo(
                        CustomizableLockScreenUtils.LAUNCH_SOURCE_SETTINGS);
        assertThat(intentCaptor.getValue().getStringExtra("destination"))
                .isEqualTo("quick_affordances");
    }