diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-26 20:27:17 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-26 20:27:17 +0000 |
commit | d51eb48985356adc40a55d678b14f0c0a5870ffb (patch) | |
tree | e0152ac8fad198468719fc3921087421a4ffdee0 /chrome/browser/views/browser_actions_container.h | |
parent | c6e72c6f1ba7ea524176074b758d1f91a05516a8 (diff) | |
download | chromium_src-d51eb48985356adc40a55d678b14f0c0a5870ffb.zip chromium_src-d51eb48985356adc40a55d678b14f0c0a5870ffb.tar.gz chromium_src-d51eb48985356adc40a55d678b14f0c0a5870ffb.tar.bz2 |
Re-apply r42703 which was reverted because of a conflict with another patch that was being reverted:
TBR=ananta
Views: fix a crash where in the browser actions container.
This crash didn't actually affect linux/views (for some reason the RunContextMenu() call seems to never return).
BUG=38964
TEST=crash an extension while the context menu for it is showing.
original review: http://codereview.chromium.org/1237004/show
Review URL: http://codereview.chromium.org/1449001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42813 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views/browser_actions_container.h')
-rw-r--r-- | chrome/browser/views/browser_actions_container.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/chrome/browser/views/browser_actions_container.h b/chrome/browser/views/browser_actions_container.h index 45cfaf9..de6048c 100644 --- a/chrome/browser/views/browser_actions_container.h +++ b/chrome/browser/views/browser_actions_container.h @@ -50,7 +50,9 @@ class BrowserActionButton : public views::MenuButton, public NotificationObserver { public: BrowserActionButton(Extension* extension, BrowserActionsContainer* panel); - ~BrowserActionButton(); + + // Call this instead of delete. + void Destroy(); ExtensionAction* browser_action() const { return browser_action_; } Extension* extension() { return extension_; } @@ -94,10 +96,12 @@ class BrowserActionButton : public views::MenuButton, // Notifications when to set button state to pushed/not pushed (for when the // popup/context menu is hidden or shown by the container). - virtual void SetButtonPushed(); - virtual void SetButtonNotPushed(); + void SetButtonPushed(); + void SetButtonNotPushed(); private: + virtual ~BrowserActionButton(); + // The browser action this view represents. The ExtensionAction is not owned // by this class. ExtensionAction* browser_action_; @@ -124,6 +128,8 @@ class BrowserActionButton : public views::MenuButton, NotificationRegistrar registrar_; + friend class DeleteTask<BrowserActionButton>; + DISALLOW_COPY_AND_ASSIGN(BrowserActionButton); }; @@ -136,6 +142,8 @@ class BrowserActionButton : public views::MenuButton, class BrowserActionView : public views::View { public: BrowserActionView(Extension* extension, BrowserActionsContainer* panel); + virtual ~BrowserActionView(); + BrowserActionButton* button() { return button_; } // Allocates a canvas object on the heap and draws into it the icon for the |