Add ability to handle onActivityResult for AbstractPreferenceController in DashboardFragment

* AbstractPreferenceController now can implement OnActivityResultListener to receive callback from DashboardFragment#onActivityResult()

Bug: 270096758
Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.dashboard.DashboardFragmentTest
Change-Id: Ib734287c6fe06fcdde3b2fe6ae9f4b778020b60b
This commit is contained in:
jasonwshsu
2023-04-05 22:14:49 +08:00
parent 0bf3e6c9a4
commit d3b3ed5e6d
2 changed files with 44 additions and 0 deletions

View File

@@ -33,10 +33,12 @@ import static org.mockito.Mockito.when;
import android.app.settings.SettingsEnums;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.ProviderInfo;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager.OnActivityResultListener;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
@@ -356,6 +358,19 @@ public class DashboardFragmentTest {
assertThat(pref).isInstanceOf(PrimarySwitchPreference.class);
}
@Test
public void onActivityResult_test() {
final int requestCode = 10;
final int resultCode = 1;
final TestOnActivityResultPreferenceController activityResultPref = spy(
new TestOnActivityResultPreferenceController(mContext));
mTestFragment.addPreferenceController(activityResultPref);
mTestFragment.onActivityResult(requestCode, resultCode, null);
verify(activityResultPref).onActivityResult(requestCode, resultCode, null);
}
public static class TestPreferenceController extends AbstractPreferenceController
implements PreferenceControllerMixin {
@@ -390,6 +405,19 @@ public class DashboardFragmentTest {
}
}
public static class TestOnActivityResultPreferenceController extends
TestPreferenceController implements OnActivityResultListener {
private TestOnActivityResultPreferenceController(Context context) {
super(context);
}
@Override
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
return true;
}
}
private static class TestFragment extends DashboardFragment {
private final PreferenceManager mPreferenceManager;