Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 32614f2b authored by Jason Hsu's avatar Jason Hsu Committed by Android (Google) Code Review
Browse files

Merge "Add ability to handle onActivityResult for AbstractPreferenceController...

Merge "Add ability to handle onActivityResult for AbstractPreferenceController in DashboardFragment" into udc-dev
parents cd0176ba d3b3ed5e
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -19,12 +19,15 @@ import android.app.Activity;
import android.app.settings.SettingsEnums;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.preference.PreferenceManager.OnActivityResultListener;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;

import androidx.annotation.CallSuper;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.LifecycleObserver;
import androidx.preference.Preference;
@@ -265,6 +268,19 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
                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() {
        return false;
    }
+28 −0
Original line number Diff line number Diff line
@@ -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;