Merge "Add location as a Inline list payload" into oc-dr1-dev
diff --git a/res/layout/preference_widget_seekbar_settings.xml b/res/layout/preference_widget_seekbar_settings.xml
index c25c598..fb1e9c8 100644
--- a/res/layout/preference_widget_seekbar_settings.xml
+++ b/res/layout/preference_widget_seekbar_settings.xml
@@ -58,6 +58,6 @@
         android:layout_alignParentEnd="true"
         android:layout_below="@android:id/summary"
         android:paddingStart="56dp"
-        android:paddingEnd="8dp" />
+        android:paddingEnd="12dp" />
 
 </RelativeLayout>
diff --git a/res/layout/suggestion_condition_container.xml b/res/layout/suggestion_condition_container.xml
index 089c2c8..d9b4d6b 100644
--- a/res/layout/suggestion_condition_container.xml
+++ b/res/layout/suggestion_condition_container.xml
@@ -21,8 +21,8 @@
     style="@style/SuggestionConditionStyle"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:paddingStart="8dp"
-    android:paddingEnd="8dp"
+    android:paddingStart="5dp"
+    android:paddingEnd="5dp"
     android:paddingBottom="@dimen/dashboard_padding_bottom">
 
     <android.support.v7.widget.CardView
diff --git a/res/values/styles_preference.xml b/res/values/styles_preference.xml
index 31e2e79..8b5e7d3 100644
--- a/res/values/styles_preference.xml
+++ b/res/values/styles_preference.xml
@@ -49,6 +49,7 @@
         <item name="allowDividerAbove">false</item>
         <item name="allowDividerBelow">true</item>
         <item name="iconSpaceReserved">true</item>
+        <item name="singleLineTitle">false</item>
         <item name="android:dialogLayout">@layout/preference_dialog_edittext</item>
     </style>
 
@@ -72,6 +73,7 @@
         <item name="allowDividerAbove">false</item>
         <item name="allowDividerBelow">true</item>
         <item name="iconSpaceReserved">true</item>
+        <item name="singleLineTitle">false</item>
     </style>
 
     <style name="SyncSwitchPreference" parent="SettingsPreference">
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index 0462e94..27ef869 100644
--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -35,6 +35,7 @@
         settings:widgetLayout="@null"
         settings:keywords="@string/keywords_display_night_display" />
 
+    <!-- Cross-listed item, if you change this, also change it in power_usage_summary.xml -->
     <SwitchPreference
         android:key="auto_brightness"
         android:title="@string/auto_brightness_title"
@@ -51,6 +52,7 @@
             android:targetClass="@string/config_wallpaper_picker_class" />
     </com.android.settingslib.RestrictedPreference>
 
+    <!-- Cross-listed item, if you change this, also change it in power_usage_summary.xml -->
     <com.android.settings.TimeoutListPreference
         android:key="screen_timeout"
         android:title="@string/screen_timeout"
@@ -82,6 +84,7 @@
         android:title="@string/screensaver_settings_title"
         android:fragment="com.android.settings.dream.DreamSettings" />
 
+    <!-- Cross-listed item, if you change this, also change it in power_usage_summary.xml -->
     <Preference
         android:key="ambient_display"
         android:title="@string/ambient_display_screen_title"
diff --git a/res/xml/power_usage_summary.xml b/res/xml/power_usage_summary.xml
index 978fff8..efdae92 100644
--- a/res/xml/power_usage_summary.xml
+++ b/res/xml/power_usage_summary.xml
@@ -59,14 +59,14 @@
             android:title="@string/battery_percentage"
             android:summary="@string/battery_percentage_description"/>
 
-        <!-- Cross-listed item, if you change this, also change it in ia_display_settings.xml -->
+        <!-- Cross-listed item, if you change this, also change it in display_settings.xml -->
         <SwitchPreference
             android:key="auto_brightness_battery"
             android:title="@string/auto_brightness_title"
             android:summary="@string/auto_brightness_summary"
             settings:keywords="@string/keywords_display_auto_brightness"/>
 
-        <!-- Cross-listed item, if you change this, also change it in ia_display_settings.xml -->
+        <!-- Cross-listed item, if you change this, also change it in display_settings.xml -->
         <com.android.settings.TimeoutListPreference
             android:key="screen_timeout_battery"
             android:title="@string/screen_timeout"
@@ -74,6 +74,12 @@
             android:entries="@array/screen_timeout_entries"
             android:entryValues="@array/screen_timeout_values"/>
 
+        <!-- Cross-listed item, if you change this, also change it in display_settings.xml -->
+        <Preference
+            android:key="ambient_display_battery"
+            android:title="@string/ambient_display_screen_title"
+            android:fragment="com.android.settings.display.AmbientDisplaySettings" />
+
     </PreferenceCategory>
 
     <PreferenceCategory
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index c7f349e..15818e2 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -89,7 +89,6 @@
     private static List<PreferenceController> buildPreferenceControllers(
             Context context, Lifecycle lifecycle) {
         final List<PreferenceController> controllers = new ArrayList<>();
-        final AmbientDisplayConfiguration ambientDisplayConfig = new AmbientDisplayConfiguration(context);
         controllers.add(new AutoBrightnessPreferenceController(context, KEY_AUTO_BRIGHTNESS));
         controllers.add(new AutoRotatePreferenceController(context, lifecycle));
         controllers.add(new CameraGesturePreferenceController(context));
@@ -98,7 +97,9 @@
         controllers.add(new NightDisplayPreferenceController(context));
         controllers.add(new NightModePreferenceController(context));
         controllers.add(new ScreenSaverPreferenceController(context));
-        controllers.add(new AmbientDisplayPreferenceController(context, ambientDisplayConfig,
+        controllers.add(new AmbientDisplayPreferenceController(
+                context,
+                new AmbientDisplayConfiguration(context),
                 KEY_AMBIENT_DISPLAY));
         controllers.add(new TapToWakePreferenceController(context));
         controllers.add(new TimeoutPreferenceController(context, KEY_SCREEN_TIMEOUT));
@@ -128,6 +129,7 @@
                     List<String> keys = super.getNonIndexableKeys(context);
                     keys.add(KEY_DISPLAY_SIZE);
                     keys.add(WallpaperPreferenceController.KEY_WALLPAPER);
+                    keys.add(KEY_AMBIENT_DISPLAY);
                     return keys;
                 }
 
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index 3ad0142..963dbeb 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -46,6 +46,7 @@
 import android.view.View.OnLongClickListener;
 import android.widget.TextView;
 
+import com.android.internal.hardware.AmbientDisplayConfiguration;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.internal.os.BatterySipper;
 import com.android.internal.os.BatterySipper.DrainType;
@@ -59,6 +60,7 @@
 import com.android.settings.core.PreferenceController;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
 import com.android.settings.dashboard.SummaryLoader;
+import com.android.settings.display.AmbientDisplayPreferenceController;
 import com.android.settings.display.AutoBrightnessPreferenceController;
 import com.android.settings.display.BatteryPercentagePreferenceController;
 import com.android.settings.display.TimeoutPreferenceController;
@@ -96,6 +98,7 @@
 
     private static final String KEY_AUTO_BRIGHTNESS = "auto_brightness_battery";
     private static final String KEY_SCREEN_TIMEOUT = "screen_timeout_battery";
+    private static final String KEY_AMBIENT_DISPLAY = "ambient_display_battery";
     private static final String KEY_BATTERY_SAVER_SUMMARY = "battery_saver_summary";
     private static final String KEY_HIGH_USAGE = "high_usage";
 
@@ -314,6 +317,10 @@
         controllers.add(new TimeoutPreferenceController(context, KEY_SCREEN_TIMEOUT));
         controllers.add(new BatterySaverController(context, getLifecycle()));
         controllers.add(new BatteryPercentagePreferenceController(context));
+        controllers.add(new AmbientDisplayPreferenceController(
+                context,
+                new AmbientDisplayConfiguration(context),
+                KEY_AMBIENT_DISPLAY));
         return controllers;
     }
 
@@ -710,8 +717,11 @@
         if (usageTimeMs >= DateUtils.MINUTE_IN_MILLIS) {
             final CharSequence timeSequence = Utils.formatElapsedTime(getContext(), usageTimeMs,
                     false);
-            preference.setSummary(mBatteryUtils.shouldHideSipper(sipper) ? timeSequence :
-                    TextUtils.expandTemplate(getText(R.string.battery_screen_usage), timeSequence));
+            preference.setSummary(
+                    (sipper.drainType != DrainType.APP || mBatteryUtils.shouldHideSipper(sipper))
+                            ? timeSequence
+                            : TextUtils.expandTemplate(getText(R.string.battery_screen_usage),
+                                    timeSequence));
         }
     }
 
@@ -895,11 +905,12 @@
                 @Override
                 public List<String> getNonIndexableKeys(Context context) {
                     List<String> niks = super.getNonIndexableKeys(context);
+                    niks.add(KEY_HIGH_USAGE);
+                    niks.add(KEY_BATTERY_SAVER_SUMMARY);
                     // Duplicates in display
                     niks.add(KEY_AUTO_BRIGHTNESS);
                     niks.add(KEY_SCREEN_TIMEOUT);
-                    niks.add(KEY_BATTERY_SAVER_SUMMARY);
-                    niks.add(KEY_HIGH_USAGE);
+                    niks.add(KEY_AMBIENT_DISPLAY);
                     return niks;
                 }
             };
diff --git a/src/com/android/settings/fuelgauge/anomaly/action/BackgroundCheckAction.java b/src/com/android/settings/fuelgauge/anomaly/action/BackgroundCheckAction.java
index 5526cc9..aa3fc39 100644
--- a/src/com/android/settings/fuelgauge/anomaly/action/BackgroundCheckAction.java
+++ b/src/com/android/settings/fuelgauge/anomaly/action/BackgroundCheckAction.java
@@ -38,6 +38,7 @@
         super(context);
         mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
         mActionMetricKey = MetricsProto.MetricsEvent.ACTION_APP_BACKGROUND_CHECK;
+        mBatteryUtils = BatteryUtils.getInstance(context);
     }
 
     @Override
diff --git a/src/com/android/settings/utils/ManagedServiceSettings.java b/src/com/android/settings/utils/ManagedServiceSettings.java
index 6e3841d..ae393fd 100644
--- a/src/com/android/settings/utils/ManagedServiceSettings.java
+++ b/src/com/android/settings/utils/ManagedServiceSettings.java
@@ -34,6 +34,7 @@
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.Preference.OnPreferenceChangeListener;
 import android.support.v7.preference.PreferenceScreen;
+import android.util.IconDrawableFactory;
 import android.util.Log;
 import android.view.View;
 
@@ -54,6 +55,7 @@
     private PackageManager mPm;
     private DevicePolicyManager mDpm;
     protected ServiceListing mServiceListing;
+    private IconDrawableFactory mIconDrawableFactory;
 
     abstract protected Config getConfig();
 
@@ -68,6 +70,7 @@
         mContext = getActivity();
         mPm = mContext.getPackageManager();
         mDpm = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
+        mIconDrawableFactory = IconDrawableFactory.newInstance(mContext);
         mServiceListing = new ServiceListing(mContext, mConfig);
         mServiceListing.addCallback(new ServiceListing.Callback() {
             @Override
@@ -117,13 +120,15 @@
             final String summary = service.loadLabel(mPm).toString();
             final SwitchPreference pref = new SwitchPreference(getPrefContext());
             pref.setPersistent(false);
-            pref.setIcon(service.loadIcon(mPm));
+            pref.setIcon(mIconDrawableFactory.getBadgedIcon(service, service.applicationInfo,
+                    UserHandle.getUserId(service.applicationInfo.uid)));
             if (title != null && !title.equals(summary)) {
                 pref.setTitle(title);
                 pref.setSummary(summary);
             } else {
                 pref.setTitle(summary);
             }
+            pref.setKey(cn.flattenToString());
             pref.setChecked(mServiceListing.isEnabled(cn));
             if (managedProfileId != UserHandle.USER_NULL
                     && !mDpm.isNotificationListenerServicePermitted(
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
index eb22d22..b53b98d 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
@@ -335,11 +335,10 @@
         doReturn(mRealContext.getText(R.string.battery_screen_usage)).when(mFragment).getText(
                 R.string.battery_screen_usage);
         doReturn(mRealContext).when(mFragment).getContext();
-        final String expectedSummary = "Screen usage 2m";
 
         mFragment.setUsageSummary(mPreference, mNormalBatterySipper);
 
-        assertThat(mPreference.getSummary().toString()).isEqualTo(expectedSummary);
+        assertThat(mPreference.getSummary().toString()).isEqualTo("Screen usage 2m");
     }
 
     @Test
@@ -347,11 +346,21 @@
         mNormalBatterySipper.usageTimeMs = 2 * DateUtils.MINUTE_IN_MILLIS;
         doReturn(true).when(mFragment.mBatteryUtils).shouldHideSipper(mNormalBatterySipper);
         doReturn(mRealContext).when(mFragment).getContext();
-        final String expectedSummary = "2m";
 
         mFragment.setUsageSummary(mPreference, mNormalBatterySipper);
 
-        assertThat(mPreference.getSummary().toString()).isEqualTo(expectedSummary);
+        assertThat(mPreference.getSummary().toString()).isEqualTo("2m");
+    }
+
+    @Test
+    public void testSetUsageSummary_timeMoreThanOneMinute_notApp_setUsedSummary() {
+        mNormalBatterySipper.usageTimeMs = 2 * DateUtils.MINUTE_IN_MILLIS;
+        mNormalBatterySipper.drainType = BatterySipper.DrainType.PHONE;
+        doReturn(mRealContext).when(mFragment).getContext();
+
+        mFragment.setUsageSummary(mPreference, mNormalBatterySipper);
+
+        assertThat(mPreference.getSummary().toString()).isEqualTo("2m");
     }
 
     private void testToggleAllApps(final boolean isShowApps) {
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/anomaly/action/BackgroundCheckActionTest.java b/tests/robotests/src/com/android/settings/fuelgauge/anomaly/action/BackgroundCheckActionTest.java
index e2b8656..7e5fc4a 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/anomaly/action/BackgroundCheckActionTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/anomaly/action/BackgroundCheckActionTest.java
@@ -94,4 +94,11 @@
 
         assertThat(mBackgroundCheckAction.isActionActive(mAnomaly)).isFalse();
     }
+
+    @Test
+    public void testConstructor_batteryUtilsNotNull() {
+        mBackgroundCheckAction = new BackgroundCheckAction(mContext);
+
+        assertThat(mBackgroundCheckAction.mBatteryUtils).isNotNull();
+    }
 }