- 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
Race condition happens on accessing a map while system is destroying it.
Test: manual, robotest
Fixes: 188114877
Change-Id: I245121b95d1d4db02e3107a47c6d3ae13a5d32e5
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
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
- 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
- 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
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
- 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
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
Implement a throttle in SliceBackgroundWorker to control slice updates.
Test: robotest
Fixes: 152366832
Change-Id: I8b65d1b57973e036b932172627aca506f4fae3a4
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
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
- 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
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
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
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
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
-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
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
- 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
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
The notification package was getting too big.
Test: make -j64 RunSettingsRoboTests
Fixes: 145224451
Change-Id: I25ba82f42f7a137d8adcce72dcf8089d0e018bdc