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

Commit 809c0555 authored by Nick Croll's avatar Nick Croll Committed by Android (Google) Code Review
Browse files

Merge "Support apply override feature in SupportPreferenceController" into main

parents 87ca4b0e 86626c88
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -17,6 +17,10 @@
package com.android.settings.overlay;

import android.app.Activity;
import android.content.Context;

import androidx.annotation.NonNull;
import androidx.preference.Preference;

/**
 * Feature provider for support tab.
@@ -29,4 +33,13 @@ public interface SupportFeatureProvider {
     * @param activity Calling activity.
     */
    void startSupport(Activity activity);

    /**
     * Applies overrides to the support preference, if needed.
     *
     * @param context Preference controller context.
     * @param pref The support preference.
     */
    default void applyOverrides(@NonNull Context context, @NonNull Preference pref) {
    }
}
+10 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.Context;
import android.text.TextUtils;

import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
@@ -56,4 +57,13 @@ public class SupportPreferenceController extends BasePreferenceController {
        return true;

    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        Preference pref = screen.findPreference(mPreferenceKey);
        if (pref != null && mSupportFeatureProvider != null) {
            mSupportFeatureProvider.applyOverrides(mContext, pref);
        }
    }
}
+18 −0
Original line number Diff line number Diff line
@@ -22,16 +22,20 @@ import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_
import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.Activity;

import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.settings.testutils.FakeFeatureFactory;

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.RobolectricTestRunner;
import org.robolectric.util.ReflectionHelpers;
@@ -44,12 +48,16 @@ public class SupportPreferenceControllerTest {
    private FakeFeatureFactory mFeatureFactory;
    private Preference mPreference;

    @Mock private PreferenceScreen mPreferenceScreen;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mActivity = Robolectric.setupActivity(Activity.class);
        mFeatureFactory = FakeFeatureFactory.setupForTest();
        mPreference = new Preference(mActivity);
        mPreference.setKey("test_key");
        when(mPreferenceScreen.findPreference(mPreference.getKey())).thenReturn(mPreference);
    }

    @Test
@@ -74,4 +82,14 @@ public class SupportPreferenceControllerTest {
        assertThat(controller.handlePreferenceTreeClick(mPreference)).isTrue();
        verify(mFeatureFactory.supportFeatureProvider).startSupport(mActivity);
    }

    @Test
    public void displayPreference_shouldApplyOverrides() {
        final SupportPreferenceController controller = new SupportPreferenceController(mActivity,
                mPreference.getKey());
        controller.setActivity(mActivity);

        controller.displayPreference(mPreferenceScreen);
        verify(mFeatureFactory.supportFeatureProvider).applyOverrides(mActivity, mPreference);
    }
}