New issue
Advanced search Search tips

Issue 627146 link

Starred by 1 user

Issue metadata

Status: Verified
Owner:
Closed: Aug 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Bug
mus



Sign in to add a comment

mus: Support multiple PointerWatchers with and without hover

Project Member Reported by riajiang@chromium.org, Jul 11 2016

Issue description

Right now we don't have any clients that need to use multiple event matchers. When there's a use-case, we can combine all different matchers to create one matcher that matches all needed events in the client side and send that matcher to the server side to be the event observer matcher.

 

Comment 1 by sadrul@chromium.org, Jul 11 2016

Cc: sadrul@chromium.org sky@chromium.org riajiang@chromium.org
Status: Available (was: Untriaged)
Cc: sammiequon@chromium.org
Owner: jamescook@chromium.org
Status: Assigned (was: Available)
Summary: mus: Support multiple PointerWatchers with and without hover (was: mus: Support multiple event matchers)
In particular, we need to support multiple PointerWatchers in an app, some of which might need hover events temporarily.

This will be needed to get issue 616143 (RVG) working in mash.

Labels: mash

Comment 4 by sky@chromium.org, Aug 17 2016

Status: Started (was: Assigned)
Project Member

Comment 5 by bugdroid1@chromium.org, Aug 19 2016

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

commit aac9c759e87c57e80219e3db3ed01e5fa5a37350
Author: sky <sky@chromium.org>
Date: Fri Aug 19 00:26:37 2016

Moves ImmersiveFullscreenController::SetupForTest into test class

The only trickiness here is the chrome side, which has the same
function on a virtual class. For the time being I added a type to
ImmersiveModeController so test code can know whether the real
ImmersiveFullscreenController is created.

BUG= 627146 
TEST=covered by tests
R=msw@chromium.org

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

[modify] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/ash/ash.gyp
[add] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/ash/test/immersive_fullscreen_controller_test_api.cc
[add] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/ash/test/immersive_fullscreen_controller_test_api.h
[modify] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/ash/wm/immersive_fullscreen_controller.cc
[modify] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/ash/wm/immersive_fullscreen_controller.h
[modify] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/ash/wm/immersive_fullscreen_controller_unittest.cc
[modify] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc
[modify] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/chrome/browser/ui/views/frame/browser_view_layout_unittest.cc
[modify] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/chrome/browser/ui/views/frame/immersive_mode_controller.cc
[modify] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/chrome/browser/ui/views/frame/immersive_mode_controller.h
[modify] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc
[modify] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/chrome/browser/ui/views/frame/immersive_mode_controller_ash.h
[modify] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/chrome/browser/ui/views/frame/immersive_mode_controller_ash_unittest.cc
[modify] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/chrome/browser/ui/views/frame/immersive_mode_controller_stub.cc
[modify] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/chrome/browser/ui/views/frame/immersive_mode_controller_stub.h
[modify] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/chrome/browser/ui/views/location_bar/zoom_bubble_view_browsertest.cc
[modify] https://crrev.com/aac9c759e87c57e80219e3db3ed01e5fa5a37350/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc

Project Member

Comment 6 by bugdroid1@chromium.org, Aug 19 2016

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

commit b7b5409a74efc0a764a4ddd2010d0db4309713b0
Author: sky <sky@chromium.org>
Date: Fri Aug 19 16:00:09 2016

Adds ImmersiveContext and ImmersiveHandlerFactory

The immersive code needs to support running in ash, mash, chrome in
ash and chrome in mash, all of which have slightly different
requirements. ImmersiveContext and ImmersiveHandlerFactory provide the
basis for this. ImmersiveContext provides the interactions with the
shell/window types and ImmersiveHandlerFactory the factory for
creating the event watchers.

My plan is to move ImmersiveFullscreenController into ash/shared
shortly (along with a couple of other classes).

BUG= 627146 
TEST=covered by tests
R=jamescook@chromium.org

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

[modify] https://crrev.com/b7b5409a74efc0a764a4ddd2010d0db4309713b0/ash/ash.gyp
[add] https://crrev.com/b7b5409a74efc0a764a4ddd2010d0db4309713b0/ash/shared/DEPS
[add] https://crrev.com/b7b5409a74efc0a764a4ddd2010d0db4309713b0/ash/shared/README.md
[add] https://crrev.com/b7b5409a74efc0a764a4ddd2010d0db4309713b0/ash/shared/immersive_context.cc
[add] https://crrev.com/b7b5409a74efc0a764a4ddd2010d0db4309713b0/ash/shared/immersive_context.h
[modify] https://crrev.com/b7b5409a74efc0a764a4ddd2010d0db4309713b0/ash/shell.cc
[modify] https://crrev.com/b7b5409a74efc0a764a4ddd2010d0db4309713b0/ash/shell.h
[add] https://crrev.com/b7b5409a74efc0a764a4ddd2010d0db4309713b0/ash/wm/immersive_context_ash.cc
[add] https://crrev.com/b7b5409a74efc0a764a4ddd2010d0db4309713b0/ash/wm/immersive_context_ash.h
[modify] https://crrev.com/b7b5409a74efc0a764a4ddd2010d0db4309713b0/ash/wm/immersive_fullscreen_controller.cc
[modify] https://crrev.com/b7b5409a74efc0a764a4ddd2010d0db4309713b0/ash/wm/immersive_fullscreen_controller.h
[add] https://crrev.com/b7b5409a74efc0a764a4ddd2010d0db4309713b0/ash/wm/immersive_handler_factory.cc
[add] https://crrev.com/b7b5409a74efc0a764a4ddd2010d0db4309713b0/ash/wm/immersive_handler_factory.h
[add] https://crrev.com/b7b5409a74efc0a764a4ddd2010d0db4309713b0/ash/wm/immersive_handler_factory_ash.cc
[add] https://crrev.com/b7b5409a74efc0a764a4ddd2010d0db4309713b0/ash/wm/immersive_handler_factory_ash.h

Project Member

Comment 7 by bugdroid1@chromium.org, Aug 19 2016

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

commit e37541e6e742816c31c17f993a5842d619bba48d
Author: sky <sky@chromium.org>
Date: Fri Aug 19 17:50:35 2016

Updates PointerEventRouter to handle switching move type

As part of this I'm removing the id that was added when the api was
with eventmatchers. I can't think of a good way to make the api work
with ids that won't involve raciness. In particular as switching
between move and non-move means changing the event id it's possible
that some events get dropped. This worries me.

Without the ids it means a client might process an event
they don't really care about, but PointerWatcherEventRouter ensures
the right events are routed. For example, lets say there was an in
flight match for a move, but the client switches to not wanting
moves. WindowTreeClient will call OnPointerEventObserver(), but
PointerEventRouter will ensure the event only goes to the
pointerwatchers that want the move.

BUG= 627146 
TEST=covered by tests
R=jamescook@chromium.org

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

[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/public/cpp/tests/test_window_tree.cc
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/public/cpp/tests/test_window_tree.h
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/public/cpp/tests/window_tree_client_private.cc
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/public/cpp/tests/window_tree_client_private.h
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/public/cpp/tests/window_tree_client_unittest.cc
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/public/cpp/window_tree_client.cc
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/public/cpp/window_tree_client.h
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/public/interfaces/window_tree.mojom
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/ws/test_change_tracker.cc
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/ws/test_change_tracker.h
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/ws/test_utils.cc
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/ws/test_utils.h
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/ws/window_tree.cc
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/ws/window_tree.h
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/ws/window_tree_client_unittest.cc
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/services/ui/ws/window_tree_unittest.cc
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/ui/views/mus/pointer_watcher_event_router.cc
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/ui/views/mus/pointer_watcher_event_router.h
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/ui/views/mus/pointer_watcher_event_router_unittest.cc
[modify] https://crrev.com/e37541e6e742816c31c17f993a5842d619bba48d/ui/views/mus/window_manager_connection.h

Comment 8 by sky@chromium.org, Aug 19 2016

Owner: sky@chromium.org
Status: Fixed (was: Started)
Gah, I tagged a bunch of patches with the wrong bug, oh well, the last one fixes this.
Labels: VerifyIn-54
Status: Verified (was: Fixed)
bulk verified
Components: -MUS Internals>Services>WindowService

Sign in to add a comment