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

Unified Diff: chrome/browser/chromeos/events/event_rewriter.cc

Issue 553243002: Track the active ExtensionKeybindingRegistry and make it available to EventRewriter. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkcr
Patch Set: Created 6 years, 3 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
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);
}
« no previous file with comments | « no previous file | chrome/browser/extensions/extension_keybinding_registry.h » ('j') | chrome/browser/ui/browser_window.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698