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

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

Issue 161293002: mac: Allows extensions to hide the bookmark page menu item. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Make sure changes only apply to OSX. Created 6 years, 10 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/browser_actions_controller.h" 5 #import "chrome/browser/ui/cocoa/extensions/browser_actions_controller.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 #include <string> 8 #include <string>
9 9
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 break; 205 break;
206 } 206 }
207 case chrome::NOTIFICATION_EXTENSION_COMMAND_BROWSER_ACTION_MAC: { 207 case chrome::NOTIFICATION_EXTENSION_COMMAND_BROWSER_ACTION_MAC: {
208 std::pair<const std::string, gfx::NativeWindow>* payload = 208 std::pair<const std::string, gfx::NativeWindow>* payload =
209 content::Details<std::pair<const std::string, gfx::NativeWindow> >( 209 content::Details<std::pair<const std::string, gfx::NativeWindow> >(
210 details).ptr(); 210 details).ptr();
211 std::string extension_id = payload->first; 211 std::string extension_id = payload->first;
212 gfx::NativeWindow window = payload->second; 212 gfx::NativeWindow window = payload->second;
213 if (window != browser_->window()->GetNativeWindow()) 213 if (window != browser_->window()->GetNativeWindow())
214 break; 214 break;
215 ExtensionService* service = browser_->profile()->GetExtensionService(); 215 [owner_ activateBrowserAction:extension_id];
216 if (!service)
217 break;
218 const Extension* extension = service->GetExtensionById(extension_id,
219 false);
220 if (!extension)
221 break;
222 BrowserActionButton* button = [owner_ buttonForExtension:extension];
223 // |button| can be nil when the browser action has its button hidden.
224 if (button)
225 [owner_ browserActionClicked:button];
226 break; 216 break;
227 } 217 }
228 default: 218 default:
229 NOTREACHED() << L"Unexpected notification"; 219 NOTREACHED() << L"Unexpected notification";
230 } 220 }
231 } 221 }
232 222
233 // ExtensionToolbarModel::Observer implementation. 223 // ExtensionToolbarModel::Observer implementation.
234 virtual void BrowserActionAdded( 224 virtual void BrowserActionAdded(
235 const Extension* extension, 225 const Extension* extension,
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 if (effect == NSViewAnimationFadeInEffect) { 435 if (effect == NSViewAnimationFadeInEffect) {
446 return NO; 436 return NO;
447 } else if (effect == NSViewAnimationFadeOutEffect) { 437 } else if (effect == NSViewAnimationFadeOutEffect) {
448 return YES; 438 return YES;
449 } 439 }
450 440
451 NOTREACHED(); 441 NOTREACHED();
452 return YES; 442 return YES;
453 } 443 }
454 444
445 - (void)activateBrowserAction:(const std::string&)extension_id {
446 ExtensionService* service = browser_->profile()->GetExtensionService();
447 if (!service)
448 return;
449
450 const Extension* extension = service->GetExtensionById(extension_id, false);
451 if (!extension)
452 return;
453
454 BrowserActionButton* button = [self buttonForExtension:extension];
455 // |button| can be nil when the browser action has its button hidden.
456 if (button)
457 [self browserActionClicked:button];
458 }
459
455 #pragma mark - 460 #pragma mark -
456 #pragma mark NSMenuDelegate 461 #pragma mark NSMenuDelegate
457 462
458 - (void)menuNeedsUpdate:(NSMenu*)menu { 463 - (void)menuNeedsUpdate:(NSMenu*)menu {
459 [menu removeAllItems]; 464 [menu removeAllItems];
460 465
461 // See menu_button.h for documentation on why this is needed. 466 // See menu_button.h for documentation on why this is needed.
462 [menu addItemWithTitle:@"" action:nil keyEquivalent:@""]; 467 [menu addItemWithTitle:@"" action:nil keyEquivalent:@""];
463 468
464 for (BrowserActionButton* button in hiddenButtons_.get()) { 469 for (BrowserActionButton* button in hiddenButtons_.get()) {
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
882 const extensions::ExtensionList& toolbar_items = 887 const extensions::ExtensionList& toolbar_items =
883 toolbarModel_->toolbar_items(); 888 toolbarModel_->toolbar_items();
884 if (index < toolbar_items.size()) { 889 if (index < toolbar_items.size()) {
885 const Extension* extension = toolbar_items[index].get(); 890 const Extension* extension = toolbar_items[index].get();
886 return [buttons_ objectForKey:base::SysUTF8ToNSString(extension->id())]; 891 return [buttons_ objectForKey:base::SysUTF8ToNSString(extension->id())];
887 } 892 }
888 return nil; 893 return nil;
889 } 894 }
890 895
891 @end 896 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698