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

Unified Diff: chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm

Issue 10824307: Port Extension Commands to Mac. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm
===================================================================
--- chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm (revision 151684)
+++ chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm (working copy)
@@ -15,6 +15,7 @@
#include "chrome/browser/sessions/restore_tab_helper.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_tabstrip.h"
+#include "chrome/browser/ui/browser_window.h"
#import "chrome/browser/ui/cocoa/extensions/browser_action_button.h"
#import "chrome/browser/ui/cocoa/extensions/browser_actions_container_view.h"
#import "chrome/browser/ui/cocoa/extensions/extension_popup_controller.h"
@@ -175,9 +176,13 @@
public ExtensionToolbarModel::Observer {
public:
ExtensionServiceObserverBridge(BrowserActionsController* owner,
- Profile* profile) : owner_(owner) {
+ Browser* browser)
+ : owner_(owner), browser_(browser) {
registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_VIEW_SHOULD_CLOSE,
- content::Source<Profile>(profile));
+ content::Source<Profile>(browser->profile()));
+ registrar_.Add(this,
+ chrome::NOTIFICATION_EXTENSION_COMMAND_BROWSER_ACTION_MAC,
+ content::Source<Profile>(browser->profile()));
}
// Overridden from content::NotificationObserver.
@@ -192,6 +197,25 @@
break;
}
+ case chrome::NOTIFICATION_EXTENSION_COMMAND_BROWSER_ACTION_MAC: {
+ std::pair<const std::string, gfx::NativeWindow>* payload =
+ content::Details<std::pair<const std::string, gfx::NativeWindow> >(
+ details).ptr();
+ std::string extension_id = payload->first;
+ gfx::NativeWindow window = payload->second;
+ if (window != browser_->window()->GetNativeWindow())
+ break;
+ ExtensionService* service = browser_->profile()->GetExtensionService();
+ if (!service)
+ break;
+ const Extension* extension = service->GetExtensionById(extension_id,
+ false);
+ if (!extension)
+ break;
+ BrowserActionButton* button = [owner_ buttonForExtension:extension];
+ [owner_ browserActionClicked:button];
+ break;
+ }
default:
NOTREACHED() << L"Unexpected notification";
}
@@ -212,6 +236,9 @@
// The object we need to inform when we get a notification. Weak. Owns us.
BrowserActionsController* owner_;
+ // The browser we listen for events from. Weak.
+ Browser* browser_;
+
// Used for registering to receive notifications and automatic clean up.
content::NotificationRegistrar registrar_;
@@ -237,7 +264,7 @@
prefs::kBrowserActionContainerWidth))
[BrowserActionsController registerUserPrefs:profile_->GetPrefs()];
- observer_.reset(new ExtensionServiceObserverBridge(self, profile_));
+ observer_.reset(new ExtensionServiceObserverBridge(self, browser_));
ExtensionService* extensionService = profile_->GetExtensionService();
// |extensionService| can be NULL in Incognito.
if (extensionService) {

Powered by Google App Engine
This is Rietveld 408576698