Do not stop wallpaper chooser activity
When choosing wallpaper type, do not finish the activity so we can
maintain a consistent back stack.
Change-Id: I690f4482716c6eaeb0a31605fbdf0a2525be0a15
Fixes: 80554423
Test: robotests
diff --git a/src/com/android/settings/wallpaper/WallpaperTypePreferenceController.java b/src/com/android/settings/wallpaper/WallpaperTypePreferenceController.java
index 0dad196..b7dd84f 100644
--- a/src/com/android/settings/wallpaper/WallpaperTypePreferenceController.java
+++ b/src/com/android/settings/wallpaper/WallpaperTypePreferenceController.java
@@ -16,7 +16,6 @@
package com.android.settings.wallpaper;
-import android.app.Fragment;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -36,18 +35,13 @@
public class WallpaperTypePreferenceController extends BasePreferenceController
implements LifecycleObserver, OnStart {
- private Fragment mParentFragment;
+
private PreferenceScreen mScreen;
public WallpaperTypePreferenceController(Context context, String key) {
super(context, key);
}
- public void setParentFragment(Fragment parentFragment) {
- mParentFragment = parentFragment;
- }
-
-
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
@@ -64,8 +58,7 @@
if (preference.getIntent() == null) {
return super.handlePreferenceTreeClick(preference);
}
- mParentFragment.startActivity(preference.getIntent());
- mParentFragment.getActivity().finish();
+ mContext.startActivity(preference.getIntent());
return true;
}
diff --git a/src/com/android/settings/wallpaper/WallpaperTypeSettings.java b/src/com/android/settings/wallpaper/WallpaperTypeSettings.java
index ca42dda..1ea0b74 100644
--- a/src/com/android/settings/wallpaper/WallpaperTypeSettings.java
+++ b/src/com/android/settings/wallpaper/WallpaperTypeSettings.java
@@ -55,12 +55,6 @@
return R.xml.wallpaper_settings;
}
- @Override
- public void onAttach(Context context) {
- super.onAttach(context);
- use(WallpaperTypePreferenceController.class).setParentFragment(this);
- }
-
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override
diff --git a/tests/robotests/src/com/android/settings/wallpaper/WallpaperTypePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wallpaper/WallpaperTypePreferenceControllerTest.java
index c032154..9bebc93 100644
--- a/tests/robotests/src/com/android/settings/wallpaper/WallpaperTypePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wallpaper/WallpaperTypePreferenceControllerTest.java
@@ -17,13 +17,7 @@
package com.android.settings.wallpaper;
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-import android.app.Activity;
-import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
@@ -33,9 +27,7 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
import org.robolectric.RuntimeEnvironment;
import androidx.preference.Preference;
@@ -43,11 +35,7 @@
@RunWith(SettingsRobolectricTestRunner.class)
public class WallpaperTypePreferenceControllerTest {
- @Mock
- private Fragment mFragment;
-
private Context mContext;
- private Activity mActivity;
private WallpaperTypePreferenceController mController;
private Preference mPreference;
private Intent mIntent;
@@ -56,9 +44,7 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
- mActivity = spy(Robolectric.buildActivity(Activity.class).get());
mController = new WallpaperTypePreferenceController(mContext, "pref_key");
- mController.setParentFragment(mFragment);
mIntent = new Intent();
mPreference = new Preference(mContext);
}
@@ -81,10 +67,6 @@
@Test
public void testhandlePreferenceTreeClick_shouldLaunchIntent() {
mPreference.setIntent(mIntent);
- doNothing().when(mFragment).startActivity(any(Intent.class));
- when(mFragment.getActivity()).thenReturn(mActivity);
- doNothing().when(mActivity).finish();
-
final boolean handled = mController.handlePreferenceTreeClick(mPreference);
assertThat(handled).isTrue();