Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(214)

Side by Side Diff: chrome/browser/ui/cocoa/extensions/extension_action_context_menu_controller.mm

Issue 495723002: Add "Always Run" menu item for script injection requests on Mac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/ui/cocoa/extensions/extension_action_context_menu_contro ller.h" 5 #import "chrome/browser/ui/cocoa/extensions/extension_action_context_menu_contro ller.h"
6 6
7 #include "base/strings/sys_string_conversions.h" 7 #include "base/strings/sys_string_conversions.h"
8 #include "chrome/browser/extensions/active_script_controller.h"
8 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" 9 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
9 #include "chrome/browser/extensions/extension_action_manager.h" 10 #include "chrome/browser/extensions/extension_action_manager.h"
10 #include "chrome/browser/extensions/extension_service.h" 11 #include "chrome/browser/extensions/extension_service.h"
11 #include "chrome/browser/extensions/extension_tab_util.h" 12 #include "chrome/browser/extensions/extension_tab_util.h"
12 #include "chrome/browser/extensions/extension_uninstall_dialog.h" 13 #include "chrome/browser/extensions/extension_uninstall_dialog.h"
13 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/ui/browser.h" 15 #include "chrome/browser/ui/browser.h"
15 #include "chrome/browser/ui/browser_window.h" 16 #include "chrome/browser/ui/browser_window.h"
16 #include "chrome/browser/ui/chrome_pages.h" 17 #include "chrome/browser/ui/chrome_pages.h"
17 #include "chrome/browser/ui/cocoa/browser_window_cocoa.h" 18 #include "chrome/browser/ui/cocoa/browser_window_cocoa.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 // The current profile. Weak. 72 // The current profile. Weak.
72 Profile* profile_; 73 Profile* profile_;
73 74
74 scoped_ptr<extensions::ExtensionUninstallDialog> extension_uninstall_dialog_; 75 scoped_ptr<extensions::ExtensionUninstallDialog> extension_uninstall_dialog_;
75 76
76 DISALLOW_COPY_AND_ASSIGN(AsyncUninstaller); 77 DISALLOW_COPY_AND_ASSIGN(AsyncUninstaller);
77 }; 78 };
78 79
79 @interface ExtensionActionContextMenuController () 80 @interface ExtensionActionContextMenuController ()
80 - (void)onExtensionName:(id)sender; 81 - (void)onExtensionName:(id)sender;
82 - (void)onAlwaysRun:(id)sender;
81 - (void)onOptions:(id)sender; 83 - (void)onOptions:(id)sender;
82 - (void)onUninstall:(id)sender; 84 - (void)onUninstall:(id)sender;
83 - (void)onHide:(id)sender; 85 - (void)onHide:(id)sender;
84 - (void)onManage:(id)sender; 86 - (void)onManage:(id)sender;
85 - (void)onInspect:(id)sender; 87 - (void)onInspect:(id)sender;
86 @end 88 @end
87 89
88 @implementation ExtensionActionContextMenuController 90 @implementation ExtensionActionContextMenuController
89 91
90 - (id)initWithExtension:(const Extension*)extension 92 - (id)initWithExtension:(const Extension*)extension
(...skipping 15 matching lines...) Expand all
106 [menu addItemWithTitle:base::SysUTF8ToNSString(extension_->name()) 108 [menu addItemWithTitle:base::SysUTF8ToNSString(extension_->name())
107 action:@selector(onExtensionName:) 109 action:@selector(onExtensionName:)
108 keyEquivalent:@""]; 110 keyEquivalent:@""];
109 [item setTarget:self]; 111 [item setTarget:self];
110 [item setEnabled:extensions::ManifestURL::GetHomepageURL( 112 [item setEnabled:extensions::ManifestURL::GetHomepageURL(
111 extension_).is_valid()]; 113 extension_).is_valid()];
112 114
113 // Separator. 115 // Separator.
114 [menu addItem:[NSMenuItem separatorItem]]; 116 [menu addItem:[NSMenuItem separatorItem]];
115 117
118 // Always Run. Only displayed if there is an active script injection action.
119 content::WebContents* activeTab =
120 browser_->tab_strip_model()->GetActiveWebContents();
121 if (activeTab &&
122 extensions::ActiveScriptController::GetForWebContents(activeTab)
123 ->HasActiveScriptAction(extension_)) {
124 item = [menu addItemWithTitle:
125 l10n_util::GetNSStringWithFixup(IDS_EXTENSIONS_ALWAYS_RUN)
126 action:@selector(onAlwaysRun:)
127 keyEquivalent:@""];
128 [item setTarget:self];
129 }
130
116 // Options. 131 // Options.
117 item = [menu addItemWithTitle: 132 item = [menu addItemWithTitle:
118 l10n_util::GetNSStringWithFixup(IDS_EXTENSIONS_OPTIONS_MENU_ITEM) 133 l10n_util::GetNSStringWithFixup(IDS_EXTENSIONS_OPTIONS_MENU_ITEM)
119 action:@selector(onOptions:) 134 action:@selector(onOptions:)
120 keyEquivalent:@""]; 135 keyEquivalent:@""];
121 [item setTarget:self]; 136 [item setTarget:self];
122 [item setEnabled:extensions::ManifestURL::GetOptionsPage( 137 [item setEnabled:extensions::ManifestURL::GetOptionsPage(
123 extension_).spec().length() > 0]; 138 extension_).spec().length() > 0];
124 139
125 140
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 GURL url(std::string(extension_urls::kGalleryBrowsePrefix) + 181 GURL url(std::string(extension_urls::kGalleryBrowsePrefix) +
167 std::string("/detail/") + extension_->id()); 182 std::string("/detail/") + extension_->id());
168 OpenURLParams params(url, 183 OpenURLParams params(url,
169 Referrer(), 184 Referrer(),
170 NEW_FOREGROUND_TAB, 185 NEW_FOREGROUND_TAB,
171 content::PAGE_TRANSITION_LINK, 186 content::PAGE_TRANSITION_LINK,
172 false); 187 false);
173 browser_->OpenURL(params); 188 browser_->OpenURL(params);
174 } 189 }
175 190
191 - (void)onAlwaysRun:(id)sender {
192 content::WebContents* activeTab =
193 browser_->tab_strip_model()->GetActiveWebContents();
194 if (activeTab) {
195 extensions::ActiveScriptController::GetForWebContents(activeTab)
196 ->AlwaysRunOnVisibleOrigin(extension_);
197 }
198 }
199
176 - (void)onOptions:(id)sender { 200 - (void)onOptions:(id)sender {
177 DCHECK(!extensions::ManifestURL::GetOptionsPage(extension_).is_empty()); 201 DCHECK(!extensions::ManifestURL::GetOptionsPage(extension_).is_empty());
178 extensions::ExtensionTabUtil::OpenOptionsPage(extension_, browser_); 202 extensions::ExtensionTabUtil::OpenOptionsPage(extension_, browser_);
179 } 203 }
180 204
181 - (void)onUninstall:(id)sender { 205 - (void)onUninstall:(id)sender {
182 uninstaller_.reset(new AsyncUninstaller(extension_, browser_)); 206 uninstaller_.reset(new AsyncUninstaller(extension_, browser_));
183 } 207 }
184 208
185 - (void)onHide:(id)sender { 209 - (void)onHide:(id)sender {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 return; 249 return;
226 250
227 [ExtensionPopupController showURL:url 251 [ExtensionPopupController showURL:url
228 inBrowser:browser_ 252 inBrowser:browser_
229 anchoredAt:popupPoint 253 anchoredAt:popupPoint
230 arrowLocation:info_bubble::kTopRight 254 arrowLocation:info_bubble::kTopRight
231 devMode:YES]; 255 devMode:YES];
232 } 256 }
233 257
234 @end 258 @end
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698