Index: ui/wm/core/accelerator_filter.cc |
diff --git a/ui/wm/core/accelerator_filter.cc b/ui/wm/core/accelerator_filter.cc |
index 7993cd74a00a9ed518d51890bc4bce51b3f15939..50102622de68355cb4774029c826efc0049219f9 100644 |
--- a/ui/wm/core/accelerator_filter.cc |
+++ b/ui/wm/core/accelerator_filter.cc |
@@ -52,10 +52,10 @@ AcceleratorFilter::~AcceleratorFilter() { |
void AcceleratorFilter::OnKeyEvent(ui::KeyEvent* event) { |
const ui::EventType type = event->type(); |
- if (type != ui::ET_KEY_PRESSED && type != ui::ET_KEY_RELEASED) |
- return; |
- if (event->is_char()) |
+ if ((type != ui::ET_KEY_PRESSED && type != ui::ET_KEY_RELEASED) || |
+ event->is_char()) { |
return; |
+ } |
ui::Accelerator accelerator(event->key_code(), |
event->flags() & kModifierFlagMask); |
@@ -63,22 +63,11 @@ void AcceleratorFilter::OnKeyEvent(ui::KeyEvent* event) { |
delegate_->PreProcessAccelerator(accelerator); |
- // Handle special hardware keys like brightness and volume. However, some |
- // windows can override this behavior (e.g. Chrome v1 apps by default and |
- // Chrome v2 apps with permission) by setting a window property. |
- if (IsSystemKey(event->key_code()) && |
- !delegate_->CanConsumeSystemKeys(*event)) { |
- delegate_->ProcessAccelerator(accelerator); |
- // These keys are always consumed regardless of whether they trigger an |
- // accelerator to prevent windows from seeing unexpected key up events. |
- event->StopPropagation(); |
- return; |
- } |
- |
- if (!delegate_->ShouldProcessAcceleratorNow(*event, accelerator)) |
- return; |
+ AcceleratorDelegate::KeyType key_type = |
+ IsSystemKey(event->key_code()) ? AcceleratorDelegate::KEY_TYPE_SYSTEM |
+ : AcceleratorDelegate::KEY_TYPE_OTHER; |
- if (delegate_->ProcessAccelerator(accelerator)) |
+ if (delegate_->ProcessAccelerator(*event, accelerator, key_type)) |
event->StopPropagation(); |
} |