Chromium Code Reviews| 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, |