Commit Graph

337 Commits

Author SHA1 Message Date
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
Yanting Yang
c8e0d2e755 Merge "Avoid NPE when screen title is null" into rvc-dev 2020-06-18 09:58:47 +00:00
Jason Chiu
0625bb4815 Fix the overlapping problem of the burst of slice updates
Implement a throttle in SliceBackgroundWorker to control slice updates.

Test: robotest
Fixes: 152366832
Change-Id: I8b65d1b57973e036b932172627aca506f4fae3a4
2020-06-18 02:18:38 +08:00
Yanting Yang
72c2fa5a3d Avoid NPE when screen title is null
The screen title of Settings pages could be empty, e.g., Mobile network
detail page. It will cause NPE when Settings generates the slice
object, and then results in the Settings Search showing empty view for
slice search result. It’s a bad user experience, we need to add the null
check to avoid it.

Bug: 157986273
Test: robotests
Change-Id: I8bf6a081c6b3e97ccb173424ff4a310ae863ae2f
2020-06-17 23:49:09 +08:00
TreeHugger Robot
16e1cd296a Merge "Add new Always on display slice" into rvc-dev 2020-06-17 12:04:21 +00:00
Edgar Wang
e1186254d4 Add new Always on display slice
Currently we create Always on Display slice through
AmbientDisplayAlwaysOnPreferenceController. However, as the Always on
Display is merged into Idle lock screen, the conversion won't work
properly anymore when devices support the aware sensor.

Hence, we create another custom slice for this purpose.

Bug: 145920511
Test: manual & robotest

Change-Id: Ifd90e2de5219bd4e97aa13b5855fdab95ff6c4d0
2020-06-17 07:52:01 +00:00
Jason Chiu
d06333167d Cleanup notification channel slice
Fixes: 144897605
Test: robotest

Change-Id: I1b654f31c6b001ef6f1eed95a87ca0b2dd1afc2e
2020-05-29 17:35:22 +08:00
Jason Chiu
8ac1e4d49d Update icon tint color when the user toggles Dark theme
- Reload theme in slice provider when Dark theme mode changes for slices
- Reload theme in onCreate of Panel activity for its non-slice header
- Remove applyTheme from individual slices

Test: robotest
Fixes: 153700819
Change-Id: I40a7d2817c4b9100d7b2f2962a69c8a9ce6f7906
2020-05-12 10:58:54 +08:00
Yanting Yang
96127fe621 Remove sub-text from slice builder
We would like to remove all sub-text from Settings Search. But slice
view does not support API to configure the sub-text visibility.
Therefore, the only way is to remove the sub-text from slices directly.

Since Settings slices are also invoked by other apps, we can not
directly remove the sub-text.

Finally, we decide to check the caller's uid. If it comes from Settings
Search, we will return the slice without the sub-text.

Bug: 143118037
Test: visual, robotests
Change-Id: Iac72f1683a2c930592634e0599058890d86f669d
2020-04-28 14:15:16 +08:00
Jason Chiu
1766b3c01d Fix indexing error of mobile related controllers
There were several errors in indexing mobile related sliceable
controllers, which led them not able to display on Panel and as inline
controls in search result.

It's because indexing mechanism is running in a worker thread and trying
to construct each controller instance, but the failed controllers'
constructors need to initilize something in the main thread.

- Give the main looper to the classes which only can be initialized in
  the main thread to fix the indexing.
- Guard null pointer exception in SlicesIndexer after fixing the
  indexing.
- Use onStart/onStop in AirplaneModePreferenceController to start/stop
  listener.

Fixes: 149720345
Test: robotest
Change-Id: Ibe5a8d6cc713eeddf26eceaabc05e6d1faa45507
2020-04-10 10:56:31 +00:00
Tsung-Mao Fang
2fc9fed89c Fix pendingIntent in SettingsSliceProvider could be Hijacked
A malicious app is able to obtain this pending intent.
It can then mutate all fields except for the action and
launch the intent. This can be used to launch any activity
with the ACTION_SETTINGS action.

So, we enfore assign the package name for this intent,
it only can launch the settings app.

Fix: 147355897
Test: a) Install the new settings apk, and it won't launch other screen.
(See details in bug)
b) Start the settings search, slice search results work as normal.

Change-Id: Ie954d8a4b7153d6a4cac40621f363b45185990f2
(cherry picked from commit b3c0a2a6c1)
Merged-In: Ie954d8a4b7153d6a4cac40621f363b45185990f2
2020-03-05 05:38:55 +00:00
timhypeng
0abaafcf28 Add slice regist key for dynamic group
Bug: 146813761
Test: build pass
Change-Id: Id620ec8c465cf5d7e8b1321f3a0d2a638ff6e7ac
2020-02-27 06:27:59 +00:00
TreeHugger Robot
5924be85dc Merge "Add a SaftyNet for security vulnerability" 2020-02-15 08:09:47 +00:00
TreeHugger Robot
ff6e341509 Merge "Add remote media slice in volume panel" 2020-02-12 01:34:15 +00:00
Tsung-Mao Fang
8c4aacd354 Add a SaftyNet for security vulnerability
When we get an empty or null slice parameter,
we see it as a vulnerability. It will cause
null point exception.

Bug: 122836081
Test: See adb logcat event log
Change-Id: Id5ff11dd18b19184792be466aabb65229f777e81
2020-02-11 17:16:20 +08:00
timhypeng
b266fa6029 Add remote media slice in volume panel
-Add test cases

Bug: 142772656
Test: make -j42 RunSettingsRoboTests
Change-Id: I62d3054a4343ed2c7fbb0b4d7aeb5a48da194b02
2020-02-06 14:38:13 +08:00
timhypeng
da96aeb33d Update preferenceSlice layout rule for new volume panel design
-show icon at left side of Slice if the mapping preference contains icon
-align MediaOutputIndicatorSlice layout with other volume slice

Bug: 148821795
Test: make -j42 RunSettingsRoboTests
Change-Id: I5b0cf7f32f355503942cb62ccf36f77ceeb1b30d
2020-02-05 14:20:03 +00:00
Raff Tsai
fcd9f1a870 Fix volume panel crashing
slider position is smaller than min value causes the exception.
Fixed by limit the position within min and max value.

Fixes: 148270968
Test: manual
Change-Id: I3d162f6d2f1035b81b1b2eb915b488084e7ea36e
2020-01-30 08:24:47 +08:00
Stanley Wang
5ce5349167 Remove the unused slices.
Remove the DataUsageSlice, DeviceInfoSlice and EmergencyInfoSlice.

Fixes: 146994847
Test: robotest
Change-Id: Ic840e9cc93e99b3c0a34eb6536401db34c98eca8
2019-12-30 19:04:49 +08:00
Automerger Merge Worker
ee8e7742da Merge "Fixes sound panel create multiple SoundSettings activity" am: e45a8aadd4 am: 3999464409 am: f424190715
Change-Id: If7d8124bb4ffc5594affe8dd0dedf446c5dee02f
2019-12-18 12:45:01 +00:00
Automerger Merge Worker
f424190715 Merge "Fixes sound panel create multiple SoundSettings activity" am: e45a8aadd4 am: 3999464409
Change-Id: I2b5875e2c79daf6e5b7173da59b33e2cfcfbad6e
2019-12-18 12:25:43 +00:00
Raff Tsai
a9e7517f2c Fixes sound panel create multiple SoundSettings activity
- Use FLAG_ACTIVITY_NEW_TASK to prevent activity stack contains
many activites

Fixes: 142231489
Test: 1. Press volume button and click in volume settings button
      2. Press Media Volume to open SoundSettings
      3. Repeat 1, Press Call Volume to open SoundSettings
      4. Repeat 1, Press Alarm Volume to open SoundSettings
      5. Press back, should see volume panel
Change-Id: I87cd75fbd43f77446191ad50ed7a002a2202337f
2019-12-18 18:38:37 +08:00
Automerger Merge Worker
83c64c3a3c Merge "Fix volume slider color is not correct" am: d1489d2f1f am: 9bb1c631ae am: 96c32711b8
Change-Id: Ibb3508f910e6d913135f5370b47376155f69f7ca
2019-12-17 09:42:04 +00:00
Automerger Merge Worker
96c32711b8 Merge "Fix volume slider color is not correct" am: d1489d2f1f am: 9bb1c631ae
Change-Id: I66e7bb3c06891d092d6ec4b49372ab977670beee
2019-12-17 09:22:59 +00:00
Raff Tsai
37860d4299 Fix volume slider color is not correct
Fixes: 140990940
Test: 1. Switch to dark theme
      2. adb shell am start -a android.settings.panel.action.VOLUME
      3. check volume slider color is identical to color in "Done"
      4. Switch to light theme
      5. adb shell am start -a android.settings.panel.action.VOLUME
      6. Check volume slider color is identical to color in "Done"

Change-Id: If783d5c5f8604a23cfaaa28cf42b916763f9c9e8
2019-12-17 14:34:29 +08:00
Julia Reynolds
aceccce75c Reorganize notification Settings classes
The notification package was getting too big.

Test: make -j64 RunSettingsRoboTests
Fixes: 145224451
Change-Id: I25ba82f42f7a137d8adcce72dcf8089d0e018bdc
2019-11-27 10:02:13 -05:00