diff --git a/res/values/config.xml b/res/values/config.xml
index 6a7a1bdae0d..3c58a0618c8 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -49,6 +49,8 @@
com.android.settings.Settings$WallpaperSettingsActivity
+
+ com.android.wallpaper.LAUNCH_SOURCE
diff --git a/src/com/android/settings/display/WallpaperPreferenceController.java b/src/com/android/settings/display/WallpaperPreferenceController.java
index 72054e9541c..00687b2aaba 100644
--- a/src/com/android/settings/display/WallpaperPreferenceController.java
+++ b/src/com/android/settings/display/WallpaperPreferenceController.java
@@ -36,10 +36,12 @@ import java.util.List;
public class WallpaperPreferenceController extends BasePreferenceController {
private static final String TAG = "WallpaperPrefController";
+ private static final String LAUNCHED_SETTINGS = "app_launched_settings";
private final String mWallpaperPackage;
private final String mWallpaperClass;
private final String mStylesAndWallpaperClass;
+ private final String mWallpaperLaunchExtra;
public WallpaperPreferenceController(Context context, String key) {
super(context, key);
@@ -47,6 +49,7 @@ public class WallpaperPreferenceController extends BasePreferenceController {
mWallpaperClass = mContext.getString(R.string.config_wallpaper_picker_class);
mStylesAndWallpaperClass =
mContext.getString(R.string.config_styles_and_wallpaper_picker_class);
+ mWallpaperLaunchExtra = mContext.getString(R.string.config_wallpaper_picker_launch_extra);
}
@Override
@@ -96,7 +99,8 @@ public class WallpaperPreferenceController extends BasePreferenceController {
@Override
public boolean handlePreferenceTreeClick(Preference preference) {
if (getPreferenceKey().equals(preference.getKey())) {
- final Intent intent = new Intent().setComponent(getComponentName());
+ final Intent intent = new Intent().setComponent(
+ getComponentName()).putExtra(mWallpaperLaunchExtra, LAUNCHED_SETTINGS);
if (areStylesAvailable()) {
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
diff --git a/src/com/android/settings/wallpaper/WallpaperSuggestionActivity.java b/src/com/android/settings/wallpaper/WallpaperSuggestionActivity.java
index 999e92ca536..c2b3fa09a89 100644
--- a/src/com/android/settings/wallpaper/WallpaperSuggestionActivity.java
+++ b/src/com/android/settings/wallpaper/WallpaperSuggestionActivity.java
@@ -23,6 +23,7 @@ import android.content.Intent;
import androidx.annotation.VisibleForTesting;
+import com.android.settings.R;
import com.android.settings.display.WallpaperPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.Indexable;
@@ -40,11 +41,18 @@ public class WallpaperSuggestionActivity extends StyleSuggestionActivityBase imp
private static final String WALLPAPER_FLAVOR_EXTRA = "com.android.launcher3.WALLPAPER_FLAVOR";
private static final String WALLPAPER_FOCUS = "focus_wallpaper";
private static final String WALLPAPER_ONLY = "wallpaper_only";
+ private static final String LAUNCHED_SUW = "app_launched_suw";
+
+ private String mWallpaperLaunchExtra;
@Override
protected void addExtras(Intent intent) {
if (WizardManagerHelper.isAnySetupWizard(intent)) {
intent.putExtra(WALLPAPER_FLAVOR_EXTRA, WALLPAPER_ONLY);
+
+ mWallpaperLaunchExtra =
+ getResources().getString(R.string.config_wallpaper_picker_launch_extra);
+ intent.putExtra(mWallpaperLaunchExtra, LAUNCHED_SUW);
} else {
intent.putExtra(WALLPAPER_FLAVOR_EXTRA, WALLPAPER_FOCUS);
}
diff --git a/tests/robotests/src/com/android/settings/display/WallpaperPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/WallpaperPreferenceControllerTest.java
index a8893eab731..04bd4bbdc40 100644
--- a/tests/robotests/src/com/android/settings/display/WallpaperPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/WallpaperPreferenceControllerTest.java
@@ -211,4 +211,19 @@ public class WallpaperPreferenceControllerTest {
.getNextStartedActivityForResult().intent.getComponent().getClassName())
.isEqualTo(mContext.getString(R.string.config_styles_and_wallpaper_picker_class));
}
+
+ @Test
+ public void handlePreferenceTreeClick_launchSourceExtra() {
+ mShadowPackageManager.setResolveInfosForIntent(
+ mWallpaperIntent, Lists.newArrayList());
+ mShadowPackageManager.setResolveInfosForIntent(
+ mStylesAndWallpaperIntent, Lists.newArrayList());
+ Preference preference = new Preference(mContext);
+ preference.setKey(TEST_KEY);
+
+ mController.handlePreferenceTreeClick(preference);
+
+ assertThat(Shadows.shadowOf(mContext).getNextStartedActivityForResult()
+ .intent.hasExtra("com.android.wallpaper.LAUNCH_SOURCE")).isTrue();
+ }
}
diff --git a/tests/robotests/src/com/android/settings/wallpaper/WallpaperSuggestionActivityTest.java b/tests/robotests/src/com/android/settings/wallpaper/WallpaperSuggestionActivityTest.java
index 73f12c2442b..6201bcb1191 100644
--- a/tests/robotests/src/com/android/settings/wallpaper/WallpaperSuggestionActivityTest.java
+++ b/tests/robotests/src/com/android/settings/wallpaper/WallpaperSuggestionActivityTest.java
@@ -56,6 +56,7 @@ public class WallpaperSuggestionActivityTest {
private static final String PACKAGE_WALLPAPER_ACTIVITY =
"com.android.settings.wallpaper.WallpaperSuggestionActivity";
private static final String WALLPAPER_FLAVOR = "com.android.launcher3.WALLPAPER_FLAVOR";
+ private static final String WALLPAPER_LAUNCH_SOURCE = "com.android.wallpaper.LAUNCH_SOURCE";
@Before
public void setUp() {
@@ -100,7 +101,7 @@ public class WallpaperSuggestionActivityTest {
}
@Test
- public void addExtras_intentFromSetupWizard_extrasHasWallpaperOnly() {
+ public void addExtras_intentFromSetupWizard_extrasHasWallpaperOnlyAndLaunchedSuw() {
WallpaperSuggestionActivity activity =
Robolectric.buildActivity(WallpaperSuggestionActivity.class, new Intent(
Intent.ACTION_MAIN).setComponent(
@@ -112,6 +113,8 @@ public class WallpaperSuggestionActivityTest {
assertThat(intent).isNotNull();
assertThat(intent.getStringExtra(WALLPAPER_FLAVOR)).isEqualTo("wallpaper_only");
+ assertThat(intent.getStringExtra(WALLPAPER_LAUNCH_SOURCE))
+ .isEqualTo("app_launched_suw");
}
@Test