Commit Graph

386 Commits

Author SHA1 Message Date
Sunny Shao
8397f1056b [Catalyst] Introduce the Tags for Get/Set APIs
NO_IFTTT=Catalyst only

Test: atest ExternalSettingsProviderTest
Bug: 394002861
Flag: EXEMPT bugfix
Change-Id: I630a9f5ffbaaeed16e13674efa507f3a7b681839
2025-02-07 10:29:49 +00:00
Jacky Wang
ef3b232523 [Catalyst] Add more constants to SettingsContract
Bug: 388061003
Flag: EXEMPT refactor
Test: N/A
Change-Id: I906b345a56fa87909411ef64c73e2696240388ae
2025-02-05 19:02:41 +08:00
Jacky Wang
2e265d4a7a [Catalyst] Introduce SettingsContract file
The new file contains all contract constants for external usages (e.g.
slice, external Get/Set API). Also reuse existing constants in
SettingsSlicesContract.

NO_IFTTT=Catalyst only

Bug: 388061003
Flag: EXEMPT refactor
Test: atest
Change-Id: I449b7b6cf82e1e102f2c96a21835191605f09943
2025-02-04 18:24:46 +08:00
Chun-Ku Lin
8bbecf4612 Load icon from correct package for Accessibility slices
Bug: 326233533
Flag: EXEMPT low risk
Test: Mannual. Search TalkBack in Settings app, the Icon shows up
correctly. Search "Turn on TalkBack" in assistant app, the Icon is not
affected.

Change-Id: I6c15a13b4e7dd56f873124ae5722f15f2447f5b4
2024-09-12 22:27:06 +00:00
Haijie Hong
41f7c222b6 Rearrange bluetooth device details fragment according to config
BUG: 343317785
Test: atest DeviceDetailsFragmentFormatterTest
Flag: com.android.settings.flags.enable_bluetooth_device_details_polish
Change-Id: I440f85b2c402920e851915ff56fa7b3f5356e807
2024-08-14 16:06:15 +08:00
Alexander Roederer
3d0dcda008 Remove the ZenModeSliceBuilder
We don't want the old Do Not Disturb page to show up in the search index
results, so we can remove the custom Slice Builder.

Note that this is part of the general Do Not Disturb/Modes Settings Changes: see b/353700470

Bug: 341726633
Test: atest SettingsSliceProviderTest, flash+test
Flag: android.app.modes_ui
Change-Id: Ibba372d5fa6caf3ee28d9fd2a900047060b212da
2024-08-08 00:54:14 +00:00
Haijie Hong
4ca77ce8d5 Add logging for SlicePreferenceController
Test: verify logging when slice is updated
Bug: 335872142
Bug: 339887313
Change-Id: I2173663beae2a482a9d3bdcec3c2270a2f3733cc
2024-05-23 05:43:47 +00:00
Jason Chiu
0bd014c497 [Safer intents] Settings misc
To avoid implicit intents, make intents launch explicitly.

Test: build
Bug: 323061508
Change-Id: Ie19cbceb89842a75a180898abcce81b63c18d46c
2024-03-29 04:22:45 +00:00
Sunny Shao
076ed573eb Revert^2 "Nullability Annotations replacement"
This reverts commit 19d1d3d15d.

Reason for revert: revert it because this is not the root cause.

bug: 316867690
Change-Id: I0f168dbb64044aa720202af7b1040afd4f028c9c
2024-01-10 07:34:01 +00:00
Sunny Shao
19d1d3d15d Revert "Nullability Annotations replacement"
This reverts commit cf0501e4d7.

Reason for revert: b/317462033, it seems a flaky but revert it first.

Change-Id: Ie1d5e279cca6477fc17d8c27c1ecda8d7a6b2553
2023-12-29 02:28:24 +00:00
sunnyshao
cf0501e4d7 Nullability Annotations replacement
-- Replace the android.annotation.Nullable / android.annotation.NonNull
   with androidx.annotation.Nullable / androidx.annotation.NonNull

Bug: 316867690
Test: build pass
Change-Id: I0c1da55dfb09ece855151c47e0492d6f46538621
2023-12-20 08:50:09 +08:00
FanWu
e6d648aa40 Fix BluetoothUpdateWorkerTest.
Should avoid spying on Android classes due to potential test pollution: https://robolectric.org/best-practices/

Bug: 315399487

Test: atest SettingsRoboTests:com.android.settings.homepage.contextualcards.slices --iterations 20
Change-Id: Ia52baf52bf43d3a3959dc0234fbfc5b4a4575dac
2023-12-11 10:23:09 +00:00
Chaohui Wang
34c4deb6c9 Clean up Contextual Wifi card
Bug: 245854887
Test: m RunSettingsRoboTests
Change-Id: I3b4ccc076a68eadc11e9fb3d2967a34fe0396cf9
2023-11-27 13:59:33 +08:00
Jacky Wang
2a617ae872 Prevent NPE in SettingsSliceProvider
NPE is raised when run `adb shell content query --uri
content://com.android.settings/settings/slice_uri_pairs`

Bug: 312400299
Test: manual test
Change-Id: I686476e5ea6b68bddbd6045c34bf889e249fa6b5
2023-11-22 17:25:49 +08:00
Jason Chiu
abe0c76cbf Merge "Prevent ANR while receiving volume broadcasts to update slices" into main 2023-11-13 09:36:59 +00:00
Jason Chiu
769fbae59f Prevent ANR while receiving volume broadcasts to update slices
Use ConcurrentHashMap for registering Uri to the audio stream, and
remove synchronized blocks from the receiver.

Fix: 302234235
Fix: 301777614
Test: manual, robotest
Change-Id: I5cca209baf9756aebb8ff44b7e8e9671d2c7aaad
2023-11-08 10:44:57 +00:00
Behnam Heydarshahi
b443557d3d Remove ring_volume from VolumePanel
And from CustomSliceRegistry.

Bug: b/305280122
Test: make ROBOTEST_FILTER=VolumePanelTest RunSettingsRoboTests -j40
Change-Id: Iff444011399f09a5350de8aeacb724467364b61a
2023-10-30 17:58:49 +00:00
Peter Kalauskas
80e914a263 Enable use_resource_processor for all sysui deps
This will make the build faster

Test: m checkbuild
Bug: 295208392
Change-Id: If75acb6b1c3f204e3686c20cef609f7cfabe15cf
2023-09-21 23:09:39 +00:00
Chaohui Wang
8e2ae547d6 Clean up FeatureFactory.getFeature()
Bug: 286764889
Test: m Settings
Change-Id: I7e472e6b0ca6b7a735c1b92742ddf06c545176fc
2023-08-08 08:41:48 +00:00
Chaohui Wang
2541381259 Fix references to resources for Settings
Bug: 293810334
Test: m Settings
Change-Id: Ie140278f492ef7e1c062ec1ecae2866c521a86aa
2023-08-08 01:56:05 +00:00
Chaohui Wang
c3e68fabe6 Remove PreferenceXmlParserUtils deprecated methods
Bug: 293810334
Test: m Settings
Change-Id: I5456b95dfe4c26dc675b205d67b1db009ee73193
2023-08-02 10:16:31 +08:00
Edgar Wang
ab75ea8099 Restrict toggle/slider slice when the preference restricted
Bug: 289980550
Test: robotest & manual
Change-Id: Id87fbf12a2722344dd07886e810e7c61a9f401aa
2023-07-20 03:36:35 +00:00
Mill Chen
d4eecf6132 Guard slices from being requested by guest user
According to patch of A-231987122, AOSP restricts app to modify relevant
mobile settings when user is a guest. This change intends to prevent the
slices related to mobile settings from being requested by guest user.

Bug: 278616139
Bug: 277333776
Bug: 262244832
Bug: 278616520
Bug: 278615120
Test: robotests
Change-Id: I4dc4bbfdb5cf76e188e6f62ebfd74ef6fa2fe33b
2023-06-15 14:29:01 +08:00
tom hsu
bf7865b27e [Settings] Fix crash when user enter bluetooth page quickly.
- When SliceManager try to pinSlice, process may not have the permssion
   yet, so in Androix lib it use try/catch to avoid Security exception.
   However, if SliceManger quickly unpinSlice after pinSlice, process
   may still not get the permission yet, then due to no security
   exception, it cause the settings crash.

Bug: 283065718
Test: atest passed
Test: Manual test passed
Change-Id: I2293fca73e65dfaa34237abe57e0c6a3fe0f62bb
2023-06-07 09:37:21 +00:00
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