ContextualCardLoader was waiting for eligible card checkers with a 300
ms timeout one by one in a loop. So if more than four checkers expire,
the total waiting time will exceed the 1 sec homepage content loading
timeout, which causes no card shows up.
The solution is to leverage all the checkers' timeout starting time,
and increase the timeout for all checkers. So that ContextualCardLoader
just needs to wait for all checkers for at most 400 ms and then can get
the results.
Bug: 159236069
Test: robotest
Change-Id: I601ac4151bf8be68b30eaabdb45a4e1ace95653f
This reverts commit 52ac47d9c8.
Reason for revert: This CL is what we wanted to merge in RVC and has already got Code-Review +2, Owner-Approval, and DrNo-Review from other folks regardless of the accident.
Bug: 159195420
Change-Id: I6c646269cd3e13e015dcc06418e21db66372e680
This reverts commit 2e790e1859.
Reason for revert: I accidentally +2'd this CL and it got merged. Sorry about that.
Change-Id: Ia1b2e0a264e16b368601bbb7a32148ec6c183e84
Bug: 159195420
Exempt-From-Owner-Approval: Just a revert
- There is SecurityException when accessing Slice Uris which are not in
Settings app.
- Rollback to the original mechanism, remove an unused latch, and
register a trivial callback
Fixes: 159195420
Test: robotest
Change-Id: Ice2cf5f928b0e6d0367bcc41c3912526e8f7bd7f
Slices should be pinned before being bound. The original design calls
registerSliceCallback() to pin a slice, and then calls bindSlice() and
passes the result to the callback directly. When the callback is
called, it executes unregisterSliceCallback() and unpins the slice.
However, registerSliceCallback() starts to observe the slice change and
then rebind it in an AsyncTask. If the slice is updating via its
background worker and the timing of the binding overlaps the callback
execution, it's possible to bind the slice right after unpinning it and
causes the error.
The solution is to remove the callback mechanism, and just to pin, bind
and unpin the slice directly.
Fixes: 157387583
Test: robotest
Change-Id: I8748dd3038a3662599935f07420d07cf254a4073
The bottleneck is getting LocalBluetoothManager the first time.
1. Initialize LocalBluetoothManager earlier and asynchronously.
2. Don't block in slice's constructor and getSlice().
- Initialize the bt updaters until the manager is ready.
- Just show a header if the manager is not ready yet.
Fixes: 157702021
Test: robotest
Change-Id: I427df55f259b45ba4c37557b22e09dcc24079e93
When contextual cards are being laid out, there are two separate layout
transitions, which brings users the feeling of slowness.
In the current design, we bind slices in the adapter's
onBindViewHolder(), where slice's binding is acutally done in the
background thread and it's time consuming. So before getting the
callback from the slice framework to have actual contents, the view is
empty but the viewholder is already created. So the RecyclerView would
treat it as completed and starts to lay them out. This introduces the
first time transition. Once we get the actual slice content, the view
will be refreshed and laid out, which is the second time transition.
To tackle this, this CL caches slices that are created at pre-check
time, and use them to render before getting updated slices to fill up
the gap.
Fixes: 156372414
Test: robotest and launch settings to see the transition being smooth.
Change-Id: Ic0a27ff36f1824de499b75ec73b2635de9cbe6b5
This reverts commit ac59ea8e23.
Reason for revert: Fix it using another approach in ag/11629780. The prebind part will be helpful to cache slice data.
Bug: 152365480
Change-Id: Iebed42027552a923907647b61480f135ac4f4097
Some cards require a bit more time to be loaded, so relax the timeout a
bit. After tweaking the time, the overall loading time seems decreased.
Fixes: 152365480
Test: rebuild and launch
Change-Id: Icc2f66b28a377bd8ce230f8a9918b8f1f164f4ff
We have a precheck mechanism to filter out slices that are not eligible
to be displayed on the homepage. Since sticky cards are designed to
be always available, which implies they will never be null, so skip
prechecking on them.
This allows us to prevent from the precheck timeout which usually leads
to the disappearance of cards.
Fixes: 152365480
Test: robotests
Change-Id: Ic9e3df8b55609e9b5d1d3fd3a8d95e4086d3d7a4
- 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
Many users leave Settings app by pressing Home key, but Settings remains
in the same card status and doesn't update when users come back, which
may lead to a bad UX.
This change reloads cards and resets the UI session for some events,
including home key, recent app key, and screen off.
Fixes: 151789260
Test: robotest
Change-Id: Idb575cef4a58894984cb42238d7b3b43c49389a3
When bluetooth is off, show the specific layout for enabling Bluetooth.
Bug: 154691520
Test: robotest
Change-Id: If3fd493558dcf2a47183345bbe175dfe257574d1
- Add dismiss action for cards that can be dismissed.
- Remove importantForAccessibility from sliceView so Talkback can
recognise this view in order to generate Local Context Menu.
Fixes: 146910157
Test: Enable Talkback -> Move focus to removeable contextual card -> use
up-right gesture -> see Local Context Menu
Change-Id: I75a7394e94e6939d48cc379f62eab66f7903fd98
ADAPTIVE_SLEEP has been moved from Settings.System to Settings.Secure
but the main logic hasn't synced with the change which leads to the
failure.
Fixes: 139319542
Test: robotests
Change-Id: I56f58cc3da5a4034e2bf2ed5a63ae3bc2fec2a21
The previous change of the slice title will also impact the title in
Display setting, so this CL creates a new string for the slice title and
revert the change of the normal preference.
Fixes: 151746621
Test: check the titile on Adaptive sleep slice and Display setting.
Change-Id: I2955f4c78b7bf689078deaabcc4148bd5e37b573
Rename the method to setBlockable. Also rename isBlockableSystem in the
same way.
Bug: 151311073
Test: atest NotificationChannelTest
Change-Id: I0504f8043dc864fe6677f2e65783068ffa3437ba
When users navigate back to the homepage, if there is a slice being
displayed, slice callback will be triggered. It will then check if this
slice has any error hint, where NPE would occur if the slice turns out
to be null. Hence, add a null check before checking slice hint.
Fixes: 148158780
Test: rebuild and navigate back to the homepage.
Change-Id: I2b04dc0d64a223cc85f6af55b2ae2dbc5f3e1f40
- support tapping to activate for all available media devices including
Hearing aid and Headset
- support tapping to connect for previously connected devices
Bug: 149667096
Test: robotest
Change-Id: I25f74b1b20fbb1876200a561775aa675ff60ac37
Add a config for contextual dismissal. This config is used to
determine whether the existing dismissal timestamp should be
kept before an insertion.
The new dismissal behaviour design replaces the boolean
value(isDismissed) with a long value(dismissedTimestamp) to give
this behaviour more flexibility. Utilizing the timestamp allows
developers to define new criteria of card's display (e.g cards being
dismissed can be shown again after a period of time).
While newly inserted data from SettingsIntelligence or other clients
may not have dismissal timestamp recorded. Turning on the config gives
the capability to persist dismissal timestamp, and more customized
behaviour can be created.
Bug: 143055685
Test: robotests
Change-Id: I9d095955e9c51f2aa3332d49ee230d3ded9ae744
Merged-In: I9d095955e9c51f2aa3332d49ee230d3ded9ae744
(cherry picked from commit 377125bf96)
- remove "Pair new device" row
- change the on/off toggle to a plus button for pairing new device
- roll back the title "Bluetooth devices"
Bug: 149667096
Test: robotest
Change-Id: I47e9c47b2ab0adacdbdbde34522d7c0172adda75
Merged-In: I47e9c47b2ab0adacdbdbde34522d7c0172adda75
(cherry picked from commit 5e462a852b)
Currently, if a contextual card gets dismissed, it will be gone forever.
After this change, all cards being dismissed can be shown again after a
certain amount of time(e.g one day). In order to calculate the amount of
time, CARD_DISMISSED column is replaced with DISMISSED_TIMESTAMP. Once a
card gets dismissed, a timestamp will be recorded for a corresponding
card.
In this change, some methods are moved from CardDatabaseHelper to
ContextualCardFeatureProvider. So OEMs could replace the providers with
their own ones to get cards and have different dismissal behaviours.
Bug: 143055685
Test: rototests
Change-Id: I00ace98991cabcbfcae4fc47a44e9448683d680c
Remove some columns from Contextual Card DB as they are never used.
Fixes: 143058171
Test: robotests
Change-Id: Ic618ccba16c3ed9f0a85b905535916e5d062d79e
- update contextual card proto interface to fit the new SettingsIntelligence
- show sticky cards at the tail of the card area
Bug: 149274976
Test: robotest
Change-Id: Icca167825c1c037ec12d8836d82c5fdff4331a8e
we shouldn't take users so deep into the settings IA because it's easy
to feel lost in settings after clicking on a result without additional
context.
Bug: 143055215
Test: robotest & manual
Change-Id: I337cb5ead31e1e4e7bf9be78132e90630f83ee43