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

Unified Diff: chrome/browser/ui/cocoa/location_bar/page_action_decoration.h

Issue 670463004: Make a platform-independent ToolbarActionViewController (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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/location_bar/page_action_decoration.h
diff --git a/chrome/browser/ui/cocoa/location_bar/page_action_decoration.h b/chrome/browser/ui/cocoa/location_bar/page_action_decoration.h
index 576f8a9d7bbc2b367957608e288c699c15557a4f..732e0475a484c47488b5d1bcbcf321cdf0744ae9 100644
--- a/chrome/browser/ui/cocoa/location_bar/page_action_decoration.h
+++ b/chrome/browser/ui/cocoa/location_bar/page_action_decoration.h
@@ -5,14 +5,16 @@
#ifndef CHROME_BROWSER_UI_COCOA_LOCATION_BAR_PAGE_ACTION_DECORATION_H_
#define CHROME_BROWSER_UI_COCOA_LOCATION_BAR_PAGE_ACTION_DECORATION_H_
-#include "chrome/browser/extensions/extension_action.h"
-#include "chrome/browser/extensions/extension_action_icon_factory.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/strings/string16.h"
#import "chrome/browser/ui/cocoa/location_bar/image_decoration.h"
+#import "chrome/browser/ui/cocoa/toolbar/toolbar_action_view_delegate_cocoa.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
-#include "url/gurl.h"
+class ExtensionAction;
@class ExtensionActionContextMenuController;
+class ExtensionActionViewController;
class Browser;
class LocationBarViewMac;
@@ -28,7 +30,7 @@ class Extension;
// Action and notify the extension when the icon is clicked.
class PageActionDecoration : public ImageDecoration,
- public ExtensionActionIconFactory::Observer,
+ public ToolbarActionViewDelegateCocoa,
public content::NotificationObserver {
public:
PageActionDecoration(LocationBarViewMac* owner,
@@ -36,22 +38,19 @@ class PageActionDecoration : public ImageDecoration,
ExtensionAction* page_action);
~PageActionDecoration() override;
- ExtensionAction* page_action() { return page_action_; }
- int current_tab_id() { return current_tab_id_; }
void set_preview_enabled(bool enabled) { preview_enabled_ = enabled; }
bool preview_enabled() const { return preview_enabled_; }
- // Overridden from |ExtensionActionIconFactory::Observer|.
- void OnIconUpdated() override;
+ // Returns the extension associated with this decoration.
+ const extensions::Extension* GetExtension();
+
+ // Returns the page action associated with this decoration.
+ ExtensionAction* GetPageAction();
// Called to notify the Page Action that it should determine whether
// to be visible or hidden. |contents| is the WebContents that is
// active, |url| is the current page URL.
- void UpdateVisibility(content::WebContents* contents, const GURL& url);
-
- // Sets the tooltip for this Page Action image.
- void SetToolTip(NSString* tooltip);
- void SetToolTip(std::string tooltip);
+ void UpdateVisibility(content::WebContents* contents);
// Overridden from |LocationBarDecoration|
CGFloat GetWidthForSpace(CGFloat width) override;
@@ -67,14 +66,14 @@ class PageActionDecoration : public ImageDecoration,
bool ActivatePageAction(bool grant_active_tab);
private:
- // Activate the page action in the given |frame|.
- bool ActivatePageAction(NSRect frame, bool grant_active_tab);
+ // Sets the tooltip for this Page Action image.
+ void SetToolTip(const base::string16& tooltip);
- // Show the popup in the frame, with the given URL.
- void ShowPopup(const NSRect& frame, const GURL& popup_url);
-
- // Returns the extension associated with the page action.
- const extensions::Extension* GetExtension();
+ // Overridden from ToolbarActionViewDelegateCocoa:
+ ToolbarActionViewController* GetPreferredPopupViewController() override;
+ content::WebContents* GetCurrentWebContents() const override;
+ void UpdateState() override;
+ NSPoint GetPopupPoint() override;
// Overridden from NotificationObserver:
void Observe(int type,
@@ -84,25 +83,8 @@ class PageActionDecoration : public ImageDecoration,
// The location bar view that owns us.
LocationBarViewMac* owner_;
- // The current browser (not owned by us).
- Browser* browser_;
-
- // The Page Action that this view represents. The Page Action is not
- // owned by us, it resides in the extension of this particular
- // profile.
- ExtensionAction* page_action_;
-
- // The object that will be used to get the page action icon for us.
- // It may load the icon asynchronously (in which case the initial icon
- // returned by the factory will be transparent), so we have to observe it for
- // updates to the icon.
- scoped_ptr<ExtensionActionIconFactory> icon_factory_;
-
- // The tab id we are currently showing the icon for.
- int current_tab_id_;
-
- // The URL we are currently showing the icon for.
- GURL current_url_;
+ // The view controller for this page action.
+ scoped_ptr<ExtensionActionViewController> viewController_;
// The string to show for a tooltip.
base::scoped_nsobject<NSString> tooltip_;

Powered by Google App Engine
This is Rietveld 408576698