diff --git a/src/com/android/settings/security/ContentProtectionPreferenceController.java b/src/com/android/settings/security/ContentProtectionPreferenceController.java index 5ff27129ca6..ff472dd072a 100644 --- a/src/com/android/settings/security/ContentProtectionPreferenceController.java +++ b/src/com/android/settings/security/ContentProtectionPreferenceController.java @@ -36,32 +36,8 @@ public class ContentProtectionPreferenceController extends BasePreferenceControl @Override public int getAvailabilityStatus() { - if (!settingUiEnabled() || getContentProtectionServiceComponentName() == null) { - return UNSUPPORTED_ON_DEVICE; - } - return AVAILABLE; - } - - @VisibleForTesting - @Nullable - protected String getContentProtectionServiceFlatComponentName() { - return mContext.getString(config_defaultContentProtectionService); - } - - @Nullable - private ComponentName getContentProtectionServiceComponentName() { - String flatComponentName = getContentProtectionServiceFlatComponentName(); - if (flatComponentName == null) { - return null; - } - return ComponentName.unflattenFromString(flatComponentName); - } - - @VisibleForTesting - protected boolean settingUiEnabled() { - return DeviceConfig.getBoolean( - DeviceConfig.NAMESPACE_CONTENT_CAPTURE, - ContentCaptureManager.DEVICE_CONFIG_PROPERTY_ENABLE_CONTENT_PROTECTION_RECEIVER, - ContentCaptureManager.DEFAULT_ENABLE_CONTENT_PROTECTION_RECEIVER); + return ContentProtectionPreferenceUtils.isAvailable(mContext) + ? AVAILABLE + : UNSUPPORTED_ON_DEVICE; } } diff --git a/tests/robotests/src/com/android/settings/security/ContentProtectionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/ContentProtectionPreferenceControllerTest.java index a7990d43bfd..cd2e266ad9f 100644 --- a/tests/robotests/src/com/android/settings/security/ContentProtectionPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/security/ContentProtectionPreferenceControllerTest.java @@ -16,23 +16,35 @@ package com.android.settings.security; -import static android.view.contentprotection.flags.Flags.FLAG_SETTING_UI_ENABLED; +import static com.android.internal.R.string.config_defaultContentProtectionService; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; + import android.content.ComponentName; import android.content.Context; import android.platform.test.flag.junit.SetFlagsRule; +import android.provider.DeviceConfig; +import android.view.contentcapture.ContentCaptureManager; -import androidx.test.core.app.ApplicationProvider; +import com.android.settings.testutils.shadow.ShadowDeviceConfig; +import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; +import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) +@Config( + shadows = { + ShadowDeviceConfig.class, + }) public class ContentProtectionPreferenceControllerTest { private static final String PACKAGE_NAME = "com.test.package"; @@ -42,84 +54,40 @@ public class ContentProtectionPreferenceControllerTest { @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); - private final Context mContext = ApplicationProvider.getApplicationContext(); + private Context mContext; private String mConfigDefaultContentProtectionService = COMPONENT_NAME.flattenToString(); private ContentProtectionPreferenceController mController; - private boolean mSettingUiEnabled; - @Before public void setUp() { - mController = new TestContentProtectionPreferenceController(); + mContext = spy(RuntimeEnvironment.application); + mController = new ContentProtectionPreferenceController(mContext, "key"); + } + + @After + public void tearDown() { + ShadowDeviceConfig.reset(); } @Test - public void isAvailable_flagSettingUiDisabled_isFalse() { - mSettingUiEnabled = false; - + public void isAvailable_isFalse() { assertThat(mController.isAvailable()).isFalse(); } @Test - public void isAvailable_componentNameNull_isFalse() { - mConfigDefaultContentProtectionService = null; - mSetFlagsRule.enableFlags(FLAG_SETTING_UI_ENABLED); - mController = new TestContentProtectionPreferenceController(); + public void isAvailable_isTrue() { + doReturn(COMPONENT_NAME.flattenToString()) + .when(mContext) + .getString(config_defaultContentProtectionService); - assertThat(mController.isAvailable()).isFalse(); - } - - @Test - public void isAvailable_componentNameEmpty_isFalse() { - mConfigDefaultContentProtectionService = ""; - mSetFlagsRule.enableFlags(FLAG_SETTING_UI_ENABLED); - mController = new TestContentProtectionPreferenceController(); - - assertThat(mController.isAvailable()).isFalse(); - } - - @Test - public void isAvailable_componentNameBlank_isFalse() { - mConfigDefaultContentProtectionService = " "; - mSetFlagsRule.enableFlags(FLAG_SETTING_UI_ENABLED); - mController = new TestContentProtectionPreferenceController(); - - assertThat(mController.isAvailable()).isFalse(); - } - - @Test - public void isAvailable_componentNameInvalid_isFalse() { - mConfigDefaultContentProtectionService = "invalid"; - mSetFlagsRule.enableFlags(FLAG_SETTING_UI_ENABLED); - mController = new TestContentProtectionPreferenceController(); - - assertThat(mController.isAvailable()).isFalse(); - } - - @Test - public void isAvailable_flagSettingUiEnabled_componentNameValid_isTrue() { - mSettingUiEnabled = true; + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_CONTENT_CAPTURE, + ContentCaptureManager.DEVICE_CONFIG_PROPERTY_ENABLE_CONTENT_PROTECTION_RECEIVER, + "true", + /* makeDefault= */ false); assertThat(mController.isAvailable()).isTrue(); } - - private class TestContentProtectionPreferenceController - extends ContentProtectionPreferenceController { - - TestContentProtectionPreferenceController() { - super(ContentProtectionPreferenceControllerTest.this.mContext, "key"); - } - - @Override - protected String getContentProtectionServiceFlatComponentName() { - return mConfigDefaultContentProtectionService; - } - - @Override - protected boolean settingUiEnabled() { - return mSettingUiEnabled; - } - } }