Index: chrome/browser/ui/views/extensions/extension_keybinding_registry_views.cc |
diff --git a/chrome/browser/ui/views/extensions/extension_keybinding_registry_views.cc b/chrome/browser/ui/views/extensions/extension_keybinding_registry_views.cc |
index 1531847118ccc1914d64dc2bafac94b97d16b4ba..be3117375f27165d10b6be153ef9745a0312a568 100644 |
--- a/chrome/browser/ui/views/extensions/extension_keybinding_registry_views.cc |
+++ b/chrome/browser/ui/views/extensions/extension_keybinding_registry_views.cc |
@@ -11,12 +11,56 @@ |
#include "chrome/common/extensions/extension.h" |
#include "ui/views/focus/focus_manager.h" |
+#if defined(USE_ASH) |
+#include "ash/accelerators/accelerator_table.h" |
+#endif // USE_ASH |
+ |
+#if defined(USE_AURA) |
+#include "chrome/browser/ui/views/accelerator_table.h" |
+#elif defined(OS_WIN) |
+#include "chrome/browser/ui/browser_finder.h" |
+#include "chrome/browser/ui/views/frame/browser_view.h" |
+#endif // USE_AURA |
+ |
// static |
void extensions::ExtensionKeybindingRegistry::SetShortcutHandlingSuspended( |
bool suspended) { |
views::FocusManager::set_shortcut_handling_suspended(suspended); |
} |
+// static |
+bool extensions::ExtensionKeybindingRegistry::IsChromeAccelerator( |
+ const ui::Accelerator& accelerator, Profile* profile) { |
+#if defined(USE_ASH) |
+ for (size_t i = 0; i < ash::kAcceleratorDataLength; ++i) { |
+ const ash::AcceleratorData& accel_data = ash::kAcceleratorData[i]; |
+ if (accel_data.keycode == accelerator.key_code() && |
+ accel_data.modifiers == accelerator.modifiers()) { |
+ return true; |
+ } |
+ } |
+#endif // USE_ASH |
+ |
+#if defined(USE_AURA) |
+ std::vector<chrome::AcceleratorMapping> accelerators = |
+ chrome::GetAcceleratorList(); |
+ for (std::vector<chrome::AcceleratorMapping>::const_iterator it = |
+ accelerators.begin(); it != accelerators.end(); ++it) { |
+ if (it->keycode == accelerator.key_code() && |
+ it->modifiers == accelerator.modifiers()) |
+ return true; |
+ } |
+#elif defined(OS_WIN) |
+ Browser* browser = chrome::FindLastActiveWithProfile( |
sky
2013/04/10 15:34:31
You need to NULL check this.
|
+ profile, chrome::HOST_DESKTOP_TYPE_NATIVE); |
+ BrowserView* browser_view = BrowserView::GetBrowserViewForNativeWindow( |
+ browser->window()->GetNativeWindow()); |
+ return browser_view->IsAcceleratorRegistered(accelerator); |
+#endif // USE_AURA |
+ |
+ return false; |
+} |
+ |
ExtensionKeybindingRegistryViews::ExtensionKeybindingRegistryViews( |
Profile* profile, |
views::FocusManager* focus_manager, |