Index: services/ui/ws/window_manager_state.cc |
diff --git a/services/ui/ws/window_manager_state.cc b/services/ui/ws/window_manager_state.cc |
index d9b9ed52c760fc9feb2932ce2b94462aeabe3a55..4b03ed4f4499ea14526285a6db1e2258660cc1af 100644 |
--- a/services/ui/ws/window_manager_state.cc |
+++ b/services/ui/ws/window_manager_state.cc |
@@ -298,7 +298,9 @@ void WindowManagerState::OnEventAck(mojom::WindowTree* tree, |
ProcessNextEventFromQueue(); |
} |
-void WindowManagerState::OnAcceleratorAck(mojom::EventResult result) { |
+void WindowManagerState::OnAcceleratorAck( |
+ mojom::EventResult result, |
+ const std::unordered_map<std::string, std::vector<uint8_t>>& properties) { |
if (!in_flight_event_details_ || |
in_flight_event_details_->phase != |
EventDispatchPhase::PRE_TARGET_ACCELERATOR) { |
@@ -311,6 +313,9 @@ void WindowManagerState::OnAcceleratorAck(mojom::EventResult result) { |
std::move(in_flight_event_details_); |
if (result == mojom::EventResult::UNHANDLED) { |
+ DCHECK(details->event->IsKeyEvent()); |
+ if (!properties.empty()) |
+ details->event->AsKeyEvent()->SetProperties(properties); |
event_processing_display_id_ = details->display_id; |
event_dispatcher_.ProcessEvent( |
*details->event, EventDispatcher::AcceleratorMatchPhase::POST_ONLY); |
@@ -381,7 +386,7 @@ void WindowManagerState::OnEventAckTimeout(ClientSpecificId client_id) { |
window_tree_->ClientJankinessChanged(hung_tree); |
if (in_flight_event_details_->phase == |
EventDispatchPhase::PRE_TARGET_ACCELERATOR) { |
- OnAcceleratorAck(mojom::EventResult::UNHANDLED); |
+ OnAcceleratorAck(mojom::EventResult::UNHANDLED, KeyEvent::Properties()); |
} else { |
OnEventAck( |
in_flight_event_details_ ? in_flight_event_details_->tree : nullptr, |