Don't reinflate from LauncherAppWidgetHostView#onConfigurat#onConfigurationChanged because Launcher activity will rebind app widgets on configuraiton change. This will reduce lock contention to inflate complex widget views and reduce flicker.
Bug: 285279824
Flag: None
Test: Rotate screen and verify widget are rendered correctly
Change-Id: I69abc7f1fe0ca5704ac887142c73b8d245fead4e
As discovered during investigation of system health issues, doing local
color extraction in widgets (for the purpose of making their color
matches the background during a drag) took many CPU cycle during layout
pass, which may have contributed to animation janks in various scenario.
This CL removes the feature in favors of better performance.
Bug: 266941872
Test: manually verified theme are still honored in widgets.
Change-Id: I63b13bc005907779af2322cd4bedbe141b0f3e27
Also getting rid of part of the logic that updates the frame size in multi-window mode since multi-window is no longer supported
Test: N/A
Bug: 268553314
Flag: ENABLE_WIDGET_TRANSITION_FOR_RESIZING. OFF
Change-Id: I081b11441b562fccec7feb12cec0b28b9a0ea3a2
Currently by design when launcher enters the background, it stops
listening to updates in widgets. This eventually causes the dilemma
for launcher when it resumes, before the update can be returned from
the system process via IPC, launcher could do one of the following
to fill the gap:
1. show a deferred widget view -- a placeholder that renders the shape
of the widget -- to let the user know widget is being reloaded.
2. show whichever widget view that was previously displayed to the
user that may now contain stale content.
There is a descrepancy here since in some edge cases we are showing the
former while in most other cases we are showing the later. This CL added
a short-term fix to address the descrepancy and favors the later where
possible.
Bug: 218067434
Test: manual
Change-Id: I6cd2cd704186267227e2ec47f2581843fd526fa0
In the past we've seen a WorkspaceItem disappeared from the workspace
but wasn't able to determine why it was removed. This CL includes the
reason why it was removed in the error log, which hopefully would help
us debugging similar issues in the future.
Bug: 231239260
Test: make
Change-Id: Iba3d57568c9b3e011a6b65b26f0d4170d42fe1a5
> Calulating correct location irrespective of transient
state (scale/translation)
> Removing extraction pause/resume logic
> Simplifying location calculation and registration (only use one location instead of a list)
Bug: 194732483
Test: Manual
Change-Id: I255d83761bff5e09c9fb0a5e398d0be0c1d0956f
wrap_content
If the widget preview has width / height set to wrap_content, we should
set the layout param width / height to the exact dimension after
measurement. Otherwise, we will end up clipping the previews.
Test: manual
Fix: 193144010
Change-Id: I101f7c6d3dbd264fee448b85c54029d5650d6630
Optional won't hold null parameters, so use a boolean flag and
colorschange fields to represent the value and whether changes are
present.
Bug: 190818220
Test: manual
Change-Id: I794507340345864e73f04039f12a035c8053fd96
Disable color extraction on drop until the workspace is back to its
normal size, then re-enable it and force re-coloring. This needs to
happen if the drop is on the workspace, but also if the drop is on the
secondary target.
Fix: 192354264
Test: Manual, see bug for details.
Change-Id: I79203f68843d59384503aa76f4813d886e98afa3
Merged-In: If573641e4bb5a98ed6b5008e00f70f4bbe492c24
Color change updates recreate the view, which can interfere with the
widget-to-home return animation, specifically the GhostView's use of the
AppWidgetHostView's render node.
Deferring the application of color changes until the end of the
animation allows the widget to settle and remove the GhostView before a
color change might recreate the widget's view.
Bug: 190818220
Test: manual
Change-Id: I6552e583ebb0e4810077d4e70fe9ecb07fd5d01a
Fix 2 bugs in this CL
1. Before this CL, getBoundsForViewInDragLayer returns absolute bounds
for widgets. What we want is the bounds of a widget when it is
visible in the drag layer. ViewGroupFocusHelper#viewToRect has
taken PagedView into account. This makes it a prefect candidate to
calculate relative bounds of a widget.
2. requestLayout at the end of endDrag is problematic due to the drop
animation. If the drop animation is still in progress when onLayout
is called, the bounds of the widget isn't final. Since the color of
app widget right before is already the final color. We don't really
need to update the color extraction.
Test: Set the wallpaper and clock widget according to the bug. Then,
reboot the device. The clock widget color shown right after
reboot is the expected color. Long pressing the widget doesn't
cause a color change.
Fix: 191114337
Change-Id: I466c8102dba0e5b207b3768e0935472cbd523235
Preview layouts are rendered via LauncherAppWidgetHostView. These
layouts are not yet added to the launcher. And thus, there is no
LauncherAppWidgetInfo.
Test: When a preview layout is shown in the recommended widget section,
rotate the screen. No crash is observed.
Bug: 190395009
Change-Id: Ib1d080a106681fbfe3a4293f9f51f9576ef9414b
Local color extraction doesn't happen if the wallpaper is not currently
visible, so we don't need to add/remove the locations when the widget is
visible/hidden.
Also now compare the locations with some approximate measure, to account
for possibly slightly different calculations during drag vs drop.
Fix: 189827568
Test: Install Clock or test widgets and try to move them: the color are applied correcly.
Change-Id: Ib2a08bb0552c75bd351868e4fd5b5df8b8b732b2
Correct the size of the App Widget: first, compute the size when the
widget is positioned (it wasn't done), then do not apply the
transformation when computing the size of the widget when drawn.
Note: Somehow, there is a shift by 1 on the position on the x axis, both
in landscape and portrait. So I added a +1 to get the exact same values.
If not, we have a risk of getting different colors.
Fix: 188759989
Bug: 187907544
Test: Added logs and moved a widget by hand, check the actual
coordinates with hsv.
Change-Id: Ia3bd5b3e3ea9a3ef75f8cdf466a9800786646a94
have its own set of temp variables.
- Pass in float[] param to not create new obj in each frame
for dragging widget case.
Bug: 175329686
Bug: 187019711
Test: manual, verify
Change-Id: I4350fb7e66a80c73def5659fb41abc14d357e667
This reverts commit 17fda29bf3.
Reason for revert: Fixing the memory leak
Leak was detected in caused launcher tapl tests to fail.
For instructions on how to debug leaks, see go/launcher-testing.
Using AS memory profiler, the color extractor class is holding
onto a reference to launcher that has already been destroyed.
The fix is to set the listener to null when view is closed.
Bug: 175329686
Test: run profiler in AS, open and close popups, and verify no leaks
Change-Id: I2d4a87f0481cbc88f3587dce91278e85ca113545
This reverts commit 242c805f82.
Reason for revert: Introduces a leak. I haven't seen a bug for it yet, but this CL is the only in the culprit list; the leak can block multiple teams presubmits, and the leak is via ArrowPopup. Enough evidence.
https://fusion2.corp.google.com/invocations/4b50db71-d598-4e52-9076-e91d42b65014/targets
Change-Id: I1700a9eea8705983598aee43c0a63e67c1d9cf71
Bug: 187075409
- Updated logic to accept any view that is a a child of draglayer
(from being workspace dependent)
- Move color extraction logic from widget class to utility class.
- Initial CL, future CL will interpolate between colors
and expand color extraction to other abstract floating views.
Bug: 175329686
Test: long press on colorful wallpaper and test colors are extracted
test in multiwindow mode
Change-Id: I18a6bb5013de4eea7e9b45810401f5b9b3cd7302
Provides a mechanism to temporarily block app widget updates to a
particular app widget for a limited time.
Bug: 169042867
Test: manual
Change-Id: I35bf9cb4bfe99b2f371ae8fc3db09e6fcc773752
1. Before this CL, preview layouts are not rendered in both the
BottomWidgetSheet and SearchPopupSheet because the preview
width & height are not set correctly.
2. Also applies the right padding to preview layouts.
Bug: 185374336
Test: Drag-n-drop preview layout from the full widgets picker,
the bottom widgets picker and the search widgets picker.
Change-Id: I2b6303bfe4eb86a4935a5569f6107e9d46448902
The feature status will not, in the end, depend on the widget, so
removed the argument.
Bug: 183097166
Test: Manual test
Change-Id: I977e775072cf1724f3e31b848d3ac4c862d23e00
When forcing the rounded corners, the radius may be smaller than the
default one. When this happens, we should change how the frame is drawn
to only use that reduced radius, or this looks weird.
Bug: 183097166
Test: Manual tests with top 1P App Widgets
Change-Id: I6ce232515ce14059e1168e16735719ea2370132c
The feature is controlled by the ENABLE_ENFORCED_ROUNDED_CORNERS flag
(currently set to false).
If does not yet handle P/H flags to control its behavior.
Bug: 183097166
Test: Manual tests with top 1P App Widgets (See bug for results)
Change-Id: I56fca1b717f37ad518588115409f2144a71d4b98
Reapply RemoteViews can happen asynchronously. RemoteViews may
not finish reinflation right after setColorResource. Let's call
it onDraw.
Test: Manual
Bug: 182282587
Change-Id: I3653b4c64a5897637181f61096464b75945ab5f5
Test: Drag a test widget around and observe local extract color
is applied.
Bug: b/182282587, b/182816217
Change-Id: If63a9d91ceb2102d5d913bca85997b8be07b1adf
This follow recommendations from the API council review.
Also removes two public functions introduced recently by
http://ag/13473552 and are not needed anymore.
Bug: 181611658
Test: Manual testing with local widget.
Change-Id: I8d0c90a80a0d45981bd5d16e69cd86639d5ec7d8
I will use the newly created LauncherAppWidgetProviderInfoTest in a follow-up CL to add tests for the newly added widget sizing APIs.
Test: Automatic: Ran all robolectric tests in launcher3,
Manual: Added a widget, edited the widget, removed the widget
Bug: 179807199
Change-Id: I540b2dbe284c6eb5aa2466a1d13a9581ee59425b
Makes sure the launcher:
1 - Send the list of actual sizes the widget in all situations.
2 - Gives the current size to the framework on inflation.
Also needed to guard the new border changes introduced in
http://ag/13532637 with the corresponding flag.
Change-Id: I2a33e9501b921f2fc393684e8ce91ee077626bf7
Test: By hand using a local widget.
Bug: 179025145
=> We pull apart the scale and translation that are set in a fairly
static way due to split-screen vs. the general translation and scale
properties that might be used more dynamically, in this case
for re-order animations
=> This allows removal of some code that breaks reorder animations
due to the accrual of translations / scales in certain edge cases.
=> TODO in future CL: address other translation cases and make the throw
case for calling base setTranslationX/Y for Workspace Items unconditional
issue 149438360
test: manual
Change-Id: Ic3fde172f669e215cd25db0fcd4e1c3c873d314f
Missed this case in ag/10736229; the symptom was that if you picked up a widget when it was scaled due to split-screen, the widget would disappear
Test: manual
Change-Id: I26810fcf820f7053b6445989dce6598e1df55a8e
Addresses:
=> Fix folder icon drop location mapping (was very far off)
=> Fix BubbleTextView drop animation shifted by a few pixels
=> Get rid multiple unnecessary calls to setDragMode(none), was breaking
some of the reorder flow; still some issues to address here.
=> Fix folder icon parallax (didn't work when the folder had a dot)
Test: manual
Change-Id: I5959cf341996f75d30212353ec096ed25bf40ea5