Loading src/com/android/settings/security/ContentProtectionPreferenceController.java +3 −27 Original line number Diff line number Diff line Loading @@ -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; } } tests/robotests/src/com/android/settings/security/ContentProtectionPreferenceControllerTest.java +30 −62 Original line number Diff line number Diff line Loading @@ -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"; Loading @@ -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(); } @Test public void isAvailable_flagSettingUiDisabled_isFalse() { mSettingUiEnabled = false; assertThat(mController.isAvailable()).isFalse(); mContext = spy(RuntimeEnvironment.application); mController = new ContentProtectionPreferenceController(mContext, "key"); } @Test public void isAvailable_componentNameNull_isFalse() { mConfigDefaultContentProtectionService = null; mSetFlagsRule.enableFlags(FLAG_SETTING_UI_ENABLED); mController = new TestContentProtectionPreferenceController(); assertThat(mController.isAvailable()).isFalse(); } @Test public void isAvailable_componentNameEmpty_isFalse() { mConfigDefaultContentProtectionService = ""; mSetFlagsRule.enableFlags(FLAG_SETTING_UI_ENABLED); mController = new TestContentProtectionPreferenceController(); assertThat(mController.isAvailable()).isFalse(); @After public void tearDown() { ShadowDeviceConfig.reset(); } @Test public void isAvailable_componentNameBlank_isFalse() { mConfigDefaultContentProtectionService = " "; mSetFlagsRule.enableFlags(FLAG_SETTING_UI_ENABLED); mController = new TestContentProtectionPreferenceController(); public void isAvailable_isFalse() { assertThat(mController.isAvailable()).isFalse(); } @Test public void isAvailable_componentNameInvalid_isFalse() { mConfigDefaultContentProtectionService = "invalid"; 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_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; } } } Loading
src/com/android/settings/security/ContentProtectionPreferenceController.java +3 −27 Original line number Diff line number Diff line Loading @@ -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; } }
tests/robotests/src/com/android/settings/security/ContentProtectionPreferenceControllerTest.java +30 −62 Original line number Diff line number Diff line Loading @@ -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"; Loading @@ -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(); } @Test public void isAvailable_flagSettingUiDisabled_isFalse() { mSettingUiEnabled = false; assertThat(mController.isAvailable()).isFalse(); mContext = spy(RuntimeEnvironment.application); mController = new ContentProtectionPreferenceController(mContext, "key"); } @Test public void isAvailable_componentNameNull_isFalse() { mConfigDefaultContentProtectionService = null; mSetFlagsRule.enableFlags(FLAG_SETTING_UI_ENABLED); mController = new TestContentProtectionPreferenceController(); assertThat(mController.isAvailable()).isFalse(); } @Test public void isAvailable_componentNameEmpty_isFalse() { mConfigDefaultContentProtectionService = ""; mSetFlagsRule.enableFlags(FLAG_SETTING_UI_ENABLED); mController = new TestContentProtectionPreferenceController(); assertThat(mController.isAvailable()).isFalse(); @After public void tearDown() { ShadowDeviceConfig.reset(); } @Test public void isAvailable_componentNameBlank_isFalse() { mConfigDefaultContentProtectionService = " "; mSetFlagsRule.enableFlags(FLAG_SETTING_UI_ENABLED); mController = new TestContentProtectionPreferenceController(); public void isAvailable_isFalse() { assertThat(mController.isAvailable()).isFalse(); } @Test public void isAvailable_componentNameInvalid_isFalse() { mConfigDefaultContentProtectionService = "invalid"; 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_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; } } }