diff options
author | moshayedi <moshayedi@chromium.org> | 2016-03-17 17:08:15 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-18 00:10:37 +0000 |
commit | d41e5ab53319f2c5d183c2a0912538a0d9fd865e (patch) | |
tree | 763e711cb67ff2e872830f007fbc8cc9f84c467c | |
parent | 4ecae6cf0186d351706937b23d00ccaa5db9f1be (diff) | |
download | chromium_src-d41e5ab53319f2c5d183c2a0912538a0d9fd865e.zip chromium_src-d41e5ab53319f2c5d183c2a0912538a0d9fd865e.tar.gz chromium_src-d41e5ab53319f2c5d183c2a0912538a0d9fd865e.tar.bz2 |
Use ui::Event instead of mojom::EventPtr in mash/wm.
We want to get rid of mojom::EventPtr and use ui::Event instead at some point.
This CL removes mojom::EventPtr from one more layer in mus+ash.
BUG=578206
Review URL: https://codereview.chromium.org/1814533002
Cr-Commit-Position: refs/heads/master@{#381841}
-rw-r--r-- | components/mus/public/cpp/lib/window_tree_client_impl.cc | 3 | ||||
-rw-r--r-- | components/mus/public/cpp/tests/window_server_test_base.cc | 4 | ||||
-rw-r--r-- | components/mus/public/cpp/tests/window_server_test_base.h | 2 | ||||
-rw-r--r-- | components/mus/public/cpp/window_manager_delegate.h | 6 | ||||
-rw-r--r-- | components/mus/ws/window_manager_client_unittest.cc | 2 | ||||
-rw-r--r-- | mash/wm/frame/move_event_handler.cc | 27 | ||||
-rw-r--r-- | mash/wm/frame/move_loop.cc | 47 | ||||
-rw-r--r-- | mash/wm/frame/move_loop.h | 12 | ||||
-rw-r--r-- | mash/wm/frame/move_loop_unittest.cc | 27 | ||||
-rw-r--r-- | mash/wm/root_window_controller.cc | 5 | ||||
-rw-r--r-- | mash/wm/root_window_controller.h | 6 | ||||
-rw-r--r-- | mash/wm/window_manager.cc | 2 | ||||
-rw-r--r-- | mash/wm/window_manager.h | 2 | ||||
-rw-r--r-- | mash/wm/window_manager_application.cc | 6 | ||||
-rw-r--r-- | mash/wm/window_manager_application.h | 6 |
15 files changed, 82 insertions, 75 deletions
diff --git a/components/mus/public/cpp/lib/window_tree_client_impl.cc b/components/mus/public/cpp/lib/window_tree_client_impl.cc index 3efdcf9..7881275 100644 --- a/components/mus/public/cpp/lib/window_tree_client_impl.cc +++ b/components/mus/public/cpp/lib/window_tree_client_impl.cc @@ -947,7 +947,8 @@ void WindowTreeClientImpl::WmCreateTopLevelWindow( } void WindowTreeClientImpl::OnAccelerator(uint32_t id, mojom::EventPtr event) { - window_manager_delegate_->OnAccelerator(id, std::move(event)); + window_manager_delegate_->OnAccelerator( + id, *event.To<scoped_ptr<ui::Event>>().get()); } void WindowTreeClientImpl::SetFrameDecorationValues( diff --git a/components/mus/public/cpp/tests/window_server_test_base.cc b/components/mus/public/cpp/tests/window_server_test_base.cc index fe7a922..e3c06d8 100644 --- a/components/mus/public/cpp/tests/window_server_test_base.cc +++ b/components/mus/public/cpp/tests/window_server_test_base.cc @@ -113,9 +113,9 @@ Window* WindowServerTestBase::OnWmCreateTopLevelWindow( : nullptr; } -void WindowServerTestBase::OnAccelerator(uint32_t id, mojom::EventPtr event) { +void WindowServerTestBase::OnAccelerator(uint32_t id, const ui::Event& event) { if (window_manager_delegate_) - window_manager_delegate_->OnAccelerator(id, std::move(event)); + window_manager_delegate_->OnAccelerator(id, event); } void WindowServerTestBase::Create( diff --git a/components/mus/public/cpp/tests/window_server_test_base.h b/components/mus/public/cpp/tests/window_server_test_base.h index 7e04589..2c89f4f 100644 --- a/components/mus/public/cpp/tests/window_server_test_base.h +++ b/components/mus/public/cpp/tests/window_server_test_base.h @@ -76,7 +76,7 @@ class WindowServerTestBase scoped_ptr<std::vector<uint8_t>>* new_data) override; Window* OnWmCreateTopLevelWindow( std::map<std::string, std::vector<uint8_t>>* properties) override; - void OnAccelerator(uint32_t id, mojom::EventPtr event) override; + void OnAccelerator(uint32_t id, const ui::Event& event) override; // InterfaceFactory<WindowTreeClient>: void Create(mojo::Connection* connection, diff --git a/components/mus/public/cpp/window_manager_delegate.h b/components/mus/public/cpp/window_manager_delegate.h index 7fe6aa2..42cc651 100644 --- a/components/mus/public/cpp/window_manager_delegate.h +++ b/components/mus/public/cpp/window_manager_delegate.h @@ -22,6 +22,10 @@ class Rect; class Vector2d; } +namespace ui { +class Event; +} + namespace mus { class Window; @@ -81,7 +85,7 @@ class WindowManagerDelegate { virtual Window* OnWmCreateTopLevelWindow( std::map<std::string, std::vector<uint8_t>>* properties) = 0; - virtual void OnAccelerator(uint32_t id, mus::mojom::EventPtr event) = 0; + virtual void OnAccelerator(uint32_t id, const ui::Event& event) = 0; protected: virtual ~WindowManagerDelegate() {} diff --git a/components/mus/ws/window_manager_client_unittest.cc b/components/mus/ws/window_manager_client_unittest.cc index 31c5a11..a064f07 100644 --- a/components/mus/ws/window_manager_client_unittest.cc +++ b/components/mus/ws/window_manager_client_unittest.cc @@ -49,7 +49,7 @@ class TestWindowManagerDelegate : public WindowManagerDelegate { std::map<std::string, std::vector<uint8_t>>* properties) override { return nullptr; } - void OnAccelerator(uint32_t id, mojom::EventPtr event) override {} + void OnAccelerator(uint32_t id, const ui::Event& event) override {} private: DISALLOW_COPY_AND_ASSIGN(TestWindowManagerDelegate); diff --git a/mash/wm/frame/move_event_handler.cc b/mash/wm/frame/move_event_handler.cc index 448e51a..256e0aa 100644 --- a/mash/wm/frame/move_event_handler.cc +++ b/mash/wm/frame/move_event_handler.cc @@ -56,20 +56,27 @@ MoveEventHandler::~MoveEventHandler() { void MoveEventHandler::ProcessLocatedEvent(ui::LocatedEvent* event) { const bool had_move_loop = move_loop_.get() != nullptr; - ui::Event* ui_event = static_cast<ui::Event*>(event); + DCHECK(event->IsMouseEvent() || event->IsTouchEvent()); + + // TODO(moshayedi): no need for this once MoveEventHandler directly receives + // pointer events. + scoped_ptr<ui::PointerEvent> pointer_event; + if (event->IsMouseEvent()) + pointer_event.reset(new ui::PointerEvent(*event->AsMouseEvent())); + else + pointer_event.reset(new ui::PointerEvent(*event->AsTouchEvent())); + if (move_loop_) { - if (move_loop_->Move(*mus::mojom::Event::From(*ui_event)) == MoveLoop::DONE) + if (move_loop_->Move(*pointer_event.get()) == MoveLoop::DONE) move_loop_.reset(); - } else if (event->type() == ui::ET_MOUSE_PRESSED || - event->type() == ui::ET_TOUCH_PRESSED) { - const int ht_location = GetNonClientComponentForEvent(event); + } else if (pointer_event->type() == ui::ET_POINTER_DOWN) { + const int ht_location = GetNonClientComponentForEvent(pointer_event.get()); if (ht_location != HTNOWHERE) { - // TODO(sky): convert MoveLoop to take ui::Event. - move_loop_ = MoveLoop::Create(mus_window_, ht_location, - *mus::mojom::Event::From(*ui_event)); + move_loop_ = + MoveLoop::Create(mus_window_, ht_location, *pointer_event.get()); } - } else if (event->type() == ui::ET_MOUSE_MOVED) { - const int ht_location = GetNonClientComponentForEvent(event); + } else if (pointer_event->type() == ui::ET_POINTER_MOVED) { + const int ht_location = GetNonClientComponentForEvent(pointer_event.get()); mus_window_->SetPredefinedCursor(CursorForWindowComponent(ht_location)); } if (had_move_loop || move_loop_) diff --git a/mash/wm/frame/move_loop.cc b/mash/wm/frame/move_loop.cc index 1aac3ce..0645790 100644 --- a/mash/wm/frame/move_loop.cc +++ b/mash/wm/frame/move_loop.cc @@ -9,6 +9,7 @@ #include "components/mus/public/interfaces/input_event_constants.mojom.h" #include "mash/wm/property_util.h" #include "ui/base/hit_test.h" +#include "ui/events/event.h" #include "ui/gfx/geometry/point_conversions.h" #include "ui/gfx/geometry/rect.h" @@ -17,16 +18,9 @@ namespace wm { namespace { -gfx::Point EventScreenLocationToPoint(const mus::mojom::Event& event) { - return gfx::ToFlooredPoint( - gfx::PointF(event.pointer_data->location->screen_x, - event.pointer_data->location->screen_y)); -} - int MouseOnlyEventFlags(int flags) { - return flags & (mus::mojom::kEventFlagLeftMouseButton | - mus::mojom::kEventFlagMiddleMouseButton | - mus::mojom::kEventFlagRightMouseButton); + return flags & (ui::EF_LEFT_MOUSE_BUTTON | ui::EF_MIDDLE_MOUSE_BUTTON | + ui::EF_RIGHT_MOUSE_BUTTON); } } // namespace @@ -39,12 +33,11 @@ MoveLoop::~MoveLoop() { // static scoped_ptr<MoveLoop> MoveLoop::Create(mus::Window* target, int ht_location, - const mus::mojom::Event& event) { - DCHECK_EQ(event.action, mus::mojom::EventType::POINTER_DOWN); + const ui::PointerEvent& event) { + DCHECK_EQ(event.type(), ui::ET_POINTER_DOWN); // Start a move on left mouse, or any other type of pointer. - if (event.pointer_data->kind == mus::mojom::PointerKind::MOUSE && - MouseOnlyEventFlags(event.flags) != - mus::mojom::kEventFlagLeftMouseButton) { + if (event.IsMousePointerEvent() && + MouseOnlyEventFlags(event.flags()) != ui::EF_LEFT_MOUSE_BUTTON) { return nullptr; } @@ -57,23 +50,23 @@ scoped_ptr<MoveLoop> MoveLoop::Create(mus::Window* target, return make_scoped_ptr(new MoveLoop(target, event, type, h_loc, v_loc)); } -MoveLoop::MoveResult MoveLoop::Move(const mus::mojom::Event& event) { - switch (event.action) { - case mus::mojom::EventType::POINTER_CANCEL: - if (event.pointer_data->pointer_id == pointer_id_) { +MoveLoop::MoveResult MoveLoop::Move(const ui::PointerEvent& event) { + switch (event.type()) { + case ui::ET_POINTER_CANCELLED: + if (event.pointer_id() == pointer_id_) { if (target_) Revert(); return MoveResult::DONE; } return MoveResult::CONTINUE; - case mus::mojom::EventType::POINTER_MOVE: - if (target_ && event.pointer_data->pointer_id == pointer_id_) + case ui::ET_POINTER_MOVED: + if (target_ && event.pointer_id() == pointer_id_) MoveImpl(event); return MoveResult::CONTINUE; - case mus::mojom::EventType::POINTER_UP: - if (event.pointer_data->pointer_id == pointer_id_) { + case ui::ET_POINTER_UP: + if (event.pointer_id() == pointer_id_) { // TODO(sky): need to support changed_flags. if (target_) MoveImpl(event); @@ -98,7 +91,7 @@ void MoveLoop::Revert() { } MoveLoop::MoveLoop(mus::Window* target, - const mus::mojom::Event& event, + const ui::PointerEvent& event, Type type, HorizontalLocation h_loc, VerticalLocation v_loc) @@ -106,8 +99,8 @@ MoveLoop::MoveLoop(mus::Window* target, type_(type), h_loc_(h_loc), v_loc_(v_loc), - pointer_id_(event.pointer_data->pointer_id), - initial_event_screen_location_(EventScreenLocationToPoint(event)), + pointer_id_(event.pointer_id()), + initial_event_screen_location_(event.root_location()), initial_window_bounds_(target->bounds()), initial_user_set_bounds_(GetWindowUserSetBounds(target)), changing_bounds_(false) { @@ -168,9 +161,9 @@ bool MoveLoop::DetermineType(int ht_location, return false; } -void MoveLoop::MoveImpl(const mus::mojom::Event& event) { +void MoveLoop::MoveImpl(const ui::PointerEvent& event) { const gfx::Vector2d delta = - EventScreenLocationToPoint(event) - initial_event_screen_location_; + event.root_location() - initial_event_screen_location_; const gfx::Rect new_bounds(DetermineBoundsFromDelta(delta)); base::AutoReset<bool> resetter(&changing_bounds_, true); target_->SetBounds(new_bounds); diff --git a/mash/wm/frame/move_loop.h b/mash/wm/frame/move_loop.h index a44c93a..314592b 100644 --- a/mash/wm/frame/move_loop.h +++ b/mash/wm/frame/move_loop.h @@ -14,6 +14,10 @@ #include "ui/gfx/geometry/point.h" #include "ui/gfx/geometry/rect.h" +namespace ui { +class PointerEvent; +} + namespace mash { namespace wm { @@ -48,10 +52,10 @@ class MoveLoop : public mus::WindowObserver { // HitTestCompat. static scoped_ptr<MoveLoop> Create(mus::Window* target, int ht_location, - const mus::mojom::Event& event); + const ui::PointerEvent& event); // Processes an event for a move/resize loop. - MoveResult Move(const mus::mojom::Event& event); + MoveResult Move(const ui::PointerEvent& event); // If possible reverts any changes made during the move loop. void Revert(); @@ -63,7 +67,7 @@ class MoveLoop : public mus::WindowObserver { }; MoveLoop(mus::Window* target, - const mus::mojom::Event& event, + const ui::PointerEvent& event, Type type, HorizontalLocation h_loc, VerticalLocation v_loc); @@ -76,7 +80,7 @@ class MoveLoop : public mus::WindowObserver { VerticalLocation* v_loc); // Does the actual move/resize. - void MoveImpl(const mus::mojom::Event& event); + void MoveImpl(const ui::PointerEvent& event); // Cancels the loop. This sets |target_| to null and removes the observer. // After this the MoveLoop is still ongoing and won't stop until the diff --git a/mash/wm/frame/move_loop_unittest.cc b/mash/wm/frame/move_loop_unittest.cc index a9ad9b7..4ddaca6 100644 --- a/mash/wm/frame/move_loop_unittest.cc +++ b/mash/wm/frame/move_loop_unittest.cc @@ -20,22 +20,6 @@ using MoveLoopTest = testing::Test; namespace mash { namespace wm { -namespace { - -mus::mojom::EventPtr CreatePointerDownEvent(const gfx::Point& location) { - const ui::TouchEvent event(ui::ET_TOUCH_PRESSED, location, 1, - base::TimeDelta()); - return mus::mojom::Event::From(static_cast<const ui::Event&>(event)); -} - -mus::mojom::EventPtr CreatePointerMove(const gfx::Point& location) { - const ui::TouchEvent event(ui::ET_TOUCH_MOVED, location, 1, - base::TimeDelta()); - return mus::mojom::Event::From(static_cast<const ui::Event&>(event)); -} - -} // namespace - TEST_F(MoveLoopTest, Move) { struct TestData { // One of the HitTestCompat values. @@ -62,13 +46,18 @@ TEST_F(MoveLoopTest, Move) { mus::TestWindow window; window.SetBounds(gfx::Rect(100, 200, 300, 400)); gfx::Point pointer_location(51, 52); + ui::PointerEvent pointer_down_event( + ui::ET_POINTER_DOWN, ui::EventPointerType::POINTER_TYPE_TOUCH, + pointer_location, pointer_location, ui::EF_NONE, 1, base::TimeDelta()); scoped_ptr<MoveLoop> move_loop = - MoveLoop::Create(&window, data[i].ht_location, - *CreatePointerDownEvent(pointer_location)); + MoveLoop::Create(&window, data[i].ht_location, pointer_down_event); ASSERT_TRUE(move_loop.get()) << i; pointer_location.Offset(data[i].delta_x, data[i].delta_y); + ui::PointerEvent pointer_move_event( + ui::ET_POINTER_MOVED, ui::EventPointerType::POINTER_TYPE_TOUCH, + pointer_location, pointer_location, ui::EF_NONE, 1, base::TimeDelta()); ASSERT_EQ(MoveLoop::MoveResult::CONTINUE, - move_loop->Move(*CreatePointerMove(pointer_location))) + move_loop->Move(pointer_move_event)) << i; ASSERT_EQ(data[i].expected_bounds, window.bounds()); } diff --git a/mash/wm/root_window_controller.cc b/mash/wm/root_window_controller.cc index 34ac1a9..ca74674 100644 --- a/mash/wm/root_window_controller.cc +++ b/mash/wm/root_window_controller.cc @@ -82,14 +82,13 @@ mus::WindowManagerClient* RootWindowController::window_manager_client() { return window_manager_->window_manager_client(); } -void RootWindowController::OnAccelerator(uint32_t id, - mus::mojom::EventPtr event) { +void RootWindowController::OnAccelerator(uint32_t id, const ui::Event& event) { switch (id) { case kWindowSwitchAccelerator: window_manager_client()->ActivateNextWindow(); break; default: - app_->OnAccelerator(id, std::move(event)); + app_->OnAccelerator(id, event); break; } } diff --git a/mash/wm/root_window_controller.h b/mash/wm/root_window_controller.h index 5635d44..c64eb31 100644 --- a/mash/wm/root_window_controller.h +++ b/mash/wm/root_window_controller.h @@ -20,6 +20,10 @@ namespace mus { class WindowManagerClient; } +namespace ui { +class Event; +} + namespace mash { namespace wm { @@ -58,7 +62,7 @@ class RootWindowController : public mus::WindowObserver, mus::WindowManagerClient* window_manager_client(); - void OnAccelerator(uint32_t id, mus::mojom::EventPtr event); + void OnAccelerator(uint32_t id, const ui::Event& event); private: explicit RootWindowController(WindowManagerApplication* app); diff --git a/mash/wm/window_manager.cc b/mash/wm/window_manager.cc index 707daa2..d6ff95f 100644 --- a/mash/wm/window_manager.cc +++ b/mash/wm/window_manager.cc @@ -161,7 +161,7 @@ mus::Window* WindowManager::OnWmCreateTopLevelWindow( return NewTopLevelWindow(properties); } -void WindowManager::OnAccelerator(uint32_t id, mus::mojom::EventPtr event) { +void WindowManager::OnAccelerator(uint32_t id, const ui::Event& event) { root_controller_->OnAccelerator(id, std::move(event)); } diff --git a/mash/wm/window_manager.h b/mash/wm/window_manager.h index 1c79976..7542d1b 100644 --- a/mash/wm/window_manager.h +++ b/mash/wm/window_manager.h @@ -53,7 +53,7 @@ class WindowManager : public mus::WindowObserver, scoped_ptr<std::vector<uint8_t>>* new_data) override; mus::Window* OnWmCreateTopLevelWindow( std::map<std::string, std::vector<uint8_t>>* properties) override; - void OnAccelerator(uint32_t id, mus::mojom::EventPtr event) override; + void OnAccelerator(uint32_t id, const ui::Event& event) override; // mash::shell::mojom::ScreenlockStateListener: void ScreenlockStateChanged(bool locked) override; diff --git a/mash/wm/window_manager_application.cc b/mash/wm/window_manager_application.cc index b61dd50..4c1bb66 100644 --- a/mash/wm/window_manager_application.cc +++ b/mash/wm/window_manager_application.cc @@ -14,9 +14,11 @@ #include "mash/wm/root_window_controller.h" #include "mash/wm/root_windows_observer.h" #include "mash/wm/user_window_controller_impl.h" +#include "mojo/converters/input_events/input_events_type_converters.h" #include "mojo/services/tracing/public/cpp/tracing_impl.h" #include "mojo/shell/public/cpp/connection.h" #include "mojo/shell/public/cpp/connector.h" +#include "ui/events/event.h" #include "ui/mojo/init/ui_init.h" #include "ui/views/mus/aura_init.h" #include "ui/views/mus/display_converter.h" @@ -79,10 +81,10 @@ void WindowManagerApplication::OnRootWindowDestroyed( } void WindowManagerApplication::OnAccelerator(uint32_t id, - mus::mojom::EventPtr event) { + const ui::Event& event) { for (auto* registrar : accelerator_registrars_) { if (registrar->OwnsAccelerator(id)) { - registrar->ProcessAccelerator(id, std::move(event)); + registrar->ProcessAccelerator(id, mus::mojom::Event::From(event)); break; } } diff --git a/mash/wm/window_manager_application.h b/mash/wm/window_manager_application.h index c8baa71..67b764e 100644 --- a/mash/wm/window_manager_application.h +++ b/mash/wm/window_manager_application.h @@ -34,6 +34,10 @@ namespace views { class AuraInit; } +namespace ui { +class Event; +} + namespace mash { namespace wm { @@ -70,7 +74,7 @@ class WindowManagerApplication void OnRootWindowDestroyed(RootWindowController* root_controller); // TODO(sky): figure out right place for this code. - void OnAccelerator(uint32_t id, mus::mojom::EventPtr event); + void OnAccelerator(uint32_t id, const ui::Event& event); void AddRootWindowsObserver(RootWindowsObserver* observer); void RemoveRootWindowsObserver(RootWindowsObserver* observer); |