| Index: chrome/browser/ui/cocoa/extensions/extension_action_context_menu_controller.mm
|
| diff --git a/chrome/browser/ui/cocoa/extensions/extension_action_context_menu_controller.mm b/chrome/browser/ui/cocoa/extensions/extension_action_context_menu_controller.mm
|
| index 0c2c7de66ed1f0fc0fa2b7304a83b89596148499..38a75222735568db2877516ea3e2f436bbbf5a61 100644
|
| --- a/chrome/browser/ui/cocoa/extensions/extension_action_context_menu_controller.mm
|
| +++ b/chrome/browser/ui/cocoa/extensions/extension_action_context_menu_controller.mm
|
| @@ -5,6 +5,7 @@
|
| #import "chrome/browser/ui/cocoa/extensions/extension_action_context_menu_controller.h"
|
|
|
| #include "base/strings/sys_string_conversions.h"
|
| +#include "chrome/browser/extensions/active_script_controller.h"
|
| #include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
|
| #include "chrome/browser/extensions/extension_action_manager.h"
|
| #include "chrome/browser/extensions/extension_service.h"
|
| @@ -78,6 +79,7 @@ class AsyncUninstaller : public extensions::ExtensionUninstallDialog::Delegate {
|
|
|
| @interface ExtensionActionContextMenuController ()
|
| - (void)onExtensionName:(id)sender;
|
| +- (void)onAlwaysRun:(id)sender;
|
| - (void)onOptions:(id)sender;
|
| - (void)onUninstall:(id)sender;
|
| - (void)onHide:(id)sender;
|
| @@ -113,6 +115,19 @@ class AsyncUninstaller : public extensions::ExtensionUninstallDialog::Delegate {
|
| // Separator.
|
| [menu addItem:[NSMenuItem separatorItem]];
|
|
|
| + // Always Run. Only displayed if there is an active script injection action.
|
| + content::WebContents* activeTab =
|
| + browser_->tab_strip_model()->GetActiveWebContents();
|
| + if (activeTab &&
|
| + extensions::ActiveScriptController::GetForWebContents(activeTab)
|
| + ->HasActiveScriptAction(extension_)) {
|
| + item = [menu addItemWithTitle:
|
| + l10n_util::GetNSStringWithFixup(IDS_EXTENSIONS_ALWAYS_RUN)
|
| + action:@selector(onAlwaysRun:)
|
| + keyEquivalent:@""];
|
| + [item setTarget:self];
|
| + }
|
| +
|
| // Options.
|
| item = [menu addItemWithTitle:
|
| l10n_util::GetNSStringWithFixup(IDS_EXTENSIONS_OPTIONS_MENU_ITEM)
|
| @@ -173,6 +188,15 @@ class AsyncUninstaller : public extensions::ExtensionUninstallDialog::Delegate {
|
| browser_->OpenURL(params);
|
| }
|
|
|
| +- (void)onAlwaysRun:(id)sender {
|
| + content::WebContents* activeTab =
|
| + browser_->tab_strip_model()->GetActiveWebContents();
|
| + if (activeTab) {
|
| + extensions::ActiveScriptController::GetForWebContents(activeTab)
|
| + ->AlwaysRunOnVisibleOrigin(extension_);
|
| + }
|
| +}
|
| +
|
| - (void)onOptions:(id)sender {
|
| DCHECK(!extensions::ManifestURL::GetOptionsPage(extension_).is_empty());
|
| extensions::ExtensionTabUtil::OpenOptionsPage(extension_, browser_);
|
|
|