Fix not delivering result to fragment using SubSettingLauncher
- Call Fragment.startActivityForResult instead of Activity's one
Test: make RunSettingsRoboTests
Test: App info page is closed instantly after uninstalling the package
Change-Id: If29c097c988101f89dcd9d0a5c1c68deed04eaa9
diff --git a/src/com/android/settings/core/SubSettingLauncher.java b/src/com/android/settings/core/SubSettingLauncher.java
index 1ffe7f5..91bd452 100644
--- a/src/com/android/settings/core/SubSettingLauncher.java
+++ b/src/com/android/settings/core/SubSettingLauncher.java
@@ -164,7 +164,7 @@
}
private void launchForResult(Fragment listener, Intent intent, int requestCode) {
- listener.getActivity().startActivityForResult(intent, requestCode);
+ listener.startActivityForResult(intent, requestCode);
}
/**
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java
index 1abbed5..0c9250d 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java
@@ -337,7 +337,6 @@
public void startAppInfoFragment_includesNewAndOldArgs() {
final SettingsPreferenceFragment caller = mock(SettingsPreferenceFragment.class);
final SettingsActivity sa = mock (SettingsActivity.class);
- when(caller.getActivity()).thenReturn(sa);
when(caller.getContext()).thenReturn(sa);
final AppEntry appEntry = mock(AppEntry.class);
appEntry.info = mock(ApplicationInfo.class);
@@ -350,7 +349,7 @@
final ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
- verify(sa).startActivityForResult(intent.capture(), any(Integer.class));
+ verify(caller).startActivityForResult(intent.capture(), any(Integer.class));
assertThat(intent.getValue().getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS)
.containsKey("test"))
.isTrue();
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBaseTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBaseTest.java
index 0715724..aadcb3e 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBaseTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoPreferenceControllerBaseTest.java
@@ -93,7 +93,7 @@
mController.handlePreferenceTreeClick(mPreference);
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
- verify(mActivity).startActivityForResult(intentCaptor.capture(), eq(SUB_INFO_FRAGMENT));
+ verify(mFragment).startActivityForResult(intentCaptor.capture(), eq(SUB_INFO_FRAGMENT));
assertThat(intentCaptor.getValue().getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT))
.isEqualTo(mController.getDetailFragmentClass().getName());
}
diff --git a/tests/robotests/src/com/android/settings/core/SubSettingLauncherTest.java b/tests/robotests/src/com/android/settings/core/SubSettingLauncherTest.java
index 4a1b2d8..3143381 100644
--- a/tests/robotests/src/com/android/settings/core/SubSettingLauncherTest.java
+++ b/tests/robotests/src/com/android/settings/core/SubSettingLauncherTest.java
@@ -121,7 +121,7 @@
.setResultListener(mFragment, requestCode)
.launch();
- verify(mActivity).startActivityForResult(any(Intent.class), eq(requestCode));
+ verify(mFragment).startActivityForResult(any(Intent.class), eq(requestCode));
}
@Test