Fixes: 134965754
Test: Verified slice appears when not enrolled.
Test: Verified slice does not appear when enrolled.
Test: Verified slice disappears after clicking on icon and going back
to settings page.
Change-Id: Id1c4458742ab622df8d5881e926fe54684b36843
During SettingsSliceProvider#onGetSliceDescendants, use the uris from
database directly instead of getting the key and construct the uris
manually.
Bug: 126222433
Test: robotest
Change-Id: Iad4e9fc28ec4442b6bb323878503d743582b35ac
And slightly refactored the SliceDataConverter to remove 1 reflection.
Bug: 126222433
Test: robotest
Change-Id: Ic5782bdd71f5c9cb77879a35de81dc61c01d1912
When it is null, we should also update SliceView, so SliceView can
update to be "invisible"
Fixes: 133790296
Test: RunSettingsRoboTests
Change-Id: I239405cce8bcadacbd374ccbb24d0fcbadc04880
Return null when slider getMax() <= getMin(), instead of force
build it to make it crash
Fixes: 132657278
Test: RunSettingsRoboTests
Change-Id: I9f3c078ae07522aa8f1cebdee3f73df2d014d6bb
The feature failed after the CL "Force the adapter to rebind cards with
a toggle".
Because toggle slices have been forced to rebind after starting another
activity and when any slice is updating. This unpins Wi-Fi slice and
stops WifiScanWorker and then clears the saved clicked network.
Solution:
1. Change ConnectToWifiHandler from activity to receiver and send
broadcasts to it with FLAG_RECEIVER_FOREGROUND, so Wi-Fi slice won't
be forced to rebind.
2. Seperate Wi-Fi scan worker and contextual Wi-Fi scan worker. Keep the
original logic for the generic one, and then add the logic below to
the contextual one.
3. Do not clear the saved clicked network when slice is unppined because
it happens frequently in contextual homepage.
4. Introduce a static long in ContextualWifiScanWorker that updates once
in every visible UI session. A session is when the screen is visible
to user.
5. Use session token to determine whether auto-starting captive portal
is needed.
Fixes: 128056349
Test: robotest, visual in homepage and network panel
Change-Id: I9e03c379806e124fa7253b2a635574b2433f6afc
We lose chance to build all Settings slices if we got an exception
when settings was creating slice data for controllers.
We should make sure the process goes well even we got an exception
on an incorrect controller.
Also, we log exceptions for each catch.
Bug: 131449561
Test: Open Settings search and then we can see slice for some
search result.
Change-Id: Iac9f0e0a187f6d10cf53886afeb9cab479b6ce02
SettingsSliceProvider no longer allows apps to request permission
from the user for Settings Slices. Instead, the PrimaryAction on the
permission slice will be an intent into Settings.
This is because the dialog for granting apps Settings Slices would act
as a replacement for regular permission dialogs, which we want to avoid.
Fixes: 130795282
Test: robolectrico
Change-Id: I6848215bab2bf10ee5e53814b765d04f04f53f4e
We did not set the min value on slider slices when converting them
from preference to slices, which makes the slices all have min 0.
However, there are some slider which should have min value greater
than 0, for example, call and alarm.
We should get the min value and apply it to slider slice to make it
consistent with what we have in settings pref.
Test: Manual verification
Test: make -j40 RunSettingRobotests
Test: atest VolumeSeekBarPreferenceControllerTest
Fixes: 130439216
Fixes: 130358208
Change-Id: Ib4399c36c7da3ac41a6d46a6c150f0ec1b9b0b0f
- Remove the controller in SoundSettings, just use the common one.
- Update a bunch of IDs so ZenModeSliceBuilder maps to the toggle
button in zen_mode_settings.xml
This is needed so the slice intent (left target when shown in search)
is the same as what we index from search side. Previously the search
indexer is finding zen_mode from sound page but the slice itself is
reporting a deep link into zenModeSettings page.
Fixes: 130437726
Test: robotest
Change-Id: Ic41d2d93afa1f748e3282e23010199a0fa078645
When calling getSliceData from SliceDataConverter, we were returning
the old version of List<SliceData> if there's one already existed.
So when the Locale get changed and we are re-indexing data, we
are still inserting the old List<SliceData> in database. We should
reconstruct the List of SliceData instead of reusing the old
version here, since we only call SliceDataConverter#getSliceData
when we need to reindex.
Test: Manual verification
Fixes: 126732022
Change-Id: I42a3cf93dc313efefe50a34faabac9e1d616ef6c
Add ZenModeSoundSettingsPreferenceController extends ZenModePreferenceController,
and update availability status to AVAILABLE.
This is cherry-picked from ag/6897872
Change-Id: I8dcb6808cc21c4f5c06548a363c998e369646487
Bug: 129320642
Test: manual & robotests
Discovered flashlight slice sometimes does not work, throwing exception
similar as it b/117445451. Adding a data uri fixes it.
Bug: 129981692
Test: manual
Change-Id: I16bc19027dd342f85aaabbf1a2853bb55564f64f
- Support signing in captive portal APs in WifiSlice
- Show ContextualWifiSlice when signing in is required
- Generifies SliceBackgroundWorker.getInstance() to return <T extends SliceBackgroundWorker>
Fixes: 128056349
Test: make RunSettingsRoboTests -j
Change-Id: Ib4d3942591a65e81018389e4c0bbddfea6854dbc
(cherry picked from commit dd9f92280b)
- Add boolean useDynamicSliceSummary() in Sliceable interface. This is
the switch equivalent to android:allowDynamicSummaryInSlice in xml. It
moves the setter closer to regular Sliceable APIs, thus less easily to
miss.
- Coverted all android:allowDynamicSummaryInSlice to use the java API.
- Except 2 prefs in my_device_info. They incorrectly set this to true
previously (controller is not sliceable, no point setting
dynamicSliceSummary to true. They just won't do anything)
Fixes: 128446156
Test: robolectric
Change-Id: Ic57acd590dec3e87dcf4592df137321d14b854d9
Add ContextualNotificationChannelSlice to show more clear sub title on
notification slice.
Fixes: 128641319
Test: visual, robotests
Change-Id: I650102f4cde7d8d397c7a501ba9ee76c401ba9db
Remove the database.close in code for handling the re-open an already-closed object:SQLiteDatabase
problem.
Bug: 124451874
Test: robotest
Change-Id: Iff8c0bc5ea092d42cff0a40dfa4324a4de7c90bc
- AccessPoint treats connected and connecting as equal so slice doesn't
refresh in this case
- Add a new method to determine if two lists are the same in SliceBackgroundWorker
- WifiScanWorker overrides this method to check the access point states
Fixes: 123941320
Test: robotest
Change-Id: I78d610da4b6b1d40f5785ba6701fb71b987fe31c
- Show "play media to" item when Previously Connected device is available
- Click "Play media to" to launch output slice
- Update test case
Bug: 127729340
Test: make -j50 RunSettingsRoboTests
Change-Id: Ic00b309f87bc16f540b22b5a43fecb86f76caeb2
Slice may added parameter in their uri.
When get slice through uri, removed parameter from uri to get correct slice.
Bug: 128651940
Test: make -j42 RunSettingsRoboTests
Change-Id: Id3cb7b91026384ce4e22c157a2908a5e18bc7993
- Introduce a static long in SliceFeatureProvider that updates once
every "session". A session is when user is in an UI (screen rotation,
going to subpage, etc does not break the continuation of session).
- Use session token in ContextualWifiSlice to determine when to refresh,
instead of relying on WeakHashMap from CustomSliceManager.
WeakHashMap can be cleaned up at any time by gc so it doesn't match
what we want on the UI.
- Also as a side fix, merged CustomSliceManager into
SliceFeatureProvider.
Fixes: 123937830
Test: robo
Change-Id: I199bceceb208b99a32f3f08e624787b5a03e73a9
- Make everything that can be static, static.
- Also removed a unused slice for battery info.
Next step - going to make CustomSliceManager into a regular class
instead of getting it from FeatureProvider. This way it's no longer an
application level singleton, then we can do things like attaching
lifecycle to it. It will be easier to deal with "session" based use case
after the refactor
Bug: 123937830
Test: manual
Change-Id: I384761a6894fa907f72a3610437835c4dd4d1944
The NFC Slice would jank on enable and disable, because of the
intent filter it registered with SysUI. The intent filter would
broadcast an update for four states:
1) On
2) Off
3) Turning On
4) Turning off
The first two caused no problems. The third and fourth caused jank,
since when clicked, the switch in the NFC slice would turn on / off
asynchronously - that is, it turned on or off based on the previous
state of the switch, rather than on the actual value of NFC. It does
this to feel fluid in the app in which it is rendered.
From the off state, the order of events is:
1. Switch clicked
2. Switch animates on
2. Background intent is fired to settings to turn on Nfc (happens at
the same time as animation)
3. Settings calls the NFC enable API
4. A broadcast for Turning On is sent
5. The receiver in SysUI gets the broadcast and forwards it to settings
6. Settings tells the Slice to make sure it is up to date
7. The Slice checks for the current value - IMPORTANTLY - which is
currently off, it is only in the process of being enabled.
8. The Slice flips back off
9. Nfc finishes getting enabled in the background
10. The framework pushes the NFC ON broadcast
11. SysUI gets the broadcast, and forwards it to settings
12. Settings tells the slice to update
13. The slice checks again and finds that NFC is on, flipping on.
This CL creates a new background slice worker for NFC and registers
the intent filter there, rather than in SysUI. When the background
worker gets the broadcast, it checks if it is in state 3/4, and if so,
it drops the update silently.
Fixes: 115737701
Test: robotests
Change-Id: I17043828ad3a67a2a5acdf5c75d9cc51ff7e91d0
Handle the attempt to re-open an already-closed object: SQLiteDatabase problem
Bug: 124451874
Test: robotest
Change-Id: I750b2ce98cc2551c80c3bb4f25928e0e5a615cd9