We allowed activities to move to any stack, but that's too much
freedom. Instead we only allow them to move from freeform stack to a
fullscreen stack.
Change-Id: I04de9bbf18cf4431d7bd34d6c727de82802661ef
The change has all the platform changes required to support
modifications in the navbar dimensions and custom icons in car mode.
The UX is not frozen yet, but have placeholder resources provided
by android auto UX engineers.
The change assumes that the car mode configuration is known to the
WindowManagerService and uses its current ui mode to request the
latest from the policy (PhoneWindowManager.java). The change is
modeled on the way rotation is handled, where the Policy knows the
different view attributes for uiMode and just returns back the
window sizes based on the current uiMode requested. The policy does
know the current uiMode, but the order of when that changes is not
deterministic [from logs it does happen before any request to update
UI occurs, but guess that could change].
Bug: 25996809
Change-Id: Ia46cbe5096382d26c9eb8ec74cf59a059b767edb
This adjusts the code for measuring and laying out dialog windows, which
used display dimensions as a basis for calculating the dialog
dimensions. Because of this dialogs would be too large in multi window
mode, where the parent bounds are far smaller than full display. This
switches to using dimensions for configuration received from activity
manager.
Mind, this is still not working as needed, because the resources return
minimal size of the dialog as if it was displayed on a full display,
rather than within activity bounds.
The CL also introduces better logging tags in ViewRootImpl and
DecorView. These normal approach works reasonably well when there is a
single activity on the display. However, when multiple windows are
displayed, it becomes impossible to determine which view root/decor view
logged what. This adds a suffix, that allows to identify the owner.
Bug: 26251921
Change-Id: I515a1ff9a81ee5ad086773196db71915e88a25eb
When dismissing the docked or fullscreen stack, a dim layer is
introduced for a nicer visual effect.
Change-Id: I9f12e331e978208aa9fd9e9883b3c8a36d4da3a0
- Add the ability to add a listener when the existence of the
docked stack changes.
- Register SystemUI as such a listener and switch the recents
button asset when docked stack exists.
Change-Id: I05350878c5adc7ad9f0399f0c42d8d1615d44d02
Allows an activity to always be focusable regardless of if it is in a
stack whose activities are normally not focusable. For example, activities
in pinned stack aren't focusable. This flag allows them to be focusable.
Also, changed ActivityInfo.#{resizeable, supportsPip} to use flags.
Bug: 26273032
Bug: 26034613
Change-Id: I8c63e6d3256757e2e6931e08b8a65269f5169d35
Prevents infinite invalidation loop when reusing a drawable asset within
a single draw() call. Also reduces unnecessary extra invalidations due to
drawable setters (ex. setBounds()) being called during draw().
Bug: 26329675
Change-Id: I31b3c99e8efd4193415cc562a84c8939a2f56c2d
Caching constructors can cause problems for dynamically loaded code if
the same class name appears in more than on classloader. Before using
cached constructors, verifty that they come from a valid classloader, i.e.
one that appears in the classloader chain of the current contexts
classloader. Remove ones that do not from the map to allow the associated
classes to be unloaded in case they're no longer in use.
Bug: 21690610
Change-Id: I84f2894cd03a5dc0c33aed9cd710e4a1f6d9515f
Move requestDropPermissions from DragEvent to Activity.
Permissions will be granted using UriPermissionOwner
associated with this activity and revoked when the activity
is destroyed (if DropPermissions.release is not called before that).
Change-Id: Ic8f8fc3f56f57e83b9bc34ae8c96d82c2c9c4e1d
When resizing SurfaceView along with a main application window,
we want to be able to update the crop of the SurfaceView without waiting
for a buffer at a new size. If we fail to do so the SurfaceView may
extend beyond the edge of the host surface.
Bug: 26010823
Change-Id: I3bb52f82c02bb729a2494a3a43b9654d9aae9532
The notification children didn't respect the given dimensions
when measuring and was simply measuring itself as high as desired.
This lead to a bug where the parent could crash when a layer was
set on it.
We are now measuring the container at most with the height of
the given size and let children draw over our view bounds.
In oder to still allow touch in those regions we also
override the touch rect.
This also simplifies the rest of the touch handling.
Bug: 26159274
Change-Id: I728553a6386455e6632e2511be8a3e7cb447e89b
*** MERGING TO MASTER ***
Drag-end event processing for a child view can remove the GroupView,
Which will synchronously call dispatchDetachedFromWindow(), which will
null mChildrenInterestedInDrag.
This causes a crash when trying to clear the map.
Fixing by introducing a local variable.
Bug: 25433279
Change-Id: I2ef88f7f97935dbafda54634831fbbff747b8f2e
(cherry picked from commit 2e2f1066ad89110365cdb504bf6568569d94da58)
Allows us to differentiate between child windows that always want to be
laid-out in the parent frame regardless of multi-windowing mode
(PopupWindows) and those that don't (SurfaceViews).
Bug: 26255254
Change-Id: Icbc245a24f9a38698444196846ddb25016ef7e2a
Rename DropPermissionHolder to DropPermissions and move
all server-side implementation details into a separate class.
Rename DragEvent.getDropPermissionHolder to
requestDropPermissions and make it take the permissions
implicitly.
Change-Id: Ia83f7cb8af07ce13ba9536d24b0f9d63331d8736
Refactors to getResourcesInternal() and calls that from both methods.
Adds documentation on Context.getResources() and getAssets() that the
instances returned should be consistent with each other.
Bug: 26228895
Change-Id: I41b09f1e9a3a0315bcdf1c08a7b431a9a697bb6f
This code structure causes a crash as rerported, better to extract
access to the settings to InputManagerService, who actually cares
about it.
Bug: 26196092
Change-Id: I4e0dbcc24ccf5d11681738ca3576b64471aa8cc4
We currently decide when to show the decor caption onConfigurationChanged
However, if the app handles configuration changes or the threshold isn't
big enough for the configuration change to be reported to the app, we don't
display the caption in some cases when transitioning from fullscreen mode
to freeform mode.
We now also use the onMultiWindowModeChanged call to also determine if
the caption should be visible.
Change-Id: I237437f04ad90f904912ebac0253245f547b0e3e
By default space should "click" the focused item. This behavior also
applies to GridView and ListView if the items are clickable, but will
continue the previous behavior of scrolling if it's just a list of
items you can't really interact with.
Change-Id: Ic3a0334614d1dc68ff98bc4b1fb1ae2f961f71af
In preparation for supporting replacement of child windows
we make replacement per window rather than per app.
Bug: 26070641
Change-Id: Ifa332086599c125611e430219c9497bae7e2ce31
On the critical path of the cold launch of applications
the main thread of the started application tells the RenderThread
to create a surface. This process is synchronous and blocks
the main thread of the application until the creation
of the EGLContext is complete.
As a consequence the launch time of the application is delayed
by time spent allocating the EGL Context in the RenderThread.
With this optimization the launch time of any application
is improved (for example settings by 20 to 40 ms).
Change-Id: Ibf47aaa0abb8dedf7aa00693073db3785d9d6b08
Signed-off-by: Thomas Buhot <thomas.buhot@intel.com>
Signed-off-by: Zhiquan Liu <zhiquan.liu@intel.com>
The APIs are:
* setting a listener for the area of the caption where we display
control buttons; this is intended for apps that overlay the caption on
their content, so they don't display the content in that area and clash
with the buttons;
* specifying the color pallete of controls in the caption; by default we
try to infer the best color from the theme (dark buttons for light theme
and vice versa), but in case we get it wrong, we allow the developer to
overwrite it;
* specifying the caption background during the resizing; by default we
try to infer a good color from the theme, but in case we do it wrong, we
allow the developer to overwrite this.
The CL also includes merging of layouts decor_caption_dark and
decor_caption_light into a single one. Not only it reduces code
duplication, but also is necessary for allowing adjustment of the
controls color pallete after the layout was created.
Bug: 25486369
Bug: 25818398
Change-Id: Ib87fe849b07df341893ec7873982bf7ab932f6d5