diff --git a/res/xml/app_and_notification.xml b/res/xml/app_and_notification.xml index 53e575f6f9a..dd661e08872 100644 --- a/res/xml/app_and_notification.xml +++ b/res/xml/app_and_notification.xml @@ -69,7 +69,7 @@ diff --git a/res/xml/special_access.xml b/res/xml/special_access.xml index d1eb623aebd..2c80e94065f 100644 --- a/res/xml/special_access.xml +++ b/res/xml/special_access.xml @@ -15,16 +15,17 @@ --> + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:settings="http://schemas.android.com/apk/res-auto" + android:key="special_app_access_screen" + android:title="@string/special_access"> + settings:keywords="@string/keywords_ignore_optimizations" + settings:controller="com.android.settings.applications.specialaccess.HighPowerAppsController"> @@ -33,7 +34,8 @@ + android:fragment="com.android.settings.DeviceAdminSettings" + settings:controller="com.android.settings.applications.specialaccess.DeviceAdministratorsController" /> + android:fragment="com.android.settings.notification.ZenAccessSettings" + settings:controller="com.android.settings.applications.specialaccess.ZenAccessController" /> + android:fragment="com.android.settings.notification.NotificationAccessSettings" + settings:controller="com.android.settings.applications.specialaccess.NotificationAccessController" /> + settings:keywords="@string/picture_in_picture_keywords" + settings:controller="com.android.settings.applications.specialaccess.PictureInPictureController" /> + android:fragment="com.android.settings.applications.PremiumSmsAccess" + settings:controller="com.android.settings.applications.specialaccess.PremiumSmsController" /> + android:fragment="com.android.settings.datausage.UnrestrictedDataAccess" + settings:controller="com.android.settings.applications.specialaccess.DataSaverController" /> + settings:keywords="@string/keywords_vr_listener" + settings:controller="com.android.settings.applications.specialaccess.EnabledVrListenersController"> diff --git a/src/com/android/settings/applications/SpecialAccessSettings.java b/src/com/android/settings/applications/SpecialAccessSettings.java deleted file mode 100644 index 7679b1faf9b..00000000000 --- a/src/com/android/settings/applications/SpecialAccessSettings.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.android.settings.applications; - -import android.app.ActivityManager; -import android.content.Context; -import android.os.Bundle; -import androidx.annotation.NonNull; -import android.provider.SearchIndexableResource; -import androidx.preference.Preference; -import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.settings.R; -import com.android.settings.dashboard.DashboardFragment; -import com.android.settings.search.BaseSearchIndexProvider; -import com.android.settings.search.Indexable; -import com.android.settingslib.core.AbstractPreferenceController; -import com.android.settingslib.search.SearchIndexable; - -import java.util.ArrayList; -import java.util.List; - -@SearchIndexable -public class SpecialAccessSettings extends DashboardFragment { - - private static final String TAG = "SpecialAccessSettings"; - private static final String[] DISABLED_FEATURES_LOW_RAM = - new String[]{"notification_access", "zen_access", "enabled_vr_listeners", - "picture_in_picture"}; - - @Override - protected String getLogTag() { - return TAG; - } - - @Override - protected int getPreferenceScreenResId() { - return R.xml.special_access; - } - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - if (ActivityManager.isLowRamDeviceStatic()) { - for (String disabledFeature : DISABLED_FEATURES_LOW_RAM) { - Preference pref = findPreference(disabledFeature); - if (pref != null) { - removePreference(disabledFeature); - } - } - } - } - - @Override - protected List createPreferenceControllers(Context context) { - return buildPreferenceControllers(context); - } - - private static List buildPreferenceControllers( - @NonNull Context context) { - final List controllers = new ArrayList<>(); - controllers.add(new HighPowerAppsController(context)); - controllers.add(new DeviceAdministratorsController(context)); - controllers.add(new PremiumSmsController(context)); - controllers.add(new DataSaverController(context)); - controllers.add(new EnabledVrListenersController(context)); - return controllers; - } - - @Override - public int getMetricsCategory() { - return MetricsEvent.SPECIAL_ACCESS; - } - - public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = - new BaseSearchIndexProvider() { - @Override - public List getXmlResourcesToIndex(Context context, - boolean enabled) { - final ArrayList result = new ArrayList<>(); - - final SearchIndexableResource sir = new SearchIndexableResource(context); - sir.xmlResId = R.xml.special_access; - result.add(sir); - return result; - } - - @Override - public List createPreferenceControllers( - Context context) { - return buildPreferenceControllers(context); - } - }; -} diff --git a/src/com/android/settings/applications/DataSaverController.java b/src/com/android/settings/applications/specialaccess/DataSaverController.java similarity index 80% rename from src/com/android/settings/applications/DataSaverController.java rename to src/com/android/settings/applications/specialaccess/DataSaverController.java index afe7cd64cd3..56687d7aa4f 100644 --- a/src/com/android/settings/applications/DataSaverController.java +++ b/src/com/android/settings/applications/specialaccess/DataSaverController.java @@ -15,20 +15,17 @@ */ -package com.android.settings.applications; +package com.android.settings.applications.specialaccess; import android.content.Context; -import androidx.annotation.VisibleForTesting; -import com.android.settings.core.BasePreferenceController; import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; public class DataSaverController extends BasePreferenceController { - @VisibleForTesting static final String KEY_DATA_SAVER = "data_saver"; - - public DataSaverController(Context context) { - super(context, KEY_DATA_SAVER); + public DataSaverController(Context context, String key) { + super(context, key); } @AvailabilityStatus diff --git a/src/com/android/settings/applications/DeviceAdministratorsController.java b/src/com/android/settings/applications/specialaccess/DeviceAdministratorsController.java similarity index 79% rename from src/com/android/settings/applications/DeviceAdministratorsController.java rename to src/com/android/settings/applications/specialaccess/DeviceAdministratorsController.java index ec1d556a611..bdb99ef113a 100644 --- a/src/com/android/settings/applications/DeviceAdministratorsController.java +++ b/src/com/android/settings/applications/specialaccess/DeviceAdministratorsController.java @@ -14,20 +14,17 @@ * limitations under the License. */ -package com.android.settings.applications; +package com.android.settings.applications.specialaccess; import android.content.Context; -import androidx.annotation.VisibleForTesting; -import com.android.settings.core.BasePreferenceController; import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; public class DeviceAdministratorsController extends BasePreferenceController { - @VisibleForTesting static final String KEY_DEVICE_ADMIN = "device_administrators"; - - public DeviceAdministratorsController(Context context) { - super(context, KEY_DEVICE_ADMIN); + public DeviceAdministratorsController(Context context, String key) { + super(context, key); } @AvailabilityStatus diff --git a/src/com/android/settings/applications/EnabledVrListenersController.java b/src/com/android/settings/applications/specialaccess/EnabledVrListenersController.java similarity index 78% rename from src/com/android/settings/applications/EnabledVrListenersController.java rename to src/com/android/settings/applications/specialaccess/EnabledVrListenersController.java index 7b33529d7eb..5967b0d4507 100644 --- a/src/com/android/settings/applications/EnabledVrListenersController.java +++ b/src/com/android/settings/applications/specialaccess/EnabledVrListenersController.java @@ -14,25 +14,24 @@ * limitations under the License. */ -package com.android.settings.applications; +package com.android.settings.applications.specialaccess; +import android.app.ActivityManager; import android.content.Context; -import androidx.annotation.VisibleForTesting; -import com.android.settings.core.BasePreferenceController; import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; public class EnabledVrListenersController extends BasePreferenceController { - @VisibleForTesting static final String KEY_ENABLED_VR_LISTENERS = "enabled_vr_listeners"; - - public EnabledVrListenersController(Context context) { - super(context, KEY_ENABLED_VR_LISTENERS); + public EnabledVrListenersController(Context context, String key) { + super(context, key); } @AvailabilityStatus public int getAvailabilityStatus() { return mContext.getResources().getBoolean(R.bool.config_show_enabled_vr_listeners) + && !ActivityManager.isLowRamDeviceStatic() ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } diff --git a/src/com/android/settings/applications/HighPowerAppsController.java b/src/com/android/settings/applications/specialaccess/HighPowerAppsController.java similarity index 79% rename from src/com/android/settings/applications/HighPowerAppsController.java rename to src/com/android/settings/applications/specialaccess/HighPowerAppsController.java index 39b84516315..b893b887607 100644 --- a/src/com/android/settings/applications/HighPowerAppsController.java +++ b/src/com/android/settings/applications/specialaccess/HighPowerAppsController.java @@ -14,20 +14,17 @@ * limitations under the License. */ -package com.android.settings.applications; +package com.android.settings.applications.specialaccess; import android.content.Context; -import androidx.annotation.VisibleForTesting; -import com.android.settings.core.BasePreferenceController; import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; public class HighPowerAppsController extends BasePreferenceController { - @VisibleForTesting static final String KEY_HIGH_POWER_APPS = "high_power_apps"; - - public HighPowerAppsController(Context context) { - super(context, KEY_HIGH_POWER_APPS); + public HighPowerAppsController(Context context, String key) { + super(context, key); } @AvailabilityStatus diff --git a/src/com/android/settings/applications/specialaccess/NotificationAccessController.java b/src/com/android/settings/applications/specialaccess/NotificationAccessController.java new file mode 100644 index 00000000000..773cd7df576 --- /dev/null +++ b/src/com/android/settings/applications/specialaccess/NotificationAccessController.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.applications.specialaccess; + +import android.app.ActivityManager; +import android.content.Context; + +import com.android.settings.core.BasePreferenceController; + +public class NotificationAccessController extends BasePreferenceController { + + public NotificationAccessController(Context context, String preferenceKey) { + super(context, preferenceKey); + } + + @Override + public int getAvailabilityStatus() { + return !ActivityManager.isLowRamDeviceStatic() + ? AVAILABLE + : UNSUPPORTED_ON_DEVICE; + } +} diff --git a/src/com/android/settings/applications/specialaccess/PictureInPictureController.java b/src/com/android/settings/applications/specialaccess/PictureInPictureController.java new file mode 100644 index 00000000000..6666605c1cc --- /dev/null +++ b/src/com/android/settings/applications/specialaccess/PictureInPictureController.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.applications.specialaccess; + +import android.app.ActivityManager; +import android.content.Context; + +import com.android.settings.core.BasePreferenceController; + +public class PictureInPictureController extends BasePreferenceController { + + public PictureInPictureController(Context context, String preferenceKey) { + super(context, preferenceKey); + } + + @Override + public int getAvailabilityStatus() { + return !ActivityManager.isLowRamDeviceStatic() + ? AVAILABLE + : UNSUPPORTED_ON_DEVICE; + } +} diff --git a/src/com/android/settings/applications/PremiumSmsController.java b/src/com/android/settings/applications/specialaccess/PremiumSmsController.java similarity index 80% rename from src/com/android/settings/applications/PremiumSmsController.java rename to src/com/android/settings/applications/specialaccess/PremiumSmsController.java index eeb5d86fd90..0e8c198f3b2 100644 --- a/src/com/android/settings/applications/PremiumSmsController.java +++ b/src/com/android/settings/applications/specialaccess/PremiumSmsController.java @@ -14,20 +14,17 @@ * limitations under the License. */ -package com.android.settings.applications; +package com.android.settings.applications.specialaccess; import android.content.Context; -import androidx.annotation.VisibleForTesting; -import com.android.settings.core.BasePreferenceController; import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; public class PremiumSmsController extends BasePreferenceController { - @VisibleForTesting static final String KEY_PREMIUM_SMS = "premium_sms"; - - public PremiumSmsController(Context context) { - super(context, KEY_PREMIUM_SMS); + public PremiumSmsController(Context context, String key) { + super(context, key); } @AvailabilityStatus diff --git a/src/com/android/settings/applications/specialaccess/SpecialAccessSettings.java b/src/com/android/settings/applications/specialaccess/SpecialAccessSettings.java new file mode 100644 index 00000000000..80cadcc4396 --- /dev/null +++ b/src/com/android/settings/applications/specialaccess/SpecialAccessSettings.java @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.applications.specialaccess; + +import android.content.Context; +import android.provider.SearchIndexableResource; + +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.settings.R; +import com.android.settings.dashboard.DashboardFragment; +import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settings.search.Indexable; +import com.android.settingslib.search.SearchIndexable; + +import java.util.ArrayList; +import java.util.List; + +@SearchIndexable +public class SpecialAccessSettings extends DashboardFragment { + + private static final String TAG = "SpecialAccessSettings"; + + @Override + protected String getLogTag() { + return TAG; + } + + @Override + protected int getPreferenceScreenResId() { + return R.xml.special_access; + } + + @Override + public int getMetricsCategory() { + return MetricsEvent.SPECIAL_ACCESS; + } + + public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = + new BaseSearchIndexProvider() { + @Override + public List getXmlResourcesToIndex(Context context, + boolean enabled) { + final ArrayList result = new ArrayList<>(); + + final SearchIndexableResource sir = new SearchIndexableResource(context); + sir.xmlResId = R.xml.special_access; + result.add(sir); + return result; + } + }; +} diff --git a/src/com/android/settings/applications/specialaccess/ZenAccessController.java b/src/com/android/settings/applications/specialaccess/ZenAccessController.java new file mode 100644 index 00000000000..41344a3ebad --- /dev/null +++ b/src/com/android/settings/applications/specialaccess/ZenAccessController.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.applications.specialaccess; + +import android.app.ActivityManager; +import android.content.Context; + +import com.android.settings.core.BasePreferenceController; + +public class ZenAccessController extends BasePreferenceController { + + public ZenAccessController(Context context, String preferenceKey) { + super(context, preferenceKey); + } + + @Override + public int getAvailabilityStatus() { + return !ActivityManager.isLowRamDeviceStatic() + ? AVAILABLE + : UNSUPPORTED_ON_DEVICE; + } +} diff --git a/tests/robotests/src/com/android/settings/applications/SpecialAccessSettingsTest.java b/tests/robotests/src/com/android/settings/applications/SpecialAccessSettingsTest.java deleted file mode 100644 index fd71af7ac1b..00000000000 --- a/tests/robotests/src/com/android/settings/applications/SpecialAccessSettingsTest.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ -package com.android.settings.applications; - -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.spy; - -import android.content.Context; -import android.provider.SearchIndexableResource; - -import com.android.settings.R; -import com.android.settings.testutils.SettingsRobolectricTestRunner; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.MockitoAnnotations; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.annotation.Config; - -import java.util.List; - -@RunWith(SettingsRobolectricTestRunner.class) -public class SpecialAccessSettingsTest { - - private Context mContext; - private SpecialAccessSettings mFragment; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - mContext = spy(RuntimeEnvironment.application); - mFragment = new SpecialAccessSettings() { - @Override - public Context getContext() { - return mContext; - } - }; - } - - @Test - public void testSearchIndexProvider_shouldIndexResource() { - final List indexRes = - SpecialAccessSettings.SEARCH_INDEX_DATA_PROVIDER.getXmlResourcesToIndex(mContext, - true /* enabled */); - final List niks = - SpecialAccessSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext); - - assertThat(indexRes).isNotNull(); - assertThat(indexRes.get(0).xmlResId).isEqualTo(R.xml.special_access); - assertThat(niks).isEmpty(); - } - - @Test - @Config(qualifiers = "mcc999") - public void testSearchIndexProvider_ifElementsAreNotShown_shouldNotBeIndexed() { - final List niks = - SpecialAccessSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext); - - assertThat(niks).contains(HighPowerAppsController.KEY_HIGH_POWER_APPS); - assertThat(niks).contains(DeviceAdministratorsController.KEY_DEVICE_ADMIN); - assertThat(niks).contains(PremiumSmsController.KEY_PREMIUM_SMS); - assertThat(niks).contains(DataSaverController.KEY_DATA_SAVER); - assertThat(niks).contains(EnabledVrListenersController.KEY_ENABLED_VR_LISTENERS); - } -} \ No newline at end of file diff --git a/tests/robotests/src/com/android/settings/applications/DataSaverControllerTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/DataSaverControllerTest.java similarity index 93% rename from tests/robotests/src/com/android/settings/applications/DataSaverControllerTest.java rename to tests/robotests/src/com/android/settings/applications/specialaccess/DataSaverControllerTest.java index 22140bb5c4d..c632d08bec0 100644 --- a/tests/robotests/src/com/android/settings/applications/DataSaverControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/specialaccess/DataSaverControllerTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.applications; +package com.android.settings.applications.specialaccess; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; @@ -40,7 +40,7 @@ public class DataSaverControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application.getApplicationContext()); - mController = new DataSaverController(mContext); + mController = new DataSaverController(mContext, "key"); } @Test diff --git a/tests/robotests/src/com/android/settings/applications/DeviceAdministratorsControllerTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/DeviceAdministratorsControllerTest.java similarity index 96% rename from tests/robotests/src/com/android/settings/applications/DeviceAdministratorsControllerTest.java rename to tests/robotests/src/com/android/settings/applications/specialaccess/DeviceAdministratorsControllerTest.java index ad7e615ce78..efa784683f3 100644 --- a/tests/robotests/src/com/android/settings/applications/DeviceAdministratorsControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/specialaccess/DeviceAdministratorsControllerTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.applications; +package com.android.settings.applications.specialaccess; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; @@ -40,7 +40,7 @@ public class DeviceAdministratorsControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application.getApplicationContext()); - mController = new DeviceAdministratorsController(mContext); + mController = new DeviceAdministratorsController(mContext, "key"); } @Test diff --git a/tests/robotests/src/com/android/settings/applications/EnabledVrListenersControllerTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/EnabledVrListenersControllerTest.java similarity index 66% rename from tests/robotests/src/com/android/settings/applications/EnabledVrListenersControllerTest.java rename to tests/robotests/src/com/android/settings/applications/specialaccess/EnabledVrListenersControllerTest.java index b36472031f7..7963fd4a20a 100644 --- a/tests/robotests/src/com/android/settings/applications/EnabledVrListenersControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/specialaccess/EnabledVrListenersControllerTest.java @@ -14,10 +14,9 @@ * limitations under the License. */ -package com.android.settings.applications; +package com.android.settings.applications.specialaccess; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.spy; import android.content.Context; @@ -26,31 +25,39 @@ import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; +import org.robolectric.shadow.api.Shadow; +import org.robolectric.shadows.ShadowActivityManager; @RunWith(SettingsRobolectricTestRunner.class) public class EnabledVrListenersControllerTest { private Context mContext; private EnabledVrListenersController mController; + private ShadowActivityManager mActivityManager; @Before public void setUp() { - MockitoAnnotations.initMocks(this); - mContext = spy(RuntimeEnvironment.application.getApplicationContext()); - mController = new EnabledVrListenersController(mContext); + mContext = RuntimeEnvironment.application; + mController = new EnabledVrListenersController(mContext, "key"); + mActivityManager = Shadow.extract(mContext.getSystemService(Context.ACTIVITY_SERVICE)); } @Test - public void testEnabledVrListeners_byDefault_shouldBeShown() { + public void isAvailable_byDefault_true() { + assertThat(mController.isAvailable()).isTrue(); + } + + @Test + public void isAvailable_lowMemory_false() { + mActivityManager.setIsLowRamDevice(true); assertThat(mController.isAvailable()).isTrue(); } @Test @Config(qualifiers = "mcc999") - public void testEnabledVrListeners_ifDisabled_shouldNotBeShown() { + public void isAvailable_disabled_false() { assertThat(mController.isAvailable()).isFalse(); } } diff --git a/tests/robotests/src/com/android/settings/applications/HighPowerAppsControllerTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/HighPowerAppsControllerTest.java similarity index 93% rename from tests/robotests/src/com/android/settings/applications/HighPowerAppsControllerTest.java rename to tests/robotests/src/com/android/settings/applications/specialaccess/HighPowerAppsControllerTest.java index 6dfaa7c59eb..4713be22512 100644 --- a/tests/robotests/src/com/android/settings/applications/HighPowerAppsControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/specialaccess/HighPowerAppsControllerTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.applications; +package com.android.settings.applications.specialaccess; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; @@ -40,7 +40,7 @@ public class HighPowerAppsControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application.getApplicationContext()); - mController = new HighPowerAppsController(mContext); + mController = new HighPowerAppsController(mContext, "key"); } @Test diff --git a/tests/robotests/src/com/android/settings/applications/PremiumSmsControllerTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/PremiumSmsControllerTest.java similarity index 93% rename from tests/robotests/src/com/android/settings/applications/PremiumSmsControllerTest.java rename to tests/robotests/src/com/android/settings/applications/specialaccess/PremiumSmsControllerTest.java index cad4100adea..8f16da7022e 100644 --- a/tests/robotests/src/com/android/settings/applications/PremiumSmsControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/specialaccess/PremiumSmsControllerTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.settings.applications; +package com.android.settings.applications.specialaccess; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; @@ -40,7 +40,7 @@ public class PremiumSmsControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application.getApplicationContext()); - mController = new PremiumSmsController(mContext); + mController = new PremiumSmsController(mContext, "key"); } @Test diff --git a/tests/robotests/src/com/android/settings/applications/specialaccess/ZenAccessControllerTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/ZenAccessControllerTest.java new file mode 100644 index 00000000000..205de10f1c8 --- /dev/null +++ b/tests/robotests/src/com/android/settings/applications/specialaccess/ZenAccessControllerTest.java @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.applications.specialaccess; + +import static com.google.common.truth.Truth.assertThat; + +import android.content.Context; + +import com.android.settings.testutils.SettingsRobolectricTestRunner; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RuntimeEnvironment; +import org.robolectric.shadow.api.Shadow; +import org.robolectric.shadows.ShadowActivityManager; + +@RunWith(SettingsRobolectricTestRunner.class) +public class ZenAccessControllerTest { + + private Context mContext; + private ZenAccessController mController; + private ShadowActivityManager mActivityManager; + + @Before + public void setUp() { + mContext = RuntimeEnvironment.application; + mController = new ZenAccessController(mContext, "key"); + mActivityManager = Shadow.extract(mContext.getSystemService(Context.ACTIVITY_SERVICE)); + } + + @Test + public void isAvailable_byDefault_true() { + assertThat(mController.isAvailable()).isTrue(); + } + + @Test + public void isAvailable_lowMemory_false() { + mActivityManager.setIsLowRamDevice(true); + assertThat(mController.isAvailable()).isTrue(); + } +}