Commit Graph

68 Commits

Author SHA1 Message Date
jackqdyulei
bc86e4747f Don't update the header when toggle menu
If we only toggle the app type in battery settings, don't update
the header. Then it won't have flicker in battery header.

Bug: 64065456
Test: RunSettingsRoboTest
Change-Id: If1cfa745f723f808ad9c5fd921be797acd3199ba
2017-07-26 15:28:59 -07:00
jackqdyulei
88b27fdeac Make anomaly item refresh in battery
Bug: 63908155
Test: RunSettingsRoboTest
Change-Id: I3e220001ca989020447403641360fade4d09e969
2017-07-21 10:37:14 -07:00
Alex Kulesza
2f0e60ccda Make time remaining estimate debug mode more reliable.
Previously, the long click handler was unregistered on first use and
never re-registered. This meant that, e.g., on plugging and unplugging
the phone, debug mode stopped working. This change moves long click
activation into restartBatteryInfoLoader().

Bug: 63133793
Test: make RunSettingsRoboTests
Merged-In: I4c25a1f05ab3718bf06faf455cf670b5460a7306
Change-Id: I4c25a1f05ab3718bf06faf455cf670b5460a7306
2017-07-19 01:04:08 +00:00
jackqdyulei
85e771da78 Update summary for "Voice Calls"
Change it from "Screen usage 2m" to "2m", since this is not a screen
usage. This cl has effect on all non-app batterySipper.

Bug: 63443732
Test: RunSettingsRoboTests
Change-Id: I027b3234bd7b56738ab31c5dfbc0d8bd7f19186e
2017-07-07 14:52:27 -07:00
TreeHugger Robot
da45ba8c9e Merge "Hide misc in battery settings" into oc-dr1-dev 2017-06-26 19:52:55 +00:00
jackqdyulei
d856294bf1 Hide misc in battery settings
Hide it in any condition:
1. both in app usage list and device usage list
2. in all targets(i.e. user, userdebug..)

Bug: 62422405
Test: RunSettingsRoboTests
Change-Id: I36bd043942ce7e2353163868bf6d86f422f8e7ee
2017-06-26 10:36:05 -07:00
Andrew Sapperstein
466a3f6faa Remove PowerUsageFeatureProvider.isAnomalyDetectionEnabled
Instead, this decision is being handled via AnomalyDetectionPolicy.

Change-Id: I5b1831c78e31e3be984dda07bcea9f0b0a25d52f
Fixes: 62871629
Test: robotests
2017-06-23 14:32:22 -07:00
jackqdyulei
27792b2356 Only update anomaly icon in AnomalyLoader
Before this cl, it will re-calculate battery percentage once we get
anomaly data, which will add screen usage data twice. This cl make it
only update anomaly icon after the anomaly detection is done.

Bug: 62803379
Test: RunSettingsRoboTests
Change-Id: I2089646679e299fa948b1f3ed21f4a13a1317aa3
2017-06-20 13:53:46 -07:00
Andrew Sapperstein
9f1e911759 Refactor test runner to use static list of resource paths
Previously everything lived in an inner class method of
SettingsRobolectricTestRunner. That method has now been turned into
a static method so that it can be called by other runners.

Bug: 62460102
Test: robotests
Change-Id: I6612b1f26404587301c534c8ba60e39d59d6c840
2017-06-09 09:21:26 -07:00
TreeHugger Robot
4c4e780577 Merge "Make flag "showAllapps" persistent in PowerUsageSummary" into oc-dr1-dev 2017-06-09 04:39:41 +00:00
jackqdyulei
6525053801 Merge "Update subtitle for apps in battery settings" into oc-dev
am: 031b90541f

Change-Id: Ia0581b295824b73ef36f931066b883cff51fc0e9
2017-06-09 02:57:46 +00:00
jackqdyulei
f9a5c39c4c Make flag "showAllapps" persistent in PowerUsageSummary
This flag is used to decide whether to show all the apps
(including system app, service..) in battery settings

Handle it in onCreate() and onSaveInstanceState()

Bug: 62422948
Test: RunSettingsRoboTests
Change-Id: I30c0d6e1e25902f1192fc2564aa09d635b5e0f4f
2017-06-08 19:20:05 -07:00
jackqdyulei
dcea4e894e Update subtitle for apps in battery settings
1. If it is a normal app, show "Screen usage TIME"
2. If it is a hidden app, show "TIME"

Note that in this case the item screen will show "TIME"

Bug: 62422404
Test: RunSettingsRoboTests
Change-Id: Ie8d6caf998d18994ac158f0217109c0e5e9f92ba
2017-06-08 12:52:48 -07:00
Salvador Martinez
f4727ea07f Add ability to see both battery estimates on long press
If the enhanced estimate is being used in battery settings
it is now possible to long press on the text to have it display
both instead of the string that is normally used.

Adds another loader to enable this since it needs both the old
and the new estimates simultaneously.

Feature is hidden behind a feature flag that only googlers will
have enabled.

Test: robotests
Bug: 38399275
Change-Id: I5caf26513baada27efd50ddb0e72d3868da47150
2017-06-05 16:26:32 -07:00
Salvador Martinez
9cfa7720f4 Make BatterySettings Asynchronous and use enhanced estimate
this CL changes BatteryInfo methods to all use the async style
callback approach it had for one of the methods. Non-async methods
are now annotated to only be used in worker threads. BatteryInfo
can now be obtained via callback by calling one of the async
methods. Alternatively if there is a worker thread available
the synchronous methods similar to the old ones can be used.

The callback methods have all been changed so that they cascade to a
async method that takes all the required info as paremeters. This
will minimize the amount of churn in files that currently use
BatteryInfo.

A new loader was created that can be used to get BatteryInfo in
places that wish to get it. This loader is used in
PowerUsageSummary to get the BatteryInfo.

Test: Robotests
Bug: 38399275
Bug: 38398949
Bug: 38399654
Change-Id: Ic5a82d8ca4c85fad1b883226327ec083badf861d
2017-06-01 18:03:53 -07:00
Salvador Martinez
0e8c88376c Move BatteryInfo to settings from settingslib
This CL simply moves BatteryInfo from settingslib to settings and
makes sure the tests still pass. No other changes are made other than
imports or minor changes needed to make sure existing code does not
break.

Test: Robotests still pass
Bug: 38399275
Bug: 38398949
Bug: 38399654
Change-Id: I59803348e2780b7676ccc6c43234a586c184d71f
2017-06-01 11:34:08 -07:00
jackqdyulei
4a7c8d7125 Split loading process for battery header
This cl creates BatteryHeaderPreferenceController, which will first
load the battery level in ui thread(in displayPreference()), then
display the remaining time once we get the battery stats.

This is the best we can do to avoid ui flashing while removing the
animation

Bug: 38349587
Test: RunSettingsRoboTests

Merged-In: Ic3622bb73562ba42e69b37e5674a724c03c45f12
Change-Id: Ic3622bb73562ba42e69b37e5674a724c03c45f12
2017-05-23 16:21:33 -07:00
jackqdyulei
605dbc66be Split loading process for battery header
This cl creates BatteryHeaderPreferenceController, which will first
load the battery level in ui thread(in displayPreference()), then
display the remaining time once we get the battery stats.

This is the best we can do to avoid ui flashing while removing the
animation

Bug: 38349587
Test: RunSettingsRoboTests

Change-Id: Ic3622bb73562ba42e69b37e5674a724c03c45f12
2017-05-23 13:22:42 -07:00
jackqdyulei
495de548bd Add wakeup alarm anomaly detector
Wakeup alarm count frequent is calculated by a / b, where
1. a: the total wakeup alarm count since the last full charge
2. b: total time running since last full charge
(include sleeping time)

This cl also has the following changes:
1. Move bunch of methods to BatteryUtils
2. Create type WAKEUP_ALARM
3. Add and update tests

Upcoming cl will make sure we get the threshold from
AnomalyDetectionPolicy

Bug: 36921529
Test: RunSettingsRoboTests
Change-Id: I4f7b85606df68b6057f6c7d3f3be7f9a9a747f1d
2017-05-23 09:49:14 -07:00
Salvador Martinez
6976ccecee Merge "Use enhanced estimate battery info when available" 2017-05-23 03:28:32 +00:00
TreeHugger Robot
161571617b Merge "Revert "Add animation for battery asyncLoader."" into oc-dev 2017-05-23 01:49:23 +00:00
Salvador Martinez
be6f07045a Use enhanced estimate battery info when available
This CL updates the battery page to get the updated strings and
other relevant battery info from directly from SettingsLib by
providing it an overrided drain time instead of manually changing
the value in the returned info. This will provide the added benefit
of using the new strings when appropriate that tell the user that
the estimate provided is based on their usage.

Test: robotests
Bug: 38399659
Change-Id: I0db572c2ea78910756314b6bf066d37e9f90a15c
2017-05-22 18:06:29 -07:00
Lei Yu
78684dc049 Revert "Add animation for battery asyncLoader."
This reverts commit a3c528f64d.

Test: Build
Change-Id: Ib50221873e39dee40c5cf8e4b41dcf7aa13f6134
Merged-In: Ib50221873e39dee40c5cf8e4b41dcf7aa13f6134
2017-05-22 16:49:55 -07:00
Lei Yu
e1441c63ee Revert "Add animation for battery asyncLoader."
This reverts commit a3c528f64d.

Test: Build
Change-Id: Ib50221873e39dee40c5cf8e4b41dcf7aa13f6134
2017-05-22 14:33:24 -07:00
TreeHugger Robot
b287dc93d5 Merge "Skip cursor loader if not needed" 2017-05-18 20:28:52 +00:00
jackqdyulei
b5219ba29a Merge "Add screen usage string for battery settings" into oc-dev am: 28cf04d994
am: 3ab2ca5cc9

Change-Id: Iaca27db0a637de88c09a45d88f35db258783fa16
2017-05-18 19:35:27 +00:00
TreeHugger Robot
28cf04d994 Merge "Add screen usage string for battery settings" into oc-dev 2017-05-18 19:10:16 +00:00
Salvador Martinez
44b9a4072c Skip cursor loader if not needed
The cursor loader was being started when the battery prediction
feature was not enabled. This could lead to null pointers because
it was not possible to provide it with a valid URI which would
make the CursorLoader unhappy. This CL makes it so we just skip
the CursorLoader initialization entirely when we know the feature
is disabled so we don't have this issue. It also includes a test
to make sure this does not regress.

Test: Robotests
Bug: 38371686
Change-Id: I4f6f6278bbc16668bca0b51fcc7e30f27a9e216f
2017-05-18 11:10:18 -07:00
Lei Yu
9a4be81e5c Merge changes I573e4fb9,I8e7baadc into oc-dev am: 67e38774ce
am: d85bdebe0e

Change-Id: I865f41eae196aee32edd60169dacbc5dca772439
2017-05-18 17:12:34 +00:00
jackqdyulei
2b923ce44f Smear screen power usage based on activity time.
Bug: 38328636
Test: RunSettingsRoboTests
Change-Id: I8e7baadcd88a8e9d674f5bc8d8e42e0f3953c98a
2017-05-17 18:06:47 -07:00
jackqdyulei
7548f1fa77 Add screen usage string for battery settings
In advanced battery page we still use "Used for"

Bug: 38328647
Test: Build & Screenshot
Change-Id: Ic194bfed45a76c811c431a13b5554f5bc978bca5
2017-05-17 13:14:45 -07:00
TreeHugger Robot
b823fcc431 Merge "Add animation for battery asyncLoader." 2017-05-11 23:07:00 +00:00
jackqdyulei
a3c528f64d Add animation for battery asyncLoader.
When battery asyncLoader is loading batterystats, show a battery
placeholder(critical level) and animate to real status once data is
loaded.

Bug: 35917699
Test: RunSettingsRoboTests
Change-Id: Ie4ff73ff2cc0b9e17b4541e3284bf2ac34da42c4
Merged-In: Ie4ff73ff2cc0b9e17b4541e3284bf2ac34da42c4
2017-05-11 15:27:23 -07:00
jackqdyulei
14dcca0e91 Add animation for battery asyncLoader.
Fix merge conflict from oc-dev

When battery asyncLoader is loading batterystats, show a battery
placeholder(critical level) and animate to real status once data is
loaded.

Bug: 35917699
Test: RunSettingsRoboTests
Change-Id: Ie4ff73ff2cc0b9e17b4541e3284bf2ac34da42c4
2017-05-11 10:05:33 -07:00
Salvador Martinez
52aa68f704 Fix null pointer error && add settings side guard
The null check for the cursor happens in the try block
which causes a null pointer error in the finally block
even though we avoid executing the other code because
we still try to close the cursor. This change moves
that outside of the try block to avoid that. Also added
a test to verify that a no-op occurs in the method that
uses the enhanced prediction that would have caught this.

Additionally, the method for checking if the enhanced
prediction was available was not being called in Settings.
This CL adds that check and a relevant tests to ensure it
is respected.

Test: Robotests
Bug: 38031439
Change-Id: I6924acb5552baf09a9ff0cdef8e30881115aa1ca
2017-05-08 16:39:38 -07:00
Salvador Martinez
126c032afa Add ability to speak to provider for enhanced estimate
Added code that checks if the provider for the enhanced battery
drain estimate is available. If it is available we use that
value instead of the one computed by BatteryStats.

Test: Robotests
Bug: 37753227
Change-Id: I7eae01b56f85d33eafc42ee0f18bb752779581b2
2017-05-04 20:05:53 -07:00
jackqdyulei
3dbd77e5ae Add control for the anomaly detection
Bug: 36924669
Test: RunSettingsRoboTests
Change-Id: Id71b1324f567e7aa9b51dc25247fff9151d4e108
2017-05-04 10:11:54 -07:00
jackqdyulei
4cb19e74b3 Add anomaly icon for PowerGaugePreference
When the app contains anomaly, we should show anomaly icon(triangle
alert).

This cl also extracts a new method refreshAppListGroup from refreshUi.
New method is used to only refresh appListGroup. Reason for this action:

1. Improve performance(partial refresh)
2. We init AnomalyLoader in refreshUi, invoke refreshUi in
onLoadFinish will create infinite loop.

Bug: 36924669
Test: RunSettingsRoboTests
Change-Id: If54c89349e21763ca714123ac6ae884bd0f6a377
2017-05-03 16:01:55 -07:00
jackqdyulei
106dc459e0 Move battery stats loading to AsyncLoader.
It takes 3-4 seconds to load the battery settings page in Ryu. Main
reason is that it takes too long to init BatteryStatsHelper.

This cl moves loading code to AsyncLoader, and we will refresh ui once
the loading part is finished.

Following cl will add animation for the battery header to make it not
so janky

Bug: 37196170
Test: RunSettingsRoboTest
Change-Id: I40dfdde4a072e28a56c8fdf0ec6d671b5109fc6d
2017-04-25 13:26:17 -07:00
Lei Yu
8f9f25c541 Merge "Add TtsSpan for formatted time." into oc-dev 2017-04-24 17:01:59 +00:00
jackqdyulei
f4c1cef322 Add TtsSpan for formatted time.
Talk back will read "Used for 3m" as "Used for 3 meters", but
it will read "Used for 3h 3m" correctly.

This cl add specific Ttsspan if the time only contains "minute"

Bug: 36379530
Test: Run SettingsRoboTests

Change-Id: I033575938cce24221980dddd9d66be4e18804541
2017-04-21 14:42:42 -07:00
Matthew Fritze
3266e3d712 Remove duplicates between battery and display settings
Change preference keys of duplicate settings between
display and battery to avoid duplication in search.

Bug: 33701673
Test: make RunSettingsRoboTests
Change-Id: Iaad52f16ce33c478c64bcec656cc8edbe0c97283
Merged-In: I56c82e9e7f163d345065ca478849de9b14c173fe
2017-04-20 11:11:20 -07:00
Lei Yu
c4f08120b1 Merge "Revamp battery Ui in low battery mode" into oc-dev 2017-04-13 21:43:38 +00:00
jackqdyulei
f8e6f43425 Revamp battery Ui in low battery mode
This cl refine battery icon ui in low battery mode:
1. Should show indicator(fixed in ag/2035178)
2. Show bolt icon when charging
3. When battery is low, set battery background as red and indicator
as white.

This cl also includes the field updates for battery.

Bug: 36862496
Test: RunSettingsRoboTests
Change-Id: Ifb2ed339742119bbff78712df09288b895756b1f
2017-04-12 12:47:52 -07:00
jackqdyulei
7f4c5fc1f4 Move bunch of battery methods to BatteryUtils.java
This cl moves following methods to BatteryUtils:
1. shouldHideSipper
2. removeHiddenBatterySippers
3. calculateBatteryPercent

As a result, we could use these methods in battery page as well
as app info page.

This cl also move bunch of tests to new file and add test for
method calculateBatteryPercent

Bug: 36816681
Test: RunSettingsRoboTests
Change-Id: Ic32700fe9741fbb96363db4af2d4fccb3ee8e317
2017-04-12 10:10:51 -07:00
jackqdyulei
ab5ca9f5cd Remove misc data in battery main page.
The removed types are:
1. DrainType.UNACCOUNTED
2. DrainType.OVERCOUNTED

This cl removes the above types in PowerUsageSummary and
PowerUsageAdvanced

Bug: 36874846
Test: RunSettingsRoboTests
Change-Id: I1807c44a2c0a9c2fa124cdef962a6411ae6830ca
2017-04-06 15:09:57 -07:00
jackqdyulei
273ad50a3a Ui changes in battery main page
1. Refine the battery header view
2. Move stats section to the place above power management
3. Add last full charge battery stat
4. Add the disclaimer as a footer

Also update the method name in test file, and this ui changes
also fix the header flash problem.

Bug: 36576021
Bug: 36494178
Test: RunSettingsRoboTests
Change-Id: I9784dbbbe16e61da7287f300183347dd4eee6a2b
(cherry picked from commit edfd09d590)
2017-04-04 10:06:35 -07:00
jackqdyulei
c577ef0a75 Hide Wifi and Systemui in settings main page
Also move the systemui to category system

Fix: 36644740
Fix: 36645264
Test: RunSettingsRoboTests

Change-Id: I6b64a7dca58091f3a1d8b7d99c8bae7ddf9169f9
(cherry picked from commit 1e95b74f77)
2017-03-29 20:23:50 +00:00
jackqdyulei
b0b45c3225 Add metric enums for menu in battery settings page.
Bug: 35063415
Test: RunSettingsRoboTests
Change-Id: I23f58a73f7e17da56796687209610165dd688aa6
2017-03-02 11:24:17 -08:00
jackqdyulei
44e8968662 Hide bluetooth and media in battery settings page.
Media is a bundled process which contains the following packages:

com.android.providers.downloads
com.android.mtp
com.android.providers.media
com.android.providers.downloads.ui

This cl moves them to advanced battery page.
1. Bluetooth lives in category bluetooth
2. Media lives in category system

Bug: 35811926
Test: RunSettingsRoboTests
Change-Id: Ie229fa15e2e62b67d571988f7f4e7788a665bcdd
2017-03-01 13:22:12 -08:00