Move Styles & wallpapers to the homepage group
- Add Styles & wallpapers to the homepage group. - Create a new display settings xml for the silky home. - Remove Styles & wallpapers from new display settings xml. - Apply the RestrictedTopLevelPreference to remove the restricted icon. Bug: 168166015 Bug: 174964139 Test: robotest & visual with turning on/off silky home Change-Id: Ib495b39bc62413242247f7e767c0e44bacc6e937
This commit is contained in:
143
res/xml/display_settings_v2.xml
Normal file
143
res/xml/display_settings_v2.xml
Normal file
@@ -0,0 +1,143 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
|
||||
<PreferenceScreen
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:settings="http://schemas.android.com/apk/res-auto"
|
||||
android:key="display_settings_screen"
|
||||
android:title="@string/display_settings"
|
||||
settings:keywords="@string/keywords_display"
|
||||
settings:initialExpandedChildrenCount="5">
|
||||
|
||||
<com.android.settingslib.RestrictedPreference
|
||||
android:key="brightness"
|
||||
android:title="@string/brightness"
|
||||
settings:keywords="@string/keywords_display_brightness_level"
|
||||
settings:useAdminDisabledSummary="true"
|
||||
settings:userRestriction="no_config_brightness">
|
||||
<intent android:action="com.android.intent.action.SHOW_BRIGHTNESS_DIALOG" />
|
||||
</com.android.settingslib.RestrictedPreference>
|
||||
|
||||
<com.android.settings.display.darkmode.DarkModePreference
|
||||
android:key="dark_ui_mode"
|
||||
android:title="@string/dark_ui_mode"
|
||||
android:fragment="com.android.settings.display.darkmode.DarkModeSettingsFragment"
|
||||
android:widgetLayout="@null"
|
||||
settings:widgetLayout="@null"
|
||||
settings:controller="com.android.settings.display.DarkUIPreferenceController"
|
||||
settings:keywords="@string/keywords_dark_ui_mode"/>
|
||||
|
||||
<com.android.settings.display.NightDisplayPreference
|
||||
android:key="night_display"
|
||||
android:title="@string/night_display_title"
|
||||
android:fragment="com.android.settings.display.NightDisplaySettings"
|
||||
android:widgetLayout="@null"
|
||||
settings:widgetLayout="@null"/>
|
||||
|
||||
<Preference
|
||||
android:key="auto_brightness_entry"
|
||||
android:title="@string/auto_brightness_title"
|
||||
android:summary="@string/summary_placeholder"
|
||||
android:fragment="com.android.settings.display.AutoBrightnessSettings"
|
||||
settings:controller="com.android.settings.display.AutoBrightnessPreferenceController"/>
|
||||
|
||||
<!-- Cross-listed item, if you change this, also change it in power_usage_summary.xml -->
|
||||
<Preference
|
||||
android:key="screen_timeout"
|
||||
android:title="@string/screen_timeout"
|
||||
android:summary="@string/summary_placeholder"
|
||||
android:fragment="com.android.settings.display.ScreenTimeoutSettings"
|
||||
settings:controller="com.android.settings.display.ScreenTimeoutPreferenceController" />
|
||||
|
||||
<SwitchPreference
|
||||
android:key="auto_rotate"
|
||||
android:title="@string/accelerometer_title"
|
||||
settings:keywords="@string/keywords_auto_rotate"
|
||||
settings:controller="com.android.settings.display.AutoRotatePreferenceController" />
|
||||
|
||||
<Preference
|
||||
android:key="color_mode"
|
||||
android:title="@string/color_mode_title"
|
||||
android:fragment="com.android.settings.display.ColorModePreferenceFragment"
|
||||
settings:controller="com.android.settings.display.ColorModePreferenceController"
|
||||
settings:keywords="@string/keywords_color_mode" />
|
||||
|
||||
<SwitchPreference
|
||||
android:key="display_white_balance"
|
||||
android:title="@string/display_white_balance_title"
|
||||
android:summary="@string/display_white_balance_summary"
|
||||
settings:controller="com.android.settings.display.DisplayWhiteBalancePreferenceController" />
|
||||
|
||||
<SwitchPreference
|
||||
android:key="peak_refresh_rate"
|
||||
android:title="@string/peak_refresh_rate_title"
|
||||
android:summary="@string/peak_refresh_rate_summary"
|
||||
settings:controller="com.android.settings.display.PeakRefreshRatePreferenceController" />
|
||||
|
||||
<Preference
|
||||
android:key="font_size"
|
||||
android:title="@string/title_font_size"
|
||||
android:fragment="com.android.settings.display.ToggleFontSizePreferenceFragment"
|
||||
settings:controller="com.android.settings.display.FontSizePreferenceController"
|
||||
settings:keywords="@string/keywords_font_size" />
|
||||
|
||||
<com.android.settings.display.ScreenZoomPreference
|
||||
android:key="display_settings_screen_zoom"
|
||||
android:title="@string/screen_zoom_title"
|
||||
android:fragment="com.android.settings.display.ScreenZoomSettings"/>
|
||||
|
||||
<SwitchPreference
|
||||
android:key="show_operator_name"
|
||||
android:title="@string/show_operator_name_title"
|
||||
android:summary="@string/show_operator_name_summary" />
|
||||
|
||||
<Preference
|
||||
android:key="screensaver"
|
||||
android:title="@string/screensaver_settings_title"
|
||||
android:fragment="com.android.settings.dream.DreamSettings" />
|
||||
|
||||
<Preference
|
||||
android:key="lockscreen_from_display_settings"
|
||||
android:title="@string/lockscreen_settings_title"
|
||||
android:fragment="com.android.settings.security.LockscreenDashboardFragment"
|
||||
settings:keywords="@string/keywords_ambient_display_screen"
|
||||
settings:controller="com.android.settings.security.screenlock.LockScreenPreferenceController" />
|
||||
|
||||
<SwitchPreference
|
||||
android:key="camera_gesture"
|
||||
android:title="@string/camera_gesture_title"
|
||||
android:summary="@string/camera_gesture_desc" />
|
||||
|
||||
<SwitchPreference
|
||||
android:key="lift_to_wake"
|
||||
android:title="@string/lift_to_wake_title" />
|
||||
|
||||
<SwitchPreference
|
||||
android:key="tap_to_wake"
|
||||
android:title="@string/tap_to_wake"
|
||||
android:summary="@string/tap_to_wake_summary" />
|
||||
|
||||
<ListPreference
|
||||
android:key="theme"
|
||||
android:title="@string/device_theme"
|
||||
android:summary="@string/summary_placeholder" />
|
||||
|
||||
<Preference
|
||||
android:key="vr_display_pref"
|
||||
android:title="@string/display_vr_pref_title"
|
||||
android:fragment="com.android.settings.display.VrDisplayPreferencePicker" />
|
||||
|
||||
</PreferenceScreen>
|
@@ -22,13 +22,13 @@
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="connectivity"
|
||||
android:order="-130"
|
||||
android:order="-140"
|
||||
settings:allowDividerAbove="false">
|
||||
<Preference
|
||||
android:fragment="com.android.settings.network.NetworkDashboardFragment"
|
||||
android:icon="@drawable/ic_homepage_network"
|
||||
android:key="top_level_network"
|
||||
android:order="-130"
|
||||
android:order="-140"
|
||||
android:title="@string/network_dashboard_title"
|
||||
settings:controller="com.android.settings.network.TopLevelNetworkEntryPreferenceController"/>
|
||||
|
||||
@@ -36,27 +36,27 @@
|
||||
android:fragment="com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment"
|
||||
android:icon="@drawable/ic_homepage_connected_device"
|
||||
android:key="top_level_connected_devices"
|
||||
android:order="-120"
|
||||
android:order="-130"
|
||||
android:title="@string/connected_devices_dashboard_title"
|
||||
settings:controller="com.android.settings.connecteddevice.TopLevelConnectedDevicesPreferenceController"/>
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="apps"
|
||||
android:order="-110"
|
||||
android:order="-120"
|
||||
settings:allowDividerAbove="false">
|
||||
<Preference
|
||||
android:fragment="com.android.settings.applications.AppAndNotificationDashboardFragment"
|
||||
android:icon="@drawable/ic_homepage_apps"
|
||||
android:key="top_level_apps_and_notifs"
|
||||
android:order="-110"
|
||||
android:order="-120"
|
||||
android:title="@string/apps_dashboard_title"/>
|
||||
|
||||
<Preference
|
||||
android:fragment="com.android.settings.notification.ConfigureNotificationSettings"
|
||||
android:icon="@drawable/ic_homepage_notification"
|
||||
android:key="top_level_notification"
|
||||
android:order="-100"
|
||||
android:order="-110"
|
||||
android:title="@string/configure_notification_settings"/>
|
||||
|
||||
|
||||
@@ -64,13 +64,13 @@
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="phone_essential"
|
||||
android:order="-90"
|
||||
android:order="-100"
|
||||
settings:allowDividerAbove="false">
|
||||
<Preference
|
||||
android:fragment="com.android.settings.fuelgauge.PowerUsageSummary"
|
||||
android:icon="@drawable/ic_homepage_battery"
|
||||
android:key="top_level_battery"
|
||||
android:order="-90"
|
||||
android:order="-100"
|
||||
android:title="@string/power_usage_summary_title"
|
||||
settings:controller="com.android.settings.fuelgauge.TopLevelBatteryPreferenceController"/>
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
android:fragment="com.android.settings.deviceinfo.StorageSettings"
|
||||
android:icon="@drawable/ic_homepage_storage"
|
||||
android:key="top_level_storage"
|
||||
android:order="-80"
|
||||
android:order="-90"
|
||||
android:title="@string/storage_settings"
|
||||
settings:controller="com.android.settings.deviceinfo.TopLevelStoragePreferenceController"/>
|
||||
|
||||
@@ -86,17 +86,24 @@
|
||||
android:fragment="com.android.settings.notification.SoundSettings"
|
||||
android:icon="@drawable/ic_homepage_sound"
|
||||
android:key="top_level_sound"
|
||||
android:order="-70"
|
||||
android:order="-80"
|
||||
android:title="@string/sound_settings"/>
|
||||
|
||||
<Preference
|
||||
android:fragment="com.android.settings.DisplaySettings"
|
||||
android:icon="@drawable/ic_homepage_display"
|
||||
android:key="top_level_display"
|
||||
android:order="-60"
|
||||
android:order="-70"
|
||||
android:title="@string/display_settings"
|
||||
settings:controller="com.android.settings.display.TopLevelDisplayPreferenceController"/>
|
||||
|
||||
<com.android.settingslib.RestrictedTopLevelPreference
|
||||
android:icon="@drawable/ic_homepage_display"
|
||||
android:key="top_level_wallpaper"
|
||||
android:order="-60"
|
||||
android:title="@string/wallpaper_settings_title"
|
||||
settings:controller="com.android.settings.display.TopLevelWallpaperPreferenceController"/>
|
||||
|
||||
<Preference
|
||||
android:fragment="com.android.settings.accessibility.AccessibilitySettings"
|
||||
android:icon="@drawable/ic_homepage_accessibility"
|
||||
|
@@ -19,7 +19,10 @@ package com.android.settings;
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.provider.SearchIndexableResource;
|
||||
import android.util.FeatureFlagUtils;
|
||||
|
||||
import com.android.settings.core.FeatureFlags;
|
||||
import com.android.settings.dashboard.DashboardFragment;
|
||||
import com.android.settings.display.BrightnessLevelPreferenceController;
|
||||
import com.android.settings.display.CameraGesturePreferenceController;
|
||||
@@ -37,6 +40,7 @@ import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
import com.android.settingslib.search.SearchIndexable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
|
||||
@@ -55,6 +59,9 @@ public class DisplaySettings extends DashboardFragment {
|
||||
|
||||
@Override
|
||||
protected int getPreferenceScreenResId() {
|
||||
if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.SILKY_HOME)) {
|
||||
return R.xml.display_settings_v2;
|
||||
}
|
||||
return R.xml.display_settings;
|
||||
}
|
||||
|
||||
@@ -90,7 +97,16 @@ public class DisplaySettings extends DashboardFragment {
|
||||
}
|
||||
|
||||
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
||||
new BaseSearchIndexProvider(R.xml.display_settings) {
|
||||
new BaseSearchIndexProvider() {
|
||||
|
||||
@Override
|
||||
public List<SearchIndexableResource> getXmlResourcesToIndex(
|
||||
Context context, boolean enabled) {
|
||||
final SearchIndexableResource sir = new SearchIndexableResource(context);
|
||||
sir.xmlResId = FeatureFlagUtils.isEnabled(context, FeatureFlags.SILKY_HOME)
|
||||
? R.xml.display_settings_v2 : R.xml.display_settings;
|
||||
return Arrays.asList(sir);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AbstractPreferenceController> createPreferenceControllers(
|
||||
|
@@ -0,0 +1,136 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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.display;
|
||||
|
||||
import static android.os.UserManager.DISALLOW_SET_WALLPAPER;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.os.UserHandle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||
import com.android.settingslib.RestrictedTopLevelPreference;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/** This controller manages the wallpaper preference of the top level page. */
|
||||
public class TopLevelWallpaperPreferenceController extends BasePreferenceController {
|
||||
private static final String TAG = "TopLevelWallpaperPreferenceController";
|
||||
private static final String LAUNCHED_SETTINGS = "app_launched_settings";
|
||||
|
||||
private final String mWallpaperPackage;
|
||||
private final String mWallpaperClass;
|
||||
private final String mStylesAndWallpaperClass;
|
||||
private final String mWallpaperLaunchExtra;
|
||||
|
||||
public TopLevelWallpaperPreferenceController(Context context, String key) {
|
||||
super(context, key);
|
||||
mWallpaperPackage = mContext.getString(R.string.config_wallpaper_picker_package);
|
||||
mWallpaperClass = mContext.getString(R.string.config_wallpaper_picker_class);
|
||||
mStylesAndWallpaperClass =
|
||||
mContext.getString(R.string.config_styles_and_wallpaper_picker_class);
|
||||
mWallpaperLaunchExtra = mContext.getString(R.string.config_wallpaper_picker_launch_extra);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayPreference(PreferenceScreen screen) {
|
||||
super.displayPreference(screen);
|
||||
Preference preference = screen.findPreference(getPreferenceKey());
|
||||
preference.setTitle(getTitle());
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return mContext.getString(areStylesAvailable()
|
||||
? R.string.style_and_wallpaper_settings_title : R.string.wallpaper_settings_title);
|
||||
}
|
||||
|
||||
public ComponentName getComponentName() {
|
||||
return new ComponentName(mWallpaperPackage, getComponentClassString());
|
||||
}
|
||||
|
||||
public String getComponentClassString() {
|
||||
return areStylesAvailable() ? mStylesAndWallpaperClass : mWallpaperClass;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
if ((TextUtils.isEmpty(mWallpaperClass) && TextUtils.isEmpty(mStylesAndWallpaperClass))
|
||||
|| TextUtils.isEmpty(mWallpaperPackage)) {
|
||||
Log.e(TAG, "No Wallpaper picker specified!");
|
||||
return UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
return canResolveWallpaperComponent(getComponentClassString())
|
||||
? AVAILABLE_UNSEARCHABLE : CONDITIONALLY_UNAVAILABLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateState(Preference preference) {
|
||||
disablePreferenceIfManaged((RestrictedTopLevelPreference) preference);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handlePreferenceTreeClick(Preference preference) {
|
||||
if (getPreferenceKey().equals(preference.getKey())) {
|
||||
final Intent intent = new Intent().setComponent(
|
||||
getComponentName()).putExtra(mWallpaperLaunchExtra, LAUNCHED_SETTINGS);
|
||||
if (areStylesAvailable()) {
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
}
|
||||
preference.getContext().startActivity(intent);
|
||||
return true;
|
||||
}
|
||||
return super.handlePreferenceTreeClick(preference);
|
||||
}
|
||||
|
||||
/** Returns whether Styles & Wallpaper is enabled and available. */
|
||||
public boolean areStylesAvailable() {
|
||||
return !TextUtils.isEmpty(mStylesAndWallpaperClass)
|
||||
&& canResolveWallpaperComponent(mStylesAndWallpaperClass);
|
||||
}
|
||||
|
||||
private boolean canResolveWallpaperComponent(String className) {
|
||||
final ComponentName componentName = new ComponentName(mWallpaperPackage, className);
|
||||
final PackageManager pm = mContext.getPackageManager();
|
||||
final Intent intent = new Intent().setComponent(componentName);
|
||||
final List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0 /* flags */);
|
||||
return resolveInfos != null && !resolveInfos.isEmpty();
|
||||
}
|
||||
|
||||
private void disablePreferenceIfManaged(RestrictedTopLevelPreference pref) {
|
||||
final String restriction = DISALLOW_SET_WALLPAPER;
|
||||
if (pref != null) {
|
||||
pref.setDisabledByAdmin(null);
|
||||
if (RestrictedLockUtilsInternal.hasBaseUserRestriction(mContext,
|
||||
restriction, UserHandle.myUserId())) {
|
||||
// Do not show the admin dialog for system restriction.
|
||||
pref.setEnabled(false);
|
||||
} else {
|
||||
pref.checkRestrictionAndSetDisabled(restriction);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,205 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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.display;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ResolveInfo;
|
||||
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.Robolectric;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.Shadows;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.shadows.ShadowPackageManager;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(shadows = {SettingsShadowResources.class})
|
||||
public class TopLevelWallpaperPreferenceControllerTest {
|
||||
private static final String TEST_KEY = "test_key";
|
||||
|
||||
private Intent mWallpaperIntent;
|
||||
private Intent mStylesAndWallpaperIntent;
|
||||
private FragmentActivity mContext;
|
||||
private ShadowPackageManager mShadowPackageManager;
|
||||
|
||||
private TopLevelWallpaperPreferenceController mController;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = Robolectric.buildActivity(FragmentActivity.class).get();
|
||||
SettingsShadowResources.overrideResource(
|
||||
R.string.config_wallpaper_picker_package, "bogus.package.for.testing");
|
||||
SettingsShadowResources.overrideResource(
|
||||
R.string.config_styles_and_wallpaper_picker_class, "bogus.package.class");
|
||||
mWallpaperIntent = new Intent().setComponent(new ComponentName(
|
||||
mContext.getString(R.string.config_wallpaper_picker_package),
|
||||
mContext.getString(R.string.config_wallpaper_picker_class)));
|
||||
mStylesAndWallpaperIntent = new Intent().setComponent(new ComponentName(
|
||||
mContext.getString(R.string.config_wallpaper_picker_package),
|
||||
mContext.getString(R.string.config_styles_and_wallpaper_picker_class)));
|
||||
mShadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
|
||||
mController = new TopLevelWallpaperPreferenceController(mContext, TEST_KEY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_wallpaperPickerEnabledAndStylePickerEnabled_returnsTrue() {
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mStylesAndWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
|
||||
|
||||
assertThat(mController.isAvailable()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_wallpaperPickerEnabledAndStylePickerDisabled_returnsTrue() {
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mStylesAndWallpaperIntent, Lists.newArrayList());
|
||||
|
||||
assertThat(mController.isAvailable()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_wallpaperPickerDisabledAndStylePickerEnabled_returnsTrue() {
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mWallpaperIntent, Lists.newArrayList());
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mStylesAndWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
|
||||
|
||||
assertThat(mController.isAvailable()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_wallpaperPickerDisabledAndStylePickerDisabled_returnsFalse() {
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mWallpaperIntent, Lists.newArrayList());
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mStylesAndWallpaperIntent, Lists.newArrayList());
|
||||
|
||||
assertThat(mController.isAvailable()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getComponentClassString_stylesAvailable_returnsStylePickerClassString() {
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mStylesAndWallpaperIntent,
|
||||
Lists.newArrayList(mock(ResolveInfo.class)));
|
||||
assertThat(mController.getComponentClassString())
|
||||
.isEqualTo(mContext.getString(R.string.config_styles_and_wallpaper_picker_class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getComponentClassString_stylesUnavailable_returnsWallpaperPickerClassString() {
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mStylesAndWallpaperIntent, Lists.newArrayList());
|
||||
assertThat(mController.getComponentClassString())
|
||||
.isEqualTo(mContext.getString(R.string.config_wallpaper_picker_class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void areStylesAvailable_noComponentSpecified() {
|
||||
SettingsShadowResources.overrideResource(
|
||||
R.string.config_styles_and_wallpaper_picker_class, "");
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mStylesAndWallpaperIntent, Lists.newArrayList());
|
||||
|
||||
assertThat(mController.areStylesAvailable()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void areStylesAvailable_componentUnresolveable() {
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mStylesAndWallpaperIntent, Lists.newArrayList());
|
||||
|
||||
assertThat(mController.areStylesAvailable()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void areStylesAvailable_componentResolved() {
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mStylesAndWallpaperIntent,
|
||||
Lists.newArrayList(mock(ResolveInfo.class)));
|
||||
|
||||
assertThat(mController.areStylesAvailable()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handlePreferenceTreeClick_wallpaperOnly() {
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mStylesAndWallpaperIntent, Lists.newArrayList());
|
||||
Preference preference = new Preference(mContext);
|
||||
preference.setKey(TEST_KEY);
|
||||
|
||||
mController.handlePreferenceTreeClick(preference);
|
||||
|
||||
assertThat(Shadows.shadowOf(mContext)
|
||||
.getNextStartedActivityForResult().intent.getComponent().getClassName())
|
||||
.isEqualTo(mContext.getString(R.string.config_wallpaper_picker_class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handlePreferenceTreeClick_stylesAndWallpaper() {
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mWallpaperIntent, Lists.newArrayList());
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mStylesAndWallpaperIntent, Lists.newArrayList(mock(ResolveInfo.class)));
|
||||
Preference preference = new Preference(mContext);
|
||||
preference.setKey(TEST_KEY);
|
||||
|
||||
mController.handlePreferenceTreeClick(preference);
|
||||
|
||||
assertThat(Shadows.shadowOf(mContext)
|
||||
.getNextStartedActivityForResult().intent.getComponent().getClassName())
|
||||
.isEqualTo(mContext.getString(R.string.config_styles_and_wallpaper_picker_class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handlePreferenceTreeClick_launchSourceExtra() {
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mWallpaperIntent, Lists.newArrayList());
|
||||
mShadowPackageManager.setResolveInfosForIntent(
|
||||
mStylesAndWallpaperIntent, Lists.newArrayList());
|
||||
Preference preference = new Preference(mContext);
|
||||
preference.setKey(TEST_KEY);
|
||||
|
||||
mController.handlePreferenceTreeClick(preference);
|
||||
|
||||
assertThat(Shadows.shadowOf(mContext).getNextStartedActivityForResult()
|
||||
.intent.hasExtra("com.android.wallpaper.LAUNCH_SOURCE")).isTrue();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user