Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

@39.agl.guppy #12

merged 117 commits into from Apr 25, 2019

@39.agl.guppy #12

merged 117 commits into from Apr 25, 2019


Copy link

antiapuentes commented Apr 24, 2019

Contains the last changes in AGL rebased against webosose submissions/39.

hferreiro and others added 30 commits Nov 28, 2018
Only require webOS shell surface on webos (if is_webos is defined).
CBE included scripts for building appshell and wam_demo, but the
work for building vanilla browser (chrome/ browser) was  not

This patch adds the pending bits.
…anager slang

:Release Notes:
ivi shell surface talks AGL weston/WindowManager slang

:Detailed Notes:
AGL weston/WindowManager expects ivi surface id to be the
same as PID, so make it so.

:Testing Performed:
Enable weston:

systemctl enable weston
systemctl disable autologin@tty1

systemctl start weston
systemctl restart --user WindowManager
systemctl restart --user HomeScreen

Checked by modifying hvac application and launching from its icon:

ExecStart=/opt/chromium53/chrome --user-data-dir=/tmp/user-data --in-process-gpu

:QA Notes:

:Issues Addressed:

Change-Id: Iecdc53a102dd8dba1a3c8501910f32033aa46aa4
Reviewed-by: Andre Rosa <>
Tested-by: Andre Rosa <>
Reviewed-by: Jose Dapena <>
Tested-by: Jose Dapena <>
… ID of web app windows.

REVIEW (backporting)
- check missing calls in WebAppWindow::Restore() and ::DetachWebContents()

:Release Notes:
Add a way to set the surface ID for web app windows.

:Detailed Notes:
In AGL, applications are expected to notify their PID to wayland, so it
matches the one of the executable created from AFM. But in WAM, this
PID will not be the one of browser process.

So this change adds an API so WAM can set the PID on launch.

:Testing Performed:

:QA Notes:

:Issues Addressed:

Change-Id: I898b54adff06e17bba44c07e30a6b5024296c3d8

(cherry-picked from
:Release Notes:
Add stub implementation for wl_output geometry event.

:Detailed Notes:
LG AGL wayland compositor is sending geometry events through
wl_output, but is missing the handler. That makes chrome launch

Add a stub for it. Ideally a full implementation should be
provided to react on the fly to device scale changes.

:Testing Performed:
It does not crash with geometry events now.

:QA Notes:

:Issues Addressed:

Change-Id: I0e72f639bdd179cbadb7d4a6326b43e841174b1d
Tested-by: Jose Dapena <>
Reviewed-by: Jani Hautakangas <>
Reviewed-by: Jose Dapena <>
:Release Notes:
Fix setting the PID of browser process on launch.

:Detailed Notes:
Set the PID on initial stages of launching chromium, so it will
properly communicate with IVI later.

:Testing Performed:

:QA Notes:

:Issues Addressed:

Change-Id: I56f3f8853f75b297500b7def2c076909777748ac
Reviewed-by: Jose Dapena <>
Tested-by: Jose Dapena <>
…t is created

:Release Notes:
Do not set the surface ID on platform window before it is created.

:Detailed Notes:
After setting the PID on Chromium browser desktop window tree host
initialization, it would crash as the platform window would still
not exist. This change checks that condition, and stores the
surface id while the platform window is not created.

:Testing Performed:

:QA Notes:

:Issues Addressed:

Change-Id: Iff8bbae07578ca751266da0dd1ccea4acda6ce10
Reviewed-by: Jose Dapena <>
Tested-by: Jose Dapena <>

(cherry-picked from
- needs surface_id in widget.h? is missing
- changes to WebAppWindow and WebAppWindowBase were partially ported

Make IVI match the PID properly, setting it at the right time.

Change-Id: I6ebc20297dcbdd4874f5eb7badc8673c48becfff
Reviewed-by: Jose Dapena <>
Tested-by: Jose Dapena <>

(cherry-picked from
It sets surface ID with process ID if it has 0 as Window Manager
handles surface ID 0 as an invalid ID.

[SPEC-1889] Chromium is initially hidden when launched.
- This patch fixes the libcbe build for AGL platform.
  Before this change, no webos code was being linked

Signed-off-by: Nick Diego Yamane <>
As WebOS, AGL/WAM relies on GLib so we need to make sure
GLib Message Loop implementation is used (even in renderer process).

Signed-off-by: Nick Diego Yamane <>

Use app_runtime::WebViewProfile as a delegate for webos::WebViewProfile.

- app_runtime::WebViewProfile is currently being exposed in webos::WebViewProfile.
  Workaround implemented and must be fixed before landing this patch.

Author:    Henrique Ferreiro <>
It updates ivi-appliction-client-protocol.h and ivi-application-
protocol.c with what AGL is using and registers ivi_surface_listener
to get 'configure' event.

It gets width and height of ivi-surface and triggers window resize.

[SPEC-1890] WebApp View Size doesn't fit the homescreen.
Signed-off-by: Nick Diego Yamane <>
Signed-off-by: Nick Diego Yamane <>
…ying on destruction.

Don't manually destroy widget to avoid confusing Wayland compositor
and getting errors from it.

Bug: 578890
Change-Id: I97ec928181ed813f30fe7478a5dc3fdf44acaa58
Reviewed-by: Maksim Sisov <>
Commit-Queue: Maksim Sisov <>
Cr-Commit-Position: refs/heads/master@{#562236}
It added event->stopped_propagation() condition at input_method_minimal
to avoid inserting character when stopped_propagation is set while
DispatchKeyEventPostIME is working. input_method_minial works on Ozone
with wayland.
It also added and introduced
'InputMethodMinimalTest.StopPropagationTest' to verify that
character's not inserted to text input when the event is
set with stopped_propagation.


Bug: 843924, 578890
Change-Id: I2d8f6d408a04cd7affd8089157b7b0efa07379d5
Reviewed-by: Shu Chen <>
Commit-Queue: Julie Jeongeun Kim <>
Cr-Commit-Position: refs/heads/master@{#562332}
We're looking to remove the Skia-specific SK_MaxSizeT and replace it
with its standard exact equivalent, SIZE_MAX.  Landing this here first
will make this transition a little smoother.

(For what it's worth, there's nothing at all wrong with the way this
code is written today... it's using public Skia types and checking the
documented error condition perfectly.  We just want to slightly tweak
those docs to say SIZE_MAX instead of Sk_MaxSizeT.)

Change-Id: Ieaffdedb8c33f1226cef4990cf0e2ce68eb7d294
Reviewed-by: Robert Kroeger <>
Commit-Queue: Mike Klein <>
Cr-Commit-Position: refs/heads/master@{#567342}
In particular, there is now a PlatformWindowInitProperties structure,
which brings initial properties to ozone windows. It can be initialized
(in the future, when other code is in place) with a desired window type,
bounds and parenting model, which is very important for Wayland's
xdg_popup windows (used for menu windows, for example).

Bug: 578890
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel;luci.chromium.try:linux_vr
Change-Id: I573912d462d698b19b1bb09cf687971965e951e0
Commit-Queue: Maksim Sisov <>
Reviewed-by: Robert Kroeger <>
Reviewed-by: Scott Violet <>
Reviewed-by: Sadrul Chowdhury <>
Cr-Commit-Position: refs/heads/master@{#567601}
It's now possible to create menu/popup windows in ozone/wayland.

What is more, Ozone/Wayland now implements xdg popup objects, which are
used for such windows as menus. Basically, popup windows are the only
windows, which clients are able to set to whatever place they want on
top of a parent window (global coordinates are not available).

The FakeServer has also been extended to support xdg popup and positioner
objects. What is more, ownership model for the new added objects is a bit
different. Instead of keeping them owned by surfaces, they are making use
of helper template methods with wl_resource_set_implementation, which
automatically take and release unique_ptrs.

In the future, all the other mock objects must be turned to that model for

TEST=XdgVersionV5Test or XdgVersionV6Test
WaylandWindowTest.CanDispatchEventToMenuWindowNonNested/0 (1 ms)

Bug: 578890
Change-Id: Ia644862cce34375d3a758d8c0ff398c75dd47772
Commit-Queue: Maksim Sisov <>
Reviewed-by: Robert Kroeger <>
Cr-Commit-Position: refs/heads/master@{#567608}

Previously PlatformWindowInitProperties was passed to Ozone platform
implementations as a const reference. This doesn't allow to pass movable
parameters (e.g. handles) when creating platform windows. On Fuchsia it
is necessary to pass view_owner_request when creating a view.
view_owner_request wraps an handle, so it's not copyable. Updated all
code that works with PlatformWindowInitProperties to pass it by value.

Also updated DesktopWindowTreeHostPlatform to default to POPUP window
type for any widget types other then WINDOW and MENU.

Bug: 829980
Change-Id: I34c7a8fe957f364833a5e4eafd272794eec99b56
Reviewed-by: Scott Violet <>
Commit-Queue: Sergey Ulanov <>
Cr-Commit-Position: refs/heads/master@{#568153}
Also dropped prefix from enum values names as they are not necesary
with enum class.

Change-Id: Iff808da768321a91a8b841db3aa133935ccab477
Commit-Queue: Sergey Ulanov <>
Reviewed-by: Scott Violet <>
Cr-Commit-Position: refs/heads/master@{#568527}
In order to ensure media files can enter fullscreen mode, manually
handle fullscreen states. Basically, a compositor sends configuration
events on each request for state changes from clients asynchronously,
which is unefficient for media files when they enter a fullscreen mode.

For example, when a youtube video file is being set to fullscreen, a
WaylandWindow is also set to a fullscreen mode, but the return value from
the WaylandWindow::GetPlatformWindowState still contains an old value until
the compositor calls with a configuration event. This short race is
enough for a media content to be placed in a forever "entering fullscreen"
state, which never results in a fullscreen state for media files.

Bug: 843018
TEST: XdgVersionV5Test/WaylandWindowTest.SetFullscreenAndRestore/0

Change-Id: Ib9bc8c0ce09412c36437d165efc6a0cad60c4d17
Reviewed-by: Robert Kroeger <>
Commit-Queue: Maksim Sisov <>
Cr-Commit-Position: refs/heads/master@{#569172}
Remove accidentely added CHECK in the popup wrapper v6.
added in

Bug: 578890
Change-Id: I375668380a91b71665873bd682c909dad9e7f50a
Reviewed-by: Maksim Sisov <>
Commit-Queue: Maksim Sisov <>
Cr-Commit-Position: refs/heads/master@{#569198}
mspang and others added 28 commits Oct 23, 2018

This ioctl is used to synchronize zero copy GPU uploads. Non-Chrome OS
builds are starting to be able to use this capability (wayland on linux
desktop, non-CrOS DRM platform builds) so whitelist it more broadly.

Bug: 898234, 864914
Test: chrome --enable-zero-copy --enable-native-gpu-memory-buffers
  on w/ fps counter

Change-Id: I449d5deddd48abff65a7f7add9c3b990f8d208e3
Reviewed-by: Robert Sesek <>
Commit-Queue: Michael Spang <>
Cr-Commit-Position: refs/heads/master@{#602049}
This patch makes it possible to compile ozone/wayland
on systems without gbm available.

on a system without gbm available.

TEST: compile ozone/wayland with use_wayland_gbm = false
Change-Id: Ibda6632dcafe5ba0a46a819045b7f366d5c76a46
Commit-Queue: Maksim Sisov <>
Reviewed-by: Michael Spang <>
Cr-Commit-Position: refs/heads/master@{#612093}
…compiled with system libgbm

Now, it is based on the patch
and is less divergent from the linux implementation.

The previous CL's commit message:

> This patch makes use of new minigbm APi names, which are aligned with
> Linux libgbm.
> Also, it defines certain definitions, which are different between
> libgbm and minigbm.
> What is more, it adds USING_MINIGBM for internal usage to be able
> to distinguish between system linux gbm and minigbm.
> Last but not least, drmPrimeHandleToFd is used in case of linux
> system libgbm in order to be able to get mappable fds per each
> plane, which is neede to add GpuMemoryBuffers support.
> Bug: 869206, 578890, 820047
> Change-Id: I0a743aef1c8bad2bb5792a58ab29abec45ea4585
> Reviewed-on:
> Commit-Queue: Maksim Sisov <>
> Reviewed-by: Michael Spang <>
> Reviewed-by: Robert Kroeger <>
> Cr-Commit-Position: refs/heads/master@{#589475}

Bug: 869206, 578890, 820047
Change-Id: I7b21ea2c3fc3300823459e31b72c9304b4967bce

This patch enables hardware assisted video decoding via the
Chromium V4L2VDA. Including changes when Linux is used. In
order to use this, use_linux_v4l2_only flag should be set
to true.

Signed-off-by: Ryo Kodama <>

fixup! avoid building not declared formats

"FRAME", "_SLICE",  "V4L2_PIX_FMT_VP9" are not defined in mainline
 Linux headers. This patch avoids building these formats.

Signed-off-by: Ryo Kodama <>

Issue #437
It's for ozone_platform_wayland_external.

It's for ozone_platform_wayland_external.
It's for ozone_platform_wayland_external.
…ck and etc).

It's for ozone_platform_wayland_external.
Upstream ozone uses ChromeBrowserMainExtraPartsViews instead.
WAM relies on glib in a message loop for ui. Thus, make upstream
ozone/wayland to use that one instead of libevent.

Change-Id: I1c4046b2e400f4fe8a53285f7c7c1667dbfcf85f
By default, any of the unknown windows are set to popup type.

But it's incorrect for wayland and it just crashes because
it cannot find a parent window, which popup of type windows
Renecar R-car m3 board ships with old GBM ( < 18 compared to mesa gbm),
which lacks some of the APIs.

But as long as we don't use multi-planar buffer formats, it's ok
to adapt to that older APIs and use the same patch for all the hws.
This patch adds a support for ivi shell in the upstream Ozone/Wayland.

There is nothing particular and the shell is chosen automatically
on availability.

1) ivi
2) xdg v6
3) xdg v5
This patch fixes surface_id for Wayland when ivi shell is used.
…surface ID of web app windows.

Adding external wayland define in order to make it possible to compile
with upstream ozone/wayland
The memory header was missing from this header. Adding it here.

Change-Id: Ic52dc3a194fabb50dd6758e6b1af693358b408cc
Commit-Queue: Maksim Sisov <>
Reviewed-by: Sadrul Chowdhury <>
Cr-Commit-Position: refs/heads/master@{#589838}
It brings the code for the single window mode from chromium53
in order to avoid creating platform window.
It takes fallback to 'NATIVE_WIDGET_AURA' instead of
'DESKTOP_NATIVE_WIDGET_AURA' not to create platform window.

With this change, all additional windows will be created
as a native widget.

[SPEC-2073] Crashed when browser opens popup window
Signed-off-by: Nick Diego Yamane <>
Previously, the DisplayCompositor has been sending new frames
regardless of the fact that a Wayland compositor might not
be ready to take more frames, or it has been about to go
background and would not be able to process frames until it was
in foreground.

It was ok when running only one application, but as soon as
a second app was opened, it couldn't connect to the GPU, because
it was blocked in eglSwapBuffers, and everything just hang.

Thus, use frame callbacks to be sure the frames are sent on time.

The wl_surface_frame has already been used with WaylandBufferManager,
but that class is only used with a separate GPU process.

This CL fixes --in-process-gpu mode.


* This change may be upstreamable.
It updates metrics information for primary output when ivi_surface
gets configure event because wl_output only get the display physical
information, not the information generated by the window manager.

[SPEC-2090] App is cropping with 'transform=270'.
…load local resources and cross origin's resources when WebSecurity is disabled
@antiapuentes antiapuentes force-pushed the Igalia:@39.agl.guppy branch from 20d58e8 to 259a8b5 Apr 25, 2019
@jdapena jdapena merged commit 259a8b5 into webosose:@39.agl.guppy Apr 25, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
You can’t perform that action at this time.