New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 38 users

Issue metadata

Status: Started
Owner:
Cc:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug


Sign in to add a comment

upstream wayland backend for ozone

Project Member Reported by spang@chromium.org, Jan 18 2016

Issue description

We can support running chromium on wayland natively by adding a new platform //ui/ozone/platform/wayland.

It can be done by upstreaming (with any changes requested during review) https://github.com/01org/ozone-wayland

Eventually, we can have a linux chromium that runs on either x11 or wayland based on runtime environment.

We actually already have wayland in third_party for //components/exo.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Jan 20 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1624ad1b62af5efad5454dd604f7fab5bd7f67ea

commit 1624ad1b62af5efad5454dd604f7fab5bd7f67ea
Author: forney <forney@google.com>
Date: Wed Jan 20 05:10:37 2016

third_party/wayland: Add wayland_client and wayland_protocol targets to wayland.gyp

This matches the targets present in BUILD.gn.

BUG=578890

Review URL: https://codereview.chromium.org/1584653011

Cr-Commit-Position: refs/heads/master@{#370307}

[modify] http://crrev.com/1624ad1b62af5efad5454dd604f7fab5bd7f67ea/third_party/wayland/wayland.gyp

Cc: dongseon...@intel.com kalyan.k...@intel.com tiago.vi...@intel.com
Project Member

Comment 3 by bugdroid1@chromium.org, Feb 1 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/44616bf0c27ddb9d93f838019a2b845cf62289c6

commit 44616bf0c27ddb9d93f838019a2b845cf62289c6
Author: forney <forney@google.com>
Date: Mon Feb 01 21:44:07 2016

Add initial SHM-only Wayland Ozone implementation

This is just the bare minimum to get a window on the screen.

Things like cursor handling, input handling, and vsync provider will come in
subsequent commits.

BUG=578890

Review URL: https://codereview.chromium.org/1610683003

Cr-Commit-Position: refs/heads/master@{#372770}

[modify] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/build/common.gypi
[modify] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/media/ozone/media_ozone_platform.cc
[modify] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/BUILD.gn
[modify] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/ozone.gni
[modify] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/ozone.gyp
[add] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/platform/wayland/BUILD.gn
[add] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/platform/wayland/client_native_pixmap_factory_wayland.cc
[add] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/platform/wayland/client_native_pixmap_factory_wayland.h
[add] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/platform/wayland/ozone_platform_wayland.cc
[add] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/platform/wayland/ozone_platform_wayland.h
[add] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/platform/wayland/wayland.gypi
[add] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/platform/wayland/wayland_display.cc
[add] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/platform/wayland/wayland_display.h
[add] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/platform/wayland/wayland_object.h
[add] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/platform/wayland/wayland_surface_factory.cc
[add] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/platform/wayland/wayland_surface_factory.h
[add] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/platform/wayland/wayland_window.cc
[add] http://crrev.com/44616bf0c27ddb9d93f838019a2b845cf62289c6/ui/ozone/platform/wayland/wayland_window.h

Project Member

Comment 4 by bugdroid1@chromium.org, Feb 14 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ee3223b8f37b4a7ad13a73808d7be8d59bf635d3

commit ee3223b8f37b4a7ad13a73808d7be8d59bf635d3
Author: forney <forney@google.com>
Date: Sun Feb 14 02:55:12 2016

ozone/platform/wayland: Add some tests

BUG=578890

Review URL: https://codereview.chromium.org/1673063002

Cr-Commit-Position: refs/heads/master@{#375377}

[modify] http://crrev.com/ee3223b8f37b4a7ad13a73808d7be8d59bf635d3/ui/ozone/BUILD.gn
[modify] http://crrev.com/ee3223b8f37b4a7ad13a73808d7be8d59bf635d3/ui/ozone/platform/wayland/BUILD.gn
[add] http://crrev.com/ee3223b8f37b4a7ad13a73808d7be8d59bf635d3/ui/ozone/platform/wayland/fake_server.cc
[add] http://crrev.com/ee3223b8f37b4a7ad13a73808d7be8d59bf635d3/ui/ozone/platform/wayland/fake_server.h
[add] http://crrev.com/ee3223b8f37b4a7ad13a73808d7be8d59bf635d3/ui/ozone/platform/wayland/mock_platform_window_delegate.cc
[add] http://crrev.com/ee3223b8f37b4a7ad13a73808d7be8d59bf635d3/ui/ozone/platform/wayland/mock_platform_window_delegate.h
[modify] http://crrev.com/ee3223b8f37b4a7ad13a73808d7be8d59bf635d3/ui/ozone/platform/wayland/wayland.gypi
[modify] http://crrev.com/ee3223b8f37b4a7ad13a73808d7be8d59bf635d3/ui/ozone/platform/wayland/wayland_display.h
[add] http://crrev.com/ee3223b8f37b4a7ad13a73808d7be8d59bf635d3/ui/ozone/platform/wayland/wayland_display_unittest.cc
[modify] http://crrev.com/ee3223b8f37b4a7ad13a73808d7be8d59bf635d3/ui/ozone/platform/wayland/wayland_surface_factory.cc
[modify] http://crrev.com/ee3223b8f37b4a7ad13a73808d7be8d59bf635d3/ui/ozone/platform/wayland/wayland_surface_factory.h
[add] http://crrev.com/ee3223b8f37b4a7ad13a73808d7be8d59bf635d3/ui/ozone/platform/wayland/wayland_surface_factory_unittest.cc
[modify] http://crrev.com/ee3223b8f37b4a7ad13a73808d7be8d59bf635d3/ui/ozone/platform/wayland/wayland_window.h
[add] http://crrev.com/ee3223b8f37b4a7ad13a73808d7be8d59bf635d3/ui/ozone/platform/wayland/wayland_window_unittest.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Feb 18 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/65f0685b1d98f975c8fcd16bef72789410fa8bbb

commit 65f0685b1d98f975c8fcd16bef72789410fa8bbb
Author: forney <forney@google.com>
Date: Thu Feb 18 00:47:43 2016

ozone/platform/wayland: Ensure that globals are bound with supported versions

Also, make sure that test objects inherit the versions from the parent.

BUG=578890

Review URL: https://codereview.chromium.org/1698043005

Cr-Commit-Position: refs/heads/master@{#376052}

[modify] http://crrev.com/65f0685b1d98f975c8fcd16bef72789410fa8bbb/ui/ozone/platform/wayland/fake_server.cc
[modify] http://crrev.com/65f0685b1d98f975c8fcd16bef72789410fa8bbb/ui/ozone/platform/wayland/wayland_display.cc

Project Member

Comment 7 by bugdroid1@chromium.org, Mar 2 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/dbdd487f447892b2b3b06e366e72553c21bdb2cb

commit dbdd487f447892b2b3b06e366e72553c21bdb2cb
Author: forney <forney@google.com>
Date: Wed Mar 02 12:55:55 2016

ozone/platform/wayland: Drop WaylandWindow::GetWidget()

It was only used in tests and WaylandDisplay::{Add,Remove}Window, and
WaylandWindow can just provide the widget as an argument.

This way we can drop WaylandWindowInitializeTest, and just use the widget from
OnAcceleratedWidgetAvailable in all tests. This more closely matches reality.

Also, inline and rename GetSurface() -> surface() because it is a simple
accessor.

BUG=578890

Review URL: https://codereview.chromium.org/1742883002

Cr-Commit-Position: refs/heads/master@{#378733}

[modify] https://crrev.com/dbdd487f447892b2b3b06e366e72553c21bdb2cb/ui/ozone/platform/wayland/wayland_display.cc
[modify] https://crrev.com/dbdd487f447892b2b3b06e366e72553c21bdb2cb/ui/ozone/platform/wayland/wayland_display.h
[modify] https://crrev.com/dbdd487f447892b2b3b06e366e72553c21bdb2cb/ui/ozone/platform/wayland/wayland_surface_factory.cc
[modify] https://crrev.com/dbdd487f447892b2b3b06e366e72553c21bdb2cb/ui/ozone/platform/wayland/wayland_surface_factory_unittest.cc
[modify] https://crrev.com/dbdd487f447892b2b3b06e366e72553c21bdb2cb/ui/ozone/platform/wayland/wayland_test.cc
[modify] https://crrev.com/dbdd487f447892b2b3b06e366e72553c21bdb2cb/ui/ozone/platform/wayland/wayland_test.h
[modify] https://crrev.com/dbdd487f447892b2b3b06e366e72553c21bdb2cb/ui/ozone/platform/wayland/wayland_window.cc
[modify] https://crrev.com/dbdd487f447892b2b3b06e366e72553c21bdb2cb/ui/ozone/platform/wayland/wayland_window.h

Project Member

Comment 8 by bugdroid1@chromium.org, Mar 3 2016

Project Member

Comment 9 by bugdroid1@chromium.org, Mar 3 2016

Labels: merge-merged-2666
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d26b74d5bbbd340fbbd1070071e32a4425a9ba8a

commit d26b74d5bbbd340fbbd1070071e32a4425a9ba8a
Author: dongseong.hwang <dongseong.hwang@intel.com>
Date: Thu Mar 03 20:16:17 2016

ozone/platform/wayland: build fix about CreateNativePixmapFromHandle()

BUG=578890

Review URL: https://codereview.chromium.org/1752263004

Cr-Commit-Position: refs/heads/master@{#379069}

[modify] https://crrev.com/d26b74d5bbbd340fbbd1070071e32a4425a9ba8a/ui/ozone/platform/wayland/wayland_surface_factory.cc
[modify] https://crrev.com/d26b74d5bbbd340fbbd1070071e32a4425a9ba8a/ui/ozone/platform/wayland/wayland_surface_factory.h

Project Member

Comment 10 by bugdroid1@chromium.org, Mar 10 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5fb40e71b18c6c32dce4451821c7866fe80ea5e9

commit 5fb40e71b18c6c32dce4451821c7866fe80ea5e9
Author: forney <forney@google.com>
Date: Thu Mar 10 16:41:26 2016

ozone/platform/wayland: Use more realistic event processing and request flushing in tests

Now, we use a MessageLoop and wait for idle to determine when the client has
processed pending events.

This uncovered a number of situations where Wayland platform was not flushing
the connection. To resolve this, add a ScheduleFlush method to flush at some
later time, and call it when we send requests.

BUG=578890

Review URL: https://codereview.chromium.org/1739193004

Cr-Commit-Position: refs/heads/master@{#380419}

[modify] https://crrev.com/5fb40e71b18c6c32dce4451821c7866fe80ea5e9/ui/ozone/platform/wayland/fake_server.cc
[modify] https://crrev.com/5fb40e71b18c6c32dce4451821c7866fe80ea5e9/ui/ozone/platform/wayland/fake_server.h
[modify] https://crrev.com/5fb40e71b18c6c32dce4451821c7866fe80ea5e9/ui/ozone/platform/wayland/wayland_display.cc
[modify] https://crrev.com/5fb40e71b18c6c32dce4451821c7866fe80ea5e9/ui/ozone/platform/wayland/wayland_display.h
[modify] https://crrev.com/5fb40e71b18c6c32dce4451821c7866fe80ea5e9/ui/ozone/platform/wayland/wayland_display_unittest.cc
[modify] https://crrev.com/5fb40e71b18c6c32dce4451821c7866fe80ea5e9/ui/ozone/platform/wayland/wayland_surface_factory.cc
[modify] https://crrev.com/5fb40e71b18c6c32dce4451821c7866fe80ea5e9/ui/ozone/platform/wayland/wayland_test.cc
[modify] https://crrev.com/5fb40e71b18c6c32dce4451821c7866fe80ea5e9/ui/ozone/platform/wayland/wayland_test.h
[modify] https://crrev.com/5fb40e71b18c6c32dce4451821c7866fe80ea5e9/ui/ozone/platform/wayland/wayland_window.cc
[modify] https://crrev.com/5fb40e71b18c6c32dce4451821c7866fe80ea5e9/ui/ozone/platform/wayland/wayland_window_unittest.cc

Project Member

Comment 11 by bugdroid1@chromium.org, Mar 11 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1329450837ca9818a2da0210f681b4cb037f3e08

commit 1329450837ca9818a2da0210f681b4cb037f3e08
Author: forney <forney@google.com>
Date: Fri Mar 11 05:16:09 2016

ozone/platform/wayland: Implement pointer handling

Only version 4 of wl_pointer is handled currently for simplicity. Version 5 was released only recently in wayland-1.10, and compositors should support both versions.

BUG=578890

Review URL: https://codereview.chromium.org/1712103002

Cr-Commit-Position: refs/heads/master@{#380516}

[modify] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/BUILD.gn
[modify] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/fake_server.cc
[modify] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/fake_server.h
[modify] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/wayland.gypi
[modify] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/wayland_display.cc
[modify] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/wayland_display.h
[modify] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/wayland_object.cc
[modify] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/wayland_object.h
[add] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/wayland_pointer.cc
[add] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/wayland_pointer.h
[add] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/wayland_pointer_unittest.cc
[modify] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/wayland_test.cc
[modify] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/wayland_test.h
[modify] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/wayland_window.cc
[modify] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/wayland_window.h
[modify] https://crrev.com/1329450837ca9818a2da0210f681b4cb037f3e08/ui/ozone/platform/wayland/wayland_window_unittest.cc

Project Member

Comment 13 by bugdroid1@chromium.org, Sep 2 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/54041d62f2ece007b0e289fa66ad89ecc3c39135

commit 54041d62f2ece007b0e289fa66ad89ecc3c39135
Author: fwang <fwang@igalia.com>
Date: Fri Sep 02 12:43:46 2016

ozone/platform/wayland: Add missing header base/bind.h

CL includes the header defining base::Bind in order to fix
the following build error for Ozone/Wayland:

ui/ozone/platform/wayland/wayland_window.cc:156:27: error:
 no member named 'Bind' in namespace 'base' native_event,
 base::Bind(&PlatformWindowDelegate::DispatchEvent,
                    ~~~~~~^
ui/ozone/platform/wayland/wayland_window.cc:157:38: error:
no member named 'Unretained' in namespace 'base'
base::Unretained(delegate_)));

BUG=578890
R=spang@chromium.org

Review-Url: https://codereview.chromium.org/2297743003
Cr-Commit-Position: refs/heads/master@{#416247}

[modify] https://crrev.com/54041d62f2ece007b0e289fa66ad89ecc3c39135/ui/ozone/platform/wayland/wayland_window.cc

Cc: thomasanderson@chromium.org
Project Member

Comment 15 by bugdroid1@chromium.org, Sep 27 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/de57ce2d6a43b6593c770f583ccf06b8779e3ccb

commit de57ce2d6a43b6593c770f583ccf06b8779e3ccb
Author: joone.hur <joone.hur@intel.com>
Date: Tue Sep 27 09:25:32 2016

ozone/platform/wayland: Add support for wl_output_interface

WaylandScreen is used to keep track of the current outputs
(display) that are available to Wayland clients.

This is a part of upstream work for the ozone-wayland project:
https://github.com/01org/ozone-wayland

BUG=578890
TEST=WaylandDisplayTest.Output

Review-Url: https://codereview.chromium.org/2042503002
Cr-Commit-Position: refs/heads/master@{#421157}

[modify] https://crrev.com/de57ce2d6a43b6593c770f583ccf06b8779e3ccb/ui/ozone/platform/wayland/BUILD.gn
[modify] https://crrev.com/de57ce2d6a43b6593c770f583ccf06b8779e3ccb/ui/ozone/platform/wayland/fake_server.cc
[modify] https://crrev.com/de57ce2d6a43b6593c770f583ccf06b8779e3ccb/ui/ozone/platform/wayland/fake_server.h
[modify] https://crrev.com/de57ce2d6a43b6593c770f583ccf06b8779e3ccb/ui/ozone/platform/wayland/wayland_connection.cc
[modify] https://crrev.com/de57ce2d6a43b6593c770f583ccf06b8779e3ccb/ui/ozone/platform/wayland/wayland_connection.h
[modify] https://crrev.com/de57ce2d6a43b6593c770f583ccf06b8779e3ccb/ui/ozone/platform/wayland/wayland_connection_unittest.cc
[modify] https://crrev.com/de57ce2d6a43b6593c770f583ccf06b8779e3ccb/ui/ozone/platform/wayland/wayland_object.cc
[modify] https://crrev.com/de57ce2d6a43b6593c770f583ccf06b8779e3ccb/ui/ozone/platform/wayland/wayland_object.h
[add] https://crrev.com/de57ce2d6a43b6593c770f583ccf06b8779e3ccb/ui/ozone/platform/wayland/wayland_output.cc
[add] https://crrev.com/de57ce2d6a43b6593c770f583ccf06b8779e3ccb/ui/ozone/platform/wayland/wayland_output.h

Cc: joone....@intel.com
Project Member

Comment 17 by bugdroid1@chromium.org, Jan 20 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e5a535bb5a2fc99a090f81bde71ed50e974efa60

commit e5a535bb5a2fc99a090f81bde71ed50e974efa60
Author: tonikitoo <tonikitoo@igalia.com>
Date: Fri Jan 20 21:29:41 2017

Add a KeyboardLayoutEngine::SetCurrentLayoutFromBuffer implementation

Some servers (read Wayland here) do the XKB initialization and provide
clients with a file descriptor that can be mmap'ed in order to retrieve
the keyboard layout string.

Today the method XkbKeyboardLayoutEngine::SetCurrentLayoutByName is
(ab)used to support this case (where the client provides the keyboard
layout string not the name), which is not ideal.

CL adds a method that solely handles this case, cleaning up
XkbKeyboardLayoutEngine::SetCurrentLayoutByName. The method will be used
later on when the CL that adds keyboard/wayland support lands.

BUG=578890

Review-Url: https://codereview.chromium.org/2645703005
Cr-Commit-Position: refs/heads/master@{#445171}

[modify] https://crrev.com/e5a535bb5a2fc99a090f81bde71ed50e974efa60/ui/events/ozone/layout/keyboard_layout_engine.h
[modify] https://crrev.com/e5a535bb5a2fc99a090f81bde71ed50e974efa60/ui/events/ozone/layout/keyboard_layout_engine_unittest.cc
[modify] https://crrev.com/e5a535bb5a2fc99a090f81bde71ed50e974efa60/ui/events/ozone/layout/no/no_keyboard_layout_engine.cc
[modify] https://crrev.com/e5a535bb5a2fc99a090f81bde71ed50e974efa60/ui/events/ozone/layout/no/no_keyboard_layout_engine.h
[modify] https://crrev.com/e5a535bb5a2fc99a090f81bde71ed50e974efa60/ui/events/ozone/layout/stub/stub_keyboard_layout_engine.cc
[modify] https://crrev.com/e5a535bb5a2fc99a090f81bde71ed50e974efa60/ui/events/ozone/layout/stub/stub_keyboard_layout_engine.h
[modify] https://crrev.com/e5a535bb5a2fc99a090f81bde71ed50e974efa60/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc
[modify] https://crrev.com/e5a535bb5a2fc99a090f81bde71ed50e974efa60/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.h

Project Member

Comment 18 by bugdroid1@chromium.org, Jan 27 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f304472fe1220599ab63ef2a51ad5cfdedca805f

commit f304472fe1220599ab63ef2a51ad5cfdedca805f
Author: tonikitoo <tonikitoo@igalia.com>
Date: Fri Jan 27 01:52:39 2017

[ozone/wayland] Implement basic keyboard handling support

CL implements basic keyboard support on Ozone's Wayland backend as well
as some testing.

Modifiers work as follows: when the wayland compositor calls out the
client hook notifying of a modifier key state changed, we update
XkbKeyboardLayoutEngine::xkb_state_ with it.

Based on the original work of Michael Forney <forney@google.com>, in [1].

[1] https://codereview.chromium.org/1841083003/

BUG=578890

Review-Url: https://codereview.chromium.org/2639053002
Cr-Commit-Position: refs/heads/master@{#446529}

[modify] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.h
[modify] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/BUILD.gn
[add] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/DEPS
[modify] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/fake_server.cc
[modify] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/fake_server.h
[modify] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/ozone_platform_wayland.cc
[modify] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/wayland_connection.cc
[modify] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/wayland_connection.h
[add] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/wayland_keyboard.cc
[add] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/wayland_keyboard.h
[add] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/wayland_keyboard_unittest.cc
[modify] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/wayland_object.cc
[modify] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/wayland_object.h
[modify] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/wayland_window.cc
[modify] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/wayland_window.h
[add] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/wayland_xkb_keyboard_layout_engine.cc
[add] https://crrev.com/f304472fe1220599ab63ef2a51ad5cfdedca805f/ui/ozone/platform/wayland/wayland_xkb_keyboard_layout_engine.h

Cc: julien.isorce@chromium.org

Comment 20 Deleted

Owner: toniki...@chromium.org
Status: started (was: Untriaged)
Summary: upstream wayland backend for ozone (was: upstream wayland backend for ozone (20% project))
Project Member

Comment 22 by bugdroid1@chromium.org, Sep 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bc3da7549bc8fe686fd286de0c12a2c144c9aad9

commit bc3da7549bc8fe686fd286de0c12a2c144c9aad9
Author: Maksim Sisov <msisov@igalia.com>
Date: Mon Sep 18 09:50:45 2017

[ozone/wayland] Add xdg_v6 support

This commit adds an xdg_v6 support.
Both ChromeOS and Linux builds will use that.

The way it is done is following:

WaylandWindow doesn't know now about the shell version used.
It uses XDGShellObjectsFactory now to construct xdg_surfaces (and
xdg_popups in the future). The decision on what version of shell to use
is based on the shell version, which WaylandConnection has.

XDGShellObjectsFactory creates an XdgSurfaceWrapper object, which is
inherited by XdgSurfaceWrapperV5 or XdgSurfaceWrapperV6 objects.
Shell version specific interface implementation is hidden there.

This solution should allow to add more shells in the future with as
minimal changes as possible.

The FakeServer is modified in such a way that FakeServer::Start() takes
a shell version number passed by gtest object and instantiates requested
shell version. As soon as the connection is established, tests start to
run.

BUG=666958, 578890

Change-Id: Iba239cb87db88b0779d7221a07bef5de730a47bd
Reviewed-on: https://chromium-review.googlesource.com/666959
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/master@{#502544}
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/BUILD.gn
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/fake_server.cc
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/fake_server.h
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/wayland_connection.cc
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/wayland_connection.h
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/wayland_connection_unittest.cc
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/wayland_keyboard_unittest.cc
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/wayland_object.cc
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/wayland_object.h
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/wayland_pointer_unittest.cc
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/wayland_surface_factory_unittest.cc
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/wayland_test.cc
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/wayland_test.h
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/wayland_window.cc
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/wayland_window.h
[modify] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/wayland_window_unittest.cc
[add] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/xdg_surface_wrapper.h
[add] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/xdg_surface_wrapper_v5.cc
[add] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/xdg_surface_wrapper_v5.h
[add] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/xdg_surface_wrapper_v6.cc
[add] https://crrev.com/bc3da7549bc8fe686fd286de0c12a2c144c9aad9/ui/ozone/platform/wayland/xdg_surface_wrapper_v6.h

Hi Antonio, is there a fix for https://bugs.chromium.org/p/chromium/issues/detail?id=671005 in the Igalia's chromium wayland port ? Thx.
Project Member

Comment 24 by bugdroid1@chromium.org, Nov 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2b7551c51c3459a00ecc4a6b89892f390e4f71e6

commit 2b7551c51c3459a00ecc4a6b89892f390e4f71e6
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Mon Nov 13 18:41:42 2017

[ozone/wayand] Implement cursor support

CL makes use of the existing BitmapCursorFactoryOzone implementation
to add pointer/mouse cursor support to Ozone/Wayland.

Implementation of wayland_cursor.cc|h is originally based on [1].

[1] https://github.com/01org/ozone-wayland/

TEST=chrome --mash/mus --ozone-platform=wayland

BUG=578890

Change-Id: Iccd0a23dd1329bfe32ac78af9379ba3fd739d63f
Reviewed-on: https://chromium-review.googlesource.com/644946
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Reviewed-by: Michael Spang <spang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#515990}
[modify] https://crrev.com/2b7551c51c3459a00ecc4a6b89892f390e4f71e6/ui/ozone/platform/wayland/BUILD.gn
[modify] https://crrev.com/2b7551c51c3459a00ecc4a6b89892f390e4f71e6/ui/ozone/platform/wayland/ozone_platform_wayland.cc
[modify] https://crrev.com/2b7551c51c3459a00ecc4a6b89892f390e4f71e6/ui/ozone/platform/wayland/wayland_connection.cc
[modify] https://crrev.com/2b7551c51c3459a00ecc4a6b89892f390e4f71e6/ui/ozone/platform/wayland/wayland_connection.h
[add] https://crrev.com/2b7551c51c3459a00ecc4a6b89892f390e4f71e6/ui/ozone/platform/wayland/wayland_cursor.cc
[add] https://crrev.com/2b7551c51c3459a00ecc4a6b89892f390e4f71e6/ui/ozone/platform/wayland/wayland_cursor.h
[modify] https://crrev.com/2b7551c51c3459a00ecc4a6b89892f390e4f71e6/ui/ozone/platform/wayland/wayland_keyboard.cc
[modify] https://crrev.com/2b7551c51c3459a00ecc4a6b89892f390e4f71e6/ui/ozone/platform/wayland/wayland_keyboard.h
[modify] https://crrev.com/2b7551c51c3459a00ecc4a6b89892f390e4f71e6/ui/ozone/platform/wayland/wayland_pointer.cc
[modify] https://crrev.com/2b7551c51c3459a00ecc4a6b89892f390e4f71e6/ui/ozone/platform/wayland/wayland_pointer.h
[modify] https://crrev.com/2b7551c51c3459a00ecc4a6b89892f390e4f71e6/ui/ozone/platform/wayland/wayland_window.cc
[modify] https://crrev.com/2b7551c51c3459a00ecc4a6b89892f390e4f71e6/ui/ozone/platform/wayland/wayland_window.h

Comment 25 by msi...@igalia.com, Nov 20 2017

Cc: msi...@igalia.com
Project Member

Comment 26 by bugdroid1@chromium.org, Dec 13

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1c090989b717047829eab075c4960a3512014559

commit 1c090989b717047829eab075c4960a3512014559
Author: Maksim Sisov <msisov@igalia.com>
Date: Wed Dec 13 09:55:29 2017

[ozone/wayland] Add support for maximize/minimize/fullscreen.

This CL adds a preliminary support to maximize/minimize or set
Wayland windows to fullscreen.

WaylandWindow extends HandleSurfaceConfigure and stores new
states. As a result, Wayland windows will be sending changed
window states to the |delegate_| and notify ServerWindow
and thus aura::Window about changed states. This change is in
downstream now [1], but will be sent as a follow-up cl.

[1] https://github.com/Igalia/chromium

Bug: 784836, 578890
Change-Id: I4dee446b5d145ca2a15f168d78aacf7c96acb2e7
Reviewed-on: https://chromium-review.googlesource.com/768681
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/master@{#523733}
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/BUILD.gn
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/fake_server.cc
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/fake_server.h
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/wayland_window.cc
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/wayland_window.h
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/wayland_window_unittest.cc
[add] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/xdg_surface_wrapper.cc
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/xdg_surface_wrapper.h
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/xdg_surface_wrapper_v5.cc
[modify] https://crrev.com/1c090989b717047829eab075c4960a3512014559/ui/ozone/platform/wayland/xdg_surface_wrapper_v6.cc

Project Member

Comment 27 by bugdroid1@chromium.org, Dec 13

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/05e053f3aece950d379f1fe874c1cf37d089ee80

commit 05e053f3aece950d379f1fe874c1cf37d089ee80
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Wed Dec 13 12:11:46 2017

[ozone/wayland] use KeyboardEvDev for keyboard handling

In WaylandKeyboard::Key's body, we deliberately duplicate some of the
logic in KeyboardEvdev::DispatchKey. The idea was to use the bits of
KeyboardEvDev needed for proper keyboard input handling.
It turns out that features like key repeat and specific cases involving
modifiers would need more duplication to get working.

Instead of continuing to duplicate stable and existing logic, this CL
adopts the use of KeyboardEvDev from WaylandKeyboard, fixing these
issues and being able to do some code clean ups (follow ups).

The CL also changes the KeyboardLayoutManager instantiation order in
OzonePlatformWayland::InitializeUI, so that it happens prior to
WaylandConnection instantiation.
Reason: once WaylandConnection creates WaylandKeyboard and (implicitly)
KeyboardEvDev, the later needs the KeyboardLayoutEngine properly set.

CL also reset modifiers upon ::Leave, for when alt+tab is supported to
change window focus (external window mode), where modifiers need to be
updated accordingly.

Last but not least, WaylandKeyboard::RepeatInfo sends delay and rate
information that is usefull for KeyboardEvdev. Thus, desired repeating
settings can be set. What is more, wayland documentation says if
rate is send as 0, then auto repeat should be turned off.

BUG=578890

Change-Id: I8ca392da7b10ba6c62f703e1e4b571c1e3d310a1
Reviewed-on: https://chromium-review.googlesource.com/822871
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/master@{#523750}
[modify] https://crrev.com/05e053f3aece950d379f1fe874c1cf37d089ee80/ui/ozone/platform/wayland/BUILD.gn
[modify] https://crrev.com/05e053f3aece950d379f1fe874c1cf37d089ee80/ui/ozone/platform/wayland/ozone_platform_wayland.cc
[modify] https://crrev.com/05e053f3aece950d379f1fe874c1cf37d089ee80/ui/ozone/platform/wayland/wayland_keyboard.cc
[modify] https://crrev.com/05e053f3aece950d379f1fe874c1cf37d089ee80/ui/ozone/platform/wayland/wayland_keyboard.h

Project Member

Comment 28 by bugdroid1@chromium.org, Dec 18

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/854037f1560c5d3a3724ba6bdd0779323a4e21d3

commit 854037f1560c5d3a3724ba6bdd0779323a4e21d3
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Mon Dec 18 21:17:58 2017

Revert "[ozone/wayland] use KeyboardEvDev for keyboard handling"

This reverts commit 05e053f3aece950d379f1fe874c1cf37d089ee80.

Reason for revert: It was decided in post-landed discussion that
KeyboardEvDev should not be used in Ozone/Wayland code. Read
https://crrev.com/c/822871 for more details.

Original change's description:
> [ozone/wayland] use KeyboardEvDev for keyboard handling
>
> In WaylandKeyboard::Key's body, we deliberately duplicate some of the
> logic in KeyboardEvdev::DispatchKey. The idea was to use the bits of
> KeyboardEvDev needed for proper keyboard input handling.
> It turns out that features like key repeat and specific cases involving
> modifiers would need more duplication to get working.
>
> Instead of continuing to duplicate stable and existing logic, this CL
> adopts the use of KeyboardEvDev from WaylandKeyboard, fixing these
> issues and being able to do some code clean ups (follow ups).
>
> The CL also changes the KeyboardLayoutManager instantiation order in
> OzonePlatformWayland::InitializeUI, so that it happens prior to
> WaylandConnection instantiation.
> Reason: once WaylandConnection creates WaylandKeyboard and (implicitly)
> KeyboardEvDev, the later needs the KeyboardLayoutEngine properly set.
>
> CL also reset modifiers upon ::Leave, for when alt+tab is supported to
> change window focus (external window mode), where modifiers need to be
> updated accordingly.
>
> Last but not least, WaylandKeyboard::RepeatInfo sends delay and rate
> information that is usefull for KeyboardEvdev. Thus, desired repeating
> settings can be set. What is more, wayland documentation says if
> rate is send as 0, then auto repeat should be turned off.
>
> BUG=578890
>
> Change-Id: I8ca392da7b10ba6c62f703e1e4b571c1e3d310a1
> Reviewed-on: https://chromium-review.googlesource.com/822871
> Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
> Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#523750}

TBR=rjkroege@chromium.org,spang@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: Ifcd631c92b1e837b8d428c382b2f9cb4e2292463
Reviewed-on: https://chromium-review.googlesource.com/832886
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Reviewed-by: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/master@{#524800}
[modify] https://crrev.com/854037f1560c5d3a3724ba6bdd0779323a4e21d3/ui/ozone/platform/wayland/BUILD.gn
[modify] https://crrev.com/854037f1560c5d3a3724ba6bdd0779323a4e21d3/ui/ozone/platform/wayland/ozone_platform_wayland.cc
[modify] https://crrev.com/854037f1560c5d3a3724ba6bdd0779323a4e21d3/ui/ozone/platform/wayland/wayland_keyboard.cc
[modify] https://crrev.com/854037f1560c5d3a3724ba6bdd0779323a4e21d3/ui/ozone/platform/wayland/wayland_keyboard.h

Project Member

Comment 29 by bugdroid1@chromium.org, Dec 21

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9519ba2d14912741dcfa8380541255fe510a4e38

commit 9519ba2d14912741dcfa8380541255fe510a4e38
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Thu Dec 21 18:42:55 2017

[ozone/wayland] Use ui::EventModifiers to handle modifiers

CL switches WaylandKeyboard class from using a raw integer to
handle keyboard modifiers to  using ui::EventModifiers class.

Although there is no behavior changed by this CL, it makes it easier
to handle more complex cases, in follow up CLs.

The CL also changes the KeyboardLayoutManager instantiation order in
OzonePlatformWayland::InitializeUI, so that it happens prior to
WaylandConnection instantiation.
Reason: once WaylandConnection creates WaylandKeyboard it sets
its EventModifiers instance in KeyboardLayoutManager, hence the
later needs to be properly instantiated by then.

BUG=578890

Change-Id: I9d589e72917b83c4319c6046e6b1cad8cca079ad
Reviewed-on: https://chromium-review.googlesource.com/832887
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/master@{#525749}
[modify] https://crrev.com/9519ba2d14912741dcfa8380541255fe510a4e38/ui/ozone/platform/wayland/ozone_platform_wayland.cc
[modify] https://crrev.com/9519ba2d14912741dcfa8380541255fe510a4e38/ui/ozone/platform/wayland/wayland_keyboard.cc
[modify] https://crrev.com/9519ba2d14912741dcfa8380541255fe510a4e38/ui/ozone/platform/wayland/wayland_keyboard.h
[modify] https://crrev.com/9519ba2d14912741dcfa8380541255fe510a4e38/ui/ozone/platform/wayland/wayland_xkb_keyboard_layout_engine.cc
[modify] https://crrev.com/9519ba2d14912741dcfa8380541255fe510a4e38/ui/ozone/platform/wayland/wayland_xkb_keyboard_layout_engine.h

Project Member

Comment 30 by bugdroid1@chromium.org, Jan 9

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/017098787f7979110de23b6e914145d1a9da5c63

commit 017098787f7979110de23b6e914145d1a9da5c63
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Tue Jan 09 20:01:41 2018

[ozone/wayland] Add a mock impl XKBWaylandKeyboardLayoutEngine

In order to allow existing unittests (namely WaylandKeyboardTests)
and future ones to pass with XKB enabled, we need a specialization of
XkbWaylandKeyboardLayoutEngine for tests.
Following the logic used throughout the Wayland unittests' machinery,
it makes sense to mock a Xkb-capable KeyboardLayoutEngine, rather than
using an actual implementation.

This CL adds a mock implementation of XkbWaylandKeyboardLayoutEngine to
be used by Wayland unittests.

For this, it turns XkbWaylandKeyboardLayoutEngine into a pure virtual
class, which is implemented by

- XkbWaylandKeyboardLayoutEngineImpl, for regular ozone/wayland execution
(e.g. chrome/wayland), which keeps the current XkbWaylandKeyboardLayoutEngine
logic unchanged;

- MockXkbWaylandKeyboardLayoutEngine, a sibling implementation added
by this CL, derived from XkbWaylandKeyboardLayoutEngine to be used for
unittests.

BUG=578890

Change-Id: Ie98f0d5bcf5b45c86812c4fab7dc63e1ffdc0890
Reviewed-on: https://chromium-review.googlesource.com/849032
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/master@{#528082}
[modify] https://crrev.com/017098787f7979110de23b6e914145d1a9da5c63/ui/ozone/platform/wayland/BUILD.gn
[add] https://crrev.com/017098787f7979110de23b6e914145d1a9da5c63/ui/ozone/platform/wayland/mock_wayland_xkb_keyboard_layout_engine.cc
[add] https://crrev.com/017098787f7979110de23b6e914145d1a9da5c63/ui/ozone/platform/wayland/mock_wayland_xkb_keyboard_layout_engine.h
[modify] https://crrev.com/017098787f7979110de23b6e914145d1a9da5c63/ui/ozone/platform/wayland/ozone_platform_wayland.cc
[modify] https://crrev.com/017098787f7979110de23b6e914145d1a9da5c63/ui/ozone/platform/wayland/wayland_keyboard.cc
[modify] https://crrev.com/017098787f7979110de23b6e914145d1a9da5c63/ui/ozone/platform/wayland/wayland_test.cc
[modify] https://crrev.com/017098787f7979110de23b6e914145d1a9da5c63/ui/ozone/platform/wayland/wayland_test.h
[modify] https://crrev.com/017098787f7979110de23b6e914145d1a9da5c63/ui/ozone/platform/wayland/wayland_xkb_keyboard_layout_engine.cc
[modify] https://crrev.com/017098787f7979110de23b6e914145d1a9da5c63/ui/ozone/platform/wayland/wayland_xkb_keyboard_layout_engine.h

Project Member

Comment 31 by bugdroid1@chromium.org, Jan 12

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ccad60c435f44c43ba7b7f51ed46aa289c393e0b

commit ccad60c435f44c43ba7b7f51ed46aa289c393e0b
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Fri Jan 12 17:50:37 2018

[ozone/wayland] Properly dispatch events for modifier keys

When a modifier key is pressed, the ui::KeyboardEvent instance
must contain its modifier flags set, which is not the case for
Ozone/Wayland today.

CL fixes this by mimic'ing some of the existing logic in
KeyboardEvDev::DispatchKey.

CL also moves ::EventFlagToEvdevModifier from keyboard_evdev.cc
to ui/events/event_modifiers.h|cc, as a static method named
::GetModifierFromEventFlag (analogously to the existing
::GetEventFlagFromModifier).
This way, the method can be used from Ozone/Wayland code.

BUG=578890

Change-Id: I9608d23f4e0bc22dd1a5a1c74b4a55828753c330
Reviewed-on: https://chromium-review.googlesource.com/850772
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/master@{#528991}
[modify] https://crrev.com/ccad60c435f44c43ba7b7f51ed46aa289c393e0b/ui/events/event_modifiers.cc
[modify] https://crrev.com/ccad60c435f44c43ba7b7f51ed46aa289c393e0b/ui/events/event_modifiers.h
[modify] https://crrev.com/ccad60c435f44c43ba7b7f51ed46aa289c393e0b/ui/events/ozone/evdev/keyboard_evdev.cc
[modify] https://crrev.com/ccad60c435f44c43ba7b7f51ed46aa289c393e0b/ui/ozone/platform/wayland/wayland_keyboard.cc
[modify] https://crrev.com/ccad60c435f44c43ba7b7f51ed46aa289c393e0b/ui/ozone/platform/wayland/wayland_keyboard.h
[modify] https://crrev.com/ccad60c435f44c43ba7b7f51ed46aa289c393e0b/ui/ozone/platform/wayland/wayland_keyboard_unittest.cc

Project Member

Comment 32 by bugdroid1@chromium.org, Jan 17

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9d911f32f02f87e20fed921e4ff9e717462bb3d0

commit 9d911f32f02f87e20fed921e4ff9e717462bb3d0
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Wed Jan 17 03:43:14 2018

[ozone/wayland] Switch to xkb-capable keyboard unittests

Rather than mock'ing a xkb-capable layout engine (MockWaylandXkbLayoutEngine),
this CL makes WaylandKeyboardUnittests xkb-capable.

This will allow us to:
- Unify single WaylandXkbKeyboardLayoutEngine instance cross ozone/wayland
  code (chrome and unittests).
- Get rid of MockWaylandXkbKeyboardLayoutEngine altogether (follow up CL).
- Code unittests more straight forward, being able to
  test capslock, and other modifier combinations way easier.

Last, on the spirit of more unittests, CL also adds one more that
exercises modifiers combination.

BUG=578890

Change-Id: Id2145afbfb19a48bab8427d2bd2d0d618a7dec18
Reviewed-on: https://chromium-review.googlesource.com/868610
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/master@{#529580}
[modify] https://crrev.com/9d911f32f02f87e20fed921e4ff9e717462bb3d0/ui/ozone/platform/wayland/BUILD.gn
[modify] https://crrev.com/9d911f32f02f87e20fed921e4ff9e717462bb3d0/ui/ozone/platform/wayland/wayland_keyboard_unittest.cc
[modify] https://crrev.com/9d911f32f02f87e20fed921e4ff9e717462bb3d0/ui/ozone/platform/wayland/wayland_test.cc

Project Member

Comment 33 by bugdroid1@chromium.org, Jan 18

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a1cac675d610b4eff7d4b17cb98080bb5a221039

commit a1cac675d610b4eff7d4b17cb98080bb5a221039
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Thu Jan 18 00:27:54 2018

[ozone/wayland] Add capslock support

CL adds capslock support by extending the current modifiers
supported (shift, control, alt, et al).

It also makes it possible to mock XKB states, so that modifiers
can be unittest'ed.

BUG=578890

Change-Id: I524529fdb96939035e530d5a4ff80efc7681dd38
Reviewed-on: https://chromium-review.googlesource.com/867630
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/master@{#529976}
[modify] https://crrev.com/a1cac675d610b4eff7d4b17cb98080bb5a221039/ui/ozone/platform/wayland/wayland_keyboard.cc
[modify] https://crrev.com/a1cac675d610b4eff7d4b17cb98080bb5a221039/ui/ozone/platform/wayland/wayland_keyboard_unittest.cc
[modify] https://crrev.com/a1cac675d610b4eff7d4b17cb98080bb5a221039/ui/ozone/platform/wayland/wayland_xkb_keyboard_layout_engine.cc
[modify] https://crrev.com/a1cac675d610b4eff7d4b17cb98080bb5a221039/ui/ozone/platform/wayland/wayland_xkb_keyboard_layout_engine.h

Project Member

Comment 34 by bugdroid1@chromium.org, Jan 19

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b75db891786a3484ea6cd16a217d3ae3b6752227

commit b75db891786a3484ea6cd16a217d3ae3b6752227
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Fri Jan 19 14:57:45 2018

Factor out key auto repeat code into a helper class

This CL factors out KeyboardEvDev class' key auto repeat logic
into a helper class: EventAutoRepeatHandler.
There is no functionality change, but it allows other classes
to make use of it, including WaylandKeyboard.

In a follow up CL, an extra hook will be added so that
clients of the newly added class have a chance to avoid spurios
repeats, by (sync) querying the system of key up events.
This is helpful whenever input latency increases.

BUG=578890

Change-Id: Ie30f5f4bad1d9f344e62484cfc108f87b025d025
Reviewed-on: https://chromium-review.googlesource.com/868890
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Reviewed-by: Michael Spang <spang@chromium.org>
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/master@{#530509}
[modify] https://crrev.com/b75db891786a3484ea6cd16a217d3ae3b6752227/ui/events/ozone/BUILD.gn
[add] https://crrev.com/b75db891786a3484ea6cd16a217d3ae3b6752227/ui/events/ozone/evdev/event_auto_repeat_handler.cc
[add] https://crrev.com/b75db891786a3484ea6cd16a217d3ae3b6752227/ui/events/ozone/evdev/event_auto_repeat_handler.h
[modify] https://crrev.com/b75db891786a3484ea6cd16a217d3ae3b6752227/ui/events/ozone/evdev/keyboard_evdev.cc
[modify] https://crrev.com/b75db891786a3484ea6cd16a217d3ae3b6752227/ui/events/ozone/evdev/keyboard_evdev.h

Project Member

Comment 35 by bugdroid1@chromium.org, Jan 19

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c08ca39ff5626e39140b41dca522ac9d59b24157

commit c08ca39ff5626e39140b41dca522ac9d59b24157
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Fri Jan 19 16:46:14 2018

[ozone/wayland] Get rid of MockWaylandXkbKeyboardLayoutEngine

Now that both chrome and unittests use WaylandXkbKeyboardLayoutEngine,
we can get rid of MockWaylandXkbKeyboardLayoutEngine altogether.

BUG=578890

Change-Id: I034f44900d5051f11b234057eb4afb5e45f8bc84
Reviewed-on: https://chromium-review.googlesource.com/868670
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/master@{#530536}
[modify] https://crrev.com/c08ca39ff5626e39140b41dca522ac9d59b24157/ui/ozone/platform/wayland/BUILD.gn
[delete] https://crrev.com/c25c904bbc8d12d128112a0bdd2536f653483b7a/ui/ozone/platform/wayland/mock_wayland_xkb_keyboard_layout_engine.cc
[delete] https://crrev.com/c25c904bbc8d12d128112a0bdd2536f653483b7a/ui/ozone/platform/wayland/mock_wayland_xkb_keyboard_layout_engine.h
[modify] https://crrev.com/c08ca39ff5626e39140b41dca522ac9d59b24157/ui/ozone/platform/wayland/ozone_platform_wayland.cc
[modify] https://crrev.com/c08ca39ff5626e39140b41dca522ac9d59b24157/ui/ozone/platform/wayland/wayland_test.cc
[modify] https://crrev.com/c08ca39ff5626e39140b41dca522ac9d59b24157/ui/ozone/platform/wayland/wayland_xkb_keyboard_layout_engine.cc
[modify] https://crrev.com/c08ca39ff5626e39140b41dca522ac9d59b24157/ui/ozone/platform/wayland/wayland_xkb_keyboard_layout_engine.h

Project Member

Comment 36 by bugdroid1@chromium.org, Jan 22

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6816fdd6ba9e7914cb65ca14327d04f57a1da024

commit 6816fdd6ba9e7914cb65ca14327d04f57a1da024
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Mon Jan 22 18:08:01 2018

Introduce throttle mechanism to EventAutoRepeatHandler::Delegate

This CL introduces a way for EventAutoRepeatHandler clients to
throttle key auto repeats, and eliminate spurious key events
dispatching under janky scenarios.

More specifically, a new hook is added to the delegate class, which
allows clients to flush the input queue before dispatching a key
auto repeat event - in case there has been an "key up" event, for
instance.

For the sake of easier review, this CL only touches KeyboardEvdev
although the existing behavior remains unchanged. The Ozone/Wayland
changes are going to be submitted in a follow up CL:
https://crrev.com/c/874670.

BUG=578890

Change-Id: I06695c94d6e8ada8a24cfe651d62fcc6957e7f5f
Reviewed-on: https://chromium-review.googlesource.com/874650
Reviewed-by: Michael Spang <spang@chromium.org>
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/master@{#530911}
[modify] https://crrev.com/6816fdd6ba9e7914cb65ca14327d04f57a1da024/ui/events/ozone/evdev/event_auto_repeat_handler.cc
[modify] https://crrev.com/6816fdd6ba9e7914cb65ca14327d04f57a1da024/ui/events/ozone/evdev/event_auto_repeat_handler.h
[modify] https://crrev.com/6816fdd6ba9e7914cb65ca14327d04f57a1da024/ui/events/ozone/evdev/keyboard_evdev.cc
[modify] https://crrev.com/6816fdd6ba9e7914cb65ca14327d04f57a1da024/ui/events/ozone/evdev/keyboard_evdev.h

Project Member

Comment 37 by bugdroid1@chromium.org, Jan 22

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7cc5ad4c710cb54192823abcde84645d57090980

commit 7cc5ad4c710cb54192823abcde84645d57090980
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Mon Jan 22 18:15:28 2018

[ozone/wayland] Split WaylandKeyboard::Key in two smaller methods

This CL is a driven-by CL that splits the existing WaylandKeyboard::Key
method into two smaller ones.

In practice, it brings no functionality change, but makes it
easier to understand follow up changes like https://crrev.com/c/874670.

BUG=578890

Change-Id: If62cd7158cec4af338af2eb17a9399624d84d5f5
Reviewed-on: https://chromium-review.googlesource.com/878481
Reviewed-by: Michael Spang <spang@chromium.org>
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/master@{#530914}
[modify] https://crrev.com/7cc5ad4c710cb54192823abcde84645d57090980/ui/ozone/platform/wayland/wayland_keyboard.cc
[modify] https://crrev.com/7cc5ad4c710cb54192823abcde84645d57090980/ui/ozone/platform/wayland/wayland_keyboard.h

Project Member

Comment 38 by bugdroid1@chromium.org, Jan 24

Project Member

Comment 39 by bugdroid1@chromium.org, Jan 24

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6162c97c07c724b92d8c73420239a7636c4ad24c

commit 6162c97c07c724b92d8c73420239a7636c4ad24c
Author: Maksim Sisov <msisov@igalia.com>
Date: Wed Jan 24 16:45:12 2018

[ozone/wayland] Provide Wayland with desired bounds on request.

This CL handles a case when Wayland asks its client about desired
bounds.

That is, under some circumstances, Wayland can send a configure
event with width and height set to 0, which means it wants its
client to send back desired bounds.

There is also another case, or a bug in some Wayland protocol
implementations like Gnome Shell, which sends width and height set
to 0 instead of 1 if the browser is started with --start-fullscreen
flag and then exits the fullscreen state.

There are several cases of how we keep track of our desired bounds:
we store previous bounds before going to maximize or fullscreen
states, or we use our current bounds if a window has not had any
state changes.

If using our current bounds is naturally understandable, keeping
the track of bounds before going to maximize and then fullscreen is
a bit tricky. The restored bounds mustn't be overridden if we have
gone from normal to maximized and then to fullscreen and then back
to maximized, because |restored_bounds_| has already saved right bounds
right before going from normal to maximized state.

But if the state is changed from normal to maximized or from normal
to fullscreen, we just store bounds on every change and restore
them on Wayland request.

Bug: 784836, 578890
Change-Id: I0ae593235cccaf89719384f046ab446b814033e9
Reviewed-on: https://chromium-review.googlesource.com/881481
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/master@{#531559}
[modify] https://crrev.com/6162c97c07c724b92d8c73420239a7636c4ad24c/ui/ozone/platform/wayland/wayland_window.cc
[modify] https://crrev.com/6162c97c07c724b92d8c73420239a7636c4ad24c/ui/ozone/platform/wayland/wayland_window.h
[modify] https://crrev.com/6162c97c07c724b92d8c73420239a7636c4ad24c/ui/ozone/platform/wayland/wayland_window_unittest.cc

Project Member

Comment 40 by bugdroid1@chromium.org, Jan 24

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a8646a32dfe24400847e70128f7d323a637dd807

commit a8646a32dfe24400847e70128f7d323a637dd807
Author: Maksim Sisov <msisov@igalia.com>
Date: Wed Jan 24 17:31:46 2018

[ozone/wayland] Notify client about each state change from WM.

Notify the client about window state changes instantiated from a window
manager side. Those changes are results of shortcut keys
like ALT+F10 (maximize/unmaximize) or super+H (minimize).

Also remove the DCHECKs to avoid crashes due to theoretical races
between requests to change state of a window and a response back
from a WM.

Bug: 784836, 578890
Change-Id: Iaac5fdd971d89cef580197f00aeeeac64bf264b1
Reviewed-on: https://chromium-review.googlesource.com/880981
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Cr-Commit-Position: refs/heads/master@{#531585}
[modify] https://crrev.com/a8646a32dfe24400847e70128f7d323a637dd807/ui/ozone/platform/wayland/wayland_window.cc
[modify] https://crrev.com/a8646a32dfe24400847e70128f7d323a637dd807/ui/ozone/platform/wayland/wayland_window_unittest.cc

Project Member

Comment 41 by bugdroid1@chromium.org, Jan 24

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ece63c7d92c6d354edbd243696842b7b83f150f4

commit ece63c7d92c6d354edbd243696842b7b83f150f4
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Wed Jan 24 17:48:16 2018

[ozone/wayland] implement key auto repeat

CL implements key auto repeat functionality to Ozone/Wayland
by making use of ui::EventAutoRepeatHandler class and its delegate
logic.

In the specific case of Wayland, it is important to async-await on
the compositor before doing auto repeats, so that any missing key
up events get a chance to be processed under janky situations.

Bug: 578890
Change-Id: I63e38851e8d07528c46778d80c5f5163b7fceabd
Reviewed-on: https://chromium-review.googlesource.com/874670
Reviewed-by: Michael Spang <spang@chromium.org>
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/master@{#531595}
[modify] https://crrev.com/ece63c7d92c6d354edbd243696842b7b83f150f4/ui/events/ozone/keyboard/event_auto_repeat_handler.h
[modify] https://crrev.com/ece63c7d92c6d354edbd243696842b7b83f150f4/ui/ozone/platform/wayland/BUILD.gn
[modify] https://crrev.com/ece63c7d92c6d354edbd243696842b7b83f150f4/ui/ozone/platform/wayland/wayland_keyboard.cc
[modify] https://crrev.com/ece63c7d92c6d354edbd243696842b7b83f150f4/ui/ozone/platform/wayland/wayland_keyboard.h
[modify] https://crrev.com/ece63c7d92c6d354edbd243696842b7b83f150f4/ui/ozone/platform/wayland/wayland_keyboard_unittest.cc
[modify] https://crrev.com/ece63c7d92c6d354edbd243696842b7b83f150f4/ui/ozone/platform/wayland/wayland_object.cc
[modify] https://crrev.com/ece63c7d92c6d354edbd243696842b7b83f150f4/ui/ozone/platform/wayland/wayland_object.h

Project Member

Comment 42 by bugdroid1@chromium.org, Feb 23

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3e0798dd67e1af3e4906123640523cb436bf793e

commit 3e0798dd67e1af3e4906123640523cb436bf793e
Author: Maksim Sisov <msisov@igalia.com>
Date: Fri Feb 23 07:16:00 2018

[ozone/wayland] Add touch events support.

This cl brings a touch support functionality to Wayland backend.
It has all the necessary implementation for using touch events
in chromium windows except menu windows[1].

The class which is responsible for dispatching touch events
is WaylandTouch. It manages cancelation, touch and motion type of
events. Every touch event (or a touch event per finger)
is registered and its id stored in a container, which is then used to
fire a cancel type of event and unset a touch focus from a window.

[1] Menu windows support is going to be upstreamed once
xdg_popup support for external window mode is in place.

The original patch is taken from https://crrev.com/c/754703 .
Author: santosh.mahto@collabora.co.uk

Bug: 578890
Change-Id: I0131050549f6b718a22fa39b376d226f98c29319
Reviewed-on: https://chromium-review.googlesource.com/922663
Reviewed-by: Michael Spang <spang@chromium.org>
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Cr-Commit-Position: refs/heads/master@{#538720}
[modify] https://crrev.com/3e0798dd67e1af3e4906123640523cb436bf793e/ui/ozone/platform/wayland/BUILD.gn
[modify] https://crrev.com/3e0798dd67e1af3e4906123640523cb436bf793e/ui/ozone/platform/wayland/fake_server.cc
[modify] https://crrev.com/3e0798dd67e1af3e4906123640523cb436bf793e/ui/ozone/platform/wayland/fake_server.h
[modify] https://crrev.com/3e0798dd67e1af3e4906123640523cb436bf793e/ui/ozone/platform/wayland/wayland_connection.cc
[modify] https://crrev.com/3e0798dd67e1af3e4906123640523cb436bf793e/ui/ozone/platform/wayland/wayland_connection.h
[modify] https://crrev.com/3e0798dd67e1af3e4906123640523cb436bf793e/ui/ozone/platform/wayland/wayland_object.cc
[modify] https://crrev.com/3e0798dd67e1af3e4906123640523cb436bf793e/ui/ozone/platform/wayland/wayland_object.h
[add] https://crrev.com/3e0798dd67e1af3e4906123640523cb436bf793e/ui/ozone/platform/wayland/wayland_touch.cc
[add] https://crrev.com/3e0798dd67e1af3e4906123640523cb436bf793e/ui/ozone/platform/wayland/wayland_touch.h
[add] https://crrev.com/3e0798dd67e1af3e4906123640523cb436bf793e/ui/ozone/platform/wayland/wayland_touch_unittest.cc
[modify] https://crrev.com/3e0798dd67e1af3e4906123640523cb436bf793e/ui/ozone/platform/wayland/wayland_window.cc
[modify] https://crrev.com/3e0798dd67e1af3e4906123640523cb436bf793e/ui/ozone/platform/wayland/wayland_window.h

Project Member

Comment 43 by bugdroid1@chromium.org, Apr 24

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/081f172fac9a115c87570374fac2535a3cca46e4

commit 081f172fac9a115c87570374fac2535a3cca46e4
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Tue Apr 24 22:33:50 2018

[ozone/wayland] Add clipboard support

This CL makes Ozone/Wayland able to exchange clipboard data with
other applications on the system. It accomplishes the functionality
by making use of wl interfaces like wl_data_source, wl_data_offer,
wl_data_device and wl_data_device_manager.

In order to bridge the communication between Ozone backends (eg wayland)
and the rest of Chromium, CL also introduces a 'delegate' class
class named ClipboardDelegate. In practice, clients of ClipboardDelegate
(eg Mus' ClipboardImpl) delegate clipboard operations to the active
Ozone backend.

FakeServer is also extended to support the various compositor side
functionalities needed so that tests in wayland_data_device_unittest.cc run.
For instance, MockDataDeviceManager, MockDataDevice, MockDataOffer,
MockDataSource classes are added, implementing the respective Wayland
compositor hooks to communicate with Wayland clients (eg Ozone/Wayland).

Last, the CL focuses on the Ozone/Wayland side of the implementation,
leaving plumbing with the rest of Chromium for follow up CLs (eg [1]).
However in order to test the functionality, wayland_data_device_unittest.cc
is introduced and mimics how a client (eg Mus) would use of the functionality.

[1] https://crrev.com/c/981372/

API footprint:

As mentioned, CL adds a new Ozone public API class: ClipboardDelegate. The
API is designed to support "promise scheme" clipboard implementations,
like to Wayland's and MacOS' NSPasteboard.

Flow:

1) Offer clipboard data (writing)
  When offering content to the system wide Clipboard (eg Chromium/Wayland
  user performs a copy or cut operation), WaylandConnection creates a
  WaylandDataSource instance, which installs listeners, including
  ::OnSend for actually exchange the data.
  WaylandDataSource then calls wl_data_source_offer to
  communicate the compositor the mimetypes available for clipboard
  operations, and then wl_data_device_set_selection to flag itself
  as the current active "clipboard owner".

  By the time data is requested from this client (eg another application on
  the system "paste" to an editor), the WaylandDataSource::OnSend callback
  is called with a mime type and a valid file descriptor passed in as
  parameters. Ozone/Wayland then writes it clipboard data into it.
  At this point, the application requesting the data is responsible for
  reading the content from the other end of pipe, and proceed with the
  editing operation on its side, once data is exchanged.

  This is exercised by WaylandDataDeviceManagerTest::WriteToClipboard
  end-to-end, ie client_1 writes data -> compositor -> client_2 reads data.

2) Requesting clibpard data (reading)
  When requesting data from the system wide Clipboard (eg Chromium/Wayland
  user performs a paste operation), WaylandConnection calls wl_data_offer_receive.
  with a valid "WriteIn" file descriptor for the current "clipboard owner"
  write data into. Once written, the data is read by Ozone/Wayland, from
  the other end of the same pipe.

  This is exercised by WaylandDataDeviceManagerTest::ReadFromClibpard
  end-to-end, ie client_2 request data -> compositor -> client_1 writes data.

BUG=578890

Change-Id: Ibfb8c26fe817e7639f32ac4bdc2f106d4b8bb513
Reviewed-on: https://chromium-review.googlesource.com/976461
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Reviewed-by: Maksim Sisov <msisov@igalia.com>
Cr-Commit-Position: refs/heads/master@{#553326}
[modify] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/BUILD.gn
[modify] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/platform/wayland/BUILD.gn
[modify] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/platform/wayland/fake_server.cc
[modify] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/platform/wayland/fake_server.h
[modify] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/platform/wayland/wayland_connection.cc
[modify] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/platform/wayland/wayland_connection.h
[add] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/platform/wayland/wayland_data_device.cc
[add] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/platform/wayland/wayland_data_device.h
[add] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/platform/wayland/wayland_data_device_unittest.cc
[add] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/platform/wayland/wayland_data_offer.cc
[add] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/platform/wayland/wayland_data_offer.h
[add] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/platform/wayland/wayland_data_source.cc
[add] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/platform/wayland/wayland_data_source.h
[modify] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/platform/wayland/wayland_object.cc
[modify] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/platform/wayland/wayland_object.h
[add] https://crrev.com/081f172fac9a115c87570374fac2535a3cca46e4/ui/ozone/public/clipboard_delegate.h

Project Member

Comment 44 by bugdroid1@chromium.org, Apr 25

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/668481a7cef3b8d8dc5f63243eaa22841aa86d3b

commit 668481a7cef3b8d8dc5f63243eaa22841aa86d3b
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Wed Apr 25 00:58:21 2018

Disable WaylandDataDeviceManagerTest on XDG v5

CL deliberately skips running WaylandDataDeviceManagerTest unittests on
XDG_v5. ChromeOS/Linux builder runs on 14.04, which seems to have a
mis-functioning XDG v5 implementation.

Details: https://ci.chromium.org/buildbot/chromium.chromiumos/linux-chromeos-rel/7224

TBR=rjkroege@chromium.org

Will follow up to get this TODO fixed properly ASAP.

BUG=578890

Change-Id: I42de7d61633341c0593a118015c2a9eb99d033ff
Reviewed-on: https://chromium-review.googlesource.com/1027030
Reviewed-by: Antonio Gomes <tonikitoo@igalia.com>
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/master@{#553404}
[modify] https://crrev.com/668481a7cef3b8d8dc5f63243eaa22841aa86d3b/ui/ozone/platform/wayland/wayland_data_device_unittest.cc

Project Member

Comment 45 by bugdroid1@chromium.org, Apr 25

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/af25de2641c4449459908498197a1fec9e61b608

commit af25de2641c4449459908498197a1fec9e61b608
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Wed Apr 25 18:02:26 2018

fixup! [ozone/wayland] Add clipboard support

This CL is a fixup of [1] and also reverts [2], making
all ozone_unittests run on linux.chromeos bots, without any skips,
for both xdg_v5 and xdg_v6 shell implementations.

Basically, CL brings some important code out of DCHECK. It was
not affecting me locally, because I either build with is_debug
or dcheck_always_on.

[1] https://crrev.com/c/976461
[2] https://crrev.com/c/1027030

R=rjkroege@chromium.org
TEST=ozone_unittests

BUG=578890

Change-Id: I18092d09df85e7aa78b85d208ba372504cd8ede9
Reviewed-on: https://chromium-review.googlesource.com/1028030
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/master@{#553650}
[modify] https://crrev.com/af25de2641c4449459908498197a1fec9e61b608/ui/ozone/platform/wayland/wayland_data_device_unittest.cc
[modify] https://crrev.com/af25de2641c4449459908498197a1fec9e61b608/ui/ozone/platform/wayland/wayland_data_source.cc

Project Member

Comment 46 by bugdroid1@chromium.org, Apr 30

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d3730d77c07db9066a511471d8acafbc6c3f6d0e

commit d3730d77c07db9066a511471d8acafbc6c3f6d0e
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Mon Apr 30 22:59:55 2018

[ozone/wayland] Factor "data device manager" out of WaylandConnection

CL adds a WaylandDataDeviceManager class and moves that handle
wl_data_device_manager logic out of WaylandConnection into it.

It brings no functionality change, but makes it easier to be extended
to support primary selection (middle-click to paste).

BUG=578890

Change-Id: I8c04035bf4d3e9de5a0c2cac5c83d4552912cc0d
Reviewed-on: https://chromium-review.googlesource.com/1035943
Reviewed-by: Michael Spang <spang@chromium.org>
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/master@{#554910}
[modify] https://crrev.com/d3730d77c07db9066a511471d8acafbc6c3f6d0e/ui/ozone/platform/wayland/BUILD.gn
[modify] https://crrev.com/d3730d77c07db9066a511471d8acafbc6c3f6d0e/ui/ozone/platform/wayland/wayland_connection.cc
[modify] https://crrev.com/d3730d77c07db9066a511471d8acafbc6c3f6d0e/ui/ozone/platform/wayland/wayland_connection.h
[add] https://crrev.com/d3730d77c07db9066a511471d8acafbc6c3f6d0e/ui/ozone/platform/wayland/wayland_data_device_manager.cc
[add] https://crrev.com/d3730d77c07db9066a511471d8acafbc6c3f6d0e/ui/ozone/platform/wayland/wayland_data_device_manager.h

Project Member

Comment 47 by bugdroid1@chromium.org, May 9

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c4d182f0a99effc90533cda90dbcbbb7e1bfcc51

commit c4d182f0a99effc90533cda90dbcbbb7e1bfcc51
Author: Maksim Sisov <msisov@igalia.com>
Date: Wed May 09 07:30:41 2018

[ozone/wayland] Remove duplicated DCHECK.

This change doesn't bring any functionality changes, but rather
removes an accidentely added duplicate DCHECK.

TBR=rjkroege@chromium.org

Bug: 784836, 578890
Change-Id: I524178327c4f6131eb582b9de37afe799039a41e
Reviewed-on: https://chromium-review.googlesource.com/1051226
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Maksim Sisov <msisov@igalia.com>
Cr-Commit-Position: refs/heads/master@{#557116}
[modify] https://crrev.com/c4d182f0a99effc90533cda90dbcbbb7e1bfcc51/ui/ozone/platform/wayland/wayland_window.cc

Project Member

Comment 48 by bugdroid1@chromium.org, May 9

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d1a1ebbb74232baf75b6a2a5c155f93faeb87f36

commit d1a1ebbb74232baf75b6a2a5c155f93faeb87f36
Author: Maksim Sisov <msisov@igalia.com>
Date: Wed May 09 11:29:38 2018

[ozone] Prepare Ozone desktop integration for Linux and other builds.

This cl adds an initial support for Ozone (Linux) builds by
utilizing DekstopWindowTreeHostPlatform design.

Actually, it looks very similar to DesktopWindowTreeHostX11 with
a difference that this design in this CL uses Ozone abstraction
layer to communicate with Wayland and other backends.

In overall, BrowserDesktopWindowTreeHostPlatform, which is actually
DesktopWindowTreeHostPlatform, is created and initialized, which triggers
creation of a PlatformWindow, which can be either Wayland, or X11, or other
ozone platform.

Also, DesktopScreenOzone class is added. This object inherits ScreenBase and
is meant to fetch displays data from underlaying ozone backends and provide
aura with necessary data.

Bug: 578890

Change-Id: I2d203cd6d1a6ddea0afe062059c6c1f9eecdafd3
Reviewed-on: https://chromium-review.googlesource.com/1039567
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#557149}
[modify] https://crrev.com/d1a1ebbb74232baf75b6a2a5c155f93faeb87f36/chrome/browser/ui/BUILD.gn
[modify] https://crrev.com/d1a1ebbb74232baf75b6a2a5c155f93faeb87f36/chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc
[delete] https://crrev.com/4a4603322ce16045e20acf638af6be1c5a2827ab/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_ozone.cc
[add] https://crrev.com/d1a1ebbb74232baf75b6a2a5c155f93faeb87f36/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_platform.cc
[add] https://crrev.com/d1a1ebbb74232baf75b6a2a5c155f93faeb87f36/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_platform.h
[modify] https://crrev.com/d1a1ebbb74232baf75b6a2a5c155f93faeb87f36/chrome/browser/ui/views/frame/native_browser_frame_factory_ozone.cc
[modify] https://crrev.com/d1a1ebbb74232baf75b6a2a5c155f93faeb87f36/ui/views/BUILD.gn
[add] https://crrev.com/d1a1ebbb74232baf75b6a2a5c155f93faeb87f36/ui/views/widget/desktop_aura/desktop_screen.cc
[modify] https://crrev.com/d1a1ebbb74232baf75b6a2a5c155f93faeb87f36/ui/views/widget/desktop_aura/desktop_screen.h
[add] https://crrev.com/d1a1ebbb74232baf75b6a2a5c155f93faeb87f36/ui/views/widget/desktop_aura/desktop_screen_ozone.cc
[add] https://crrev.com/d1a1ebbb74232baf75b6a2a5c155f93faeb87f36/ui/views/widget/desktop_aura/desktop_screen_ozone.h
[delete] https://crrev.com/4a4603322ce16045e20acf638af6be1c5a2827ab/ui/views/widget/desktop_aura/desktop_window_tree_host_ozone.cc
[modify] https://crrev.com/d1a1ebbb74232baf75b6a2a5c155f93faeb87f36/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc

Project Member

Comment 49 by bugdroid1@chromium.org, May 17

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b81d0e7f43a6489afa37a49327004a25540bb3a8

commit b81d0e7f43a6489afa37a49327004a25540bb3a8
Author: Maksim Sisov <msisov@igalia.com>
Date: Thu May 17 07:32:46 2018

[ozone/wayland] Add initial display fetch support for Wayland.

This cl adds an initial display fetching support for Ozone/Wayland:
  - First, DesktopScreenOzone adds itself as an observer to a
    NativeDisplayDelegate, which has its own implementation based on
    a platform.
  - Then, DesktopScreenOzone initializes NativeDisplayDelegate and,
    in case of WaylandNativeDisplayDelegate, WaylandNativeDisplayDelegate
    sets itself as an observer to a PrimaryOutput.
  - Once PrimaryOutput creates current display's snapshot and current mode
    , (WaylandNativeDisplayDelegate::)OnOutputReadyForUse is called,
    WaylandNativeDisplayDelegate notifies its observers (DesktopScreenOzone
    in this case) through OnConfigurationChanged method.
  - Then, DesktopScreenOzone calls NativeDisplayDelegate::GetDisplays,
    which returns a vector of display snapshots through a callback, and
    DesktopScreenOzone::OnHostDisplaysReady creates a display::Display
    with parameters it gets from display::DisplaySnapshot.

Preliminary support for mode changes has also been added. If we take a
normal run-time browser flow, WaylandOutput::OutputHandleMode can be
called on every display change (it can be a resolution change, a refresh rate
change and etc). Once |current_mode_| is updated, OnOutputReadyForUse is
again called and DesktopScreenOzone fetches the newest list of displays,
which is then used to create a display::Display with the ids provided.
As a result, ProcessDisplayChanged is called and stored display::Display
updated by checking its id.

Note: it's impossible to run Wayland without --in-process-gpu flag
as long as support for gpu process communication with wayland
connection is not in place yet, but it's under development and
going to be pushed soon.

To try this, compile with the following gn args
use_ozone = true
ozone_platform_wayland = true

TEST=./out/Debug/chrome --ozone-platform=wayland --in-process-gpu

Bug: 578890
Change-Id: Ia0f61f1af24eeb46433d22cf31f69396325e4c78
Reviewed-on: https://chromium-review.googlesource.com/1051829
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Cr-Commit-Position: refs/heads/master@{#559446}
[modify] https://crrev.com/b81d0e7f43a6489afa37a49327004a25540bb3a8/ui/ozone/platform/wayland/BUILD.gn
[modify] https://crrev.com/b81d0e7f43a6489afa37a49327004a25540bb3a8/ui/ozone/platform/wayland/ozone_platform_wayland.cc
[modify] https://crrev.com/b81d0e7f43a6489afa37a49327004a25540bb3a8/ui/ozone/platform/wayland/wayland_connection.cc
[modify] https://crrev.com/b81d0e7f43a6489afa37a49327004a25540bb3a8/ui/ozone/platform/wayland/wayland_connection.h
[modify] https://crrev.com/b81d0e7f43a6489afa37a49327004a25540bb3a8/ui/ozone/platform/wayland/wayland_connection_unittest.cc
[add] https://crrev.com/b81d0e7f43a6489afa37a49327004a25540bb3a8/ui/ozone/platform/wayland/wayland_native_display_delegate.cc
[add] https://crrev.com/b81d0e7f43a6489afa37a49327004a25540bb3a8/ui/ozone/platform/wayland/wayland_native_display_delegate.h
[modify] https://crrev.com/b81d0e7f43a6489afa37a49327004a25540bb3a8/ui/ozone/platform/wayland/wayland_output.cc
[modify] https://crrev.com/b81d0e7f43a6489afa37a49327004a25540bb3a8/ui/ozone/platform/wayland/wayland_output.h
[modify] https://crrev.com/b81d0e7f43a6489afa37a49327004a25540bb3a8/ui/views/widget/desktop_aura/desktop_screen_ozone.cc
[modify] https://crrev.com/b81d0e7f43a6489afa37a49327004a25540bb3a8/ui/views/widget/desktop_aura/desktop_screen_ozone.h

Blockedon: 843924
Blockedon: 843018
Blockedon: 820047
Project Member

Comment 53 by bugdroid1@chromium.org, May 18

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6c3b009c32b14f0d84ddb19f49b5aba3399d0845

commit 6c3b009c32b14f0d84ddb19f49b5aba3399d0845
Author: Maksim Sisov <msisov@igalia.com>
Date: Fri May 18 06:11:40 2018

[ozone/wayland] Reset implicit grab only after an event has been sent.

Reset implicit grab only after the event has been sent. Otherwise, we
may end up in a situation, when a target checks for a pointer grab on the
MouseRelease event type, and fails to release mouse pressed handlers
and reset capture with a capture controller.

TEST=./out/OzoneLinux/ozone_unittests --gtest_filter=
XdgVersionV5Test/WaylandPointerTest.ButtonPressAndCheckCapture/0
XdgVersionV5Test/WaylandPointerTest.ButtonReleaseAndCheckCapture/0
XdgVersionV6Test/WaylandPointerTest.ButtonPressAndCheckCapture/0 (1 ms)
XdgVersionV6Test/WaylandPointerTest.ButtonReleaseAndCheckCapture/0

Bug: 578890

Change-Id: Ia8810e5bac46bc49b356e7f79d3bba875dc72416
Reviewed-on: https://chromium-review.googlesource.com/1051787
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Cr-Commit-Position: refs/heads/master@{#559815}
[modify] https://crrev.com/6c3b009c32b14f0d84ddb19f49b5aba3399d0845/ui/ozone/platform/wayland/wayland_pointer.cc
[modify] https://crrev.com/6c3b009c32b14f0d84ddb19f49b5aba3399d0845/ui/ozone/platform/wayland/wayland_pointer.h
[modify] https://crrev.com/6c3b009c32b14f0d84ddb19f49b5aba3399d0845/ui/ozone/platform/wayland/wayland_pointer_unittest.cc

Project Member

Comment 54 by bugdroid1@chromium.org, May 18

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/54fd69310e96d63efdbde3d77c8fe0b31eae46c9

commit 54fd69310e96d63efdbde3d77c8fe0b31eae46c9
Author: Maksim Sisov <msisov@igalia.com>
Date: Fri May 18 09:10:37 2018

[ozone/platform/wayland] Call OnNativeWidgetDestroying on destruction.

DesktopWindowTreeHostPlatform must notify native widget delegate
about destruction. This allows to properly release resources,
and fixes a AccessebilityChecker in browser_tests.

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
Change-Id: I316fda5a2b2f35c865e192fc12274bc57cc2f1bf
Reviewed-on: https://chromium-review.googlesource.com/1059208
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#559839}
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/components/viz/service/display_embedder/software_output_device_ozone_unittest.cc
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/gpu/ipc/service/direct_composition_surface_win_unittest.cc
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/services/ui/ws/platform_display_default.cc
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/services/ui/ws/platform_display_default.h
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/services/ui/ws/platform_display_mirror.cc
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/services/ui/ws/platform_display_mirror.h
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/ui/aura/window_tree_host_platform.cc
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/ui/aura/window_tree_host_platform.h
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/ui/compositor/test/test_compositor_host_ozone.cc
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/ui/gl/gl_surface_egl_unittest.cc
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/ui/ozone/demo/demo_window.cc
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/ui/ozone/demo/demo_window.h
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/ui/ozone/platform/wayland/wayland_window.cc
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/ui/ozone/platform/wayland/wayland_window_unittest.cc
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/ui/ozone/test/mock_platform_window_delegate.h
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/ui/platform_window/platform_window_delegate.h
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
[modify] https://crrev.com/54fd69310e96d63efdbde3d77c8fe0b31eae46c9/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h

Project Member

Comment 55 by bugdroid1@chromium.org, May 28

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/71010c620e56596419e3447f480f29200e85cfaf

commit 71010c620e56596419e3447f480f29200e85cfaf
Author: Maksim Sisov <msisov@igalia.com>
Date: Mon May 28 12:33:40 2018

fixup! [ozone/platform/wayland] Call OnNativeWidgetDestroying on destruction.

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

TBR=rjkroege@chromium.org

Bug: 578890
Change-Id: I97ec928181ed813f30fe7478a5dc3fdf44acaa58
Reviewed-on: https://chromium-review.googlesource.com/1075049
Reviewed-by: Maksim Sisov <msisov@igalia.com>
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Cr-Commit-Position: refs/heads/master@{#562236}
[modify] https://crrev.com/71010c620e56596419e3447f480f29200e85cfaf/ui/ozone/platform/wayland/wayland_window.cc

Project Member

Comment 56 by bugdroid1@chromium.org, May 29

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/62190d478a25e16cf3f18326026a0d1bd8b63c64

commit 62190d478a25e16cf3f18326026a0d1bd8b63c64
Author: Julie Jeongeun Kim <jkim@igalia.com>
Date: Tue May 29 03:50:12 2018

Added stopped_propagation condition at input_method_minial

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 input_method_minimal_unittests.cc and introduced
'InputMethodMinimalTest.StopPropagationTest' to verify that
character's not inserted to text input when the event is
set with stopped_propagation.

TEST=ui_base_unittests

Bug:  843924 , 578890
Change-Id: I2d8f6d408a04cd7affd8089157b7b0efa07379d5
Reviewed-on: https://chromium-review.googlesource.com/1063417
Reviewed-by: Shu Chen <shuchen@chromium.org>
Commit-Queue: Julie Jeongeun Kim <jkim@igalia.com>
Cr-Commit-Position: refs/heads/master@{#562332}
[modify] https://crrev.com/62190d478a25e16cf3f18326026a0d1bd8b63c64/ui/base/BUILD.gn
[modify] https://crrev.com/62190d478a25e16cf3f18326026a0d1bd8b63c64/ui/base/ime/input_method_minimal.cc
[add] https://crrev.com/62190d478a25e16cf3f18326026a0d1bd8b63c64/ui/base/ime/input_method_minimal_unittest.cc

Blockedon: 847740
Blockedon: 848131
Blockedon: 849596
Cc: -msi...@igalia.com toniki...@chromium.org
Owner: msi...@igalia.com
Setting Maksim as owner. I will be supporting the team.
Project Member

Comment 61 by bugdroid1@chromium.org, Jun 15

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d45bfc35850cc63db278b6aa331bf9f70b8ad596

commit d45bfc35850cc63db278b6aa331bf9f70b8ad596
Author: Maksim Sisov <msisov@igalia.com>
Date: Fri Jun 15 10:47:58 2018

[ozone/platform] Add support for menu window type

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
Reviewed-on: https://chromium-review.googlesource.com/1068746
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567601}
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/chrome/browser/vr/testapp/vr_testapp.cc
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/services/ui/ws/platform_display.cc
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/ui/aura/window_tree_host_platform.cc
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/ui/aura/window_tree_host_platform.h
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/ui/compositor/test/test_compositor_host_ozone.cc
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/ui/ozone/demo/demo_window.cc
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/ui/ozone/platform/cast/ozone_platform_cast.cc
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/ui/ozone/platform/drm/ozone_platform_gbm.cc
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/ui/ozone/platform/headless/ozone_platform_headless.cc
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/ui/ozone/platform/scenic/ozone_platform_scenic.cc
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/ui/ozone/platform/wayland/ozone_platform_wayland.cc
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/ui/ozone/platform/windows/ozone_platform_windows.cc
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/ui/ozone/platform/x11/ozone_platform_x11.cc
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/ui/ozone/public/ozone_platform.h
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/ui/platform_window/BUILD.gn
[add] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/ui/platform_window/platform_window_init_properties.h
[modify] https://crrev.com/d45bfc35850cc63db278b6aa331bf9f70b8ad596/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc

Project Member

Comment 62 by bugdroid1@chromium.org, Jun 15

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b914bd2c8b8f301bc9ad5073de592c34dcbac25f

commit b914bd2c8b8f301bc9ad5073de592c34dcbac25f
Author: Maksim Sisov <msisov@igalia.com>
Date: Fri Jun 15 11:53:51 2018

[ozone/wayland] Add support for menu window type

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
simplicity.

TEST=XdgVersionV5Test or XdgVersionV6Test
WaylandWindowTest.CreateAndDestroyMenuWindow/0,
WaylandWindowTest.CreateAndDestroyNestedMenuWindow/0,
WaylandWindowTest.CanDispatchEventToMenuWindowNested/0,
WaylandWindowTest.CanDispatchEventToMenuWindowNonNested/0 (1 ms)

Bug: 578890
Change-Id: Ia644862cce34375d3a758d8c0ff398c75dd47772
Reviewed-on: https://chromium-review.googlesource.com/1075309
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Reviewed-by: Robert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567608}
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/BUILD.gn
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/fake_server.cc
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/fake_server.h
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/ozone_platform_wayland.cc
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/wayland_connection.cc
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/wayland_connection.h
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/wayland_keyboard.cc
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/wayland_object.cc
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/wayland_object.h
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/wayland_pointer_unittest.cc
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/wayland_test.cc
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/wayland_window.cc
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/wayland_window.h
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/wayland_window_unittest.cc
[add] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/xdg_popup_wrapper.h
[add] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/xdg_popup_wrapper_v5.cc
[add] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/xdg_popup_wrapper_v5.h
[add] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/xdg_popup_wrapper_v6.cc
[add] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/xdg_popup_wrapper_v6.h
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/xdg_surface_wrapper.h
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/xdg_surface_wrapper_v5.cc
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/xdg_surface_wrapper_v5.h
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/xdg_surface_wrapper_v6.cc
[modify] https://crrev.com/b914bd2c8b8f301bc9ad5073de592c34dcbac25f/ui/ozone/platform/wayland/xdg_surface_wrapper_v6.h

Comment 63 by msi...@igalia.com, Jun 20 (3 days ago)

Blockedon: 854564
Project Member

Comment 64 by bugdroid1@chromium.org, Jun 21 (2 days ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/289afd805a5fd0f001d7076d94177bc8a8b99f04

commit 289afd805a5fd0f001d7076d94177bc8a8b99f04
Author: Maksim Sisov <msisov@igalia.com>
Date: Thu Jun 21 09:39:03 2018

fixup! [ozone/wayland] Add support for menu window type.

Remove accidentely added CHECK in the popup wrapper v6.
added in https://chromium-review.googlesource.com/107530

TBR=rjkroege@chromium.org

Bug: 578890
Change-Id: I375668380a91b71665873bd682c909dad9e7f50a
Reviewed-on: https://chromium-review.googlesource.com/1109516
Reviewed-by: Maksim Sisov <msisov@igalia.com>
Commit-Queue: Maksim Sisov <msisov@igalia.com>
Cr-Commit-Position: refs/heads/master@{#569198}
[modify] https://crrev.com/289afd805a5fd0f001d7076d94177bc8a8b99f04/ui/ozone/platform/wayland/xdg_popup_wrapper_v6.cc

Sign in to add a comment