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

Side by Side Diff: chrome/browser/cocoa/extensions/extension_action_context_menu.mm

Issue 3176021: Ensure that a browser action is never passed to a function which expects a page action. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Better fix: don't pass a browser action into a function expecting a page action. Created 10 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 | chrome/browser/cocoa/location_bar/location_bar_view_mac.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/cocoa/extensions/extension_action_context_menu.h" 5 #import "chrome/browser/cocoa/extensions/extension_action_context_menu.h"
6 6
7 #include "app/l10n_util_mac.h" 7 #include "app/l10n_util_mac.h"
8 #include "base/sys_string_conversions.h" 8 #include "base/sys_string_conversions.h"
9 #include "base/task.h" 9 #include "base/task.h"
10 #include "chrome/browser/browser_list.h" 10 #include "chrome/browser/browser_list.h"
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 NEW_FOREGROUND_TAB, PageTransition::LINK); 234 NEW_FOREGROUND_TAB, PageTransition::LINK);
235 break; 235 break;
236 } 236 }
237 case kExtensionContextInspect: { 237 case kExtensionContextInspect: {
238 BrowserWindowCocoa* window = 238 BrowserWindowCocoa* window =
239 static_cast<BrowserWindowCocoa*>(browser->window()); 239 static_cast<BrowserWindowCocoa*>(browser->window());
240 ToolbarController* toolbarController = 240 ToolbarController* toolbarController =
241 [window->cocoa_controller() toolbarController]; 241 [window->cocoa_controller() toolbarController];
242 LocationBarViewMac* locationBarView = 242 LocationBarViewMac* locationBarView =
243 [toolbarController locationBarBridge]; 243 [toolbarController locationBarBridge];
244 NSPoint popupPoint = locationBarView->GetPageActionBubblePoint(action_);
245 244
246 // If there was no matching page action, it was a browser action. 245 NSPoint popupPoint = NSZeroPoint;
247 if (NSEqualPoints(popupPoint, NSZeroPoint)) { 246 if (extension_->page_action() == action_) {
247 popupPoint = locationBarView->GetPageActionBubblePoint(action_);
248
249 } else if (extension_->browser_action() == action_) {
248 BrowserActionsController* controller = 250 BrowserActionsController* controller =
249 [toolbarController browserActionsController]; 251 [toolbarController browserActionsController];
250 popupPoint = [controller popupPointForBrowserAction:extension_]; 252 popupPoint = [controller popupPointForBrowserAction:extension_];
253
254 } else {
255 NOTREACHED() << "action_ is not a page action or browser action?";
251 } 256 }
252 257
253 int tabId = CurrentTabId(); 258 int tabId = CurrentTabId();
254 GURL url = action_->GetPopupUrl(tabId); 259 GURL url = action_->GetPopupUrl(tabId);
255 DCHECK(url.is_valid()); 260 DCHECK(url.is_valid());
256 [ExtensionPopupController showURL:url 261 [ExtensionPopupController showURL:url
257 inBrowser:BrowserList::GetLastActive() 262 inBrowser:BrowserList::GetLastActive()
258 anchoredAt:popupPoint 263 anchoredAt:popupPoint
259 arrowLocation:info_bubble::kTopRight 264 arrowLocation:info_bubble::kTopRight
260 devMode:YES]; 265 devMode:YES];
261 break; 266 break;
262 } 267 }
263 default: 268 default:
264 NOTREACHED(); 269 NOTREACHED();
265 break; 270 break;
266 } 271 }
267 } 272 }
268 273
269 - (BOOL)validateMenuItem:(NSMenuItem*)menuItem { 274 - (BOOL)validateMenuItem:(NSMenuItem*)menuItem {
270 if([menuItem isEqualTo:inspectorItem_.get()]) { 275 if([menuItem isEqualTo:inspectorItem_.get()]) {
271 return action_ && action_->HasPopup(CurrentTabId()); 276 return action_ && action_->HasPopup(CurrentTabId());
272 } 277 }
273 return YES; 278 return YES;
274 } 279 }
275 280
276 @end 281 @end
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/cocoa/location_bar/location_bar_view_mac.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698