Commit Graph

362 Commits

Author SHA1 Message Date
tom hsu
5e2862f2e3 [Settings] Avoid to unregister wrong observer
Bug: 262345047
Test: atest passed.
Change-Id: If324e8f35c15053b48320f86ff22759a6a68a62f
2023-05-12 01:10:19 +08:00
Edgar Wang
fae664c79c Reducing slice requesting logging
Bug: 253684322
Test: rebuild
Change-Id: If0e884875e09bd43b88f6b5f205ad450de488552
2023-05-03 17:04:38 +08:00
Behnam Heydarshahi
dce497f72f Merge "Muting ring volume slider disables notification" into tm-qpr-dev am: 40a293fbdf am: d65e087b0d
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/21164988

Change-Id: I560670cee8bd07312766d494c4a66ef770e121cb
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-02-16 15:47:36 +00:00
Behnam Heydarshahi
b5ecd4b87d Merge "Propagate mute event to both ring volume slices" into tm-qpr-dev am: d89de47399 am: 3ee4929594
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/21339549

Change-Id: Icca1292b29dc7682c36d901bce41d08f5ae3ab7b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-02-15 16:09:19 +00:00
Behnam Heydarshahi
d9c3cf855f Muting ring volume slider disables notification
With volume_separate_notification flag enbaled, muting ring volume
slice will cause notification volume slice to gray out.

There used to be a bug in which notification slice would not get
updated in response to a change in ring volume mute/unmute broadcast.
The resulting erroneous behavior was notification slider would get to
zero but not get grayed out. To fix that bug, VolumeSliceHelper listens
to ring stream mute/unmute broadcasts and forwards them to notification
slice.

Bug: b/266072907
Test: make DEBUG_ROBOLECTRIC=1 ROBOTEST_FILTER="NotificationVolumePreferenceControllerTest|VolumeSliceHelperTest" RunSettingsRoboTests -j40

Change-Id: I2ab51f1272bf99a0c3d9ca285354052d00910c90
2023-02-15 15:43:08 +00:00
Behnam Heydarshahi
236bbcb8bc Propagate mute event to both ring volume slices
Fix a bug where introduction of a separate_ring_volume slice meant that
the original ring_volume slice would not get notified of ring stream
muting event.

Bug: b/266855922

Test: make DEBUG_ROBOLECTRIC=1 ROBOTEST_FILTER=VolumeSliceHelperTest RunSettingsRoboTests -j40
Change-Id: Ifb5ebe4e7d9bde3d14336891cce3fbee167a5911
2023-02-13 14:50:27 +00:00
Behnam Heydarshahi
5bf3d0a06e Merge "Always index RingerModeAffected slices" into tm-qpr-dev am: 673e191e98 am: fd4ecf54b1
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/20960954

Change-Id: I9889c6508f653f2f94b77b6450b86f888909e1f6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-01-17 15:33:28 +00:00
Behnam Heydarshahi
1c3a9421a7 Always index RingerModeAffected slices
When indexing slices, SliceDataConverter makes an exception for
RingerModeAffected slices. They can be !isAvailable() but still be
added to the list of slices.

Bug: 259084354

Test: Manual. Enable systemui DeviceConfig flag
volume_separate_notification. Open volume dialog.
Verify that ring & notification slice is split into ring slice and
notification slice.

Change-Id: Iaab30154025cd082b388c412da6ecd573b8d6fcf
2023-01-12 22:25:27 +00:00
Behnam Heydarshahi
53c32d487a Merge "Implement a separate controller for ring volume" into tm-qpr-dev am: ee56e95f90 am: 4fc098dc1b
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/20749598

Change-Id: I2ed97051fc0602324c12960e3696c4933911abcc
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-01-11 15:14:24 +00:00
Behnam Heydarshahi
4f87dd4b56 Implement a separate controller for ring volume
When ring volume is separated from notification, a new xml preferece and
controller is needed for it, so that the settings search can show/hide
the slice correctly.

1. Use a separate preference and controller for ring volume (vs ring &
notification combined)
2. Notification slice in settings no longer grays out when ringer mode
is set to mute or vibrate.
3. Introduce an abstract RingerModeAffected preference controller class
to factor out duplicate code among ring, notification, and separate-ring
controller classes.

Bug: b/259084354

Test:   make ROBOTEST_FILTER=RingVolumePreferenceControllerTest
RunSettingsRoboTests -j40
        make ROBOTEST_FILTER=SeparateRingVolumePreferenceControllerTest
RunSettingsRoboTests -j40
        make ROBOTEST_FILTER=NotificationVolumePreferenceControllerTest
RunSettingsRoboTests -j40
        make ROBOTEST_FILTER=VolumePanelTest RunSettingsRoboTests -j40
	make
ROBOTEST_FILTER=RingerModeAffectedVolumePreferenceControllerTest -j40

Known Issue:
1. When streams are separate and ring volume set to mute/vibrate,
notification is set to zero, but not disabled. So it can be turned on
by user (and in settings the icon will stay mute/vibrate instead of
changing to the normal notification icon).

2. In the above scenario after notification is unmuted in settings,
the notification icon continues to stay vibrate/mute -- should change
to the normal notification icon.

Note: This feature is controlled using a boolean DeviceConfig flag:
systemui/"volume_separate_ring". The default value is 'false', which is
meant to keep the experience the same as before. It will be set to
'true' for teamfood and dogfood. Eventually the flag will be removed and
the code in the 'true' branch will prevail.


Change-Id: Ibec871eafeef4081e96c5e0dd04535565d50a077
2022-12-28 22:33:50 +00:00
Yi-Ling Chuang
2f80e073d0 Remove BatteryFixSlice as it's not used
The BatteryFixSlice hasn't been used for a while, and it's introducing
memory leaks due to a design change at the framework's end. Hence,
remove it.

Bug: 245385410
Test: robotests
Change-Id: I517cab71a32613d5cb5fcd3beb991a24926a2902
Merged-In: I517cab71a32613d5cb5fcd3beb991a24926a2902
(cherry picked from commit e3fcf1f082)
2022-11-18 10:58:42 +00:00
Yi-Ling Chuang
e3fcf1f082 Remove BatteryFixSlice as it's not used
The BatteryFixSlice hasn't been used for a while, and it's introducing
memory leaks due to a design change at the framework's end. Hence,
remove it.

Bug: 245385410
Test: robotests
Change-Id: I517cab71a32613d5cb5fcd3beb991a24926a2902
2022-11-04 12:22:56 +08:00
Xuanang Zhao
72503d29bd Clean up an unused slice and classify the custom slice usage.
Test: maunal
Bug: 249101421
Change-Id: I362995c114f65f0105b5e2b8036ecb886bd6663a
2022-10-20 07:24:29 +00:00
Behnam Heydarshahi
ee4d902410 Merge "Add notification volume controller in settings" into tm-qpr-dev am: 7f6c833b89 am: 8b2496eb9e
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/19940409

Change-Id: Ia1b13bf425da2ef90c287b3aaee6231891c67bd2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-10-12 20:38:18 +00:00
Xuanang Zhao
cc64ca6606 Prevent the load of the slice again if it is already
in the cache.

loadSlice just fills Slice read from the DB into a
map, if there is already such slice in the map, we
could skip the async load process.

Change-Id: I6e96ef72a9dc5a833ae158492134f4a6c94a7465
Bug: 249101421
Test: robotest
2022-10-12 08:32:06 +00:00
Xuanang Zhao
b28a8a4634 Add HINT_PARTIAL to stub slice.
Change-Id: Idc0847828063afe708b69a5b0a1178b9729a5b5b
Bug: 249101421
2022-10-11 10:42:34 +00:00
Xuanang Zhao
98f7b2b227 Clean the slice in onUnpinned rather than onBinded.
Change-Id: Idda7cbedb0ce7b0ec83fc2f11a2505634d2b465c
Bug: 249101421
2022-10-11 10:35:31 +00:00
Behnam Heydarshahi
3ac6aaf796 Add notification volume controller in settings
Separate notification and ring controllers based on the ring/volume
stream alias boolean in config.xml.

For both ring and volume controller: Not show vibrate icon when vibration is not supported on device. Show
silent icon instead.

Known issue: Add the notification volume slider only in Settings, and
not in VolumePanelDialog. When the alias is set to false and the streams
separated, the ring volume slider in VolumePanelDialog keeps its title
of "Ring & notification volume" instead of changing to "Ring volume".

Bug: b/38477228

Test: make DEBUG_ROBOLECTRIC=1 ROBOTEST_FILTER=NotificationVolumePreferenceControllerTest RunSettingsRoboTests -j40
      make DEBUG_ROBOLECTRIC=1 ROBOTEST_FILTER=RingVolumePreferenceControllerTest RunSettingsRoboTests -j40
      make DEBUG_ROBOLECTRIC=1 ROBOTEST_FILTER=SoundSettingsTest RunSettingsRoboTests

Change-Id: Id17523f49b291a5cf612b90f93c3b2ab6486c62f
2022-10-10 14:42:56 +00:00
Amith Yamasani
1b27c91a7b Use Uri.toString() instead of Uri.toSafeString()
Uri.toSafeString strips out paths and shouldn't be used
for situations other than logging.

Bug: 232694281
Test: PtsPowerTestCases
Change-Id: Iec835b738c3e928e922bd6a14573106f2ce4f526
2022-05-30 23:22:25 -07:00
changbetty
d1d9798a5d [LE Audio] Add entry point in Media Volume slice for broadcast sink
Bug: 228274114
Test: make RunSettingsRoboTests
Test: Manual test
Change-Id: I331232c30291348faf7166d4de8060a1cfe12bff
2022-04-25 02:42:46 +00:00
Chaohui Wang
6c9da58f4b Clean up unused Sliceable.copy()
Sliceable.isCopyableSlice() is not set to true for any controller, so this function is not used.

Usage is removed in Change: I81474aed994678c42d73cc59e169573880de1378

Bug: 227722942
Test: robotest & manual
Change-Id: I86e23aa8ad43f60b5017ff0a278e20e3f727706c
2022-04-02 19:16:22 +08:00
Jason Chiu
9fc0f18181 Define a constant Sliceable#NO_RES for no resource cases
Fix: 204733076
Test: build
Change-Id: Ifa3b9db0e915a3ec056ad68a9a1862811594d423
2021-11-03 12:23:49 +08:00
Jason Chiu
594eb43159 Support slice deep links highlighting menu entries
- Add an interface to get highlight menu key resource in Sliceable
- Force implementing the new interface in TogglePreferenceController and
  CustomSliceable at syntax level
- Update the slice index db schema

Bug: 204695404
Test: manual, robotest build pass, unit
Change-Id: I0b5068bccd04f1590023de7f3385bc0a4c6fa47b
2021-11-01 14:27:34 +08:00
Arc Wang
a63e9c625d [Large screen] Make slice deep linking to Settings show in 2-pane
- add a standalone home activity for slice deep link.
- add EXTRA_IS_FROM_SLICE to control the slice deep link flow.
- Intent#parseUri fails if the intent data schema is set.
  Add EXTRA_SETTINGS_LARGE_SCREEN_DEEP_LINK_INTENT_DATA to relay the
  data schema.

Bug: 201397123
Test: manual, robotest
      1.  Say 'Enable NFC'/'Enable Bluetooth'to Google assistant.
      2.  Click the the NFC/BT Slice.
Change-Id: Ia3216956328c32b2109cb2d70ad1105327661f26
2021-10-31 20:12:27 +08:00
Jason Chiu
f0248e096e Add logs for tracking Slice provider startup
Bug: 191555397
Test: build, manual
Change-Id: Ic95fb0a7a8ba30f7802111a7a453fb73f4c918fe
2021-07-21 03:48:03 +00:00
Weng Su
7b8c367d4f [Provider model] Add "Turn off/on Wi-Fi" link to Internet Panel
- Replace the left menu button with "Turn off/on Wi-Fi"
  - Remove the TurnOnWifiSlice

- Show "Wi-Fi is off" sub-title when Wi-Fi is disabled
  - Remove the "Wi\u-Fi is turned on" sub-title when APM is on.

Bug: 188710392
Test: manual test
atest -c InternetConnectivityPanelTest
make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.panel

Change-Id: I53e200f6cadf8b712bf794bcbd5ff79f0f239cc0
2021-05-26 17:22:38 +08:00
Jason Chiu
728081f9bb Fix NullPointerException at VolumeSliceHelper
Race condition happens on accessing a map while system is destroying it.

Test: manual, robotest
Fixes: 188114877
Change-Id: I245121b95d1d4db02e3107a47c6d3ae13a5d32e5
2021-05-19 13:19:55 +08:00
Weng Su
036deee00e [Provider Model] Add Wi-Fi toggle slice
- Reuse “Turn on networks” slice

- Add "Turn on Wi-Fi" slice
  - Show Wi-Fi end icon

- Screenshot:
  https://screenshot.googleplex.com/63pdow7dJh3tTw7

Bug: 181858434
Test: manual test
atest -c TurnOnWifiSliceTest \
         InternetConnectivityPanelTest

Change-Id: I82de79fd45e99d2fe82554437bde50068dc1ae00
2021-03-08 16:47:19 +08:00
tim peng
ce66cbb502 Merge "Rename MediaOutputSliceConstants to MediaOutputConstants" 2021-01-11 05:08:26 +00:00
Yi-Ling Chuang
843616eb69 Add the mutability flag for SettingsSliceProvider
Starting Android S, all PendingIntent should have the mutability flag
assigned to prevent from vulnerability.

Fixes: 172811605
Fixes: 172206649
Test: 1. Play on the slices in Settings search.
2. Make a permission request intent of Settings wifi slice in the
slice-viewer app, clicking on it and make sure it gets redirect to
Settings without crashes.

Change-Id: I86f915bc062a6e632b5ca9c74e232db1036f08de
2021-01-07 16:00:08 +08:00
timhypeng
a7a73c4c92 Rename MediaOutputSliceConstants to MediaOutputConstants
-Slice is not used and it is better to remove the slice string

Bug: 165772904
Test: build pass
Change-Id: I38b26187f03509d0d9f5cdb8ef30f3f3ef8779d8
2020-12-24 01:07:24 +00:00
SongFerngWang
8cad0197bd Slice of Provider Model: add slice structure
Implement a slice which can show/update carrier networks.
Before and after: go/b173971144screenshot

Bug: 173971144
Test: atest NetworkProviderWorkerTest  (PASS)
atest ProviderModelSliceTest  (PASS)

Change-Id: I3f0dab364c88723ef3185a2ff040b1fbd1b099f4
2020-12-23 17:47:45 +08:00
timhypeng
7c86980bf3 Remove unused variable
-remove VIEW_TYPE_SLIDER_LARGE_ICON
-remove MEDIA_OUTPUT_GROUP_SLICE_URI
-remove MEDIA_OUTPUT_SLICE_URI

Bug: 175850711
Test: build pass
Change-Id: Iecf987cc91934a7598762523814f5f575302dde2
2020-12-21 03:23:32 +00:00
timhypeng
deb93069c3 Remove MediaOutputPanel and MediaOutputSlice
Bug: 174192979
Test: build pass
Change-Id: Ibbbb9e7865ae991d13cd7a2d4fb9c5c75a689dea
2020-12-17 13:37:39 +08:00
timhypeng
1602bccd9e Remove MediaOutputGroupSlice
Bug: 170558292
Test: build pass
Change-Id: I06c710a8b06c8666cb2cf5198d5b59eda7a7649a
2020-12-15 09:47:39 +08:00
Weng Su
96af1674f8 [Provider Model] Add Airplane-safe networks slice
- Hide slice when Airplane Mode is off

- Show slice when Airplane Mode is on
  - Show "View airplane-safe networks" when Wi-Fi is disabled
  - Show "Turn off Airplane Mode" when Wi-Fi is enabled

- Tap "View airplane-safe networks" will set Wi-Fi enabled

- Tap "Turn off Airplane Mode" will set airplane Mode off

- Plan to update the slice to Button style in next cl

- Screenshot
  https://screenshot.googleplex.com/7wHoqvTjaScHXVm

Bug: 173413889
Test:
- atest -c AirplaneSafeNetworksSliceTest
- adb shell am start -a
android.settings.panel.action.INTERNET_CONNECTIVITY

Change-Id: Idcd70348728db2da91582697aaeb4bbf4da117c6
2020-12-03 13:29:56 +00:00
SongFerngWang
648c56d350 CustomSliceable.getBroadcastIntent should use FLAG_MUTABLE
Bug: 173597689
Test: build pass and manual test for wifi slice
Change-Id: I16ebdaa591ee3e072ab46cd3efdd5e22edc88b46
2020-11-18 22:25:30 +08:00
Mill Chen
1406e1820f Remove unused StorageSlice
Remove StorageSlice since it's never been used.

Fixes: 172208815
Test: robotest
Change-Id: Ib8eecc27b9ebdf9a741b36369e4dfaa245461939
2020-11-06 17:04:20 +08:00
TreeHugger Robot
3ed34cd538 Merge "Add the explicitly mutable flag for creating a PendingIntent" 2020-10-14 10:48:24 +00:00
Sunny Shao
0b0f237834 Add the explicitly mutable flag for creating a PendingIntent
- Android S+ to specify explicitly either FLAG_MUTABLE or FLAG_IMMUTABLE
  when creating a PendingIntent.
- Suggest to use the FLAG_IMMUTABLE as default. Change it to
  FLAG_MUTABLE while errors occur.

Fixes: 170162598
Fixes: 170162878
Fixes: 170163592
Fixes: 170164316
Fixes: 170164458
Fixes: 170164327
Fixes: 169794524
Fixes: 170165106
Test: build pass, manual test add an account and volume control panel
Change-Id: I5aec028f82bd74fc4530b95a7c144811055ae2c5
2020-10-14 09:38:51 +00:00
Yi Jiang
f5d1841c9d Merge Screen Attention and Screen timeout Settings.
Bug: 155051311
Test: atest
Change-Id: I6f6ee52618eab629a41b28982be32ead5f9ba08d
2020-10-13 00:47:13 -07:00
Daniel Chapin
ee1360f13c Revert "Add the FLAG_IMMUTABLE flag for creating a PendingIntent"
This reverts commit 334968c113.

Reason for revert: Bug: 170280415

Change-Id: Idaa269406d6c1609c75f0dfba1f7fa9daf979101
2020-10-07 17:47:36 +00:00
Sunny Shao
334968c113 Add the FLAG_IMMUTABLE flag for creating a PendingIntent
- Android S+ to specify explicitly either FLAG_MUTABLE or FLAG_IMMUTABLE
  when creating a PendingIntent.

Fixes: 170162598
Fixes: 170162878
Fixes: 170163592
Fixes: 170164316
Fixes: 170164458
Fixes: 170164327
Fixes: 169794524
Fixes: 170165106
Test: build pass and manual test add an account
Change-Id: I0f7b117273647dbe9e146033b8995c8c6f147576
2020-10-06 11:46:08 +08:00
Jason Chiu
2c7b77dad7 Fix the ANR in panel when changing volume continuously
When users open volume panel and keep on changing the volume slider for
a while, the panel starts to defer the slider updating, and finally gets
stuck and causes an ANR.

Root cause:
Volume panel has four volume adjusting slices. Each of them registers
a broadcast receiver to listen to the volume changed and muted events.
However, when the media volume changes, AudioManager will send four
broadcasts (music, assistant, accessibility, tts) to every receiver, and
each of them will reload slice four times. Thus, one media volume
changed event will lead to 16 (4*4) UI updates. Consequently, keeping on
sliding the volume bar will trigger hundreds of broadcasts and UI
updates, which makes the system busy and getting stuck.

Solution:
Introduce a VolumeSliceHelper to integrate the broadcasts of the volume
slices specifically.
1. Only register one broadcast receiver to reduce the broadcast loading
   since the four slices are listening to the same signal.
2. Filter the only one eligible broadcast among the multiple concurrent
   ones, and then relay it to the registered slice.
3. Listen to one more action STREAM_DEVICES_CHANGED_ACTION to update the
   volume panel when audio output device changes.

Test: robotest, visual
Bug: 144134209
Bug: 160489394
Change-Id: I780b9eee35802b19a5f0ab0a7d07bd3e081f5556
2020-09-03 14:12:10 +08:00
Edgar Wang
a8742aa7ab Update language to comply with Android's inclusive language guidance
See https://source.android.com/setup/contribute/respectful-code for reference

Bug: 161896447
Test: robotest & manual
Change-Id: Ia8625091a107fc3fb652d3ba3f75ea3cc1a8d9f5
2020-08-12 11:29:07 +08:00
Edgar Wang
8829e515ca Update language to comply with Android's inclusive language guidance
See https://source.android.com/setup/contribute/respectful-code for reference

Bug: 161896447
Test: robotest & manual
Change-Id: Ibe64a68d7bddf84780dfac33555c097ff55c97a8
2020-07-30 12:54:27 +08:00
Jason Chiu
ea689abbcd Fix the exception of accessing an ArrayMap
- ArrayMap is not thread-safe.
- When accessing the map across threads at the same time, the map may
throw a ConcurrentModificationException.
- Convert the map to a synchronizedMap to avoid the exception.

Fixes: 159813482
Test: robotest
Change-Id: I3b8bdd435c7c546acf736fa8aafd2ceaed94d081
2020-07-01 10:42:25 +00:00
Sunny Shao
3c782f7645 SQLiteCursor must be closed before throwing exception
Fixes: 159694902
Test: manual test
Change-Id: I11b422e90b3155f47f53b4247eacf9f1b424b0ab
2020-06-24 18:11:13 +08:00
Jason Chiu
2e0758f7ae Decrease memory usage for sleep idle test
Postpone setTheme to decrease memory usage of Settings for the test
android.platform.test.scenario.sleep.Idle

Bug: 156631776
Test: forrest test
Change-Id: I4178eae0832e15c9d6da4a0f1f2898f5c797d388
2020-06-22 02:43:10 +00:00
Jason Chiu
251b98492f Merge "Fix the overlapping problem of the burst of slice updates" into rvc-dev 2020-06-18 11:06:42 +00:00