Chromium Code Reviews| Index: chrome/browser/chromeos/events/event_rewriter.cc |
| diff --git a/chrome/browser/chromeos/events/event_rewriter.cc b/chrome/browser/chromeos/events/event_rewriter.cc |
| index 314a3ecd272cc4987b081631fbc14a31bac25219..b882ff34ad5f5bceea2cec012e10294c8ed36134 100644 |
| --- a/chrome/browser/chromeos/events/event_rewriter.cc |
| +++ b/chrome/browser/chromeos/events/event_rewriter.cc |
| @@ -17,6 +17,9 @@ |
| #include "base/sys_info.h" |
| #include "chrome/browser/chromeos/login/ui/login_display_host_impl.h" |
| #include "chrome/browser/profiles/profile_manager.h" |
| +#include "chrome/browser/ui/browser.h" |
| +#include "chrome/browser/ui/browser_list.h" |
| +#include "chrome/browser/ui/browser_window.h" |
| #include "chrome/common/pref_names.h" |
| #include "chromeos/chromeos_switches.h" |
| #include "chromeos/ime/ime_keyboard.h" |
| @@ -156,6 +159,32 @@ ui::EventRewriteStatus EventRewriter::RewriteEvent( |
| scoped_ptr<ui::Event>* rewritten_event) { |
| if ((event.type() == ui::ET_KEY_PRESSED) || |
| (event.type() == ui::ET_KEY_RELEASED)) { |
| + // Check the extensions system didn't bind any of these keys. |
|
Finnur
2014/09/10 10:15:16
I would do a few things here.
1) Add a helper fun
|
| + const BrowserList* ash_browser_list = |
| + BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_ASH); |
| + for (BrowserList::const_reverse_iterator browser_iterator = |
| + ash_browser_list->begin_last_active(); |
| + browser_iterator != ash_browser_list->end_last_active(); |
| + ++browser_iterator) { |
| + BrowserWindow* window = (*browser_iterator)->window(); |
| + |
| + if (window->IsActive()) { |
| + int modifiers = ui::EF_NONE; |
| + if (event.IsShiftDown()) |
| + modifiers |= ui::EF_SHIFT_DOWN; |
| + if (event.IsControlDown()) |
| + modifiers |= ui::EF_CONTROL_DOWN; |
| + if (event.IsAltDown()) |
| + modifiers |= ui::EF_ALT_DOWN; |
| + if (event.IsCommandDown()) |
| + modifiers |= ui::EF_COMMAND_DOWN; |
| + ui::Accelerator accelerator( |
| + static_cast<const ui::KeyEvent&>(event).key_code(), modifiers); |
| + if (window->IsExtensionCommandRegistered(accelerator)) |
| + return ui::EVENT_REWRITE_CONTINUE; |
| + } |
| + } |
| + |
| return RewriteKeyEvent(static_cast<const ui::KeyEvent&>(event), |
| rewritten_event); |
| } |