summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/browser_actions_container.h
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-26 20:27:17 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-26 20:27:17 +0000
commitd51eb48985356adc40a55d678b14f0c0a5870ffb (patch)
treee0152ac8fad198468719fc3921087421a4ffdee0 /chrome/browser/views/browser_actions_container.h
parentc6e72c6f1ba7ea524176074b758d1f91a05516a8 (diff)
downloadchromium_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.h14
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