Merge "Update preference screen title."
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 3362a43..4bc2c6d 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -219,6 +219,12 @@
android:theme="@style/Theme.Settings.NoActionBar">
</activity>
+ <activity android:name=".search.SearchResultTrampoline"
+ android:theme="@android:style/Theme.NoDisplay"
+ android:excludeFromRecents="true"
+ android:exported="true">
+ </activity>
+
<!-- Top-level settings -->
<activity android:name="Settings$WifiSettingsActivity"
diff --git a/res/layout/dialog_hardware_info.xml b/res/layout/dialog_hardware_info.xml
index f9d52b8..9431961 100644
--- a/res/layout/dialog_hardware_info.xml
+++ b/res/layout/dialog_hardware_info.xml
@@ -40,6 +40,20 @@
android:textAppearance="@android:style/TextAppearance.Material.Body2" />
<TextView
+ android:id="@+id/serial_number_label"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textAppearance="@android:style/TextAppearance.Material.Body1"
+ android:textColor="?android:attr/textColorSecondary"
+ android:text="@string/status_serial_number" />
+ <TextView
+ android:id="@+id/serial_number_value"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingBottom="24dp"
+ android:textAppearance="@android:style/TextAppearance.Material.Body2" />
+
+ <TextView
android:id="@+id/hardware_rev_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/res/layout/search_panel.xml b/res/layout/search_panel.xml
index 48a1d4c..42fbefb 100644
--- a/res/layout/search_panel.xml
+++ b/res/layout/search_panel.xml
@@ -76,7 +76,7 @@
android:id="@+id/no_results_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:paddingTop="96dp"
+ android:paddingTop="35dp"
android:orientation="vertical"
android:visibility="gone">
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b6b860d..ad64069 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2368,8 +2368,15 @@
<string name="display_settings">Display</string>
<!-- Sound & display settings screen, accelerometer-based rotation check box label -->
<string name="accelerometer_title">Auto-rotate screen</string>
- <!-- Display settings screen, vivid (or vibrant or saturated) color mode switch label [CHAR LIMIT=30] -->
- <string name="color_mode_title">Vivid colors</string>
+ <!-- Display settings screen, Color mode settings title [CHAR LIMIT=30] -->
+ <string name="color_mode_title">Colors</string>
+ <!-- Display settings screen, Color mode option for "natural(sRGB) color" [CHAR LIMIT=45] -->
+ <string name="color_mode_option_natural">Natural</string>
+ <!-- Display settings screen, Color mode option for "Boosted(sRGB + 10%) color" [CHAR LIMIT=45] -->
+ <string name="color_mode_option_boosted">Boosted</string>
+ <!-- Display settings screen, Color mode option for "Saturated color" [CHAR LIMIT=45] -->
+ <string name="color_mode_option_saturated">Saturated</string>
+
<!-- Sound & display settings screen, accelerometer-based rotation summary text when check box is selected -->
<string name="accelerometer_summary_on" product="tablet">Switch orientation automatically when rotating tablet</string>
<!-- Sound & display settings screen, accelerometer-based rotation summary text when check box is selected -->
@@ -2619,6 +2626,8 @@
<string name="security_patch">Android security patch level</string>
<!-- About phone screen, status item label [CHAR LIMIT=40] -->
<string name="model_info">Model</string>
+ <!-- About phone screen, status item summary [CHAR LIMIT=40] -->
+ <string name="model_summary">Model: %1$s</string>
<!-- About phone screen, dialog title for showing hardware information such as model, serial number, etc.[CHAR LIMIT=60] -->
<string name="hardware_info">Model & hardware</string>
<!-- Label for device's hardware revision value [CHAR LIMIT=40] -->
diff --git a/res/xml/device_info_settings_v2.xml b/res/xml/device_info_settings_v2.xml
index 4f66b4c..0553f1e 100644
--- a/res/xml/device_info_settings_v2.xml
+++ b/res/xml/device_info_settings_v2.xml
@@ -36,7 +36,7 @@
<!-- Model & hardware -->
<Preference
- android:key="model_and_hardware"
+ android:key="device_model"
android:title="@string/hardware_info"
android:summary="@string/summary_placeholder"/>
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index 27ef869..87d3e5e 100644
--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -64,9 +64,11 @@
android:key="auto_rotate"
android:title="@string/accelerometer_title" />
- <SwitchPreference
+ <Preference
android:key="color_mode"
- android:title="@string/color_mode_title" />
+ android:title="@string/color_mode_title"
+ android:fragment="com.android.settings.display.ColorModePreferenceFragment"
+ settings:keywords="@string/keywords_color_mode" />
<Preference
android:key="font_size"
diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
index 41eb6c6..630b67e 100644
--- a/src/com/android/settings/DeviceInfoSettings.java
+++ b/src/com/android/settings/DeviceInfoSettings.java
@@ -49,10 +49,11 @@
public class DeviceInfoSettings extends DashboardFragment implements Indexable {
+ public static final String DEVICE_INFO_V2_FEATURE_FLAG = "device_info_v2";
+
private static final String LOG_TAG = "DeviceInfoSettings";
private static final String KEY_LEGAL_CONTAINER = "legal_container";
- private static final String DEVICE_INFO_V2_FEATURE_FLAG = "device_info_v2";
@Override
public int getMetricsCategory() {
@@ -127,7 +128,7 @@
// SIM status
- // Model & hardware
+ controllers.add(new DeviceModelPreferenceController(context, fragment));
// IMEI
diff --git a/src/com/android/settings/OwnerInfoSettings.java b/src/com/android/settings/OwnerInfoSettings.java
index 18cfb8e..3128dfe 100644
--- a/src/com/android/settings/OwnerInfoSettings.java
+++ b/src/com/android/settings/OwnerInfoSettings.java
@@ -67,6 +67,7 @@
mOwnerInfo = (EditText) mView.findViewById(R.id.owner_info_edit_text);
if (!TextUtils.isEmpty(info)) {
mOwnerInfo.setText(info);
+ mOwnerInfo.setSelection(info.length());
}
}
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 8a832a9..b108c62 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -25,7 +25,6 @@
import android.app.ActivityManager;
import android.app.AlertDialog;
import android.app.AppGlobals;
-import android.app.AppOpsManager;
import android.app.Dialog;
import android.app.Fragment;
import android.app.IActivityManager;
@@ -103,9 +102,6 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.view.animation.Animation;
-import android.view.animation.Animation.AnimationListener;
-import android.view.animation.AnimationUtils;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TabWidget;
@@ -114,8 +110,8 @@
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.UserIcons;
import com.android.internal.widget.LockPatternUtils;
-import com.android.settings.wrapper.FingerprintManagerWrapper;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
+import com.android.settings.wrapper.FingerprintManagerWrapper;
import java.io.IOException;
import java.io.InputStream;
@@ -242,12 +238,6 @@
return telephony != null && telephony.isVoiceCapable();
}
- public static boolean isWifiOnly(Context context) {
- ConnectivityManager cm = (ConnectivityManager)context.getSystemService(
- Context.CONNECTIVITY_SERVICE);
- return (cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE) == false);
- }
-
/**
* Returns the WIFI IP Addresses, if any, taking into account IPv4 and IPv6 style addresses.
* @param context the application context
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index 1df3aef..8b8f9cf 100755
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -348,7 +348,7 @@
enabled = false;
mActionButtons.setButton1Visible(false);
}
- mActionButtons.setButton1Text(R.string.uninstall_text);
+ mActionButtons.setButton1Text(R.string.uninstall_text).setButton1Positive(false);
return enabled;
}
diff --git a/src/com/android/settings/datausage/DataPlanUsageSummary.java b/src/com/android/settings/datausage/DataPlanUsageSummary.java
index 1905deb..912db0a 100644
--- a/src/com/android/settings/datausage/DataPlanUsageSummary.java
+++ b/src/com/android/settings/datausage/DataPlanUsageSummary.java
@@ -27,7 +27,6 @@
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.UserManager;
-import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
@@ -44,14 +43,12 @@
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.dashboard.SummaryLoader;
-import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.search.Indexable;
import com.android.settingslib.NetworkPolicyEditor;
import com.android.settingslib.net.DataUsageController;
import java.util.ArrayList;
import java.util.List;
-public class DataPlanUsageSummary extends DataUsageBase implements Indexable {
+public class DataPlanUsageSummary extends DataUsageBase {
public static final String KEY_DATA_PLAN_USAGE = "data_plan_usage";
@@ -353,50 +350,5 @@
public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
= SummaryProvider::new;
-
- /**
- * For search
- */
- public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
- new BaseSearchIndexProvider() {
-
- @Override
- public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
- boolean enabled) {
- List<SearchIndexableResource> resources = new ArrayList<>();
- SearchIndexableResource resource = new SearchIndexableResource(context);
- resource.xmlResId = R.xml.data_usage;
- resources.add(resource);
-
- resource = new SearchIndexableResource(context);
- resource.xmlResId = R.xml.data_plan_usage_cell_data_preference_screen;
- resources.add(resource);
-
- resource = new SearchIndexableResource(context);
- resource.xmlResId = R.xml.data_usage_wifi;
- resources.add(resource);
-
- return resources;
- }
-
- @Override
- public List<String> getNonIndexableKeys(Context context) {
- List<String> keys = super.getNonIndexableKeys(context);
-
- if (!DataUsageUtils.hasMobileData(context)) {
- keys.add(KEY_MOBILE_USAGE_TITLE);
- keys.add(KEY_MOBILE_DATA_USAGE_TOGGLE);
- }
-
- if (!DataUsageUtils.hasWifiRadio(context)) {
- keys.add(KEY_WIFI_DATA_USAGE);
- keys.add(KEY_NETWORK_RESTRICTIONS);
- }
-
- keys.add(KEY_WIFI_USAGE_TITLE);
-
- return keys;
- }
- };
}
diff --git a/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java b/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java
index 8a9568a..d4bd59b 100644
--- a/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java
+++ b/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java
@@ -21,8 +21,8 @@
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;
-import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController;
public class AutoTimeZonePreferenceController extends AbstractPreferenceController
diff --git a/src/com/android/settings/development/CameraHalHdrplusPreferenceController.java b/src/com/android/settings/development/CameraHalHdrplusPreferenceController.java
index 39b6db2..a5390cc 100644
--- a/src/com/android/settings/development/CameraHalHdrplusPreferenceController.java
+++ b/src/com/android/settings/development/CameraHalHdrplusPreferenceController.java
@@ -104,6 +104,6 @@
}
private boolean isHalHdrplusEnabled() {
- return SystemProperties.getBoolean(PROPERTY_CAMERA_HAL_HDRPLUS, false);
+ return SystemProperties.getBoolean(PROPERTY_CAMERA_HAL_HDRPLUS, true);
}
}
diff --git a/src/com/android/settings/development/CameraHalHdrPlusPreferenceControllerV2.java b/src/com/android/settings/development/CameraHalHdrplusPreferenceControllerV2.java
similarity index 95%
rename from src/com/android/settings/development/CameraHalHdrPlusPreferenceControllerV2.java
rename to src/com/android/settings/development/CameraHalHdrplusPreferenceControllerV2.java
index cb03bfc..b8828fe 100644
--- a/src/com/android/settings/development/CameraHalHdrPlusPreferenceControllerV2.java
+++ b/src/com/android/settings/development/CameraHalHdrplusPreferenceControllerV2.java
@@ -29,7 +29,7 @@
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.development.DeveloperOptionsPreferenceController;
-public class CameraHalHdrPlusPreferenceControllerV2 extends
+public class CameraHalHdrplusPreferenceControllerV2 extends
DeveloperOptionsPreferenceController implements
Preference.OnPreferenceChangeListener, PreferenceControllerMixin {
@@ -45,7 +45,7 @@
private SwitchPreference mPreference;
- public CameraHalHdrPlusPreferenceControllerV2(Context context) {
+ public CameraHalHdrplusPreferenceControllerV2(Context context) {
super(context);
}
@@ -95,6 +95,6 @@
}
private boolean isHalHdrplusEnabled() {
- return SystemProperties.getBoolean(PROPERTY_CAMERA_HAL_HDRPLUS, false /* default */);
+ return SystemProperties.getBoolean(PROPERTY_CAMERA_HAL_HDRPLUS, true /* default */);
}
}
diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
index fa89ba4..d532136 100644
--- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
+++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
@@ -376,7 +376,7 @@
controllers.add(new LogPersistPreferenceControllerV2(context, fragment, lifecycle));
controllers.add(new ConnectivityMonitorPreferenceControllerV2(context));
controllers.add(new CameraLaserSensorPreferenceControllerV2(context));
- controllers.add(new CameraHalHdrPlusPreferenceControllerV2(context));
+ controllers.add(new CameraHalHdrplusPreferenceControllerV2(context));
controllers.add(new WifiDisplayCertificationPreferenceController(context));
controllers.add(new WifiVerboseLoggingPreferenceController(context));
controllers.add(new WifiAggressiveHandoverPreferenceController(context));
diff --git a/src/com/android/settings/deviceinfo/BasebandVersionPreferenceController.java b/src/com/android/settings/deviceinfo/BasebandVersionPreferenceController.java
index 018a068..90d4c11 100644
--- a/src/com/android/settings/deviceinfo/BasebandVersionPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/BasebandVersionPreferenceController.java
@@ -20,8 +20,8 @@
import android.support.v7.preference.Preference;
import com.android.settings.R;
-import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController;
public class BasebandVersionPreferenceController extends AbstractPreferenceController implements
diff --git a/src/com/android/settings/deviceinfo/DeviceModelPreferenceController.java b/src/com/android/settings/deviceinfo/DeviceModelPreferenceController.java
index f1dc415..e7fab5a 100644
--- a/src/com/android/settings/deviceinfo/DeviceModelPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/DeviceModelPreferenceController.java
@@ -21,7 +21,10 @@
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils;
+import android.util.FeatureFlagUtils;
+import com.android.settings.DeviceInfoSettings;
+import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.DeviceInfoUtils;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -48,7 +51,12 @@
super.displayPreference(screen);
final Preference pref = screen.findPreference(KEY_DEVICE_MODEL);
if (pref != null) {
- pref.setSummary(getDeviceModel());
+ if (FeatureFlagUtils.isEnabled(DeviceInfoSettings.DEVICE_INFO_V2_FEATURE_FLAG)) {
+ pref.setSummary(mContext.getResources().getString(R.string.model_summary,
+ getDeviceModel()));
+ } else {
+ pref.setSummary(getDeviceModel());
+ }
}
}
diff --git a/src/com/android/settings/deviceinfo/HardwareInfoDialogFragment.java b/src/com/android/settings/deviceinfo/HardwareInfoDialogFragment.java
index 60082c7..3d825b9 100644
--- a/src/com/android/settings/deviceinfo/HardwareInfoDialogFragment.java
+++ b/src/com/android/settings/deviceinfo/HardwareInfoDialogFragment.java
@@ -18,15 +18,18 @@
import android.app.AlertDialog;
import android.app.Dialog;
+import android.os.Build;
import android.os.Bundle;
import android.os.SystemProperties;
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
+import android.util.FeatureFlagUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.DeviceInfoSettings;
import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
@@ -54,6 +57,15 @@
// Model
setText(content, R.id.model_label, R.id.model_value,
DeviceModelPreferenceController.getDeviceModel());
+
+ // Serial number
+ if (FeatureFlagUtils.isEnabled(DeviceInfoSettings.DEVICE_INFO_V2_FEATURE_FLAG)) {
+ setText(content, R.id.serial_number_label, R.id.serial_number_value, getSerialNumber());
+ } else {
+ content.findViewById(R.id.serial_number_label).setVisibility(View.GONE);
+ content.findViewById(R.id.serial_number_value).setVisibility(View.GONE);
+ }
+
// Hardware rev
setText(content, R.id.hardware_rev_label, R.id.hardware_rev_value,
SystemProperties.get("ro.boot.hardware.revision"));
@@ -77,4 +89,9 @@
valueView.setVisibility(View.GONE);
}
}
+
+ @VisibleForTesting
+ String getSerialNumber() {
+ return Build.getSerial();
+ }
}
diff --git a/src/com/android/settings/deviceinfo/ImeiInfoPreferenceController.java b/src/com/android/settings/deviceinfo/ImeiInfoPreferenceController.java
index 8db70c7..f564734 100644
--- a/src/com/android/settings/deviceinfo/ImeiInfoPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/ImeiInfoPreferenceController.java
@@ -17,13 +17,11 @@
package com.android.settings.deviceinfo;
import android.content.Context;
-import android.os.UserManager;
-import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.deviceinfo.AbstractSimStatusImeiInfoPreferenceController;
-public class ImeiInfoPreferenceController extends AbstractPreferenceController
+public class ImeiInfoPreferenceController extends AbstractSimStatusImeiInfoPreferenceController
implements PreferenceControllerMixin {
private static final String KEY_IMEI_INFO = "imei_info";
@@ -33,12 +31,6 @@
}
@Override
- public boolean isAvailable() {
- return ((UserManager) mContext.getSystemService(Context.USER_SERVICE)).isAdminUser()
- && !Utils.isWifiOnly(mContext);
- }
-
- @Override
public String getPreferenceKey() {
return KEY_IMEI_INFO;
}
diff --git a/src/com/android/settings/deviceinfo/SerialNumberPreferenceController.java b/src/com/android/settings/deviceinfo/SerialNumberPreferenceController.java
index 31b905e..e466bbf 100644
--- a/src/com/android/settings/deviceinfo/SerialNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/SerialNumberPreferenceController.java
@@ -24,7 +24,10 @@
/**
* Preference controller for displaying device serial number. Wraps {@link Build#getSerial()}.
+ *
+ * deprecated because this preference is no longer used in About Phone V2
*/
+@Deprecated
public class SerialNumberPreferenceController extends
AbstractSerialNumberPreferenceController implements
PreferenceControllerMixin {
diff --git a/src/com/android/settings/deviceinfo/SimStatusPreferenceController.java b/src/com/android/settings/deviceinfo/SimStatusPreferenceController.java
index 9dfc95b..99441b5 100644
--- a/src/com/android/settings/deviceinfo/SimStatusPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/SimStatusPreferenceController.java
@@ -17,13 +17,11 @@
package com.android.settings.deviceinfo;
import android.content.Context;
-import android.os.UserManager;
-import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.deviceinfo.AbstractSimStatusImeiInfoPreferenceController;
-public class SimStatusPreferenceController extends AbstractPreferenceController
+public class SimStatusPreferenceController extends AbstractSimStatusImeiInfoPreferenceController
implements PreferenceControllerMixin {
private static final String KEY_SIM_STATUS = "sim_status";
@@ -33,12 +31,6 @@
}
@Override
- public boolean isAvailable() {
- return ((UserManager) mContext.getSystemService(Context.USER_SERVICE)).isAdminUser()
- && !Utils.isWifiOnly(mContext);
- }
-
- @Override
public String getPreferenceKey() {
return KEY_SIM_STATUS;
}
diff --git a/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java b/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java
index 280098d..2fb538e 100644
--- a/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java
+++ b/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java
@@ -94,7 +94,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
AmbientDisplaySettings.class.getName(), KEY_ALWAYS_ON,
mContext.getString(R.string.ambient_display_screen_title));
diff --git a/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java b/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java
index c1af133..68a21ce 100644
--- a/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java
+++ b/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java
@@ -13,6 +13,9 @@
*/
package com.android.settings.display;
+import static android.provider.Settings.Secure.DOZE_ENABLED;
+import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.ACTION_AMBIENT_DISPLAY;
+
import android.content.Context;
import android.content.Intent;
import android.os.UserHandle;
@@ -30,9 +33,6 @@
import com.android.settings.search.ResultPayload;
import com.android.settingslib.core.AbstractPreferenceController;
-import static android.provider.Settings.Secure.DOZE_ENABLED;
-import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.ACTION_AMBIENT_DISPLAY;
-
public class AmbientDisplayNotificationsPreferenceController extends
AbstractPreferenceController implements PreferenceControllerMixin,
Preference.OnPreferenceChangeListener {
@@ -86,7 +86,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
AmbientDisplaySettings.class.getName(), KEY_AMBIENT_DISPLAY_NOTIFICATIONS,
mContext.getString(R.string.ambient_display_screen_title));
diff --git a/src/com/android/settings/display/AutoBrightnessPreferenceController.java b/src/com/android/settings/display/AutoBrightnessPreferenceController.java
index e74a1a0..f242022 100644
--- a/src/com/android/settings/display/AutoBrightnessPreferenceController.java
+++ b/src/com/android/settings/display/AutoBrightnessPreferenceController.java
@@ -73,7 +73,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
DisplaySettings.class.getName(), mAutoBrightnessKey,
mContext.getString(R.string.display_settings));
diff --git a/src/com/android/settings/display/ColorModePreferenceController.java b/src/com/android/settings/display/ColorModePreferenceController.java
index 2d669d0..2ab2ec9 100644
--- a/src/com/android/settings/display/ColorModePreferenceController.java
+++ b/src/com/android/settings/display/ColorModePreferenceController.java
@@ -18,36 +18,24 @@
import android.os.Parcel;
import android.os.RemoteException;
import android.os.ServiceManager;
-import android.os.SystemProperties;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.TwoStatePreference;
import android.util.Log;
+
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.AbstractPreferenceController;
public class ColorModePreferenceController extends AbstractPreferenceController implements
- PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
+ PreferenceControllerMixin {
private static final String TAG = "ColorModePreference";
-
private static final String KEY_COLOR_MODE = "color_mode";
- @VisibleForTesting
- static final float COLOR_SATURATION_DEFAULT = 1.0f;
- @VisibleForTesting
- static final float COLOR_SATURATION_VIVID = 1.1f;
+ private static final int SURFACE_FLINGER_TRANSACTION_QUERY_WIDE_COLOR = 1024;
- private static final int SURFACE_FLINGER_TRANSACTION_SATURATION = 1022;
- @VisibleForTesting
- static final String PERSISTENT_PROPERTY_SATURATION = "persist.sys.sf.color_saturation";
-
- private final IBinder mSurfaceFlinger;
private final ConfigurationWrapper mConfigWrapper;
public ColorModePreferenceController(Context context) {
super(context);
- mSurfaceFlinger = ServiceManager.getService("SurfaceFlinger");
- mConfigWrapper = new ConfigurationWrapper(context);
+ mConfigWrapper = new ConfigurationWrapper();
}
@Override
@@ -56,64 +44,35 @@
}
@Override
- public void updateState(Preference preference) {
- TwoStatePreference colorMode = (TwoStatePreference) preference;
- colorMode.setChecked(getSaturationValue() > 1.0f);
- }
-
- @Override
public boolean isAvailable() {
return mConfigWrapper.isScreenWideColorGamut();
}
- @Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- float saturation = (boolean) newValue
- ? COLOR_SATURATION_VIVID : COLOR_SATURATION_DEFAULT;
-
- SystemProperties.set(PERSISTENT_PROPERTY_SATURATION, Float.toString(saturation));
- applySaturation(saturation);
-
- return true;
- }
-
- /**
- * Propagates the provided saturation to the SurfaceFlinger.
- */
- private void applySaturation(float saturation) {
- if (mSurfaceFlinger != null) {
- final Parcel data = Parcel.obtain();
- data.writeInterfaceToken("android.ui.ISurfaceComposer");
- data.writeFloat(saturation);
- try {
- mSurfaceFlinger.transact(SURFACE_FLINGER_TRANSACTION_SATURATION, data, null, 0);
- } catch (RemoteException ex) {
- Log.e(TAG, "Failed to set saturation", ex);
- } finally {
- data.recycle();
- }
- }
- }
-
- private static float getSaturationValue() {
- try {
- return Float.parseFloat(SystemProperties.get(
- PERSISTENT_PROPERTY_SATURATION, Float.toString(COLOR_SATURATION_DEFAULT)));
- } catch (NumberFormatException e) {
- return COLOR_SATURATION_DEFAULT;
- }
- }
-
@VisibleForTesting
static class ConfigurationWrapper {
- private final Context mContext;
+ private final IBinder mSurfaceFlinger;
- ConfigurationWrapper(Context context) {
- mContext = context;
+ ConfigurationWrapper() {
+ mSurfaceFlinger = ServiceManager.getService("SurfaceFlinger");
}
boolean isScreenWideColorGamut() {
- return mContext.getResources().getConfiguration().isScreenWideColorGamut();
+ if (mSurfaceFlinger != null) {
+ final Parcel data = Parcel.obtain();
+ final Parcel reply = Parcel.obtain();
+ data.writeInterfaceToken("android.ui.ISurfaceComposer");
+ try {
+ mSurfaceFlinger.transact(SURFACE_FLINGER_TRANSACTION_QUERY_WIDE_COLOR,
+ data, reply, 0);
+ return reply.readBoolean();
+ } catch (RemoteException ex) {
+ Log.e(TAG, "Failed to query wide color support", ex);
+ } finally {
+ data.recycle();
+ reply.recycle();
+ }
+ }
+ return false;
}
}
}
diff --git a/src/com/android/settings/display/ColorModePreferenceFragment.java b/src/com/android/settings/display/ColorModePreferenceFragment.java
new file mode 100644
index 0000000..7c8b841
--- /dev/null
+++ b/src/com/android/settings/display/ColorModePreferenceFragment.java
@@ -0,0 +1,207 @@
+/*
+ * 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.display;
+
+import android.app.ActivityManager;
+import android.app.IActivityManager;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.os.IBinder;
+import android.os.Parcel;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.SystemProperties;
+import android.support.annotation.VisibleForTesting;
+import android.util.Log;
+
+import com.android.internal.logging.nano.MetricsProto;
+
+import com.android.settings.R;
+import com.android.settings.widget.RadioButtonPickerFragment;
+
+import java.util.Arrays;
+import java.util.List;
+
+@SuppressWarnings("WeakerAccess")
+public class ColorModePreferenceFragment extends RadioButtonPickerFragment {
+ private static final String TAG = "ColorModePreferenceFragment";
+
+ @VisibleForTesting
+ static final float COLOR_SATURATION_NATURAL = 1.0f;
+ @VisibleForTesting
+ static final float COLOR_SATURATION_BOOSTED = 1.1f;
+
+ private static final int SURFACE_FLINGER_TRANSACTION_SATURATION = 1022;
+ private static final int SURFACE_FLINGER_TRANSACTION_NATIVE_MODE = 1023;
+
+ @VisibleForTesting
+ static final String PERSISTENT_PROPERTY_SATURATION = "persist.sys.sf.color_saturation";
+ @VisibleForTesting
+ static final String PERSISTENT_PROPERTY_NATIVE_MODE = "persist.sys.sf.native_mode";
+
+ @VisibleForTesting
+ static final String KEY_COLOR_MODE_NATURAL = "color_mode_natural";
+ @VisibleForTesting
+ static final String KEY_COLOR_MODE_BOOSTED = "color_mode_boosted";
+ @VisibleForTesting
+ static final String KEY_COLOR_MODE_SATURATED = "color_mode_saturated";
+
+ private IBinder mSurfaceFlinger;
+ private IActivityManager mActivityManager;
+
+ @Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
+ mSurfaceFlinger = ServiceManager.getService("SurfaceFlinger");
+ mActivityManager = ActivityManager.getService();
+ }
+
+ @Override
+ protected List<? extends CandidateInfo> getCandidates() {
+ Context c = getContext();
+ return Arrays.asList(
+ new ColorModeCandidateInfo(c.getString(R.string.color_mode_option_natural),
+ KEY_COLOR_MODE_NATURAL),
+ new ColorModeCandidateInfo(c.getString(R.string.color_mode_option_boosted),
+ KEY_COLOR_MODE_BOOSTED),
+ new ColorModeCandidateInfo(c.getString(R.string.color_mode_option_saturated),
+ KEY_COLOR_MODE_SATURATED)
+ );
+ }
+
+ @Override
+ protected String getDefaultKey() {
+ if (isNativeModeEnabled()) {
+ return KEY_COLOR_MODE_SATURATED;
+ }
+ if (getSaturationValue() > COLOR_SATURATION_NATURAL) {
+ return KEY_COLOR_MODE_BOOSTED;
+ }
+ return KEY_COLOR_MODE_NATURAL;
+ }
+
+ @Override
+ protected boolean setDefaultKey(String key) {
+ switch (key) {
+ case KEY_COLOR_MODE_NATURAL:
+ applySaturation(COLOR_SATURATION_NATURAL);
+ setNativeMode(false);
+ break;
+ case KEY_COLOR_MODE_BOOSTED:
+ applySaturation(COLOR_SATURATION_BOOSTED);
+ setNativeMode(false);
+ break;
+ case KEY_COLOR_MODE_SATURATED:
+ applySaturation(COLOR_SATURATION_NATURAL);
+ setNativeMode(true);
+ break;
+ }
+
+ updateConfiguration();
+
+ return true;
+ }
+
+ @VisibleForTesting
+ void updateConfiguration() {
+ try {
+ mActivityManager.updateConfiguration(null);
+ } catch (RemoteException e) {
+ Log.d(TAG, "Could not update configuration", e);
+ }
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return MetricsProto.MetricsEvent.COLOR_MODE_SETTINGS;
+ }
+
+ /**
+ * Propagates the provided saturation to the SurfaceFlinger.
+ */
+ private void applySaturation(float saturation) {
+ SystemProperties.set(PERSISTENT_PROPERTY_SATURATION, Float.toString(saturation));
+ if (mSurfaceFlinger != null) {
+ final Parcel data = Parcel.obtain();
+ data.writeInterfaceToken("android.ui.ISurfaceComposer");
+ data.writeFloat(saturation);
+ try {
+ mSurfaceFlinger.transact(SURFACE_FLINGER_TRANSACTION_SATURATION, data, null, 0);
+ } catch (RemoteException ex) {
+ Log.e(TAG, "Failed to set saturation", ex);
+ } finally {
+ data.recycle();
+ }
+ }
+ }
+
+ private static float getSaturationValue() {
+ try {
+ return Float.parseFloat(SystemProperties.get(
+ PERSISTENT_PROPERTY_SATURATION, Float.toString(COLOR_SATURATION_NATURAL)));
+ } catch (NumberFormatException e) {
+ return COLOR_SATURATION_NATURAL;
+ }
+ }
+
+ /**
+ * Toggles native mode on/off in SurfaceFlinger.
+ */
+ private void setNativeMode(boolean enabled) {
+ SystemProperties.set(PERSISTENT_PROPERTY_NATIVE_MODE, enabled ? "1" : "0");
+ if (mSurfaceFlinger != null) {
+ final Parcel data = Parcel.obtain();
+ data.writeInterfaceToken("android.ui.ISurfaceComposer");
+ data.writeInt(enabled ? 1 : 0);
+ try {
+ mSurfaceFlinger.transact(SURFACE_FLINGER_TRANSACTION_NATIVE_MODE, data, null, 0);
+ } catch (RemoteException ex) {
+ Log.e(TAG, "Failed to set native mode", ex);
+ } finally {
+ data.recycle();
+ }
+ }
+ }
+
+ private static boolean isNativeModeEnabled() {
+ return SystemProperties.getBoolean(PERSISTENT_PROPERTY_NATIVE_MODE, false);
+ }
+
+ @VisibleForTesting
+ static class ColorModeCandidateInfo extends CandidateInfo {
+ private final CharSequence mLabel;
+ private final String mKey;
+
+ ColorModeCandidateInfo(CharSequence label, String key) {
+ super(true);
+ mLabel = label;
+ mKey = key;
+ }
+
+ @Override
+ public CharSequence loadLabel() {
+ return mLabel;
+ }
+
+ @Override
+ public Drawable loadIcon() {
+ return null;
+ }
+
+ @Override
+ public String getKey() {
+ return mKey;
+ }
+ }
+}
diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
index e9a2250..d44f9f8 100644
--- a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
+++ b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
@@ -38,8 +38,10 @@
import android.util.TimeUtils;
import android.util.TypedValue;
import android.view.View;
+
import com.android.settings.R;
import com.android.settings.Utils;
+
import libcore.icu.LocaleData;
import java.util.ArrayList;
@@ -577,7 +579,7 @@
|| (aggrStates&(HistoryItem.STATE_WIFI_FULL_LOCK_FLAG
|HistoryItem.STATE_WIFI_MULTICAST_ON_FLAG
|HistoryItem.STATE_WIFI_SCAN_FLAG)) != 0;
- if (!com.android.settings.Utils.isWifiOnly(getContext())) {
+ if (!com.android.settingslib.Utils.isWifiOnly(getContext())) {
mHavePhoneSignal = true;
}
if (mHistEnd <= mHistStart) mHistEnd = mHistStart+1;
diff --git a/src/com/android/settings/fuelgauge/BatterySaverSettings.java b/src/com/android/settings/fuelgauge/BatterySaverSettings.java
index 88dab49..f00b952 100644
--- a/src/com/android/settings/fuelgauge/BatterySaverSettings.java
+++ b/src/com/android/settings/fuelgauge/BatterySaverSettings.java
@@ -25,6 +25,7 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.PowerManager;
+import android.provider.SearchIndexableResource;
import android.provider.Settings.Global;
import android.support.annotation.VisibleForTesting;
import android.util.Log;
@@ -38,10 +39,16 @@
import com.android.settings.dashboard.conditional.BatterySaverCondition;
import com.android.settings.dashboard.conditional.ConditionManager;
import com.android.settings.notification.SettingPref;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
import com.android.settings.widget.SwitchBar;
+import java.util.Arrays;
+import java.util.List;
+
public class BatterySaverSettings extends SettingsPreferenceFragment
- implements SwitchBar.OnSwitchChangeListener, BatterySaverReceiver.BatterySaverListener {
+ implements SwitchBar.OnSwitchChangeListener, BatterySaverReceiver.BatterySaverListener,
+ Indexable {
private static final String TAG = "BatterySaverSettings";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
private static final String KEY_TURN_ON_AUTOMATICALLY = "turn_on_automatically";
@@ -89,7 +96,7 @@
protected String getCaption(Resources res, int value) {
if (value > 0 && value < 100) {
return res.getString(R.string.battery_saver_turn_on_automatically_pct,
- Utils.formatPercentage(value));
+ Utils.formatPercentage(value));
}
return res.getString(R.string.battery_saver_turn_on_automatically_never);
}
@@ -219,4 +226,18 @@
}
}
}
+
+ /**
+ * For Search.
+ */
+ public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.battery_saver_settings;
+ return Arrays.asList(sir);
+ }
+ };
}
diff --git a/src/com/android/settings/gestures/AssistGestureSettingsPreferenceController.java b/src/com/android/settings/gestures/AssistGestureSettingsPreferenceController.java
index bf6ee8c..1ecba0d 100644
--- a/src/com/android/settings/gestures/AssistGestureSettingsPreferenceController.java
+++ b/src/com/android/settings/gestures/AssistGestureSettingsPreferenceController.java
@@ -162,7 +162,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
AssistGestureSettings.class.getName(), mAssistGesturePrefKey,
mContext.getString(R.string.display_settings));
diff --git a/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java b/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java
index bee9893..049ee18 100644
--- a/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java
+++ b/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java
@@ -89,7 +89,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
DoubleTapPowerSettings.class.getName(), mDoubleTapPowerKey,
mContext.getString(R.string.display_settings));
diff --git a/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java b/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java
index 9ec06ae..deffa97 100644
--- a/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java
+++ b/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java
@@ -89,7 +89,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
DoubleTapScreenSettings.class.getName(), mDoubleTapScreenPrefKey,
mContext.getString(R.string.display_settings));
diff --git a/src/com/android/settings/gestures/PickupGesturePreferenceController.java b/src/com/android/settings/gestures/PickupGesturePreferenceController.java
index e1b444c..314cbc3 100644
--- a/src/com/android/settings/gestures/PickupGesturePreferenceController.java
+++ b/src/com/android/settings/gestures/PickupGesturePreferenceController.java
@@ -95,7 +95,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
PickupGestureSettings.class.getName(), mPickUpPrefKey,
mContext.getString(R.string.display_settings));
diff --git a/src/com/android/settings/location/LocationPreferenceController.java b/src/com/android/settings/location/LocationPreferenceController.java
index 225100f..9b68848 100644
--- a/src/com/android/settings/location/LocationPreferenceController.java
+++ b/src/com/android/settings/location/LocationPreferenceController.java
@@ -127,7 +127,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
LocationSettings.class.getName(), KEY_LOCATION,
mContext.getString(R.string.location_settings_title));
diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java
index d66b310..39d5f6d 100644
--- a/src/com/android/settings/location/LocationSettings.java
+++ b/src/com/android/settings/location/LocationSettings.java
@@ -27,6 +27,7 @@
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
+import android.provider.SearchIndexableResource;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceCategory;
import android.support.v7.preference.PreferenceGroup;
@@ -40,6 +41,8 @@
import com.android.settings.Utils;
import com.android.settings.applications.InstalledAppDetails;
import com.android.settings.dashboard.SummaryLoader;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
import com.android.settings.widget.SwitchBar;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedPreference;
@@ -47,6 +50,7 @@
import com.android.settingslib.location.RecentLocationApps;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -77,7 +81,7 @@
* implementation.
*/
public class LocationSettings extends LocationSettingsBase
- implements SwitchBar.OnSwitchChangeListener {
+ implements SwitchBar.OnSwitchChangeListener, Indexable {
private static final String TAG = "LocationSettings";
@@ -455,4 +459,18 @@
return new SummaryProvider(activity, summaryLoader);
}
};
+
+ /**
+ * For Search.
+ */
+ public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.location_settings;
+ return Arrays.asList(sir);
+ }
+ };
}
diff --git a/src/com/android/settings/location/ScanningSettings.java b/src/com/android/settings/location/ScanningSettings.java
index fd5a7fd..5c34b62 100644
--- a/src/com/android/settings/location/ScanningSettings.java
+++ b/src/com/android/settings/location/ScanningSettings.java
@@ -16,6 +16,8 @@
package com.android.settings.location;
+import android.content.Context;
+import android.provider.SearchIndexableResource;
import android.provider.Settings.Global;
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;
@@ -24,11 +26,16 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
+
+import java.util.Arrays;
+import java.util.List;
/**
* A page that configures the background scanning settings for Wi-Fi and Bluetooth.
*/
-public class ScanningSettings extends SettingsPreferenceFragment {
+public class ScanningSettings extends SettingsPreferenceFragment implements Indexable {
private static final String KEY_WIFI_SCAN_ALWAYS_AVAILABLE = "wifi_always_scanning";
private static final String KEY_BLUETOOTH_SCAN_ALWAYS_AVAILABLE = "bluetooth_always_scanning";
@@ -56,13 +63,13 @@
private void initPreferences() {
final SwitchPreference wifiScanAlwaysAvailable =
- (SwitchPreference) findPreference(KEY_WIFI_SCAN_ALWAYS_AVAILABLE);
+ (SwitchPreference) findPreference(KEY_WIFI_SCAN_ALWAYS_AVAILABLE);
wifiScanAlwaysAvailable.setChecked(Global.getInt(getContentResolver(),
- Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1);
+ Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1);
final SwitchPreference bleScanAlwaysAvailable =
- (SwitchPreference) findPreference(KEY_BLUETOOTH_SCAN_ALWAYS_AVAILABLE);
+ (SwitchPreference) findPreference(KEY_BLUETOOTH_SCAN_ALWAYS_AVAILABLE);
bleScanAlwaysAvailable.setChecked(Global.getInt(getContentResolver(),
- Global.BLE_SCAN_ALWAYS_AVAILABLE, 0) == 1);
+ Global.BLE_SCAN_ALWAYS_AVAILABLE, 0) == 1);
}
@Override
@@ -81,4 +88,18 @@
}
return true;
}
+
+ /**
+ * For Search.
+ */
+ public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.location_scanning;
+ return Arrays.asList(sir);
+ }
+ };
}
diff --git a/src/com/android/settings/network/MobileNetworkPreferenceController.java b/src/com/android/settings/network/MobileNetworkPreferenceController.java
index 1199400..1670b0d 100644
--- a/src/com/android/settings/network/MobileNetworkPreferenceController.java
+++ b/src/com/android/settings/network/MobileNetworkPreferenceController.java
@@ -15,6 +15,9 @@
*/
package com.android.settings.network;
+import static android.os.UserHandle.myUserId;
+import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
+
import android.content.Context;
import android.os.UserManager;
import android.support.annotation.VisibleForTesting;
@@ -24,17 +27,14 @@
import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
-import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.wrapper.RestrictedLockUtilsWrapper;
+import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume;
-import static android.os.UserHandle.myUserId;
-import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
-
public class MobileNetworkPreferenceController extends AbstractPreferenceController
implements PreferenceControllerMixin, LifecycleObserver, OnResume, OnPause {
diff --git a/src/com/android/settings/network/MobilePlanPreferenceController.java b/src/com/android/settings/network/MobilePlanPreferenceController.java
index d5ff924..6556113 100644
--- a/src/com/android/settings/network/MobilePlanPreferenceController.java
+++ b/src/com/android/settings/network/MobilePlanPreferenceController.java
@@ -15,6 +15,13 @@
*/
package com.android.settings.network;
+import static android.content.Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT;
+import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
+import static android.os.UserHandle.myUserId;
+import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
+
+import static com.android.settingslib.RestrictedLockUtils.hasBaseUserRestriction;
+
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
@@ -30,8 +37,8 @@
import android.util.Log;
import com.android.settings.R;
-import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnCreate;
@@ -39,12 +46,6 @@
import java.util.List;
-import static android.content.Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT;
-import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
-import static android.os.UserHandle.myUserId;
-import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
-import static com.android.settingslib.RestrictedLockUtils.hasBaseUserRestriction;
-
public class MobilePlanPreferenceController extends AbstractPreferenceController
implements PreferenceControllerMixin, LifecycleObserver, OnCreate, OnSaveInstanceState {
diff --git a/src/com/android/settings/notification/BadgingNotificationPreferenceController.java b/src/com/android/settings/notification/BadgingNotificationPreferenceController.java
index 94eccf9..18efd43 100644
--- a/src/com/android/settings/notification/BadgingNotificationPreferenceController.java
+++ b/src/com/android/settings/notification/BadgingNotificationPreferenceController.java
@@ -133,7 +133,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
ConfigureNotificationSettings.class.getName(), KEY_NOTIFICATION_BADGING,
mContext.getString(R.string.configure_notification_settings));
diff --git a/src/com/android/settings/notification/ZenModeBehaviorSettings.java b/src/com/android/settings/notification/ZenModeBehaviorSettings.java
index 1b5e69f..d03b015 100644
--- a/src/com/android/settings/notification/ZenModeBehaviorSettings.java
+++ b/src/com/android/settings/notification/ZenModeBehaviorSettings.java
@@ -18,7 +18,9 @@
import android.app.NotificationManager;
import android.app.NotificationManager.Policy;
+import android.content.Context;
import android.os.Bundle;
+import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.service.notification.ZenModeConfig;
import android.support.v14.preference.SwitchPreference;
@@ -30,8 +32,13 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
-public class ZenModeBehaviorSettings extends ZenModeSettingsBase {
+import java.util.Arrays;
+import java.util.List;
+
+public class ZenModeBehaviorSettings extends ZenModeSettingsBase implements Indexable {
private static final String KEY_ALARMS = "zen_mode_alarms";
private static final String KEY_MEDIA = "zen_mode_media";
private static final String KEY_REMINDERS = "zen_mode_reminders";
@@ -303,4 +310,18 @@
NotificationManager.from(mContext).setNotificationPolicy(mPolicy);
}
+ /**
+ * For Search.
+ */
+ public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.zen_mode_behavior_settings;
+ return Arrays.asList(sir);
+ }
+ };
+
}
diff --git a/src/com/android/settings/notification/ZenModeSettings.java b/src/com/android/settings/notification/ZenModeSettings.java
index f112c1b..7f9a7c3 100644
--- a/src/com/android/settings/notification/ZenModeSettings.java
+++ b/src/com/android/settings/notification/ZenModeSettings.java
@@ -29,6 +29,7 @@
import android.content.pm.ServiceInfo;
import android.content.res.Resources;
import android.os.Bundle;
+import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.service.notification.ConditionProviderService;
import android.service.notification.ZenModeConfig;
@@ -41,6 +42,8 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
import com.android.settings.utils.ManagedServiceSettings;
import com.android.settings.utils.ZenServiceListing;
import com.android.settingslib.TwoTargetPreference;
@@ -52,7 +55,7 @@
import java.util.Map;
import java.util.Map.Entry;
-public class ZenModeSettings extends ZenModeSettingsBase {
+public class ZenModeSettings extends ZenModeSettingsBase implements Indexable {
public static final String KEY_VISUAL_SETTINGS = "zen_mode_visual_interruptions_settings";
private static final String KEY_BEHAVIOR_SETTINGS = "zen_mode_behavior_settings";
@@ -499,4 +502,17 @@
return type + rule.getName().toString();
}
};
+ /**
+ * For Search.
+ */
+ public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.zen_mode_settings;
+ return Arrays.asList(sir);
+ }
+ };
}
diff --git a/src/com/android/settings/notification/ZenModeVisualInterruptionSettings.java b/src/com/android/settings/notification/ZenModeVisualInterruptionSettings.java
index aa27848..474992c 100644
--- a/src/com/android/settings/notification/ZenModeVisualInterruptionSettings.java
+++ b/src/com/android/settings/notification/ZenModeVisualInterruptionSettings.java
@@ -18,7 +18,9 @@
import android.app.NotificationManager;
import android.app.NotificationManager.Policy;
+import android.content.Context;
import android.os.Bundle;
+import android.provider.SearchIndexableResource;
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
@@ -26,8 +28,13 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
-public class ZenModeVisualInterruptionSettings extends ZenModeSettingsBase {
+import java.util.Arrays;
+import java.util.List;
+
+public class ZenModeVisualInterruptionSettings extends ZenModeSettingsBase implements Indexable {
private static final String KEY_SCREEN_OFF = "screenOff";
private static final String KEY_SCREEN_ON = "screenOn";
@@ -122,4 +129,18 @@
suppressedVisualEffects);
NotificationManager.from(mContext).setNotificationPolicy(mPolicy);
}
+
+ /**
+ * For Search.
+ */
+ public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.zen_mode_visual_interruptions_settings;
+ return Arrays.asList(sir);
+ }
+ };
}
diff --git a/src/com/android/settings/search/AccessibilityServiceResultLoader.java b/src/com/android/settings/search/AccessibilityServiceResultLoader.java
index 64cceb7..345ab30 100644
--- a/src/com/android/settings/search/AccessibilityServiceResultLoader.java
+++ b/src/com/android/settings/search/AccessibilityServiceResultLoader.java
@@ -102,7 +102,7 @@
}
final String componentName = new ComponentName(serviceInfo.packageName,
serviceInfo.name).flattenToString();
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(context,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(context,
AccessibilitySettings.class.getName(), componentName, screenTitle);
results.add(new SearchResult.Builder()
diff --git a/src/com/android/settings/search/DatabaseIndexingUtils.java b/src/com/android/settings/search/DatabaseIndexingUtils.java
index ce58256..8d63ea5 100644
--- a/src/com/android/settings/search/DatabaseIndexingUtils.java
+++ b/src/com/android/settings/search/DatabaseIndexingUtils.java
@@ -46,21 +46,28 @@
"SEARCH_INDEX_DATA_PROVIDER";
/**
- * Builds intent into a subsetting.
+ * Builds intent that launches the search destination as a sub-setting.
*/
- public static Intent buildSubsettingIntent(Context context, String className, String key,
+ public static Intent buildSearchResultPageIntent(Context context, String className, String key,
String screenTitle) {
+ return buildSearchResultPageIntent(context, className, key, screenTitle,
+ MetricsProto.MetricsEvent.DASHBOARD_SEARCH_RESULTS);
+ }
+
+ public static Intent buildSearchResultPageIntent(Context context, String className, String key,
+ String screenTitle, int sourceMetricsCategory) {
final Bundle args = new Bundle();
args.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key);
- return Utils.onBuildStartFragmentIntent(context,
- className, args, null, 0, screenTitle, false,
- MetricsProto.MetricsEvent.DASHBOARD_SEARCH_RESULTS);
+ final Intent searchDestination = Utils.onBuildStartFragmentIntent(context,
+ className, args, null, 0, screenTitle, false, sourceMetricsCategory);
+ searchDestination.putExtra(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key);
+ searchDestination.setClass(context, SearchResultTrampoline.class);
+ return searchDestination;
}
/**
* @param className which wil provide the map between from {@link Uri}s to
- * {@link PreferenceControllerMixin}
- * @param context
+ * {@link PreferenceControllerMixin}
* @return A map between {@link Uri}s and {@link PreferenceControllerMixin}s to get the payload
* types for Settings.
*/
@@ -85,7 +92,7 @@
List<AbstractPreferenceController> controllers =
provider.getPreferenceControllers(context);
- if (controllers == null ) {
+ if (controllers == null) {
return null;
}
@@ -106,7 +113,7 @@
/**
* @param uriMap Map between the {@link PreferenceControllerMixin} keys
* and the controllers themselves.
- * @param key The look-up key
+ * @param key The look-up key
* @return The Payload from the {@link PreferenceControllerMixin} specified by the key,
* if it exists. Otherwise null.
*/
diff --git a/src/com/android/settings/search/InputDeviceResultLoader.java b/src/com/android/settings/search/InputDeviceResultLoader.java
index 61e1ad1..e5e6553 100644
--- a/src/com/android/settings/search/InputDeviceResultLoader.java
+++ b/src/com/android/settings/search/InputDeviceResultLoader.java
@@ -107,7 +107,7 @@
: context.getString(R.string.keyboard_layout_default_label);
final String key = deviceName;
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(context,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(context,
PHYSICAL_KEYBOARD_FRAGMENT, key, screenTitle);
results.add(new SearchResult.Builder()
.setTitle(deviceName)
@@ -140,7 +140,7 @@
final ServiceInfo serviceInfo = info.getServiceInfo();
final String key = new ComponentName(serviceInfo.packageName, serviceInfo.name)
.flattenToString();
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(context,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(context,
VIRTUAL_KEYBOARD_FRAGMENT, key, screenTitle);
results.add(new SearchResult.Builder()
.setTitle(title)
diff --git a/src/com/android/settings/search/IntentSearchViewHolder.java b/src/com/android/settings/search/IntentSearchViewHolder.java
index 711d08e..8f6aa2c 100644
--- a/src/com/android/settings/search/IntentSearchViewHolder.java
+++ b/src/com/android/settings/search/IntentSearchViewHolder.java
@@ -20,6 +20,7 @@
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.UserHandle;
+import android.support.annotation.VisibleForTesting;
import android.util.Log;
import android.view.View;
@@ -34,6 +35,8 @@
public class IntentSearchViewHolder extends SearchViewHolder {
private static final String TAG = "IntentSearchViewHolder";
+ @VisibleForTesting
+ static final int REQUEST_CODE_NO_OP = 0;
public IntentSearchViewHolder(View view) {
super(view);
@@ -60,7 +63,7 @@
final PackageManager pm = fragment.getActivity().getPackageManager();
final List<ResolveInfo> info = pm.queryIntentActivities(intent, 0 /* flags */);
if (info != null && !info.isEmpty()) {
- fragment.startActivity(intent);
+ fragment.startActivityForResult(intent, REQUEST_CODE_NO_OP);
} else {
Log.e(TAG, "Cannot launch search result, title: "
+ result.title + ", " + intent);
diff --git a/src/com/android/settings/search/SearchFeatureProvider.java b/src/com/android/settings/search/SearchFeatureProvider.java
index 956808d..4df8203 100644
--- a/src/com/android/settings/search/SearchFeatureProvider.java
+++ b/src/com/android/settings/search/SearchFeatureProvider.java
@@ -16,6 +16,8 @@
*/
package com.android.settings.search;
+import android.annotation.NonNull;
+import android.content.ComponentName;
import android.content.Context;
import android.view.View;
@@ -33,6 +35,15 @@
boolean isEnabled(Context context);
/**
+ * Ensures the caller has necessary privilege to launch search result page.
+ *
+ * @throws IllegalArgumentException when caller is null
+ * @throws SecurityException when caller is not allowed to launch search result page
+ */
+ void verifyLaunchSearchResultPageCaller(Context context, @NonNull ComponentName caller)
+ throws SecurityException, IllegalArgumentException;
+
+ /**
* Returns a new loader to search in index database.
*/
DatabaseResultLoader getDatabaseSearchLoader(Context context, String query);
diff --git a/src/com/android/settings/search/SearchFeatureProviderImpl.java b/src/com/android/settings/search/SearchFeatureProviderImpl.java
index 420b847..8c4883e 100644
--- a/src/com/android/settings/search/SearchFeatureProviderImpl.java
+++ b/src/com/android/settings/search/SearchFeatureProviderImpl.java
@@ -17,6 +17,7 @@
package com.android.settings.search;
+import android.content.ComponentName;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
@@ -43,6 +44,18 @@
}
@Override
+ public void verifyLaunchSearchResultPageCaller(Context context, ComponentName caller) {
+ if (caller == null) {
+ throw new IllegalArgumentException("ExternalSettingsTrampoline intents "
+ + "must be called with startActivityForResult");
+ }
+ final String packageName = caller.getPackageName();
+ if (!TextUtils.equals(packageName, context.getPackageName())) {
+ throw new SecurityException("Only Settings app can launch search result page");
+ }
+ }
+
+ @Override
public DatabaseResultLoader getDatabaseSearchLoader(Context context, String query) {
return new DatabaseResultLoader(context, cleanQuery(query), getSiteMapManager());
}
diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java
index 1774615..7252e2d 100644
--- a/src/com/android/settings/search/SearchIndexableResources.java
+++ b/src/com/android/settings/search/SearchIndexableResources.java
@@ -17,7 +17,6 @@
package com.android.settings.search;
import android.provider.SearchIndexableResource;
-import android.support.annotation.DrawableRes;
import android.support.annotation.VisibleForTesting;
import android.support.annotation.XmlRes;
import android.text.TextUtils;
@@ -27,7 +26,6 @@
import com.android.settings.DisplaySettings;
import com.android.settings.EncryptionAndCredential;
import com.android.settings.LegalSettings;
-import com.android.settings.R;
import com.android.settings.ScreenPinningSettings;
import com.android.settings.SecuritySettings;
import com.android.settings.accessibility.AccessibilitySettings;
@@ -42,7 +40,6 @@
import com.android.settings.backup.BackupSettingsFragment;
import com.android.settings.bluetooth.BluetoothSettings;
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
-import com.android.settings.datausage.DataPlanUsageSummary;
import com.android.settings.datausage.DataUsageMeteredSettings;
import com.android.settings.datausage.DataUsageSummary;
import com.android.settings.deletionhelper.AutomaticStorageManagerSettings;
@@ -104,23 +101,21 @@
public static final String SUBSETTING_TARGET_PACKAGE = "subsetting_target_package";
@XmlRes
- public static final int NO_DATA_RES_ID = 0;
+ public static final int NO_RES_ID = 0;
@VisibleForTesting
static final HashMap<String, SearchIndexableResource> sResMap = new HashMap<>();
@VisibleForTesting
- static void addIndex(Class<?> indexClass, @XmlRes int xmlResId,
- @DrawableRes int iconResId) {
- addIndex(indexClass, xmlResId, iconResId, null /* targetAction */);
+ static void addIndex(Class<?> indexClass) {
+ addIndex(indexClass, null /* targetAction */);
}
@VisibleForTesting
- static void addIndex(Class<?> indexClass, @XmlRes int xmlResId,
- @DrawableRes int iconResId, String targetAction) {
+ static void addIndex(Class<?> indexClass, String targetAction) {
String className = indexClass.getName();
- SearchIndexableResource resource =
- new SearchIndexableResource(0, xmlResId, className, iconResId);
+ SearchIndexableResource resource = new SearchIndexableResource(
+ 0 /* rank */, NO_RES_ID, className, NO_RES_ID);
if (!TextUtils.isEmpty(targetAction)) {
resource.intentAction = targetAction;
@@ -131,98 +126,73 @@
}
static {
- addIndex(WifiSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_wireless);
- addIndex(NetworkDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_wireless);
- addIndex(ConfigureWifiSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_wireless);
- addIndex(SavedAccessPointsWifiSettings.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_wireless);
- addIndex(BluetoothSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_bluetooth);
- addIndex(SimSettings.class, NO_DATA_RES_ID, R.drawable.ic_sim_sd);
- addIndex(DataPlanUsageSummary.class, NO_DATA_RES_ID, R.drawable.ic_settings_data_usage);
- addIndex(DataUsageSummary.class, NO_DATA_RES_ID, R.drawable.ic_settings_data_usage);
- addIndex(DataUsageMeteredSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_data_usage);
- addIndex(ScreenZoomSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display);
- addIndex(DisplaySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display,
- "android.settings.DISPLAY_SETTINGS");
- addIndex(AmbientDisplaySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display);
- addIndex(WallpaperTypeSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display);
- addIndex(ConfigureNotificationSettings.class,
- R.xml.configure_notification_settings, R.drawable.ic_settings_notifications);
- addIndex(AppAndNotificationDashboardFragment.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_applications);
- addIndex(SoundSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_sound,
- "android.settings.SOUND_SETTINGS");
- addIndex(ZenModeSettings.class,
- R.xml.zen_mode_settings, R.drawable.ic_settings_notifications);
- addIndex(ZenModeBehaviorSettings.class,
- R.xml.zen_mode_behavior_settings, R.drawable.ic_settings_notifications);
- addIndex(StorageSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_storage);
- addIndex(PowerUsageSummary.class,
- R.xml.power_usage_summary, R.drawable.ic_settings_battery);
- addIndex(PowerUsageAdvanced.class, NO_DATA_RES_ID, R.drawable.ic_settings_battery);
- addIndex(BatterySaverSettings.class,
- R.xml.battery_saver_settings, R.drawable.ic_settings_battery);
- addIndex(DefaultAppSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_applications);
- addIndex(ManageAssist.class, NO_DATA_RES_ID, R.drawable.ic_settings_applications);
- addIndex(SpecialAccessSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_applications);
- addIndex(UserSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_multiuser);
- addIndex(AssistGestureSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_gestures);
- addIndex(PickupGestureSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_gestures);
- addIndex(DoubleTapScreenSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_gestures);
- addIndex(DoubleTapPowerSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_gestures);
- addIndex(DoubleTwistGestureSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_gestures);
- addIndex(SwipeToNotificationSettings.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_gestures);
- addIndex(GestureSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_gestures);
- addIndex(LanguageAndInputSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_language);
- addIndex(LocationSettings.class, R.xml.location_settings, R.drawable.ic_settings_location);
- addIndex(ScanningSettings.class, R.xml.location_scanning, R.drawable.ic_settings_location);
- addIndex(SecuritySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_security);
- addIndex(EncryptionAndCredential.class, NO_DATA_RES_ID, R.drawable.ic_settings_security);
- addIndex(ScreenPinningSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_security);
- addIndex(UserAndAccountDashboardFragment.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_accounts);
- addIndex(VirtualKeyboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language);
- addIndex(AvailableVirtualKeyboardFragment.class,
- NO_DATA_RES_ID, R.drawable.ic_settings_language);
- addIndex(PhysicalKeyboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language);
- addIndex(BackupSettingsActivity.class, NO_DATA_RES_ID, R.drawable.ic_settings_backup);
- addIndex(BackupSettingsFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_backup);
- addIndex(DateTimeSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_date_time);
- addIndex(AccessibilitySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_accessibility);
- addIndex(PrintSettingsFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_print);
- addIndex(DevelopmentSettingsDashboardFragment.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_development);
- addIndex(DeviceInfoSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about);
- addIndex(Status.class, NO_DATA_RES_ID, 0 /* icon */);
- addIndex(LegalSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about);
- addIndex(ZenModeVisualInterruptionSettings.class,
- R.xml.zen_mode_visual_interruptions_settings,
- R.drawable.ic_settings_notifications);
- addIndex(SystemDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_about);
- addIndex(ResetDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_restore);
- addIndex(StorageDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_storage);
- addIndex(ConnectedDeviceDashboardFragment.class, NO_DATA_RES_ID,
- R.drawable.ic_devices_other);
- addIndex(EnterprisePrivacySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about);
- addIndex(PaymentSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_nfc_payment);
- addIndex(TextToSpeechSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_accessibility);
- addIndex(
- TtsEnginePreferenceFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language);
- addIndex(LockscreenDashboardFragment.class, R.xml.security_lockscreen_settings,
- R.drawable.ic_settings_security);
- addIndex(MagnificationPreferenceFragment.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_accessibility);
- addIndex(AccessibilityShortcutPreferenceFragment.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_accessibility);
- addIndex(ChannelImportanceSettings.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_notifications);
- addIndex(DreamSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display);
- addIndex(SupportDashboardActivity.class, NO_DATA_RES_ID, R.drawable.ic_help);
- addIndex(
- AutomaticStorageManagerSettings.class,
- NO_DATA_RES_ID,
- R.drawable.ic_settings_storage);
+ addIndex(WifiSettings.class);
+ addIndex(NetworkDashboardFragment.class);
+ addIndex(ConfigureWifiSettings.class);
+ addIndex(SavedAccessPointsWifiSettings.class);
+ addIndex(BluetoothSettings.class);
+ addIndex(SimSettings.class);
+ addIndex(DataUsageSummary.class);
+ addIndex(DataUsageMeteredSettings.class);
+ addIndex(ScreenZoomSettings.class);
+ addIndex(DisplaySettings.class, "android.settings.DISPLAY_SETTINGS");
+ addIndex(AmbientDisplaySettings.class);
+ addIndex(WallpaperTypeSettings.class);
+ addIndex(AppAndNotificationDashboardFragment.class);
+ addIndex(SoundSettings.class, "android.settings.SOUND_SETTINGS");
+ addIndex(ZenModeSettings.class);
+ addIndex(StorageSettings.class);
+ addIndex(PowerUsageAdvanced.class);
+ addIndex(DefaultAppSettings.class);
+ addIndex(ManageAssist.class);
+ addIndex(SpecialAccessSettings.class);
+ addIndex(UserSettings.class);
+ addIndex(AssistGestureSettings.class);
+ addIndex(PickupGestureSettings.class);
+ addIndex(DoubleTapScreenSettings.class);
+ addIndex(DoubleTapPowerSettings.class);
+ addIndex(DoubleTwistGestureSettings.class);
+ addIndex(SwipeToNotificationSettings.class);
+ addIndex(GestureSettings.class);
+ addIndex(LanguageAndInputSettings.class);
+ addIndex(LocationSettings.class);
+ addIndex(ScanningSettings.class);
+ addIndex(SecuritySettings.class);
+ addIndex(EncryptionAndCredential.class);
+ addIndex(ScreenPinningSettings.class);
+ addIndex(UserAndAccountDashboardFragment.class);
+ addIndex(VirtualKeyboardFragment.class);
+ addIndex(AvailableVirtualKeyboardFragment.class);
+ addIndex(PhysicalKeyboardFragment.class);
+ addIndex(BackupSettingsActivity.class);
+ addIndex(BackupSettingsFragment.class);
+ addIndex(DateTimeSettings.class);
+ addIndex(AccessibilitySettings.class);
+ addIndex(PrintSettingsFragment.class);
+ addIndex(DevelopmentSettingsDashboardFragment.class);
+ addIndex(DeviceInfoSettings.class);
+ addIndex(Status.class);
+ addIndex(LegalSettings.class);
+ addIndex(SystemDashboardFragment.class);
+ addIndex(ResetDashboardFragment.class);
+ addIndex(StorageDashboardFragment.class);
+ addIndex(ConnectedDeviceDashboardFragment.class);
+ addIndex(EnterprisePrivacySettings.class);
+ addIndex(PaymentSettings.class);
+ addIndex(TextToSpeechSettings.class);
+ addIndex(TtsEnginePreferenceFragment.class);
+ addIndex(MagnificationPreferenceFragment.class);
+ addIndex(AccessibilityShortcutPreferenceFragment.class);
+ addIndex(ChannelImportanceSettings.class);
+ addIndex(DreamSettings.class);
+ addIndex(SupportDashboardActivity.class);
+ addIndex(AutomaticStorageManagerSettings.class);
+ addIndex(ConfigureNotificationSettings.class);
+ addIndex(PowerUsageSummary.class);
+ addIndex(BatterySaverSettings.class);
+ addIndex(LockscreenDashboardFragment.class);
+ addIndex(ZenModeBehaviorSettings.class);
+ addIndex(ZenModeVisualInterruptionSettings.class);
}
private SearchIndexableResources() {
diff --git a/src/com/android/settings/search/SearchResultTrampoline.java b/src/com/android/settings/search/SearchResultTrampoline.java
new file mode 100644
index 0000000..3bbe6bd
--- /dev/null
+++ b/src/com/android/settings/search/SearchResultTrampoline.java
@@ -0,0 +1,62 @@
+/*
+ * 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.search;
+
+import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+
+import com.android.settings.SettingsActivity;
+import com.android.settings.SubSettings;
+import com.android.settings.overlay.FeatureFactory;
+
+/**
+ * A trampoline activity that launches setting result page.
+ */
+public class SearchResultTrampoline extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // First make sure caller has privilege to launch a search result page.
+ FeatureFactory.getFactory(this)
+ .getSearchFeatureProvider()
+ .verifyLaunchSearchResultPageCaller(this, getCallingActivity());
+ // Didn't crash, proceed and launch the result as a subsetting.
+ final Intent intent = getIntent();
+
+ // Hack to take EXTRA_FRAGMENT_ARG_KEY from intent and set into
+ // EXTRA_SHOW_FRAGMENT_ARGUMENTS. This is necessary because intent could be from external
+ // caller and args may not persisted.
+ final String settingKey = intent.getStringExtra(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY);
+ final Bundle args = new Bundle();
+ args.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, settingKey);
+ intent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, args);
+
+ // Reroute request to SubSetting.
+ intent.setClass(this /* context */, SubSettings.class)
+ .addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+ startActivity(intent);
+
+ // Done.
+ finish();
+ }
+
+}
diff --git a/src/com/android/settings/search/indexing/IndexData.java b/src/com/android/settings/search/indexing/IndexData.java
index 0e1fa2d..9dad3fe 100644
--- a/src/com/android/settings/search/indexing/IndexData.java
+++ b/src/com/android/settings/search/indexing/IndexData.java
@@ -273,7 +273,7 @@
|| TextUtils.equals(mIntentTargetPackage,
SearchIndexableResources.SUBSETTING_TARGET_PACKAGE)) {
// Action is null, we will launch it as a sub-setting
- intent = DatabaseIndexingUtils.buildSubsettingIntent(context, mClassName, mKey,
+ intent = DatabaseIndexingUtils.buildSearchResultPageIntent(context, mClassName, mKey,
mScreenTitle);
} else {
intent = new Intent(mIntentAction);
diff --git a/src/com/android/settings/search/indexing/IndexDataConverter.java b/src/com/android/settings/search/indexing/IndexDataConverter.java
index 8010db9..2b875c3 100644
--- a/src/com/android/settings/search/indexing/IndexDataConverter.java
+++ b/src/com/android/settings/search/indexing/IndexDataConverter.java
@@ -30,7 +30,6 @@
import android.util.Xml;
import com.android.settings.core.PreferenceControllerMixin;
-
import com.android.settings.search.DatabaseIndexingUtils;
import com.android.settings.search.Indexable;
import com.android.settings.search.ResultPayload;
@@ -44,7 +43,6 @@
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
import java.util.Set;
@@ -310,8 +308,8 @@
} catch (XmlPullParserException e) {
Log.w(LOG_TAG, "XML Error parsing PreferenceScreen: ", e);
} catch (IOException e) {
- Log.w(LOG_TAG, "IO Error parsing PreferenceScreen: " , e);
- } catch (Resources.NotFoundException e ) {
+ Log.w(LOG_TAG, "IO Error parsing PreferenceScreen: ", e);
+ } catch (Resources.NotFoundException e) {
Log.w(LOG_TAG, "Resoucre not found error parsing PreferenceScreen: ", e);
} finally {
if (parser != null) parser.close();
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 9ff2c4f..8ee340a 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -60,7 +60,7 @@
import com.android.settings.ProxySelector;
import com.android.settings.R;
-import com.android.settings.Utils;
+import com.android.settingslib.Utils;
import com.android.settingslib.wifi.AccessPoint;
import java.net.Inet4Address;
diff --git a/tests/robotests/assets/grandfather_not_implementing_indexable b/tests/robotests/assets/grandfather_not_implementing_indexable
index d4a8d2d..091ba12 100644
--- a/tests/robotests/assets/grandfather_not_implementing_indexable
+++ b/tests/robotests/assets/grandfather_not_implementing_indexable
@@ -1,5 +1,4 @@
com.android.settings.location.LocationMode
-com.android.settings.notification.ZenModeVisualInterruptionSettings
com.android.settings.accessibility.ToggleScreenMagnificationPreferenceFragment
com.android.settings.deviceinfo.SimStatus
com.android.settings.deviceinfo.PrivateVolumeForget
@@ -23,18 +22,16 @@
com.android.settings.notification.ChannelNotificationSettings
com.android.settings.notification.ChannelGroupNotificationSettings
com.android.settings.datausage.AppDataUsage
+com.android.settings.datausage.DataPlanUsageSummary
com.android.settings.accessibility.FontSizePreferenceFragmentForSetupWizard
com.android.settings.applications.ManageDomainUrls
com.android.settings.applications.WriteSettingsDetails
-com.android.settings.location.LocationSettings
com.android.settings.applications.ProcessStatsSummary
com.android.settings.users.RestrictedProfileSettings
com.android.settings.accounts.ChooseAccountActivity
com.android.settings.accounts.ManagedProfileSettings
com.android.settings.accessibility.ToggleAutoclickPreferenceFragment
com.android.settings.applications.AppLaunchSettings
-com.android.settings.fuelgauge.BatterySaverSettings
-com.android.settings.location.ScanningSettings
com.android.settings.applications.ProcessStatsUi
com.android.settings.notification.ZenModeScheduleRuleSettings
com.android.settings.datausage.BillingCycleSettings
@@ -68,8 +65,6 @@
com.android.settings.applications.UsageAccessDetails
com.android.settings.applications.AppStorageSettings
com.android.settings.notification.NotificationAccessSettings
-com.android.settings.notification.ZenModeSettings
-com.android.settings.notification.ZenModeBehaviorSettings
com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment
com.android.settings.localepicker.LocaleListEditor
com.android.settings.applications.ExternalSourcesDetails
diff --git a/tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java b/tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java
index c5a1833..09ee15f 100644
--- a/tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java
@@ -17,26 +17,25 @@
package com.android.settings;
import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
import android.content.Context;
import android.os.Build;
-import android.os.UserManager;
import android.support.v7.preference.PreferenceScreen;
import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.XmlTestUtils;
+import com.android.settings.testutils.shadow.ShadowConnectivityManager;
import com.android.settings.testutils.shadow.ShadowUtils;
import com.android.settingslib.DeviceInfoUtils;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
@@ -48,17 +47,13 @@
@Config(
manifest = TestConfig.MANIFEST_PATH,
sdk = TestConfig.SDK_VERSION,
- shadows = ShadowUtils.class
+ shadows = {ShadowUtils.class, ShadowConnectivityManager.class}
)
public class DeviceInfoSettingsTest {
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private Context mContext;
@Mock
private PreferenceScreen mScreen;
@Mock
- private UserManager mUserManager;
- @Mock
private SummaryLoader mSummaryLoader;
private DeviceInfoSettings mSettings;
@@ -66,7 +61,6 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
mSettings = spy(new DeviceInfoSettings());
doReturn(mScreen).when(mSettings).getPreferenceScreen();
}
diff --git a/tests/robotests/src/com/android/settings/applications/InstalledAppDetailsTest.java b/tests/robotests/src/com/android/settings/applications/InstalledAppDetailsTest.java
index 93f364b..58a9577 100644
--- a/tests/robotests/src/com/android/settings/applications/InstalledAppDetailsTest.java
+++ b/tests/robotests/src/com/android/settings/applications/InstalledAppDetailsTest.java
@@ -564,6 +564,21 @@
mAppDetail.mBatteryCallbacks);
}
+ @Test
+ public void initUninstallButtonForUserApp_shouldSetNegativeButton() {
+ final ApplicationInfo info = new ApplicationInfo();
+ info.flags = ApplicationInfo.FLAG_INSTALLED;
+ info.enabled = true;
+ final PackageInfo packageInfo = mock(PackageInfo.class);
+ packageInfo.applicationInfo = info;
+ ReflectionHelpers.setField(mAppDetail, "mUserManager", mUserManager);
+ ReflectionHelpers.setField(mAppDetail, "mPackageInfo", packageInfo);
+
+ mAppDetail.initUninstallButtonForUserApp();
+
+ verify(mAppDetail.mActionButtons).setButton1Positive(false);
+ }
+
@Implements(Utils.class)
public static class ShadowUtils {
@Implementation
diff --git a/tests/robotests/src/com/android/settings/applications/assist/AssistContextPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/assist/AssistContextPreferenceControllerTest.java
index 6c8ad9b..c71bc29 100644
--- a/tests/robotests/src/com/android/settings/applications/assist/AssistContextPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/assist/AssistContextPreferenceControllerTest.java
@@ -16,14 +16,21 @@
package com.android.settings.applications.assist;
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;
import android.support.v7.preference.PreferenceScreen;
import android.support.v7.preference.TwoStatePreference;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.Before;
@@ -35,13 +42,6 @@
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class AssistContextPreferenceControllerTest {
diff --git a/tests/robotests/src/com/android/settings/datausage/DataPlanUsageSummaryTest.java b/tests/robotests/src/com/android/settings/datausage/DataPlanUsageSummaryTest.java
index 72e0b10..748c317 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataPlanUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataPlanUsageSummaryTest.java
@@ -33,17 +33,13 @@
import com.android.settings.R;
import com.android.settings.TestConfig;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.testutils.XmlTestUtils;
-import com.android.settings.testutils.shadow.ShadowDataUsageUtils;
import com.android.settingslib.NetworkPolicyEditor;
import java.util.ArrayList;
-import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
import org.robolectric.util.ReflectionHelpers;
@@ -128,53 +124,6 @@
assertThat(mDataUsageSummary.isMetered(mWifiConfiguration)).isFalse();
}
- @Test
- @Config(shadows = ShadowDataUsageUtils.class)
- public void testNonIndexableKeys_existInXmlLayout() {
- final Context context = RuntimeEnvironment.application;
- ShadowDataUsageUtils.IS_WIFI_SUPPORTED = true;
- ShadowDataUsageUtils.IS_MOBILE_DATA_SUPPORTED = true;
- final List<String> niks = DataPlanUsageSummary.SEARCH_INDEX_DATA_PROVIDER
- .getNonIndexableKeys(context);
- final List<String> keys = new ArrayList<>();
-
- keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context, R.xml.data_usage_wifi));
- keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context, R.xml.data_usage));
- keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context,
- R.xml.data_plan_usage_cell_data_preference_screen));
-
- assertThat(keys).containsAllIn(niks);
- }
-
- @Test
- @Config(shadows = ShadowDataUsageUtils.class)
- public void testNonIndexableKeys_hasMobileData_hasWifi_allNonIndexableKeysAdded() {
- ShadowDataUsageUtils.IS_WIFI_SUPPORTED = false;
- ShadowDataUsageUtils.IS_MOBILE_DATA_SUPPORTED = false;
- List<String> keys = DataPlanUsageSummary.SEARCH_INDEX_DATA_PROVIDER
- .getNonIndexableKeys(mContext);
-
- // Mobile data keys
- assertThat(keys).contains(DataPlanUsageSummary.KEY_MOBILE_USAGE_TITLE);
- assertThat(keys).contains(DataPlanUsageSummary.KEY_MOBILE_DATA_USAGE_TOGGLE);
-
- // Wifi keys
- assertThat(keys).contains(DataPlanUsageSummary.KEY_WIFI_DATA_USAGE);
- assertThat(keys).contains(DataPlanUsageSummary.KEY_NETWORK_RESTRICTIONS);
- assertThat(keys).contains(DataPlanUsageSummary.KEY_WIFI_USAGE_TITLE);
- }
-
- @Test
- @Config(shadows = ShadowDataUsageUtils.class)
- public void testNonIndexableKeys_noMobile_noWifi_limitedNonIndexableKeys() {
- ShadowDataUsageUtils.IS_WIFI_SUPPORTED = true;
- ShadowDataUsageUtils.IS_MOBILE_DATA_SUPPORTED = true;
- List<String> keys = DataPlanUsageSummary.SEARCH_INDEX_DATA_PROVIDER
- .getNonIndexableKeys(mContext);
-
- assertThat(keys).containsExactly(DataPlanUsageSummary.KEY_WIFI_USAGE_TITLE);
- }
-
private void initTest() {
mDataUsageSummary = new DataPlanUsageSummary();
mPolicyEditor = mock(NetworkPolicyEditor.class);
diff --git a/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java
index 41bff93..5cbef72 100644
--- a/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java
@@ -16,35 +16,34 @@
package com.android.settings.datetime;
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+import static org.robolectric.shadow.api.Shadow.extract;
+
import android.content.Context;
import android.net.ConnectivityManager;
import android.provider.Settings;
import android.support.v7.preference.Preference;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
+import com.android.settings.testutils.shadow.ShadowConnectivityManager;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowApplication;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
@RunWith(SettingsRobolectricTestRunner.class)
-@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION,
+ shadows = ShadowConnectivityManager.class)
public class AutoTimeZonePreferenceControllerTest {
@Mock
- private Context mMockContext;
- @Mock
- private ConnectivityManager mCm;
- @Mock
private UpdateTimeAndDateCallback mCallback;
private Context mContext;
@@ -55,17 +54,17 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- ShadowApplication.getInstance().setSystemService(Context.CONNECTIVITY_SERVICE, mCm);
- mContext = ShadowApplication.getInstance().getApplicationContext();
+ mContext = RuntimeEnvironment.application;
mPreference = new Preference(mContext);
- when(mMockContext.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(mCm);
- when(mCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(true);
+ ShadowConnectivityManager connectivityManager =
+ extract(mContext.getSystemService(ConnectivityManager.class));
+ connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, true);
}
@Test
public void isFromSUW_notAvailable() {
mController = new AutoTimeZonePreferenceController(
- mMockContext, null /* callback */, true /* isFromSUW */);
+ mContext, null /* callback */, true /* isFromSUW */);
assertThat(mController.isAvailable()).isFalse();
}
@@ -73,17 +72,19 @@
@Test
public void notFromSUW_isAvailable() {
mController = new AutoTimeZonePreferenceController(
- mMockContext, null /* callback */, false /* isFromSUW */);
+ mContext, null /* callback */, false /* isFromSUW */);
assertThat(mController.isAvailable()).isTrue();
}
@Test
public void isWifiOnly_notAvailable() {
- when(mCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false);
+ ShadowConnectivityManager connectivityManager =
+ extract(mContext.getSystemService(ConnectivityManager.class));
+ connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false);
mController = new AutoTimeZonePreferenceController(
- mMockContext, null /* callback */, false /* isFromSUW */);
+ mContext, null /* callback */, false /* isFromSUW */);
assertThat(mController.isAvailable()).isFalse();
}
@@ -91,17 +92,19 @@
@Test
public void isFromSUW_notEnable() {
mController = new AutoTimeZonePreferenceController(
- mMockContext, null /* callback */, true /* isFromSUW */);
+ mContext, null /* callback */, true /* isFromSUW */);
assertThat(mController.isEnabled()).isFalse();
}
@Test
public void isWifiOnly_notEnable() {
- when(mCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false);
+ ShadowConnectivityManager connectivityManager =
+ extract(mContext.getSystemService(ConnectivityManager.class));
+ connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false);
mController = new AutoTimeZonePreferenceController(
- mMockContext, null /* callback */, false /* isFromSUW */);
+ mContext, null /* callback */, false /* isFromSUW */);
assertThat(mController.isEnabled()).isFalse();
}
diff --git a/tests/robotests/src/com/android/settings/development/CameraHalHdrPlusPreferenceControllerV2Test.java b/tests/robotests/src/com/android/settings/development/CameraHalHdrplusPreferenceControllerV2Test.java
similarity index 75%
rename from tests/robotests/src/com/android/settings/development/CameraHalHdrPlusPreferenceControllerV2Test.java
rename to tests/robotests/src/com/android/settings/development/CameraHalHdrplusPreferenceControllerV2Test.java
index f28fd6e..e0e137c 100644
--- a/tests/robotests/src/com/android/settings/development/CameraHalHdrPlusPreferenceControllerV2Test.java
+++ b/tests/robotests/src/com/android/settings/development/CameraHalHdrplusPreferenceControllerV2Test.java
@@ -42,7 +42,7 @@
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION,
shadows = {SettingsShadowSystemProperties.class})
-public class CameraHalHdrPlusPreferenceControllerV2Test {
+public class CameraHalHdrplusPreferenceControllerV2Test {
@Mock
private PreferenceScreen mScreen;
@@ -50,7 +50,7 @@
private SwitchPreference mPreference;
private Context mContext;
- private CameraHalHdrPlusPreferenceControllerV2 mController;
+ private CameraHalHdrplusPreferenceControllerV2 mController;
static final String USERDEBUG_BUILD = "userdebug";
@@ -58,7 +58,7 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
- mController = new CameraHalHdrPlusPreferenceControllerV2(mContext);
+ mController = new CameraHalHdrplusPreferenceControllerV2(mContext);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
when(mPreference.getKey()).thenReturn(mController.getPreferenceKey());
mController.displayPreference(mScreen);
@@ -73,18 +73,18 @@
@Config(qualifiers = "mcc999")
public void isAvailable_withConfigNoShowAndUserDebugBuild_shouldReturnFalse() {
SettingsShadowSystemProperties.set(
- CameraHalHdrPlusPreferenceControllerV2.BUILD_TYPE, USERDEBUG_BUILD);
+ CameraHalHdrplusPreferenceControllerV2.BUILD_TYPE, USERDEBUG_BUILD);
assertThat(mController.isAvailable()).isFalse();
}
@Test
- public void updateState_cameraHalHdrPlusEnabled_shouldCheckedPreference() {
+ public void updateState_cameraHalHdrplusEnabled_shouldCheckedPreference() {
SettingsShadowSystemProperties.set(
- CameraHalHdrPlusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
- CameraHalHdrPlusPreferenceControllerV2.ENABLED);
+ CameraHalHdrplusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
+ CameraHalHdrplusPreferenceControllerV2.ENABLED);
SettingsShadowSystemProperties.set(
- CameraHalHdrPlusPreferenceControllerV2.BUILD_TYPE, USERDEBUG_BUILD);
+ CameraHalHdrplusPreferenceControllerV2.BUILD_TYPE, USERDEBUG_BUILD);
mController.updateState(mPreference);
@@ -92,12 +92,12 @@
}
@Test
- public void updateState_cameraHalHdrPlusEnabled_shouldUncheckedPreference() {
+ public void updateState_cameraHalHdrplusEnabled_shouldUncheckedPreference() {
SettingsShadowSystemProperties.set(
- CameraHalHdrPlusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
- CameraHalHdrPlusPreferenceControllerV2.DISABLED);
+ CameraHalHdrplusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
+ CameraHalHdrplusPreferenceControllerV2.DISABLED);
SettingsShadowSystemProperties.set(
- CameraHalHdrPlusPreferenceControllerV2.BUILD_TYPE, USERDEBUG_BUILD);
+ CameraHalHdrplusPreferenceControllerV2.BUILD_TYPE, USERDEBUG_BUILD);
mController.updateState(mPreference);
@@ -108,20 +108,20 @@
public void onPreferenceChange_preferenceChecked_shouldEnableCameraHalHdrplus() {
mController.onPreferenceChange(mPreference, true /* new value */);
- assertThat(CameraHalHdrPlusPreferenceControllerV2.ENABLED).isEqualTo(
+ assertThat(CameraHalHdrplusPreferenceControllerV2.ENABLED).isEqualTo(
SystemProperties.get(
- CameraHalHdrPlusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
- CameraHalHdrPlusPreferenceControllerV2.DISABLED));
+ CameraHalHdrplusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
+ CameraHalHdrplusPreferenceControllerV2.DISABLED));
}
@Test
public void handlePreferenceTreeClick_preferenceUnchecked_shouldDisableCameraHalHdrplus() {
mController.onPreferenceChange(mPreference, false /* new value */);
- assertThat(CameraHalHdrPlusPreferenceControllerV2.DISABLED).isEqualTo(
+ assertThat(CameraHalHdrplusPreferenceControllerV2.DISABLED).isEqualTo(
SystemProperties.get(
- CameraHalHdrPlusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
- CameraHalHdrPlusPreferenceControllerV2.DISABLED));
+ CameraHalHdrplusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
+ CameraHalHdrplusPreferenceControllerV2.DISABLED));
}
@Test
@@ -137,9 +137,9 @@
verify(mPreference).setEnabled(false);
verify(mPreference).setChecked(false);
- assertThat(CameraHalHdrPlusPreferenceControllerV2.DISABLED).isEqualTo(
+ assertThat(CameraHalHdrplusPreferenceControllerV2.DISABLED).isEqualTo(
SystemProperties.get(
- CameraHalHdrPlusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
- CameraHalHdrPlusPreferenceControllerV2.DISABLED));
+ CameraHalHdrplusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
+ CameraHalHdrplusPreferenceControllerV2.DISABLED));
}
}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/BasebandVersionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/BasebandVersionPreferenceControllerTest.java
index 3bba438..a7d7355 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/BasebandVersionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/BasebandVersionPreferenceControllerTest.java
@@ -15,35 +15,33 @@
*/
package com.android.settings.deviceinfo;
-import android.content.Context;
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+import static org.robolectric.shadow.api.Shadow.extract;
+
import android.net.ConnectivityManager;
import android.support.v7.preference.Preference;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
+import com.android.settings.testutils.shadow.ShadowConnectivityManager;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
@RunWith(SettingsRobolectricTestRunner.class)
-@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION,
+ shadows = ShadowConnectivityManager.class)
public class BasebandVersionPreferenceControllerTest {
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private Context mContext;
- @Mock
- private ConnectivityManager mCm;
@Mock
private Preference mPreference;
@@ -52,19 +50,22 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- mController = new BasebandVersionPreferenceController(mContext);
- when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(mCm);
+ mController = new BasebandVersionPreferenceController(RuntimeEnvironment.application);
}
@Test
public void isAvailable_wifiOnly_shouldReturnFalse() {
- when(mCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false);
+ ShadowConnectivityManager connectivityManager =
+ extract(RuntimeEnvironment.application.getSystemService(ConnectivityManager.class));
+ connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false);
assertThat(mController.isAvailable()).isFalse();
}
@Test
public void isAvailable_hasMobile_shouldReturnTrue() {
- when(mCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(true);
+ ShadowConnectivityManager connectivityManager =
+ extract(RuntimeEnvironment.application.getSystemService(ConnectivityManager.class));
+ connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, true);
assertThat(mController.isAvailable()).isTrue();
}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/HardwareInfoDialogFragmentTest.java b/tests/robotests/src/com/android/settings/deviceinfo/HardwareInfoDialogFragmentTest.java
index 8e8da51..15461cc2 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/HardwareInfoDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/HardwareInfoDialogFragmentTest.java
@@ -16,13 +16,20 @@
package com.android.settings.deviceinfo;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
import android.app.Activity;
import android.os.SystemProperties;
import android.view.View;
import com.android.settings.R;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
@@ -30,12 +37,6 @@
import org.robolectric.Robolectric;
import org.robolectric.annotation.Config;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class HardwareInfoDialogFragmentTest {
@@ -53,6 +54,7 @@
SystemProperties.set("ro.boot.hardware.revision", TEST_HARDWARE_REV);
final HardwareInfoDialogFragment fragment = spy(HardwareInfoDialogFragment.newInstance());
+ doReturn("").when(fragment).getSerialNumber();
fragment.show(mActivity.getFragmentManager(), HardwareInfoDialogFragment.TAG);
verify(fragment).setText(
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/ImeiInfoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/ImeiInfoPreferenceControllerTest.java
deleted file mode 100644
index 733ef48..0000000
--- a/tests/robotests/src/com/android/settings/deviceinfo/ImeiInfoPreferenceControllerTest.java
+++ /dev/null
@@ -1,81 +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.deviceinfo;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.os.UserManager;
-
-import com.android.settings.TestConfig;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.annotation.Config;
-
-@RunWith(SettingsRobolectricTestRunner.class)
-@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
-public class ImeiInfoPreferenceControllerTest {
- @Mock
- private Context mContext;
- @Mock
- private UserManager mUserManager;
- @Mock
- private ConnectivityManager mConnectivityManager;
-
- private ImeiInfoPreferenceController mController;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
- when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(
- mConnectivityManager);
- mController = new ImeiInfoPreferenceController(mContext);
- }
-
- @Test
- public void testIsAvailable_isAdminAndHasMobile_shouldReturnTrue() {
- when(mUserManager.isAdminUser()).thenReturn(true);
- when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
- .thenReturn(true);
-
- assertThat(mController.isAvailable()).isTrue();
- }
-
- @Test
- public void testIsAvailable_isAdminButNoMobile_shouldReturnFalse() {
- when(mUserManager.isAdminUser()).thenReturn(true);
- when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
- .thenReturn(false);
-
- assertThat(mController.isAvailable()).isFalse();
- }
-
- @Test
- public void testIsAvailable_isNotAdmin_shouldReturnFalse() {
- when(mUserManager.isAdminUser()).thenReturn(false);
-
- assertThat(mController.isAvailable()).isFalse();
- }
-}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/SimStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/SimStatusPreferenceControllerTest.java
deleted file mode 100644
index 6a3c05b..0000000
--- a/tests/robotests/src/com/android/settings/deviceinfo/SimStatusPreferenceControllerTest.java
+++ /dev/null
@@ -1,82 +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.deviceinfo;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.os.UserManager;
-
-import com.android.settings.TestConfig;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.annotation.Config;
-
-@RunWith(SettingsRobolectricTestRunner.class)
-@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
-public class SimStatusPreferenceControllerTest {
-
- @Mock
- private Context mContext;
- @Mock
- private UserManager mUserManager;
- @Mock
- private ConnectivityManager mConnectivityManager;
-
- private SimStatusPreferenceController mController;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
- when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(
- mConnectivityManager);
- mController = new SimStatusPreferenceController(mContext);
- }
-
- @Test
- public void testIsAvailable_isAdminAndHasMobile_shouldReturnTrue() {
- when(mUserManager.isAdminUser()).thenReturn(true);
- when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
- .thenReturn(true);
-
- assertThat(mController.isAvailable()).isTrue();
- }
-
- @Test
- public void testIsAvailable_isAdminButNoMobile_shouldReturnFalse() {
- when(mUserManager.isAdminUser()).thenReturn(true);
- when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
- .thenReturn(false);
-
- assertThat(mController.isAvailable()).isFalse();
- }
-
- @Test
- public void testIsAvailable_isNotAdmin_shouldReturnFalse() {
- when(mUserManager.isAdminUser()).thenReturn(false);
-
- assertThat(mController.isAvailable()).isFalse();
- }
-}
diff --git a/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java
index 3869807..dfe81db 100644
--- a/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java
@@ -17,7 +17,6 @@
package com.android.settings.display;
import static com.google.common.truth.Truth.assertThat;
-
import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
diff --git a/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java
index 242a05d..e1ce694 100644
--- a/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java
@@ -17,9 +17,7 @@
package com.android.settings.display;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.ACTION_AMBIENT_DISPLAY;
-
import static com.google.common.truth.Truth.assertThat;
-
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.eq;
@@ -33,11 +31,11 @@
import android.support.v14.preference.SwitchPreference;
import com.android.internal.hardware.AmbientDisplayConfiguration;
+import com.android.settings.TestConfig;
+import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.search.InlinePayload;
import com.android.settings.search.InlineSwitchPayload;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.TestConfig;
-import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.testutils.shadow.ShadowSecureSettings;
import org.junit.Before;
diff --git a/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java
index 02f46f2..b46441d 100644
--- a/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java
@@ -16,14 +16,20 @@
package com.android.settings.display;
+import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE;
+import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
+import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
+import static com.google.common.truth.Truth.assertThat;
+
import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
+
import com.android.settings.TestConfig;
import com.android.settings.search.InlinePayload;
import com.android.settings.search.InlineSwitchPayload;
import com.android.settings.search.ResultPayload;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
@@ -34,11 +40,6 @@
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
-import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE;
-import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
-import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
-import static com.google.common.truth.Truth.assertThat;
-
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class AutoBrightnessPreferenceControllerTest {
diff --git a/tests/robotests/src/com/android/settings/display/ColorModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/ColorModePreferenceControllerTest.java
deleted file mode 100644
index 00d910e..0000000
--- a/tests/robotests/src/com/android/settings/display/ColorModePreferenceControllerTest.java
+++ /dev/null
@@ -1,113 +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.display;
-
-import android.content.Context;
-import android.os.IBinder;
-import android.support.v14.preference.SwitchPreference;
-import android.support.v7.preference.PreferenceScreen;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.TestConfig;
-import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.annotation.Config;
-import org.robolectric.util.ReflectionHelpers;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-@RunWith(SettingsRobolectricTestRunner.class)
-@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
-public class ColorModePreferenceControllerTest {
- @Mock
- private ColorModePreferenceController.ConfigurationWrapper mConfigWrapper;
- @Mock
- private SwitchPreference mPreference;
- @Mock
- private PreferenceScreen mScreen;
- @Mock
- private Context mContext;
- @Mock
- private IBinder mSurfaceFlinger;
-
- private ColorModePreferenceController mController;
-
- @Before
- public void setup() {
- MockitoAnnotations.initMocks(this);
- SettingsShadowSystemProperties.clear();
-
- mController = new ColorModePreferenceController(mContext);
- ReflectionHelpers.setField(mController, "mSurfaceFlinger", mSurfaceFlinger);
- ReflectionHelpers.setField(mController, "mConfigWrapper", mConfigWrapper);
-
- when(mConfigWrapper.isScreenWideColorGamut()).thenReturn(true);
-
- when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
- when(mPreference.getKey()).thenReturn(mController.getPreferenceKey());
- }
-
- @Config(shadows = {SettingsShadowSystemProperties.class})
- @Test
- public void shouldCheckPreference() {
- SettingsShadowSystemProperties.set(
- ColorModePreferenceController.PERSISTENT_PROPERTY_SATURATION,
- Float.toString(ColorModePreferenceController.COLOR_SATURATION_VIVID));
-
- mController.updateState(mPreference);
-
- verify(mPreference).setChecked(true);
- }
-
- @Config(shadows = {SettingsShadowSystemProperties.class})
- @Test
- public void shouldUncheckPreference() {
- SettingsShadowSystemProperties.set(
- ColorModePreferenceController.PERSISTENT_PROPERTY_SATURATION,
- Float.toString(ColorModePreferenceController.COLOR_SATURATION_DEFAULT));
-
- mController.updateState(mPreference);
-
- verify(mPreference).setChecked(false);
- }
-
- @Config(shadows = {SettingsShadowSystemProperties.class})
- @Test
- public void shouldBoostSaturationOnCheck() {
- mController.onPreferenceChange(mPreference, true);
-
- String saturation = SettingsShadowSystemProperties
- .get(ColorModePreferenceController.PERSISTENT_PROPERTY_SATURATION);
- assertThat(saturation)
- .isEqualTo(Float.toString(ColorModePreferenceController.COLOR_SATURATION_VIVID));
- }
-
- @Config(shadows = {SettingsShadowSystemProperties.class})
- @Test
- public void shouldResetSaturationOnUncheck() {
- mController.onPreferenceChange(mPreference, false);
-
- String saturation = SettingsShadowSystemProperties
- .get(ColorModePreferenceController.PERSISTENT_PROPERTY_SATURATION);
- assertThat(saturation)
- .isEqualTo(Float.toString(ColorModePreferenceController.COLOR_SATURATION_DEFAULT));
- }
-}
diff --git a/tests/robotests/src/com/android/settings/display/ColorModePreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/display/ColorModePreferenceFragmentTest.java
new file mode 100644
index 0000000..435f4f2
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/display/ColorModePreferenceFragmentTest.java
@@ -0,0 +1,170 @@
+/*
+ * 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.display;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+
+import android.app.IActivityManager;
+import android.content.res.Configuration;
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import com.android.internal.logging.nano.MetricsProto;
+
+import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
+import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
+import com.android.settings.widget.RadioButtonPickerFragment;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
+
+import java.util.List;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class ColorModePreferenceFragmentTest {
+ @Mock
+ private IBinder mSurfaceFlinger;
+ @Mock
+ private IActivityManager mActivityManager;
+
+ private ColorModePreferenceFragment mFragment;
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ SettingsShadowSystemProperties.clear();
+
+ mFragment = spy(new ColorModePreferenceFragment());
+ doReturn(RuntimeEnvironment.application).when(mFragment).getContext();
+ doNothing().when(mFragment).updateConfiguration();
+
+ ReflectionHelpers.setField(mFragment, "mSurfaceFlinger", mSurfaceFlinger);
+ ReflectionHelpers.setField(mFragment, "mActivityManager", mActivityManager);
+ }
+
+ @Test
+ public void verifyMetricsConstant() {
+ assertThat(mFragment.getMetricsCategory())
+ .isEqualTo(MetricsProto.MetricsEvent.COLOR_MODE_SETTINGS);
+ }
+
+ @Test
+ public void getCandidates() {
+ List<? extends RadioButtonPickerFragment.CandidateInfo> candidates =
+ mFragment.getCandidates();
+
+ assertThat(candidates.size()).isEqualTo(3);
+ assertThat(candidates.get(0).getKey())
+ .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_NATURAL);
+ assertThat(candidates.get(1).getKey())
+ .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_BOOSTED);
+ assertThat(candidates.get(2).getKey())
+ .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_SATURATED);
+ }
+
+ @Config(shadows = {SettingsShadowSystemProperties.class})
+ @Test
+ public void getKey_natural() {
+ SettingsShadowSystemProperties.set(
+ ColorModePreferenceFragment.PERSISTENT_PROPERTY_SATURATION,
+ Float.toString(ColorModePreferenceFragment.COLOR_SATURATION_NATURAL));
+ SettingsShadowSystemProperties.set(
+ ColorModePreferenceFragment.PERSISTENT_PROPERTY_NATIVE_MODE, "0");
+
+ assertThat(mFragment.getDefaultKey())
+ .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_NATURAL);
+ }
+
+ @Config(shadows = {SettingsShadowSystemProperties.class})
+ @Test
+ public void getKey_boosted() {
+ SettingsShadowSystemProperties.set(
+ ColorModePreferenceFragment.PERSISTENT_PROPERTY_SATURATION,
+ Float.toString(ColorModePreferenceFragment.COLOR_SATURATION_BOOSTED));
+ SettingsShadowSystemProperties.set(
+ ColorModePreferenceFragment.PERSISTENT_PROPERTY_NATIVE_MODE, "0");
+
+ assertThat(mFragment.getDefaultKey())
+ .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_BOOSTED);
+ }
+
+ @Config(shadows = {SettingsShadowSystemProperties.class})
+ @Test
+ public void getKey_saturated() {
+ SettingsShadowSystemProperties.set(
+ ColorModePreferenceFragment.PERSISTENT_PROPERTY_NATIVE_MODE, "1");
+
+ assertThat(mFragment.getDefaultKey())
+ .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_SATURATED);
+ }
+
+ @Config(shadows = {SettingsShadowSystemProperties.class})
+ @Test
+ public void setKey_natural() {
+ mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_NATURAL);
+
+ String saturation = SettingsShadowSystemProperties
+ .get(ColorModePreferenceFragment.PERSISTENT_PROPERTY_SATURATION);
+ assertThat(saturation)
+ .isEqualTo(Float.toString(ColorModePreferenceFragment.COLOR_SATURATION_NATURAL));
+
+ String nativeMode = SettingsShadowSystemProperties
+ .get(ColorModePreferenceFragment.PERSISTENT_PROPERTY_NATIVE_MODE);
+ assertThat(nativeMode).isEqualTo("0");
+ }
+
+ @Config(shadows = {SettingsShadowSystemProperties.class})
+ @Test
+ public void setKey_boosted() {
+ mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_BOOSTED);
+
+ String saturation = SettingsShadowSystemProperties
+ .get(ColorModePreferenceFragment.PERSISTENT_PROPERTY_SATURATION);
+ assertThat(saturation)
+ .isEqualTo(Float.toString(ColorModePreferenceFragment.COLOR_SATURATION_BOOSTED));
+
+ String nativeMode = SettingsShadowSystemProperties
+ .get(ColorModePreferenceFragment.PERSISTENT_PROPERTY_NATIVE_MODE);
+ assertThat(nativeMode).isEqualTo("0");
+ }
+
+ @Config(shadows = {SettingsShadowSystemProperties.class})
+ @Test
+ public void setKey_saturated() {
+ mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_SATURATED);
+
+ String saturation = SettingsShadowSystemProperties
+ .get(ColorModePreferenceFragment.PERSISTENT_PROPERTY_SATURATION);
+ assertThat(saturation)
+ .isEqualTo(Float.toString(ColorModePreferenceFragment.COLOR_SATURATION_NATURAL));
+
+ String nativeMode = SettingsShadowSystemProperties
+ .get(ColorModePreferenceFragment.PERSISTENT_PROPERTY_NATIVE_MODE);
+ assertThat(nativeMode).isEqualTo("1");
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverSettingsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverSettingsTest.java
index 1e173a2..0e32f6b 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverSettingsTest.java
@@ -18,7 +18,9 @@
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
+import android.provider.SearchIndexableResource;
+import com.android.settings.R;
import com.android.settings.TestConfig;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.widget.SwitchBar;
@@ -30,6 +32,8 @@
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import java.util.List;
+
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class BatterySaverSettingsTest {
@@ -58,4 +62,13 @@
assertThat(mBatterySaverSettings.mSwitchBar.isEnabled()).isTrue();
}
+
+ @Test
+ public void searchProvider_shouldIndexDefaultXml() {
+ final List<SearchIndexableResource> sir = mBatterySaverSettings.SEARCH_INDEX_DATA_PROVIDER
+ .getXmlResourcesToIndex(mContext, true /* enabled */);
+
+ assertThat(sir).hasSize(1);
+ assertThat(sir.get(0).xmlResId).isEqualTo(R.xml.battery_saver_settings);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java
index 0c804b3..1f5ca20 100644
--- a/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java
@@ -35,7 +35,6 @@
import com.android.settings.search.ResultPayload;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.SettingsShadowResources;
-import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
import com.android.settings.testutils.shadow.ShadowSecureSettings;
import org.junit.After;
diff --git a/tests/robotests/src/com/android/settings/location/LocationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/LocationPreferenceControllerTest.java
index 87691a5..355d6d0 100644
--- a/tests/robotests/src/com/android/settings/location/LocationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/location/LocationPreferenceControllerTest.java
@@ -16,7 +16,6 @@
package com.android.settings.location;
import static com.google.common.truth.Truth.assertThat;
-
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.verify;
@@ -34,11 +33,11 @@
import android.support.v7.preference.PreferenceScreen;
import com.android.settings.R;
+import com.android.settings.TestConfig;
import com.android.settings.search.InlineListPayload;
import com.android.settings.search.InlinePayload;
import com.android.settings.search.ResultPayload;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.TestConfig;
import com.android.settings.testutils.shadow.ShadowSecureSettings;
import com.android.settingslib.core.lifecycle.Lifecycle;
diff --git a/tests/robotests/src/com/android/settings/location/ScanningSettingsTest.java b/tests/robotests/src/com/android/settings/location/ScanningSettingsTest.java
new file mode 100644
index 0000000..47b81bf
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/location/ScanningSettingsTest.java
@@ -0,0 +1,58 @@
+/*
+ * 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.location;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.provider.SearchIndexableResource;
+
+import com.android.settings.R;
+import com.android.settings.TestConfig;
+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.annotation.Config;
+
+import java.util.List;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class ScanningSettingsTest {
+
+ private Context mContext;
+ private ScanningSettings mSettings;
+
+
+ @Before
+ public void setUp() {
+ mContext = RuntimeEnvironment.application;
+ mSettings = new ScanningSettings();
+ }
+
+ @Test
+ public void searchProvider_shouldIndexDefaultXml() {
+ final List<SearchIndexableResource> sir = mSettings.SEARCH_INDEX_DATA_PROVIDER
+ .getXmlResourcesToIndex(mContext, true /* enabled */);
+
+ assertThat(sir).hasSize(1);
+ assertThat(sir.get(0).xmlResId).isEqualTo(R.xml.location_scanning);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
index 2c11e0c..1a66dcc 100644
--- a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
@@ -15,51 +15,48 @@
*/
package com.android.settings.network;
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.robolectric.shadow.api.Shadow.extract;
+
import android.content.Context;
import android.net.ConnectivityManager;
-import android.os.UserHandle;
import android.os.UserManager;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
+import com.android.settings.testutils.shadow.ShadowConnectivityManager;
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsWrapper;
+import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
@RunWith(SettingsRobolectricTestRunner.class)
@Config(
manifest = TestConfig.MANIFEST_PATH,
sdk = TestConfig.SDK_VERSION,
- shadows = ShadowRestrictedLockUtilsWrapper.class
+ shadows = {ShadowRestrictedLockUtilsWrapper.class, ShadowConnectivityManager.class,
+ ShadowUserManager.class}
)
public class MobileNetworkPreferenceControllerTest {
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Context mContext;
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private UserManager mUserManager;
- @Mock
- private ConnectivityManager mConnectivityManager;
@Mock
private TelephonyManager mTelephonyManager;
@Mock
@@ -71,21 +68,19 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
+ mContext = spy(RuntimeEnvironment.application);
mLifecycle = new Lifecycle();
- when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
- when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE))
- .thenReturn(mConnectivityManager);
when(mContext.getSystemService(Context.TELEPHONY_SERVICE))
.thenReturn(mTelephonyManager);
}
@Test
public void secondaryUser_prefIsNotAvailable() {
- when(mUserManager.isAdminUser()).thenReturn(false);
- when(mUserManager.hasUserRestriction(anyString(), any(UserHandle.class)))
- .thenReturn(false);
- when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
- .thenReturn(true);
+ ShadowUserManager userManager = extract(mContext.getSystemService(UserManager.class));
+ userManager.setIsAdminUser(false);
+ ShadowConnectivityManager connectivityManager =
+ extract(mContext.getSystemService(ConnectivityManager.class));
+ connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, true);
mController = new MobileNetworkPreferenceController(mContext);
assertThat(mController.isAvailable()).isFalse();
@@ -93,11 +88,11 @@
@Test
public void wifiOnly_prefIsNotAvailable() {
- when(mUserManager.isAdminUser()).thenReturn(true);
- when(mUserManager.hasUserRestriction(anyString(), any(UserHandle.class)))
- .thenReturn(false);
- when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
- .thenReturn(false);
+ ShadowUserManager userManager = extract(mContext.getSystemService(UserManager.class));
+ userManager.setIsAdminUser(true);
+ ShadowConnectivityManager connectivityManager =
+ extract(mContext.getSystemService(ConnectivityManager.class));
+ connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false);
mController = new MobileNetworkPreferenceController(mContext);
assertThat(mController.isAvailable()).isFalse();
@@ -142,5 +137,4 @@
// Carrier name should be set.
verify(mPreference).setSummary(testCarrierName);
}
-
}
diff --git a/tests/robotests/src/com/android/settings/notification/BadgingNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/BadgingNotificationPreferenceControllerTest.java
index c1a7d05..ac158b6 100644
--- a/tests/robotests/src/com/android/settings/notification/BadgingNotificationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/BadgingNotificationPreferenceControllerTest.java
@@ -16,6 +16,14 @@
package com.android.settings.notification;
+import static android.provider.Settings.Secure.NOTIFICATION_BADGING;
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;
@@ -38,16 +46,6 @@
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
-import static android.provider.Settings.Secure.NOTIFICATION_BADGING;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
@RunWith(RobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class BadgingNotificationPreferenceControllerTest {
diff --git a/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java b/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java
index 1135d7c..fa2c6b9 100644
--- a/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java
@@ -22,6 +22,7 @@
import android.app.NotificationManager;
import android.content.Context;
+import android.provider.SearchIndexableResource;
import android.provider.Settings;
import com.android.settings.R;
@@ -34,16 +35,20 @@
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import java.util.List;
+
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class ZenModeSettingsTest {
private ZenModeSettings.SummaryBuilder mBuilder;
private Context mContext;
+ private ZenModeSettings mSettings;
@Before
public void setUp() {
mContext = RuntimeEnvironment.application.getApplicationContext();
+ mSettings = new ZenModeSettings();
mBuilder = new ZenModeSettings.SummaryBuilder(mContext);
}
@@ -72,4 +77,13 @@
&& result.indexOf(reminders) < result.indexOf(events));
}
+ @Test
+ public void searchProvider_shouldIndexDefaultXml() {
+ final List<SearchIndexableResource> sir = mSettings.SEARCH_INDEX_DATA_PROVIDER
+ .getXmlResourcesToIndex(mContext, true /* enabled */);
+
+ assertThat(sir).hasSize(1);
+ assertThat(sir.get(0).xmlResId).isEqualTo(R.xml.zen_mode_settings);
+ }
+
}
diff --git a/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtilsTest.java b/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtilsTest.java
index 3bfa936..126abb9 100644
--- a/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtilsTest.java
@@ -23,10 +23,10 @@
import android.util.ArrayMap;
import com.android.internal.hardware.AmbientDisplayConfiguration;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.deviceinfo.SystemUpdatePreferenceController;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
diff --git a/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java b/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java
index a3826f6..4ec080c 100644
--- a/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java
+++ b/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java
@@ -221,7 +221,8 @@
assertThat(mHolder.summaryView.getText()).isEqualTo(SUMMARY);
assertThat(mHolder.summaryView.getVisibility()).isEqualTo(View.VISIBLE);
verify(mFragment).onSearchResultClicked(eq(mHolder), any(SearchResult.class));
- verify(mFragment).startActivity(result.payload.getIntent());
+ verify(mFragment).startActivityForResult(result.payload.getIntent(),
+ IntentSearchViewHolder.REQUEST_CODE_NO_OP);
}
@Test
@@ -237,7 +238,8 @@
assertThat(mHolder.summaryView.getText()).isEqualTo(SUMMARY);
assertThat(mHolder.summaryView.getVisibility()).isEqualTo(View.VISIBLE);
verify(mFragment).onSearchResultClicked(eq(mHolder), any(SearchResult.class));
- verify(mFragment, never()).startActivity(any(Intent.class));
+ verify(mFragment, never()).startActivityForResult(result.payload.getIntent(),
+ IntentSearchViewHolder.REQUEST_CODE_NO_OP);
}
private SearchResult getSearchResult(String title, String summary, Drawable icon) {
diff --git a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
index 30ffaf8..050d7aa 100644
--- a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
@@ -17,8 +17,10 @@
package com.android.settings.search;
+import static com.google.common.truth.Truth.assertThat;
+
import android.app.Activity;
-import android.view.Menu;
+import android.content.ComponentName;
import com.android.settings.TestConfig;
import com.android.settings.dashboard.SiteMapManager;
@@ -27,23 +29,16 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.Answers;
-import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.annotation.Config;
-import static com.google.common.truth.Truth.assertThat;
-
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class SearchFeatureProviderImplTest {
private SearchFeatureProviderImpl mProvider;
private Activity mActivity;
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private Menu menu;
-
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
@@ -76,4 +71,20 @@
assertThat(loader.mQuery).isEqualTo(query.trim());
}
+ @Test(expected = IllegalArgumentException.class)
+ public void verifyLaunchSearchResultPageCaller_nullCaller_shouldCrash() {
+ mProvider.verifyLaunchSearchResultPageCaller(mActivity, null /* caller */);
+ }
+
+ @Test(expected = SecurityException.class)
+ public void everifyLaunchSearchResultPageCaller_badCaller_shouldCrash() {
+ final ComponentName cn = new ComponentName("pkg", "class");
+ mProvider.verifyLaunchSearchResultPageCaller(mActivity, cn);
+ }
+
+ @Test
+ public void verifyLaunchSearchResultPageCaller_goodCaller_shouldNotCrash() {
+ final ComponentName cn = new ComponentName(mActivity.getPackageName(), "class");
+ mProvider.verifyLaunchSearchResultPageCaller(mActivity, cn);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java b/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java
index 1ddff90..0e3ce50 100644
--- a/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java
+++ b/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java
@@ -17,20 +17,16 @@
package com.android.settings.search;
import static android.provider.SearchIndexablesContract.COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE;
-import static com.android.settings.search.SearchIndexableResources.NO_DATA_RES_ID;
-
+import static com.android.settings.search.SearchIndexableResources.NO_RES_ID;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.spy;
-import android.annotation.DrawableRes;
-import android.annotation.XmlRes;
import android.database.Cursor;
import android.provider.SearchIndexableResource;
-
import android.text.TextUtils;
-import com.android.settings.R;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
+
import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wifi.WifiSettings;
import org.junit.After;
@@ -46,11 +42,6 @@
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class SearchIndexableResourcesTest {
- @XmlRes
- private static final int XML_RES_ID = R.xml.physical_keyboard_settings;
- @DrawableRes
- private static final int ICON_RES_ID = R.drawable.ic_settings_language;
-
Map<String, SearchIndexableResource> sResMapCopy;
@Before
@@ -72,14 +63,14 @@
assertThat(SearchIndexableResources.getResourceByName("java.lang.String")).isNull();
final int beforeCount = SearchIndexableResources.values().size();
- SearchIndexableResources.addIndex(java.lang.String.class, XML_RES_ID, ICON_RES_ID);
+ SearchIndexableResources.addIndex(java.lang.String.class);
final SearchIndexableResource index = SearchIndexableResources
.getResourceByName("java.lang.String");
assertThat(index).isNotNull();
assertThat(index.className).isEqualTo("java.lang.String");
- assertThat(index.xmlResId).isEqualTo(XML_RES_ID);
- assertThat(index.iconResId).isEqualTo(ICON_RES_ID);
+ assertThat(index.xmlResId).isEqualTo(NO_RES_ID);
+ assertThat(index.iconResId).isEqualTo(NO_RES_ID);
final int afterCount = SearchIndexableResources.values().size();
assertThat(afterCount).isEqualTo(beforeCount + 1);
}
@@ -91,20 +82,20 @@
assertThat(index).isNotNull();
assertThat(index.className).isEqualTo(WifiSettings.class.getName());
- assertThat(index.xmlResId).isEqualTo(NO_DATA_RES_ID);
- assertThat(index.iconResId).isEqualTo(R.drawable.ic_settings_wireless);
+ assertThat(index.xmlResId).isEqualTo(NO_RES_ID);
+ assertThat(index.iconResId).isEqualTo(NO_RES_ID);
}
@Test
public void testNonIndexableKeys_GetsKeyFromProvider() {
SearchIndexableResources.sResMap.clear();
- SearchIndexableResources.addIndex(FakeIndexProvider.class, 0, 0);
+ SearchIndexableResources.addIndex(FakeIndexProvider.class);
SettingsSearchIndexablesProvider provider = spy(new SettingsSearchIndexablesProvider());
Cursor cursor = provider.queryNonIndexableKeys(null);
boolean hasTestKey = false;
- while(cursor.moveToNext()) {
+ while (cursor.moveToNext()) {
String key = cursor.getString(COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE);
if (TextUtils.equals(key, FakeIndexProvider.KEY)) {
hasTestKey = true;
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowConnectivityManager.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowConnectivityManager.java
index 4c05665..742fbf8 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowConnectivityManager.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowConnectivityManager.java
@@ -17,6 +17,7 @@
package com.android.settings.testutils.shadow;
import android.net.ConnectivityManager;
+import android.util.SparseBooleanArray;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
@@ -24,14 +25,14 @@
@Implements(ConnectivityManager.class)
public class ShadowConnectivityManager extends org.robolectric.shadows.ShadowConnectivityManager {
- private static boolean mIsNetworkSupported;
+ private final SparseBooleanArray mSupportedNetworkTypes = new SparseBooleanArray();
+
+ public void setNetworkSupported(int networkType, boolean supported) {
+ mSupportedNetworkTypes.put(networkType, supported);
+ }
@Implementation
public boolean isNetworkSupported(int networkType) {
- return mIsNetworkSupported;
- }
-
- public static void setIsNetworkSupported(boolean isNetworkSupported) {
- mIsNetworkSupported = isNetworkSupported;
+ return mSupportedNetworkTypes.get(networkType);
}
}
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java
index 4d4fd62..888fa36 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java
@@ -37,6 +37,16 @@
public class ShadowUserManager extends org.robolectric.shadows.ShadowUserManager {
private SparseArray<UserInfo> mUserInfos = new SparseArray<>();
+ private boolean mAdminUser;
+
+ public void setIsAdminUser(boolean isAdminUser) {
+ mAdminUser = isAdminUser;
+ }
+
+ @Implementation
+ public boolean isAdminUser() {
+ return mAdminUser;
+ }
public void setUserInfo(int userHandle, UserInfo userInfo) {
mUserInfos.put(userHandle, userInfo);
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java
index bfeb3c7..0691086 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java
@@ -55,11 +55,6 @@
sIsDemoUser = false;
}
- @Implementation
- public static boolean isWifiOnly(Context context) {
- return true;
- }
-
public static void setIsDemoUser(boolean isDemoUser) {
sIsDemoUser = isDemoUser;
}