Merge "Add ability to handle onActivityResult for AbstractPreferenceController in DashboardFragment" into udc-dev

This commit is contained in:
Jason Hsu
2023-04-14 09:42:43 +00:00
committed by Android (Google) Code Review
2 changed files with 44 additions and 0 deletions

View File

@@ -19,12 +19,15 @@ import android.app.Activity;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager.OnActivityResultListener;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.Log; import android.util.Log;
import androidx.annotation.CallSuper; import androidx.annotation.CallSuper;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.LifecycleObserver;
import androidx.preference.Preference; import androidx.preference.Preference;
@@ -265,6 +268,19 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
getMetricsCategory(), null, 0); getMetricsCategory(), null, 0);
} }
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
for (List<AbstractPreferenceController> controllerList : mPreferenceControllers.values()) {
for (AbstractPreferenceController controller : controllerList) {
if (controller instanceof OnActivityResultListener) {
((OnActivityResultListener) controller).onActivityResult(
requestCode, resultCode, data);
}
}
}
super.onActivityResult(requestCode, resultCode, data);
}
protected boolean shouldForceRoundedIcon() { protected boolean shouldForceRoundedIcon() {
return false; return false;
} }

View File

@@ -33,10 +33,12 @@ import static org.mockito.Mockito.when;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
import android.content.pm.ProviderInfo; import android.content.pm.ProviderInfo;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager.OnActivityResultListener;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceFragmentCompat;
@@ -356,6 +358,19 @@ public class DashboardFragmentTest {
assertThat(pref).isInstanceOf(PrimarySwitchPreference.class); 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 public static class TestPreferenceController extends AbstractPreferenceController
implements PreferenceControllerMixin { 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 static class TestFragment extends DashboardFragment {
private final PreferenceManager mPreferenceManager; private final PreferenceManager mPreferenceManager;