Commit Graph

282 Commits

Author SHA1 Message Date
TreeHugger Robot
7d214f99ee Merge "2nd attempt to fix Slice strict mode." into pi-dev 2018-05-25 19:44:32 +00:00
Fan Zhang
2313b24215 2nd attempt to fix Slice strict mode.
1. Use real BluetoothAdapter instead of settingslib version. The
   settingslib version contains calls that violates strictmode rules.
2. Override StrictMode rules in SettingsSliceProvider when it's called
   in background thread. When in background, the enforcement from Slice
   framework (StrictMode#ThreadPolicy) is not useful and can be safely
   ignored.

Change-Id: I68523148f4c1dc88a54e207447d21ec439478cdf
Merged-In: I68523148f4c1dc88a54e207447d21ec439478cdf
Fixes: 79985175
Test: robotests
2018-05-25 16:37:56 +00:00
TreeHugger Robot
2357c1cd84 Merge "Refactor nfc preference controller" into pi-dev 2018-05-24 17:45:19 +00:00
Chihhang Chuang
6719a9b73e Refactor nfc preference controller
- Remove BaseNfcPreferenceController.
- NfcPreferenceController inherit from TogglePreferenceController.
- AndroidBeamPreferenceController inherit from BasePreferenceController.
- Override getIntentFilter in NfcPreferenceController to listen changes.
- Add an API (hasAsyncUpdate) into BasePreferenceController to
distinguish the setting which is updated asynchronously.

Change-Id: I1abe4410169e305a0d6106e24c54e7f2e763fc91
Merged-In: I7c9c48ea7f1ad01a02524beabf9d30baa3db891f
Fixes: 67997761
Fixes: 74887543
Test: RunSettingsRoboTests
2018-05-24 10:31:44 +08:00
TreeHugger Robot
666ee4fa14 Merge "Inline slider with header" into pi-dev 2018-05-23 19:32:41 +00:00
Matthew Fritze
250e26aff9 Inline slider with header
Add a header to the slider slices to allow for a second line of text.
This is important to add more context to slices outside of settings.

Fixes: 80157462
Test: robotests
Merged-In: Ida90c9377afb19de320dfce54175f51eee088cfe
Change-Id: I1a1be345e84cbd9f300440e6431d4b331d051dac
2018-05-23 11:28:41 -07:00
TreeHugger Robot
c7b90ee998 Merge "Return null when setting can't be changed." into pi-dev 2018-05-23 17:08:29 +00:00
Matthew Fritze
d9613b2742 Return null when setting can't be changed.
If a Slice cannot be changed, return null instead of
an error slice.

Bug: 80155832
Test: robotests
Change-Id: I843fee76cf19d49cc994062059cb231f222120b2
Merged-In: Ib94136c449c6d9c1911f89833bba62fd2263daa4
2018-05-22 20:18:09 -07:00
Matthew Fritze
1dd25fd87c Add isSliceable API to BasePrefController
Only support explicitly approved Settings Slices,
dictated by controllers which return true for the new
method isSliceable.

Updating the supported settings to a whitelist means that
the method to return all available slices must be updated,
and checking slicability when we index slices.

Test: robotests
Change-Id: I85848c2cdf3e151fa94b33dd1dc5c0374ef94b5b
Merged-In: Ib2b9690cdd0036b5cc4a1cb846c52bce7c824ab9
Fixes: 79779103
2018-05-22 22:43:24 +00:00
Matthew Fritze
25fc14c607 Add Bluetooth Slice
Bluetooth slice is added a special case, due to the migration of
bluetooth to a Switch Bar instead of a preference with a controller.

Change-Id: I8b70bb66c862255a4e8d2426ac09939ba6197624
Merged-In: Icfdcd77601ad1e64e0f6c352a8d691f0181515c8
Fixes: 67997327
Test: robotests
2018-05-22 06:59:49 -07:00
Chia-I Wu
5c99a41a9c Merge "Show color modes from config_availableColorModes" into pi-dev 2018-05-22 07:09:53 +00:00
tim peng
e3a87548e5 Merge changes I6d4f8ec3,Id4c1e86c into pi-dev
* changes:
  Make device discoverable in Connected Devices settings page
  Add bluetooth discoverable footer preference in connected devices page
2018-05-22 04:44:15 +00:00
TreeHugger Robot
c9d258a11e Merge "Misc GAR fixes" into pi-dev 2018-05-22 03:08:15 +00:00
Chia-I Wu
d4cfb414c3 Show color modes from config_availableColorModes
Check config_availableColorModes to decide which color mode options
to show.

Bug: 73824924
Bug: 73825738
Test: 2016, 2017, and 2018 devices
Change-Id: I42915595348061ff4b3f2fdf14753e96dfcb2052
2018-05-21 19:58:08 -07:00
timhypeng
4f636b90b8 Add bluetooth discoverable footer preference in connected devices page
* Dynamicly add preference in controller
* Add test cases for DiscoverableFooterPreferenceController

Bug: 79294219
Test: make -j50 RunSettingsRoboTests
Change-Id: Id4c1e86c9a0a0cd69d8106a18f2cf4a0fa31782b
Merged-In: Id4c1e86c9a0a0cd69d8106a18f2cf4a0fa31782b
2018-05-22 02:14:38 +00:00
Fan Zhang
3ab53bbd7b Misc GAR fixes
- Use colorPrimary for EntityHeader background.
- Update data usage header text to be 87% black.

Change-Id: Ic361155d7cd36a2f1cca96e918af0e3855fb8ced
Merged-In: Ic361155d7cd36a2f1cca96e918af0e3855fb8ced
Fixes: 79773433
Test: robotests
Test: visual
2018-05-21 22:38:24 +00:00
Fan Zhang
fcbf155b47 Don't use cached app icon in app info page.
The cache in ApplicationsState is causing a lot of damage because AS
object is not smart enough to invalidate the cache in all conditions. So
we end up having bugs like stale app label or icon in weird cases.

This change stops using the cache when loading app icon in entity
headres. This is only a stop gap solution to fix most visible (and most
frequently complained) parts of the page. We still need to address the
cache in ApplicationsState eventually.

Change-Id: Iea88ad99d4069d678d09943cfb0b0e5c94eb3326
Fixes: 79881693
Test: robotests
2018-05-18 14:31:48 -07:00
Matthew Fritze
4a6f058552 Add Intentfilter BasePreferenceController
For settings which can change in the framework, outside of
the settings app and a slice, a Slice needs to be able to
register a listener for these changes.

Adding a getter for an IntentFilter in BasePreferenceControllers
allows us to use the SliceBroadcastRelay in SysUi to listen for
these changes.

Test: robotests
Fixes: 78138654

Change-Id: I579375069ca98fd21b60cd3a69c1a122cabf96e2
Merged-In: Ifa05b651aaa3458c54866f71469964b1a070e458
2018-05-18 08:06:08 -07:00
Matthew Fritze
46aa586610 Add Wifi Slice
Add a custom Wifi Slice to the Settings Slice Provider.
It needs a custom Slice because of the complicated listener logic
in the MasterSwitchPreferenceController, which makes it hard to
work-in synchronous set/get logic.

The one-off Slice requires extra changes, including:
- Including it in getDescendants
- Handling changes to wifi by the framework

This is the first change that uses SettingsLib's broadcast relay,
which allows settings to (un)register IntentFilters to a Uri,
allowing Settings Slices affected by the framework (quicksettings,
connectivity related, volume, etc) to be updated without action
on the Slice.

Fixes: 70622039
Fixes: 67997332
Test: robotests
Change-Id: Ia76738dd6baacd5522d52df2c61ebad86a600282
Merged-In: Ibfe4736beecb833e3f6bb871b2eb5228a5fd3a34
2018-05-17 09:58:19 -07:00
Matthew Fritze
7d565e97a3 Clean-up settings slices
- Set TTL to Infinity
- Set color of each slice to color accent

Change-Id: I7de4530880725ba3282602135bdc1fa85d786905
Fixes: 79780418
Test: robotests
2018-05-16 08:20:05 -07:00
TreeHugger Robot
f005640b9c Merge "Make it so client code does not tie tether to wifi" into pi-dev 2018-05-12 04:37:27 +00:00
Ryan Lin
b46389a588 Merge "Add call volume in sound settings" into pi-dev 2018-05-11 20:13:16 +00:00
ryanywlin
156fd91fbd Add call volume in sound settings
* Add call volume slider
* move "Take call" controller from "Ring volume" to "Call volume"

Bug: 77254162
Test: make -j50 RunSettingsRoboTests

Change-Id: I3443021c1557f42293e9b7772fe9072e5a966cf8
2018-05-11 17:56:16 +08:00
Lei Yu
b98039e263 Merge "Fix a bug in AnomalyDetectionJobService" into pi-dev 2018-05-11 00:49:22 +00:00
Salvador Martinez
a76fd8b858 Make it so client code does not tie tether to wifi
The wifi service already handles turning off tethering if
multi-interface is/isn't supported. We don't need to do tie wifi
and tethering stuff together in the UI.

Test: robotests still pass
Bug: 79213401
Merged-In: I699dfe2d7646f248a54faa5a8429176697614cdf
Change-Id: I699dfe2d7646f248a54faa5a8429176697614cdf
2018-05-10 20:36:37 +00:00
Lei Yu
a00e39365c Fix a bug in AnomalyDetectionJobService
Even though onStopJob is called, the service may still exist, so
we need to reset the mIsJobCanceled in onStartJob

Also remove the batteryStats since we don't need it anymore.

Change-Id: I6d48efecb750ad4e464569cac426d87014a8db90
Fixes: 77968649
Test: RunSettingsRoboTests
2018-05-10 11:07:17 -07:00
ryanywlin
8276d966e9 Add hearing aid device in audio switch
- Add connected hearing aid device to MediaOutputPreferenceController
and HandsFreeProfileOutputPreferenceController

- Set active device to different profile depend on HisyncId

Bug: 78142719
Test: make RunSettingsRoboTests ROBOTEST_FILTER="MediaOutputPreferenceControllerTest" -j28
Test: make RunSettingsRoboTests ROBOTEST_FILTER="HandsFreeProfileOutputPreferenceControllerTest" -j28
Test: make RunSettingsRoboTests ROBOTEST_FILTER="AudioOutputSwitchPreferenceControllerTest" -j28
Change-Id: Ib8fe4f06f8564572dffdce6fcc3f29578bf91bd9
2018-05-10 10:28:20 +08:00
TreeHugger Robot
ab68a8107c Merge "Establish permanently unavailable settings" into pi-dev 2018-05-09 21:13:44 +00:00
Matthew Fritze
bd376296cd Establish permanently unavailable settings
Distinguish between settings which are permanently unavailable on
the device, and temporarily unavailable. This enables us to restrict
which setting slices are exposed in onSliceGetDescendants.

The primary changes in this CL are renaming:
"DISABLED_UNSUPPORTED" -> "UNSUPPORTED_ON_DEVICE"
to be more clear the the setting will cannot be accessed on the device, and,
adding a new enum to encapsulate settings which are currently unavailable, but
could be enabled in the future.

Also remove UNAVAILABLE_UNKNOWN. Devs should never need this enum.

Bug: 78910582
Fixes: 79245656
Test: robotests
Change-Id: I42c2cedab66be2d76999795f46470a079cc1ec71
Merged-In: I58821a6cfd6134b3b351657b6edf5f74ead00643
2018-05-09 10:03:40 -07:00
Matthew Fritze
ff865c898f Remove the Settings search keywords from Slices
The keywords used for settings search are good when we are highly
confident the user is searching for as setting (settings search),
but not effective in a more general search setting (launcher,
an assistant). Thus, we should not index these keywords as Slice
keywords, and rely on the setting title and screen title as baseline
keywords.

Change-Id: I99e44834454b5949c4883f877e02be47498e06e2
Fixes: 78911847
Test: robotests
2018-05-09 09:01:58 -07:00
Eran Messeri
f61ccf3fa3 Require work profile to be unlocked for changing notification settings in a different way
Rather than check for the state of the work profile in
LockScreenNotificationPreferenceController#handlePreferenceTreeClick, do so in
the RestrictedListPreference#performClick.
The drawback of checking the state in handlePreferenceTreeClick is that the
preferences are displayed first and then the requirement to unlock/enable the
work profile is displayed on top of it.

This is rather poor UX, so switch to doing the check in performClick and
returning early if the work profile needs to be unlocked/enabled.
This is similar to Patchset 1 from ag/3805482.
The main difference is that the user is returned to the settings screen
both after enabling the work profile and unlocking it.

Test: Manually with TestDPC
Test: atest SettingsRoboTests:RestrictedListPreferenceTest
Bug: 77408805
Merged-In: Id168911b082fffac193cd7c7a658ab92d6ce2c15
Change-Id: I0a3a4ec4dda78e28ee88a11d383eda49e9cf50a6
2018-05-01 21:55:56 +01:00
Matthew Fritze
a7fd137e2d Merge "Index database before getting Uri Descendants" into pi-dev 2018-04-26 20:14:53 +00:00
Matthew Fritze
838d69da50 Index database before getting Uri Descendants
onGetSliceDescendants would return empty results if
the call was made before the database was indexed.
This CL checks the index before building the list.

Change-Id: I2e0f88893138a048dbd529d465d68fa4b1a3dc12
Fixes: 78196823
Test: robotests
2018-04-25 15:53:16 -07:00
TreeHugger Robot
820a26c6bd Merge "Add DockUpdaterFeatureProvider and DockUpdater." into pi-dev 2018-04-25 19:21:56 +00:00
TreeHugger Robot
bb839f81e3 Merge "Pick default notification setting for work profile" into pi-dev 2018-04-23 16:38:43 +00:00
Matthew Fritze
47a44e8fa4 Add keywords to Slices
Attach the keywords used for Settings search to Slices.
Their primary use is helping match synonyms for presenters
which display slices without explicit Uri requests, like a launcher.

This changes:
- Updates database scheme
- Adds to SliceData object
- Grab keywords in the SliceDataConverter
- Set keywords on all slices

Test: robotests
Change-Id: I16c40d2380ffddaf0a87fb1b9cd58e95573b308f
Fixes: 78306195
2018-04-20 14:50:55 -07:00
Pavel Grafov
c29b984a98 Pick default notification setting for work profile
Managed profiles cannot completely hide notifications, so
this setting should be treated as always "true" for them.

Change-Id: I9808c1e9736d83efccb0e947d9097379bda59ebb
Fixes: 78194020
Test: atest RedactionInterstitialTest
2018-04-20 16:29:37 +01:00
Matthew Fritze
f9f72e8c2c Update Slice APIs to current versions
Change-Id: Icf40673e518534487be77f33427df937717735e5
Fixes: 77982356
Test: robotests
2018-04-19 17:29:18 -07:00
Ivan Chiang
f2f03b8198 Add DockUpdaterFeatureProvider and DockUpdater.
Add the new feature components for dock devices.

Bug: 77931823
Test: Build
Change-Id: I219a5256d02f2b1b8ea7cce1cff4219975f2eae2
2018-04-19 16:04:08 +08:00
TreeHugger Robot
a46dd4bd4b Merge "Replace deprecated APIs in audio switcher." into pi-dev 2018-04-17 23:10:44 +00:00
ryanywlin
dca308e56d Replace deprecated APIs in audio switcher.
- Remove isWiredHeadsetOn() and isBluetoothA2dpOn()
in MediaOutputPreferenceController.

- Remove isWiredHeadsetOn() and isBluetoothScoOn()
in HandsFreeProfileOutputPreferenceController.

- Replace with AudioManager.getDevicesForStream().

- Update test cases.

Bug: 78141441
Test: make RunSettingsRoboTests ROBOTEST_FILTER="MediaOutputPreferenceControllerTest" -j40
Test: make RunSettingsRoboTests ROBOTEST_FILTER="HandsFreeProfileOutputPreferenceControllerTest" -j40
Test: make RunSettingsRoboTests ROBOTEST_FILTER="AudioOutputSwitchPreferenceControllerTest" -j40
Change-Id: Ic57c40badf0fd5633f1b7412d63a0b5417d0f47a
2018-04-18 05:57:27 +08:00
Matthew Fritze
7acd13f3e4 Update a Slice Uri when unavailable
When a slice becomes unavailable, it should not update the
underlying data even if the view has not changed.

When we receive a change from an unavailable slice, notifychange
on the Uri and do not change the underlying data.

Change-Id: I91851ab668e4aece669fd65c14e0dc4ec2edefdf
Fixes: 77980406
Test: robotests
2018-04-17 10:43:26 -07:00
Caxton Chan
03b8aa3a3c Merge "Add audio switch UI in sound settings" into pi-dev 2018-04-16 19:24:31 +00:00
ryanywlin
63bdfa8998 Add audio switch UI in sound settings
- Build two controller to control list preferences.

- MediaOutputPreferenceController which allows switching
the media output between current device and connected
BT device supporting A2DP. It also controls disabling
media output switching during a call or cast mode.

- HandsFreeProfilePreferenceController which allows
switching between HFP-connected BT devices while in
on-call state.

- Add test cases for controllers.

Bug: 74130772
Test: make RunSettingsRoboTests ROBOTEST_FILTER="MediaOutputPreferenceControllerTest" -j56
Test: make RunSettingsRoboTests ROBOTEST_FILTER="HandsFreeProfileOutputPreferenceControllerTest" -j56
Test: make RunSettingsRoboTests ROBOTEST_FILTER="AudioOutputSwitchPreferenceControllerTest" -j56

Change-Id: I37f5418442ce77e72cdff07f071ea519ab1047f3
2018-04-16 11:52:44 +08:00
hughchen
bd3e5de207 Implement audio switch UI
* Implement available media devices group
* Add AvailableMediaDeviceGroupController to realize UI, the user can see the all device that can be activated in this group.
* ConnectedDeviceGroupController change to show the device that cannot be activated but is connected.
* Refactoring the below class, implement the controller in connected_devices.xml.
  ConnectedDeviceGroupController.java
  SavedDeviceGroupController.java
  ConnectedDeviceDashboardFragment.java
  connected_devices.xml
* Add AvailableMediaBluetoothDeviceUpdaterTest to verify the add/remove preference behavior when connectedStateChanged or profileAudioStateChanged
* Add test that used to verify device is connected or not in BluetoothDeviceUpdaterTest.
* Add test that used to verify the add/remove preference behavior when connectedStateChanged or profileAudioStateChanged in ConnectedBluetoothDeviceUpdaterTest.
* Add AvailableMediaDeviceGroupControllerTest to verify bluetooth feature is supported or not and test register callback.
* Add test that used to verify bluetooth feature is supported or not and test register callback in ConnectedDeviceGroupControllerTest.
* Add test that used to verify bluetooth feature is supported or not and test register callback in SavedDeviceGroupControllerTest

Bug: 74134939
Test: make -j40 RunSettingsRoboTests
Change-Id: I54d03c2ddadc6a4be7519dd74cdbcb5055d44083
2018-04-15 04:22:25 +00:00
Matthew Fritze
59e2d1fff9 Uniquely identify Slice intents
PendingIntents were being cached because they had the same
targets and would not differentiate on extras - thus all Slice
intents would go to the same destination as the first intent fired.

Adding the data stops the system from caching the intents.

Change-Id: Ifccab72ed482e22750422c5c36aa6d205c20ae3d
Fixes: 77650727
Test: robotests
2018-04-11 17:54:41 -07:00
Matthew Fritze
dba7d1c4b3 Unavailable Slices includes DISABLED_DEPENDENT settings
In the change to mark disabled_dependent as available,
it did not change the check in SliceBuilderUtils for the
unavailable Slices. In the case of DISABLED_DEPENDENT, the
setting is available but the Slice is not.

Though it is a simple change, we can now properly test the contents
of Slices, so this change includes tests which should have been in
place earlier and would have caught this bug - duh.

Bug: 71640747
Test: Robotests
Change-Id: I8db5bc80edb337cbf907ce3669aa2bfd9c72f74a
2018-04-09 17:06:47 -07:00
TreeHugger Robot
40d411abf5 Merge "Update launch intent flags for settings shortcut widgets." into pi-dev 2018-04-05 20:50:06 +00:00
TreeHugger Robot
220a6a002e Merge "Fall back to Wi-Fi data display in data usage screen with no SIM." into pi-dev 2018-04-05 19:59:00 +00:00
Doris Ling
f2d7680d2c Update launch intent flags for settings shortcut widgets.
- earlier changes were made to the intent flags when creating new
settings shortcut to ensure that it is launching a new task. However,
ShortcutManager is actually caching existing shortcut info, and it will
continue to use the existing shortcut info unless we explicitly update
the info.
- when rebooting from build upgrade, we will go through all existing
shortcut to update the launch intent flags to ensure that the shortcut
info is update to date.

Change-Id: Iee2365d9aec64a47b193e3c9be443c252504815b
Fixes: 76395879
Test: make RunSettingsRoboTests
2018-04-05 10:20:26 -07:00