Merge "Add searchable keywords for new usage and adaptive preferences screen" into sc-dev
diff --git a/res/values-night/colors.xml b/res/values-night/colors.xml
index 168fd0d..2cdbd3f 100644
--- a/res/values-night/colors.xml
+++ b/res/values-night/colors.xml
@@ -21,7 +21,6 @@
<color name="homepage_support_background">#3F5FBD</color>
<color name="homepage_card_dismissal_background">@*android:color/material_grey_900</color>
<color name="contextual_card_background">@*android:color/material_grey_900</color>
- <color name="search_bar_background">@*android:color/material_grey_900</color>
<!-- Dialog background color. -->
<color name="dialog_background">@*android:color/material_grey_800</color>
<color name="notification_importance_selection_bg">@*android:color/material_grey_800</color>
diff --git a/res/values-night/themes.xml b/res/values-night/themes.xml
index 604610d..d80b271 100644
--- a/res/values-night/themes.xml
+++ b/res/values-night/themes.xml
@@ -23,12 +23,6 @@
<item name="android:colorBackground">?android:attr/colorPrimaryDark</item>
</style>
- <style name="ThemeOverlay.Settings.SearchBar" parent="Theme.Settings">
- <item name="android:colorBackground">?android:attr/colorPrimaryDark</item>
- <item name="cardBackgroundColor">?android:attr/colorPrimary</item>
- <item name="android:colorControlNormal">?android:attr/colorAccent</item>
- </style>
-
<style name="Theme.SubSettings" parent="Theme.SubSettings.Base"/>
<style name="ThemeOverlay.SwitchBar.Settings" parent="ThemeOverlay.SwitchBar.Settings.Base">
diff --git a/res/values/colors.xml b/res/values/colors.xml
index be32412..ab8489c 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -14,7 +14,8 @@
limitations under the License.
-->
-<resources>
+<resources
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
<color name="crypt_keeper_clock_background">#ff9a9a9a</color>
<color name="crypt_keeper_clock_foreground">#ff666666</color>
@@ -144,7 +145,7 @@
<!-- End of QR code scanner colors -->
<!-- Search bar background color -->
- <color name="search_bar_background">@android:color/white</color>
+ <color name="search_bar_background">?androidprv:attr/colorSurface</color>
<!-- Dialog background color -->
<color name="dialog_background">@*android:color/background_device_default_light</color>
@@ -200,4 +201,4 @@
<color name="accessibility_color_inversion_background">#546E7A</color>
<color name="battery_info_error_color_red">#fce8e6</color> <!-- Material Red 50 -->
-</resources>
\ No newline at end of file
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 06e2d87..a48ff77 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5963,8 +5963,10 @@
<string name="history_details_title">History details</string>
<!-- Preference title for advanced battery usage [CHAR LIMIT=40] -->
<string name="advanced_battery_preference_title">View battery usage</string>
- <!-- Preference summary for advanced battery usage [CHAR LIMIT=40] -->
- <string name="advanced_battery_preference_summary">View usage for past 24 hours</string>
+ <!-- Preference summary for advanced battery usage, for past 24 hours [CHAR LIMIT=40] -->
+ <string name="advanced_battery_preference_summary_with_hours">View usage for past 24 hours</string>
+ <!-- Preference summary for advanced battery usage, from last full charge [CHAR LIMIT=40] -->
+ <string name="advanced_battery_preference_summary">View usage from last full charge</string>
<!-- Activity title for battery usage details for an app. or power consumer -->
<string name="battery_details_title">Battery usage</string>
diff --git a/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceController.java b/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceController.java
index 68c342b..635d2dd 100644
--- a/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceController.java
+++ b/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceController.java
@@ -16,6 +16,11 @@
package com.android.settings.applications.specialaccess.notificationaccess;
+import static android.service.notification.NotificationListenerService.FLAG_FILTER_TYPE_ALERTING;
+import static android.service.notification.NotificationListenerService.FLAG_FILTER_TYPE_CONVERSATIONS;
+import static android.service.notification.NotificationListenerService.FLAG_FILTER_TYPE_ONGOING;
+import static android.service.notification.NotificationListenerService.FLAG_FILTER_TYPE_SILENT;
+
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.ServiceInfo;
@@ -129,13 +134,24 @@
int types = 0;
String[] typeStrings = typeList.split(XML_SEPARATOR);
for (int i = 0; i < typeStrings.length; i++) {
- if (TextUtils.isEmpty(typeStrings[i])) {
+ final String typeString = typeStrings[i];
+ if (TextUtils.isEmpty(typeString)) {
continue;
}
- try {
- types |= Integer.parseInt(typeStrings[i]);
- } catch (NumberFormatException e) {
- // skip
+ if (typeString.equalsIgnoreCase("ONGOING")) {
+ types |= FLAG_FILTER_TYPE_ONGOING;
+ } else if (typeString.equalsIgnoreCase("CONVERSATIONS")) {
+ types |= FLAG_FILTER_TYPE_CONVERSATIONS;
+ } else if (typeString.equalsIgnoreCase("SILENT")) {
+ types |= FLAG_FILTER_TYPE_SILENT;
+ } else if (typeString.equalsIgnoreCase("ALERTING")) {
+ types |= FLAG_FILTER_TYPE_ALERTING;
+ } else {
+ try {
+ types |= Integer.parseInt(typeString);
+ } catch (NumberFormatException e) {
+ // skip
+ }
}
}
if (hasFlag(types, getType())) {
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index 326113e..19a8011 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -52,11 +52,14 @@
public class PowerUsageSummary extends PowerUsageBase implements
BatteryTipPreferenceController.BatteryTipListener {
- private static final String KEY_BATTERY_ERROR = "battery_help_message";
-
static final String TAG = "PowerUsageSummary";
@VisibleForTesting
+ static final String KEY_BATTERY_ERROR = "battery_help_message";
+ @VisibleForTesting
+ static final String KEY_BATTERY_USAGE = "battery_usage_summary";
+
+ @VisibleForTesting
static final int BATTERY_INFO_LOADER = 1;
@VisibleForTesting
static final int BATTERY_TIP_LOADER = 2;
@@ -78,6 +81,8 @@
boolean mNeedUpdateBatteryTip;
@VisibleForTesting
Preference mHelpPreference;
+ @VisibleForTesting
+ Preference mBatteryUsagePreference;
@VisibleForTesting
final ContentObserver mSettingsObserver = new ContentObserver(new Handler()) {
@@ -154,12 +159,10 @@
setAnimationAllowed(true);
initFeatureProvider();
+ initPreference();
mBatteryUtils = BatteryUtils.getInstance(getContext());
- mHelpPreference = findPreference(KEY_BATTERY_ERROR);
- mHelpPreference.setVisible(false);
-
if (Utils.isBatteryPresent(getContext())) {
restartBatteryInfoLoader();
} else {
@@ -249,6 +252,18 @@
}
@VisibleForTesting
+ void initPreference() {
+ mBatteryUsagePreference = findPreference(KEY_BATTERY_USAGE);
+ mBatteryUsagePreference.setSummary(
+ mPowerFeatureProvider.isChartGraphEnabled(getContext()) ?
+ getString(R.string.advanced_battery_preference_summary_with_hours) :
+ getString(R.string.advanced_battery_preference_summary));
+
+ mHelpPreference = findPreference(KEY_BATTERY_ERROR);
+ mHelpPreference.setVisible(false);
+ }
+
+ @VisibleForTesting
void restartBatteryInfoLoader() {
if (getContext() == null) {
return;
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
index 1c2c059..00c71df 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java
@@ -575,7 +575,7 @@
mFragment.initPreferenceForTriState(mContext);
assertThat(mFooterPreference.getTitle().toString())
- .isEqualTo("This app requires Optimized battery usage.");
+ .isEqualTo("This app requires optimized battery usage.");
}
@Test
@@ -586,7 +586,7 @@
mFragment.initPreferenceForTriState(mContext);
assertThat(mFooterPreference.getTitle()
- .toString()).isEqualTo("This app requires Unrestricted battery usage.");
+ .toString()).isEqualTo("This app requires unrestricted battery usage.");
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
index 11b6ad2..843cc99 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
@@ -16,6 +16,8 @@
package com.android.settings.fuelgauge;
import static com.android.settings.fuelgauge.PowerUsageSummary.BATTERY_INFO_LOADER;
+import static com.android.settings.fuelgauge.PowerUsageSummary.KEY_BATTERY_ERROR;
+import static com.android.settings.fuelgauge.PowerUsageSummary.KEY_BATTERY_USAGE;
import static com.google.common.truth.Truth.assertThat;
@@ -37,6 +39,7 @@
import android.provider.Settings;
import androidx.loader.app.LoaderManager;
+import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
@@ -83,6 +86,10 @@
private VisibilityLoggerMixin mVisibilityLoggerMixin;
@Mock
private PreferenceScreen mPreferenceScreen;
+ @Mock
+ private Preference mBatteryUsagePreference;
+ @Mock
+ private Preference mHelpPreference;
private Context mRealContext;
private TestFragment mFragment;
@@ -102,12 +109,16 @@
when(mFragment.getActivity()).thenReturn(mSettingsActivity);
when(mFeatureFactory.powerUsageFeatureProvider.getAdditionalBatteryInfoIntent())
.thenReturn(sAdditionalBatteryInfoIntent);
+ when(mFeatureFactory.powerUsageFeatureProvider.isChartGraphEnabled(mRealContext))
+ .thenReturn(true);
mFragment.mBatteryUtils = spy(new BatteryUtils(mRealContext));
ReflectionHelpers.setField(mFragment, "mVisibilityLoggerMixin", mVisibilityLoggerMixin);
ReflectionHelpers.setField(mFragment, "mBatteryBroadcastReceiver",
mBatteryBroadcastReceiver);
doReturn(mPreferenceScreen).when(mFragment).getPreferenceScreen();
when(mFragment.getContentResolver()).thenReturn(mContentResolver);
+ when(mFragment.findPreference(KEY_BATTERY_USAGE)).thenReturn(mBatteryUsagePreference);
+ when(mFragment.findPreference(KEY_BATTERY_ERROR)).thenReturn(mHelpPreference);
}
@Test
@@ -124,6 +135,30 @@
}
@Test
+ public void initPreference_chartGraphEnabled_hasCorrectSummary() {
+ mFragment.initPreference();
+
+ verify(mBatteryUsagePreference).setSummary("View usage for past 24 hours");
+ }
+
+ @Test
+ public void initPreference_chartGraphDisabled_hasCorrectSummary() {
+ when(mFeatureFactory.powerUsageFeatureProvider.isChartGraphEnabled(mRealContext))
+ .thenReturn(false);
+
+ mFragment.initPreference();
+
+ verify(mBatteryUsagePreference).setSummary("View usage from last full charge");
+ }
+
+ @Test
+ public void initPreference_helpPreferenceInvisible() {
+ mFragment.initPreference();
+
+ verify(mHelpPreference).setVisible(false);
+ }
+
+ @Test
public void restartBatteryTipLoader() {
//TODO: add policy logic here when BatteryTipPolicy is implemented
doReturn(mLoaderManager).when(mFragment).getLoaderManager();
diff --git a/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceControllerTest.java b/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceControllerTest.java
index 1aa8292..3f6103a 100644
--- a/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/applications/specialaccess/notificationaccess/TypeFilterPreferenceControllerTest.java
@@ -152,7 +152,7 @@
public void updateState_enabled_metaData_disableFilter_notThisField() {
mSi.metaData = new Bundle();
mSi.metaData.putCharSequence(NotificationListenerService.META_DATA_DISABLED_FILTER_TYPES,
- "1,2");
+ "1,alerting");
when(mNm.isNotificationListenerAccessGranted(mCn)).thenReturn(true);
when(mNm.getListenerFilter(mCn, 0)).thenReturn(new NotificationListenerFilter());
CheckBoxPreference pref = new CheckBoxPreference(mContext);
@@ -165,7 +165,7 @@
public void updateState_enabled_metaData_disableFilter_thisField_stateIsChecked() {
mSi.metaData = new Bundle();
mSi.metaData.putCharSequence(NotificationListenerService.META_DATA_DISABLED_FILTER_TYPES,
- "1,2,32");
+ "conversations,2,32");
when(mNm.isNotificationListenerAccessGranted(mCn)).thenReturn(true);
when(mNm.getListenerFilter(mCn, 0)).thenReturn(
new NotificationListenerFilter(32, new ArraySet<>()));