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
This commit is contained in:
@@ -60,6 +60,12 @@ public final class CustomizableLockScreenUtils {
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static final String AFFORDANCE_NAME = "affordance_name";
|
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() {}
|
private CustomizableLockScreenUtils() {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -163,7 +169,14 @@ public final class CustomizableLockScreenUtils {
|
|||||||
* activity.
|
* activity.
|
||||||
*/
|
*/
|
||||||
public static Intent newIntent() {
|
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) {
|
private static boolean isWallpaperPickerInstalled(Context context) {
|
||||||
|
@@ -114,6 +114,9 @@ public class CustomizableLockScreenQuickAffordancesPreferenceControllerTest {
|
|||||||
assertThat(intentCaptor.getValue().getPackage()).isEqualTo(
|
assertThat(intentCaptor.getValue().getPackage()).isEqualTo(
|
||||||
mContext.getString(R.string.config_wallpaper_picker_package));
|
mContext.getString(R.string.config_wallpaper_picker_package));
|
||||||
assertThat(intentCaptor.getValue().getAction()).isEqualTo(Intent.ACTION_SET_WALLPAPER);
|
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"))
|
assertThat(intentCaptor.getValue().getStringExtra("destination"))
|
||||||
.isEqualTo("quick_affordances");
|
.isEqualTo("quick_affordances");
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user