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