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

Commit e1c53b2d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix Learn more link placement is wrong problem" into sc-dev am: 8dca5ab6

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/14928761

Change-Id: Ice1cdf470ac502dcde20db151ffda7b795f669c6
parents 2c40af09 8dca5ab6
Loading
Loading
Loading
Loading
+28 −9
Original line number Diff line number Diff line
@@ -17,16 +17,19 @@
package com.android.settings.accounts;

import android.content.Context;
import android.content.Intent;
import android.provider.Settings;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.widget.FooterPreference;

public class EnterpriseDisclosurePreferenceController extends BasePreferenceController {

    private final EnterprisePrivacyFeatureProvider mFeatureProvider;

    public EnterpriseDisclosurePreferenceController(Context context, String key) {
@@ -36,6 +39,16 @@ public class EnterpriseDisclosurePreferenceController extends BasePreferenceCont
                .getEnterprisePrivacyFeatureProvider(mContext);
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        final CharSequence disclosure = getDisclosure();
        if (disclosure == null) {
            return;
        }
        updateFooterPreference(screen, disclosure);
    }

    @Override
    public int getAvailabilityStatus() {
        if (getDisclosure() == null) {
@@ -49,12 +62,18 @@ public class EnterpriseDisclosurePreferenceController extends BasePreferenceCont
        return mFeatureProvider.getDeviceOwnerDisclosure();
    }

    @Override
    public void updateState(Preference preference) {
        final CharSequence disclosure = getDisclosure();
        if (disclosure == null) {
            return;
    void updateFooterPreference(PreferenceScreen screen, CharSequence disclosure) {
        final FooterPreference footerPreference = screen.findPreference(getPreferenceKey());
        footerPreference.setTitle(disclosure);
        footerPreference.setLearnMoreAction(view -> {
            mContext.startActivity(new Intent(Settings.ACTION_ENTERPRISE_PRIVACY_SETTINGS));
        });
        final String learnMoreContentDescription = mContext.getString(
                R.string.footer_learn_more_content_description, getLabelName());
        footerPreference.setLearnMoreContentDescription(learnMoreContentDescription);
    }
        preference.setTitle(disclosure);

    private String getLabelName() {
        return mContext.getString(R.string.header_add_an_account);
    }
}
+0 −3
Original line number Diff line number Diff line
@@ -100,9 +100,6 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
        } else {
            disclosure.append(mResources.getString(R.string.do_disclosure_generic));
        }
        disclosure.append(mResources.getString(R.string.do_disclosure_learn_more_separator));
        disclosure.append(mResources.getString(R.string.learn_more),
                new EnterprisePrivacySpan(mContext), 0);
        return disclosure;
    }

+17 −7
Original line number Diff line number Diff line
@@ -19,20 +19,25 @@ package com.android.settings.accounts;
import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.content.Context;

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

import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.widget.FooterPreference;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;

@@ -42,13 +47,18 @@ public class EnterpriseDisclosurePreferenceControllerTest {

    private Context mContext;
    private EnterpriseDisclosurePreferenceController mController;
    private Preference mPreference;
    private FooterPreference mPreference;

    @Mock
    private PreferenceScreen mPreferenceScreen;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = RuntimeEnvironment.application;
        mController = spy(new EnterpriseDisclosurePreferenceController(mContext, "my_key"));
        mPreference = spy(new Preference(mContext));
        mPreference = spy(new FooterPreference(mContext));
        when(mPreferenceScreen.findPreference(anyString())).thenReturn(mPreference);
    }

    @Test
@@ -68,19 +78,19 @@ public class EnterpriseDisclosurePreferenceControllerTest {
    }

    @Test
    public void updateState_hasDisclosure_shouldSetTitle() {
    public void displayPreference_hasDisclosure_shouldSetTitle() {
        doReturn(TEST_DISCLOSURE).when(mController).getDisclosure();

        mController.updateState(mPreference);
        mController.displayPreference(mPreferenceScreen);

        assertThat(mPreference.getTitle()).isEqualTo(TEST_DISCLOSURE);
    }

    @Test
    public void updateState_noDisclosure_shouldBeInvisible() {
    public void displayPreference_noDisclosure_shouldBeInvisible() {
        doReturn(null).when(mController).getDisclosure();

        mController.updateState(mPreference);
        mController.displayPreference(mPreferenceScreen);

        verify(mPreference, never()).setTitle(any());
    }