Index: chrome/browser/ui/views/frame/browser_view.cc |
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc |
index 964b105ed132d8c139ee7a6f9b5b61ed75183aa1..e2ca9513301eb64b3df7736b8cc94ba86a464700 100644 |
--- a/chrome/browser/ui/views/frame/browser_view.cc |
+++ b/chrome/browser/ui/views/frame/browser_view.cc |
@@ -68,6 +68,7 @@ |
#include "chrome/browser/ui/views/download/download_shelf_view.h" |
#include "chrome/browser/ui/views/exclusive_access_bubble_views.h" |
#include "chrome/browser/ui/views/extensions/bookmark_app_bubble_view.h" |
+#include "chrome/browser/ui/views/extensions/extension_keybinding_registry_views.h" |
#include "chrome/browser/ui/views/frame/browser_view_layout.h" |
#include "chrome/browser/ui/views/frame/browser_view_layout_delegate.h" |
#include "chrome/browser/ui/views/frame/contents_layout_manager.h" |
@@ -98,6 +99,7 @@ |
#include "chrome/browser/ui/website_settings/permission_bubble_manager.h" |
#include "chrome/browser/ui/window_sizer/window_sizer.h" |
#include "chrome/common/chrome_switches.h" |
+#include "chrome/common/extensions/command.h" |
#include "chrome/common/pref_names.h" |
#include "chrome/common/url_constants.h" |
#include "chrome/grit/chromium_strings.h" |
@@ -1123,8 +1125,11 @@ void BrowserView::SetFocusToLocationBar(bool select_all) { |
} |
void BrowserView::UpdateReloadStopState(bool is_loading, bool force) { |
- toolbar_->reload_button()->ChangeMode( |
- is_loading ? ReloadButton::MODE_STOP : ReloadButton::MODE_RELOAD, force); |
+ if (toolbar_->reload_button()) { |
+ toolbar_->reload_button()->ChangeMode( |
+ is_loading ? ReloadButton::MODE_STOP : ReloadButton::MODE_RELOAD, |
+ force); |
+ } |
} |
void BrowserView::UpdateToolbar(content::WebContents* contents) { |
@@ -1870,6 +1875,23 @@ void BrowserView::OnWidgetActivationChanged(views::Widget* widget, |
bool active) { |
if (active) |
BrowserList::SetLastActive(browser_.get()); |
+ |
+ if (!extension_keybinding_registry_ && |
+ GetFocusManager()) { // focus manager can be null in tests. |
+ extension_keybinding_registry_.reset(new ExtensionKeybindingRegistryViews( |
+ browser_->profile(), GetFocusManager(), |
+ extensions::ExtensionKeybindingRegistry::ALL_EXTENSIONS, this)); |
+ } |
+ |
+ extensions::ExtensionCommandsGlobalRegistry* registry = |
+ extensions::ExtensionCommandsGlobalRegistry::Get(browser_->profile()); |
+ if (active) { |
+ registry->set_registry_for_active_window( |
+ extension_keybinding_registry_.get()); |
+ } else if (registry->registry_for_active_window() == |
+ extension_keybinding_registry_.get()) { |
+ registry->set_registry_for_active_window(nullptr); |
+ } |
} |
void BrowserView::OnWindowBeginUserBoundsChange() { |
@@ -2633,7 +2655,8 @@ int BrowserView::GetRenderViewHeightInsetWithDetachedBookmarkBar() { |
void BrowserView::ExecuteExtensionCommand( |
const extensions::Extension* extension, |
const extensions::Command& command) { |
- toolbar_->ExecuteExtensionCommand(extension, command); |
+ extension_keybinding_registry_->ExecuteCommand(extension->id(), |
+ command.accelerator()); |
} |
ExclusiveAccessContext* BrowserView::GetExclusiveAccessContext() { |
@@ -2725,3 +2748,12 @@ views::Widget* BrowserView::GetBubbleAssociatedWidget() { |
gfx::Rect BrowserView::GetTopContainerBoundsInScreen() { |
return top_container_->GetBoundsInScreen(); |
} |
+ |
+extensions::ActiveTabPermissionGranter* |
+BrowserView::GetActiveTabPermissionGranter() { |
+ content::WebContents* web_contents = GetActiveWebContents(); |
+ if (!web_contents) |
+ return nullptr; |
+ return extensions::TabHelper::FromWebContents(web_contents) |
+ ->active_tab_permission_granter(); |
+} |