diff options
author | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-26 07:39:12 +0000 |
---|---|---|
committer | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-26 07:39:12 +0000 |
commit | 5df6a5d0f551a7c277e1a908bb32957634a811f7 (patch) | |
tree | 76ae750b5e93ffeff6307584c58ae1f825634b18 /chrome/browser/ui | |
parent | 97e539fdea1592b638834cedcec95f72de4c1de5 (diff) | |
download | chromium_src-5df6a5d0f551a7c277e1a908bb32957634a811f7.zip chromium_src-5df6a5d0f551a7c277e1a908bb32957634a811f7.tar.gz chromium_src-5df6a5d0f551a7c277e1a908bb32957634a811f7.tar.bz2 |
Disable context menu for page_action and infobar for component extensions.
BUG=chromium-os:6923
TEST=manual
Review URL: http://codereview.chromium.org/6354021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72618 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui')
6 files changed, 35 insertions, 12 deletions
diff --git a/chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc b/chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc index 0a0a940..f2f6020 100644 --- a/chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc +++ b/chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc @@ -202,6 +202,9 @@ class BrowserActionButton : public NotificationObserver, } MenuGtk* GetContextMenu() { + if (!extension_->ShowConfigureContextMenus()) + return NULL; + context_menu_model_ = new ExtensionContextMenuModel(extension_, toolbar_->browser(), this); context_menu_.reset( @@ -268,8 +271,12 @@ class BrowserActionButton : public NotificationObserver, if (event->button.button != 3) return FALSE; + MenuGtk* menu = action->GetContextMenu(); + if (!menu) + return FALSE; + action->button_->SetPaintOverride(GTK_STATE_ACTIVE); - action->GetContextMenu()->Popup(widget, event); + menu->Popup(widget, event); return TRUE; } @@ -939,7 +946,11 @@ gboolean BrowserActionsToolbarGtk::OnOverflowMenuButtonPress( return FALSE; } - it->second.get()->GetContextMenu()->PopupAsContext(event->time); + MenuGtk* menu = it->second.get()->GetContextMenu(); + if (!menu) + return FALSE; + + menu->PopupAsContext(event->time); return TRUE; } diff --git a/chrome/browser/ui/gtk/location_bar_view_gtk.cc b/chrome/browser/ui/gtk/location_bar_view_gtk.cc index 076b67e..6b600d4 100644 --- a/chrome/browser/ui/gtk/location_bar_view_gtk.cc +++ b/chrome/browser/ui/gtk/location_bar_view_gtk.cc @@ -1519,11 +1519,13 @@ gboolean LocationBarViewGtk::PageActionViewGtk::OnButtonPressed( const Extension* extension = profile_->GetExtensionService()-> GetExtensionById(page_action()->extension_id(), false); - context_menu_model_ = - new ExtensionContextMenuModel(extension, owner_->browser_, this); - context_menu_.reset( - new MenuGtk(NULL, context_menu_model_.get())); - context_menu_->Popup(sender, event); + if (extension->ShowConfigureContextMenus()) { + context_menu_model_ = + new ExtensionContextMenuModel(extension, owner_->browser_, this); + context_menu_.reset( + new MenuGtk(NULL, context_menu_model_.get())); + context_menu_->Popup(sender, event); + } } return TRUE; diff --git a/chrome/browser/ui/views/browser_actions_container.cc b/chrome/browser/ui/views/browser_actions_container.cc index 61024de..f99babf 100644 --- a/chrome/browser/ui/views/browser_actions_container.cc +++ b/chrome/browser/ui/views/browser_actions_container.cc @@ -251,9 +251,7 @@ void BrowserActionButton::OnMouseExited(const views::MouseEvent& e) { void BrowserActionButton::ShowContextMenu(const gfx::Point& p, bool is_mouse_gesture) { - // There is nothing in context menu that has sense to show for - // component extensions so just ignore the request. - if (extension()->location() == Extension::COMPONENT) + if (!extension()->ShowConfigureContextMenus()) return; showing_context_menu_ = true; diff --git a/chrome/browser/ui/views/extensions/browser_action_overflow_menu_controller.cc b/chrome/browser/ui/views/extensions/browser_action_overflow_menu_controller.cc index 7972aa1..6dae095 100644 --- a/chrome/browser/ui/views/extensions/browser_action_overflow_menu_controller.cc +++ b/chrome/browser/ui/views/extensions/browser_action_overflow_menu_controller.cc @@ -93,8 +93,13 @@ bool BrowserActionOverflowMenuController::ShowContextMenu( int id, const gfx::Point& p, bool is_mouse_gesture) { + const Extension* extension = + (*views_)[start_index_ + id - 1]->button()->extension(); + if (!extension->ShowConfigureContextMenus()) + return false; + context_menu_contents_ = new ExtensionContextMenuModel( - (*views_)[start_index_ + id - 1]->button()->extension(), + extension, owner_->browser(), owner_); context_menu_menu_.reset(new views::Menu2(context_menu_contents_.get())); diff --git a/chrome/browser/ui/views/infobars/extension_infobar.cc b/chrome/browser/ui/views/infobars/extension_infobar.cc index a48ee2d..b314603 100644 --- a/chrome/browser/ui/views/infobars/extension_infobar.cc +++ b/chrome/browser/ui/views/infobars/extension_infobar.cc @@ -147,12 +147,16 @@ void ExtensionInfoBar::OnDelegateDeleted() { } void ExtensionInfoBar::RunMenu(View* source, const gfx::Point& pt) { + const Extension* extension = delegate_->extension_host()->extension(); + if (!extension->ShowConfigureContextMenus()) + return; + if (!options_menu_contents_.get()) { Browser* browser = BrowserView::GetBrowserViewForNativeWindow( platform_util::GetTopLevel(source->GetWidget()->GetNativeView()))-> browser(); options_menu_contents_ = new ExtensionContextMenuModel( - delegate_->extension_host()->extension(), browser, NULL); + extension, browser, NULL); } options_menu_menu_.reset(new views::Menu2(options_menu_contents_.get())); diff --git a/chrome/browser/ui/views/location_bar/page_action_image_view.cc b/chrome/browser/ui/views/location_bar/page_action_image_view.cc index 20a0953..86e2f4b 100644 --- a/chrome/browser/ui/views/location_bar/page_action_image_view.cc +++ b/chrome/browser/ui/views/location_bar/page_action_image_view.cc @@ -152,6 +152,9 @@ void PageActionImageView::ShowContextMenu(const gfx::Point& p, bool is_mouse_gesture) { const Extension* extension = profile_->GetExtensionService()-> GetExtensionById(page_action()->extension_id(), false); + if (!extension->ShowConfigureContextMenus()) + return; + Browser* browser = BrowserView::GetBrowserViewForNativeWindow( platform_util::GetTopLevel(GetWidget()->GetNativeView()))->browser(); context_menu_contents_ = |