Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(573)

Unified Diff: ui/aura/window_event_dispatcher.cc

Issue 2025843003: Introduce aura::Env controller to abstract away changes to aura::Env Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add missing files Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/aura/window_event_dispatcher.cc
diff --git a/ui/aura/window_event_dispatcher.cc b/ui/aura/window_event_dispatcher.cc
index 8b2228096f0cfd241ac23db11598536bfde9c161..90519746f9643e3fc1b06a3ffbb7d74168587684 100644
--- a/ui/aura/window_event_dispatcher.cc
+++ b/ui/aura/window_event_dispatcher.cc
@@ -19,6 +19,7 @@
#include "ui/aura/env.h"
#include "ui/aura/window.h"
#include "ui/aura/window_delegate.h"
+#include "ui/aura/window_event_dispatcher_delegate.h"
#include "ui/aura/window_targeter.h"
#include "ui/aura/window_tracker.h"
#include "ui/aura/window_tree_host.h"
@@ -48,19 +49,6 @@ Window* ConsumerToWindow(ui::GestureConsumer* consumer) {
return consumer ? static_cast<Window*>(consumer) : NULL;
}
-void SetLastMouseLocation(const Window* root_window,
- const gfx::Point& location_in_root) {
- client::ScreenPositionClient* client =
- client::GetScreenPositionClient(root_window);
- if (client) {
- gfx::Point location_in_screen = location_in_root;
- client->ConvertPointToScreen(root_window, &location_in_screen);
- Env::GetInstance()->set_last_mouse_location(location_in_screen);
- } else {
- Env::GetInstance()->set_last_mouse_location(location_in_root);
- }
-}
-
bool IsEventCandidateForHold(const ui::Event& event) {
if (event.type() == ui::ET_TOUCH_MOVED)
return true;
@@ -88,6 +76,7 @@ WindowEventDispatcher::WindowEventDispatcher(WindowTreeHost* host)
dispatching_held_event_(nullptr),
observer_manager_(this),
transform_events_(true),
+ delegate_(new WindowEventDispatcherDelegate),
repost_event_factory_(this),
held_event_factory_(this) {
ui::GestureRecognizer::Get()->AddGestureEventHelper(this);
@@ -204,12 +193,7 @@ void WindowEventDispatcher::ReleasePointerMoves() {
}
gfx::Point WindowEventDispatcher::GetLastMouseLocationInRoot() const {
- gfx::Point location = Env::GetInstance()->last_mouse_location();
- client::ScreenPositionClient* client =
- client::GetScreenPositionClient(window());
- if (client)
- client->ConvertPointFromScreen(window(), &location);
- return location;
+ return delegate_->GetLastMouseLocationInRoot(window());
}
void WindowEventDispatcher::OnHostLostMouseGrab() {
@@ -219,7 +203,7 @@ void WindowEventDispatcher::OnHostLostMouseGrab() {
void WindowEventDispatcher::OnCursorMovedToRootLocation(
const gfx::Point& root_location) {
- SetLastMouseLocation(window(), root_location);
+ delegate_->SetLastMouseLocation(window(), root_location);
// Synthesize a mouse move in case the cursor's location in root coordinates
// changed but its position in WindowTreeHost coordinates did not.
@@ -268,7 +252,7 @@ ui::EventDispatchDetails WindowEventDispatcher::DispatchMouseEnterOrExit(
ui::EventType type) {
if (event.type() != ui::ET_MOUSE_CAPTURE_CHANGED &&
!(event.flags() & ui::EF_IS_SYNTHESIZED)) {
- SetLastMouseLocation(window(), event.root_location());
+ delegate_->SetLastMouseLocation(window(), event.root_location());
}
if (!mouse_moved_handler_ || !mouse_moved_handler_->delegate() ||
@@ -387,7 +371,7 @@ void WindowEventDispatcher::UpdateCapture(Window* old_capture,
if (new_capture) {
// Make all subsequent mouse events go to the capture window. We shouldn't
// need to send an event here as OnCaptureLost() should take care of that.
- if (mouse_moved_handler_ || Env::GetInstance()->IsMouseButtonDown())
+ if (mouse_moved_handler_ || delegate_->IsMouseButtonDown())
mouse_moved_handler_ = new_capture;
} else {
// Make sure mouse_moved_handler gets updated.
@@ -726,7 +710,7 @@ ui::EventDispatchDetails WindowEventDispatcher::SynthesizeMouseMoveEvent() {
// instead of a MOVED event, but in multi-display/multi-host scenarios, the
// DRAGGED event can be synthesized in the incorrect host. So avoid
// synthesizing any events at all.
- if (Env::GetInstance()->mouse_button_flags())
+ if (delegate_->IsMouseButtonDown())
return details;
gfx::Point root_mouse_location = GetLastMouseLocationInRoot();
@@ -752,7 +736,7 @@ DispatchDetails WindowEventDispatcher::PreDispatchLocatedEvent(
(event->IsMouseEvent() || event->IsScrollEvent()) &&
!(event->flags() & ui::EF_IS_SYNTHESIZED)) {
if (event->type() != ui::ET_MOUSE_CAPTURE_CHANGED)
- SetLastMouseLocation(window(), event->root_location());
+ delegate_->SetLastMouseLocation(window(), event->root_location());
synthesize_mouse_move_ = false;
}
@@ -778,7 +762,7 @@ DispatchDetails WindowEventDispatcher::PreDispatchMouseEvent(
if (move_hold_count_) {
if (!(event->flags() & ui::EF_IS_SYNTHESIZED) &&
event->type() != ui::ET_MOUSE_CAPTURE_CHANGED) {
- SetLastMouseLocation(window(), event->root_location());
+ delegate_->SetLastMouseLocation(window(), event->root_location());
}
held_move_event_.reset(new ui::MouseEvent(*event, target, window()));
event->SetHandled();
@@ -851,17 +835,16 @@ DispatchDetails WindowEventDispatcher::PreDispatchMouseEvent(
// sent to the wrong target.
if (!(event->flags() & ui::EF_IS_NON_CLIENT) && !mouse_pressed_handler_)
mouse_pressed_handler_ = target;
- Env::GetInstance()->set_mouse_button_flags(event->button_flags());
break;
case ui::ET_MOUSE_RELEASED:
mouse_pressed_handler_ = NULL;
- Env::GetInstance()->set_mouse_button_flags(
- event->button_flags() & ~event->changed_button_flags());
break;
default:
break;
}
+ delegate_->PreDispatchMouseEvent(event);
+
return PreDispatchLocatedEvent(target, event);
}
@@ -871,7 +854,6 @@ DispatchDetails WindowEventDispatcher::PreDispatchTouchEvent(
switch (event->type()) {
case ui::ET_TOUCH_PRESSED:
touch_ids_down_ |= (1 << event->touch_id());
- Env::GetInstance()->set_touch_down(touch_ids_down_ != 0);
break;
// Handle ET_TOUCH_CANCELLED only if it has a native event.
@@ -882,7 +864,6 @@ DispatchDetails WindowEventDispatcher::PreDispatchTouchEvent(
case ui::ET_TOUCH_RELEASED:
touch_ids_down_ = (touch_ids_down_ | (1 << event->touch_id())) ^
sadrul 2016/05/31 16:36:32 |touch_ids_down_| should move into the <new-thing>
sadrul 2016/05/31 18:27:02 ^ this
(1 << event->touch_id());
- Env::GetInstance()->set_touch_down(touch_ids_down_ != 0);
break;
case ui::ET_TOUCH_MOVED:
@@ -898,6 +879,8 @@ DispatchDetails WindowEventDispatcher::PreDispatchTouchEvent(
break;
}
+ delegate_->PreDispatchTouchEvent(event, touch_ids_down_);
+
ui::TouchEvent orig_event(*event, target, window());
if (!ui::GestureRecognizer::Get()->ProcessTouchEventPreDispatch(&orig_event,
target)) {

Powered by Google App Engine
This is Rietveld 408576698