Merge "Fixes nav stack issue." into udc-dev
diff --git a/src/com/android/settings/display/CustomizableLockScreenUtils.java b/src/com/android/settings/display/CustomizableLockScreenUtils.java
index d945652..2344436 100644
--- a/src/com/android/settings/display/CustomizableLockScreenUtils.java
+++ b/src/com/android/settings/display/CustomizableLockScreenUtils.java
@@ -60,6 +60,12 @@
     @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 @@
      * 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) {
diff --git a/tests/robotests/src/com/android/settings/display/CustomizableLockScreenQuickAffordancesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/CustomizableLockScreenQuickAffordancesPreferenceControllerTest.java
index e92dbe6..bf316e9 100644
--- a/tests/robotests/src/com/android/settings/display/CustomizableLockScreenQuickAffordancesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/CustomizableLockScreenQuickAffordancesPreferenceControllerTest.java
@@ -114,6 +114,9 @@
         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");
     }