Specifically SetFocus, SetCanFocus, DeactivateWindow as well as notifying client appropriately of focus changes.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/319cfb51173d96f7c00f5f2588fdc0d42ab40024 commit 319cfb51173d96f7c00f5f2588fdc0d42ab40024 Author: Scott Violet <sky@chromium.org> Date: Wed May 23 18:35:28 2018 chromeos: wires up focus for ws2 This deals with the following: . Clients may call SetFocus. If this succeeds focus related events go to the client that initiated focus. . Clients can control whether a window is focusable by way of SetCanFocus. Currently this is only implemented for non-top-levels. . If focus goes to a window outside of client calling SetFocus, then preference is given to the embedded client. . If a WindowTreeClient intercepts events, it gets the key events. . Lastly, this changes it so that enter an capture-changed events are not sent to the client. This is because there is a specific capture-changed function called on the client. Enter events are a side effect of a move, and need not be explicitly sent. BUG= 837703 TEST=covered by test Change-Id: I899e428524ca215d91ec38a859800947034c76c4 Reviewed-on: https://chromium-review.googlesource.com/1069739 Commit-Queue: Scott Violet <sky@chromium.org> Reviewed-by: James Cook <jamescook@chromium.org> Cr-Commit-Position: refs/heads/master@{#561171} [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/ash/shell.h [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/ash/ws/window_service_owner.cc [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/test_ws/test_ws.cc [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/BUILD.gn [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/README.md [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/client_change.h [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/client_window.cc [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/client_window.h [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/event_test_utils.cc [add] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/focus_handler.cc [add] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/focus_handler.h [add] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/focus_handler_unittest.cc [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/test_window_tree_client.cc [add] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/window_delegate_impl.cc [add] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/window_delegate_impl.h [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/window_service.cc [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/window_service.h [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/window_service_client.cc [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/window_service_client.h [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/window_service_client_test_helper.cc [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/window_service_client_test_helper.h [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/window_service_client_unittest.cc [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/window_service_test_setup.cc [modify] https://crrev.com/319cfb51173d96f7c00f5f2588fdc0d42ab40024/services/ui/ws2/window_service_test_setup.h
Comment 1 by sky@chromium.org
, May 8 2018