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

Unified Diff: services/ui/ws/window_manager_state.h

Issue 2685883003: chromeos: converts observed pointer events to DIPs (Closed)
Patch Set: merge Created 3 years, 10 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
« no previous file with comments | « services/ui/ws/test_utils.cc ('k') | services/ui/ws/window_manager_state.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/ui/ws/window_manager_state.h
diff --git a/services/ui/ws/window_manager_state.h b/services/ui/ws/window_manager_state.h
index 88f09215f749c44bc997ecadc861232d365629da..67a343b533682225d4be403a8927ac0256fdc171 100644
--- a/services/ui/ws/window_manager_state.h
+++ b/services/ui/ws/window_manager_state.h
@@ -92,7 +92,7 @@ class WindowManagerState : public EventDispatcherDelegate,
void Deactivate();
// Processes an event from PlatformDisplay.
- void ProcessEvent(const ui::Event& event);
+ void ProcessEvent(const Event& event, int64_t display_id);
// Called when the ack from an event dispatched to WindowTree |tree| is
// received.
@@ -117,10 +117,10 @@ class WindowManagerState : public EventDispatcherDelegate,
};
struct DebugAccelerator {
- bool Matches(const ui::KeyEvent& event) const;
+ bool Matches(const KeyEvent& event) const;
DebugAcceleratorType type;
- ui::KeyboardCode key_code;
+ KeyboardCode key_code;
int event_flags;
};
@@ -147,8 +147,24 @@ class WindowManagerState : public EventDispatcherDelegate,
QueuedEvent();
~QueuedEvent();
- std::unique_ptr<ui::Event> event;
+ std::unique_ptr<Event> event;
std::unique_ptr<ProcessedEventTarget> processed_target;
+ int64_t display_id;
+ };
+
+ // Tracks state associated with an event being dispatched to a client.
+ struct InFlightEventDetails {
+ InFlightEventDetails(WindowTree* tree,
+ int64_t display_id,
+ const Event& event,
+ EventDispatchPhase phase);
+ ~InFlightEventDetails();
+
+ base::OneShotTimer timer;
+ WindowTree* tree;
+ int64_t display_id;
+ std::unique_ptr<Event> event;
+ EventDispatchPhase phase;
};
const WindowServer* window_server() const;
@@ -178,11 +194,12 @@ class WindowManagerState : public EventDispatcherDelegate,
// Implemenation of processing an event with a match phase of all. This
// handles debug accelerators and forwards to EventDispatcher.
- void ProcessEventImpl(const ui::Event& event);
+ void ProcessEventImpl(const Event& event, int64_t display_id);
// Schedules an event to be processed later.
- void QueueEvent(const ui::Event& event,
- std::unique_ptr<ProcessedEventTarget> processed_event_target);
+ void QueueEvent(const Event& event,
+ std::unique_ptr<ProcessedEventTarget> processed_event_target,
+ int64_t display_id);
// Processes the next valid event in |event_queue_|. If the event has already
// been processed it is dispatched, otherwise the event is passed to the
@@ -192,7 +209,7 @@ class WindowManagerState : public EventDispatcherDelegate,
// Dispatches the event to the appropriate client and starts the ack timer.
void DispatchInputEventToWindowImpl(ServerWindow* target,
ClientSpecificId client_id,
- const ui::Event& event,
+ const Event& event,
base::WeakPtr<Accelerator> accelerator);
// Registers accelerators used internally for debugging.
@@ -200,17 +217,20 @@ class WindowManagerState : public EventDispatcherDelegate,
// Finds the debug accelerator for |event| and if one is found calls
// HandleDebugAccelerator().
- void ProcessDebugAccelerator(const ui::Event& event);
+ void ProcessDebugAccelerator(const Event& event);
// Runs the specified debug accelerator.
void HandleDebugAccelerator(DebugAcceleratorType type);
// Called when waiting for an event or accelerator to be processed by |tree|.
- void ScheduleInputEventTimeout(WindowTree* tree);
+ void ScheduleInputEventTimeout(WindowTree* tree,
+ ServerWindow* target,
+ const Event& event,
+ EventDispatchPhase phase);
// EventDispatcherDelegate:
void OnAccelerator(uint32_t accelerator_id,
- const ui::Event& event,
+ const Event& event,
AcceleratorPhase phase) override;
void SetFocusedWindowFromEventDispatcher(ServerWindow* window) override;
ServerWindow* GetFocusedWindowForEventDispatcher() override;
@@ -222,12 +242,12 @@ class WindowManagerState : public EventDispatcherDelegate,
void OnMouseCursorLocationChanged(const gfx::Point& point) override;
void DispatchInputEventToWindow(ServerWindow* target,
ClientSpecificId client_id,
- const ui::Event& event,
+ const Event& event,
Accelerator* accelerator) override;
ClientSpecificId GetEventTargetClientId(const ServerWindow* window,
bool in_nonclient_area) override;
ServerWindow* GetRootWindowContaining(gfx::Point* location) override;
- void OnEventTargetNotFound(const ui::Event& event) override;
+ void OnEventTargetNotFound(const Event& event) override;
// ServerWindowObserver:
void OnWindowEmbeddedAppDisconnected(ServerWindow* window) override;
@@ -240,17 +260,15 @@ class WindowManagerState : public EventDispatcherDelegate,
bool got_frame_decoration_values_ = false;
mojom::FrameDecorationValuesPtr frame_decoration_values_;
- EventDispatchPhase event_dispatch_phase_ = EventDispatchPhase::NONE;
- // The tree we're waiting to process the current accelerator or event.
- WindowTree* tree_awaiting_input_ack_ = nullptr;
- // The event we're awaiting an accelerator or input ack from.
- std::unique_ptr<ui::Event> event_awaiting_input_ack_;
base::WeakPtr<Accelerator> post_target_accelerator_;
std::queue<std::unique_ptr<QueuedEvent>> event_queue_;
- base::OneShotTimer event_ack_timer_;
std::vector<DebugAccelerator> debug_accelerators_;
+ // If non-null we're actively waiting for a response from a client for an
+ // event.
+ std::unique_ptr<InFlightEventDetails> in_flight_event_details_;
+
EventDispatcher event_dispatcher_;
// PlatformDisplay that currently has capture.
@@ -259,6 +277,9 @@ class WindowManagerState : public EventDispatcherDelegate,
// All the active WindowManagerDisplayRoots.
WindowManagerDisplayRoots window_manager_display_roots_;
+ // Id of the display the current event being processed originated from.
+ int64_t event_processing_display_id_ = 0;
+
// Set of WindowManagerDisplayRoots corresponding to Displays that have been
// destroyed. WindowManagerDisplayRoots are not destroyed immediately when
// the Display is destroyed to allow the client to destroy the window when it
« no previous file with comments | « services/ui/ws/test_utils.cc ('k') | services/ui/ws/window_manager_state.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698