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

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

Issue 1221173003: [Mac] Inform reference counted objects that hold a weak Browser* when the Browser is being destroye… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add HasWeakBrowserPointer protocol. Allow -dealloc without preceding -browserWillBeDestroyed. Created 5 years, 5 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
diff --git a/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm b/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm
index c899d04d9aafa5ba44b534c5867730a158751f6f..23590b7f37bdbfaa1c8370f58cd973008ddb638d 100644
--- a/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm
+++ b/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm
@@ -394,14 +394,22 @@ void ToolbarActionsBarBridge::ShowExtensionMessageBubble(
}
- (void)dealloc {
+ [self browserWillBeDestroyed];
+ [super dealloc];
+}
+
+- (void)browserWillBeDestroyed {
+ [overflowMenu_ setDelegate:nil];
// Explicitly destroy the ToolbarActionsBar so all buttons get removed with a
// valid BrowserActionsController, and so we can verify state before
// destruction.
- toolbarActionsBar_->DeleteActions();
- toolbarActionsBar_.reset();
+ if (toolbarActionsBar_.get()) {
+ toolbarActionsBar_->DeleteActions();
+ toolbarActionsBar_.reset();
+ }
DCHECK_EQ(0u, [buttons_ count]);
[[NSNotificationCenter defaultCenter] removeObserver:self];
- [super dealloc];
+ browser_ = nullptr;
}
- (void)update {

Powered by Google App Engine
This is Rietveld 408576698