From 6fd0716f58e6fb15688cfd98750f9d08456bd311 Mon Sep 17 00:00:00 2001 From: Jan Tomljanovic Date: Mon, 29 Nov 2021 18:05:22 +0000 Subject: [PATCH] Add SafetyCenter entry to Settings. Test: atest SettingsUnitTests Bug: 204978295 Change-Id: I9bedb58ad740b4ee76620e04675a0aefa659566a --- res/drawable/ic_settings_safety_center.xml | 29 ++++ res/values/menu_keys.xml | 1 + res/values/strings.xml | 6 + res/xml/top_level_settings.xml | 9 ++ .../safetycenter/SafetyCenterStatus.java | 36 +++++ ...SafetyCenterEntryPreferenceController.java | 60 ++++++++ .../safetycenter/SafetyCenterStatusTest.java | 67 +++++++++ ...tyCenterEntryPreferenceControllerTest.java | 134 ++++++++++++++++++ 8 files changed, 342 insertions(+) create mode 100644 res/drawable/ic_settings_safety_center.xml create mode 100644 src/com/android/settings/safetycenter/SafetyCenterStatus.java create mode 100644 src/com/android/settings/safetycenter/TopLevelSafetyCenterEntryPreferenceController.java create mode 100644 tests/unit/src/com/android/settings/safetycenter/SafetyCenterStatusTest.java create mode 100644 tests/unit/src/com/android/settings/safetycenter/TopLevelSafetyCenterEntryPreferenceControllerTest.java diff --git a/res/drawable/ic_settings_safety_center.xml b/res/drawable/ic_settings_safety_center.xml new file mode 100644 index 00000000000..f43359fefd4 --- /dev/null +++ b/res/drawable/ic_settings_safety_center.xml @@ -0,0 +1,29 @@ + + + + + + \ No newline at end of file diff --git a/res/values/menu_keys.xml b/res/values/menu_keys.xml index e69664a3408..2841b699c97 100755 --- a/res/values/menu_keys.xml +++ b/res/values/menu_keys.xml @@ -26,6 +26,7 @@ top_level_display top_level_wallpaper top_level_accessibility + top_level_safety_center top_level_security top_level_privacy top_level_location diff --git a/res/values/strings.xml b/res/values/strings.xml index bf9fc2a60fe..995742d7261 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -722,6 +722,12 @@ Security status Screen lock, Find My Device, app security + + + Security & privacy + + + Permissions, screen lock, app security diff --git a/res/xml/top_level_settings.xml b/res/xml/top_level_settings.xml index 042ce43999a..6005581d4d9 100644 --- a/res/xml/top_level_settings.xml +++ b/res/xml/top_level_settings.xml @@ -116,6 +116,15 @@ settings:highlightableMenuKey="@string/menu_key_accessibility" settings:controller="com.android.settings.accessibility.TopLevelAccessibilityPreferenceController"/> + + intentCaptor = ArgumentCaptor.forClass(Intent.class); + + boolean preferenceHandled = mTopLevelSafetyCenterEntryPreferenceController + .handlePreferenceTreeClick(mPreference); + + assertThat(preferenceHandled).isTrue(); + verify(mContext).startActivity(intentCaptor.capture()); + assertThat(intentCaptor.getValue().getAction()).isEqualTo(Intent.ACTION_SAFETY_CENTER); + } + + @Test + public void handlePreferenceTreeClick_onStartActivityThrows_returnsFalse() { + doThrow(ActivityNotFoundException.class) + .when(mContext).startActivity(any(Intent.class)); + + boolean preferenceHandled = mTopLevelSafetyCenterEntryPreferenceController + .handlePreferenceTreeClick(mPreference); + + assertThat(preferenceHandled).isFalse(); + } + + @Test + public void getAvailabilityStatus_whenSafetyCenterDisabled_returnsUnavailable() { + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_PRIVACY, + SafetyCenterStatus.SAFETY_CENTER_IS_ENABLED, + /* value = */ Boolean.toString(false), + /* makeDefault = */ false); + + assertThat(mTopLevelSafetyCenterEntryPreferenceController.getAvailabilityStatus()) + .isEqualTo(TopLevelSafetyCenterEntryPreferenceController.CONDITIONALLY_UNAVAILABLE); + } + + @Test + public void getAvailabilityStatus_whenSafetyCenterEnabled_returnsAvailable() { + DeviceConfig.setProperty( + DeviceConfig.NAMESPACE_PRIVACY, + SafetyCenterStatus.SAFETY_CENTER_IS_ENABLED, + /* value = */ Boolean.toString(true), + /* makeDefault = */ false); + + assertThat(mTopLevelSafetyCenterEntryPreferenceController.getAvailabilityStatus()) + .isEqualTo(TopLevelSafetyCenterEntryPreferenceController.AVAILABLE); + } +}