| 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_;
 | 
| 
 |