Index: chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm |
diff --git a/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm b/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm |
index 1a1c45512c99171b9a24d884945b9ed838aaf90e..bd79d98b74c8be13097c48ef13045cab61e3f4f3 100644 |
--- a/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm |
+++ b/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm |
@@ -214,7 +214,6 @@ class NotificationBridge : public WrenchMenuBadgeController::Delegate { |
commands_ = commands; |
profile_ = profile; |
browser_ = browser; |
- resizeDelegate_ = resizeDelegate; |
hasToolbar_ = YES; |
hasLocationBar_ = YES; |
@@ -247,30 +246,6 @@ class NotificationBridge : public WrenchMenuBadgeController::Delegate { |
return self; |
} |
- |
-- (void)dealloc { |
- browserActionsContainerDelegate_.reset(); |
- |
- // Unset ViewIDs of toolbar elements. |
- // ViewIDs of |toolbarView|, |reloadButton_|, |locationBar_| and |
- // |browserActionsContainerView_| are handled by themselves. |
- view_id_util::UnsetID(backButton_); |
- view_id_util::UnsetID(forwardButton_); |
- view_id_util::UnsetID(homeButton_); |
- view_id_util::UnsetID(wrenchButton_); |
- |
- // Make sure any code in the base class which assumes [self view] is |
- // the "parent" view continues to work. |
- hasToolbar_ = YES; |
- hasLocationBar_ = YES; |
- |
- [[NSNotificationCenter defaultCenter] removeObserver:self]; |
- |
- if (trackingArea_.get()) |
- [[self view] removeTrackingArea:trackingArea_.get()]; |
- [super dealloc]; |
-} |
- |
// Called after the view is done loading and the outlets have been hooked up. |
// Now we can hook up bridges that rely on UI objects such as the location |
// bar and button state. |
@@ -398,6 +373,37 @@ class NotificationBridge : public WrenchMenuBadgeController::Delegate { |
[self addAccessibilityDescriptions]; |
} |
+- (void)browserWillBeDestroyed { |
+ // This method indicates imminent destruction. Destroy owned objects that hold |
+ // a weak Browser*, or pass this call onto reference counted objects. |
+ locationBarView_.reset(); |
+ [backMenuController_ browserWillBeDestroyed]; |
+ [forwardMenuController_ browserWillBeDestroyed]; |
+ [browserActionsController_ browserWillBeDestroyed]; |
+ [wrenchMenuController_ browserWillBeDestroyed]; |
+ browserActionsContainerDelegate_.reset(); |
+ |
+ // Unset ViewIDs of toolbar elements. |
+ // ViewIDs of |toolbarView|, |reloadButton_|, |locationBar_| and |
+ // |browserActionsContainerView_| are handled by themselves. |
+ view_id_util::UnsetID(backButton_); |
+ view_id_util::UnsetID(forwardButton_); |
+ view_id_util::UnsetID(homeButton_); |
+ view_id_util::UnsetID(wrenchButton_); |
+ |
+ // Make sure any code in the base class which assumes [self view] is |
+ // the "parent" view continues to work. |
+ hasToolbar_ = YES; |
+ hasLocationBar_ = YES; |
+ |
+ [[NSNotificationCenter defaultCenter] removeObserver:self]; |
+ |
+ if (trackingArea_.get()) |
+ [[self view] removeTrackingArea:trackingArea_.get()]; |
+ |
+ browser_ = nullptr; |
+} |
+ |
- (void)addAccessibilityDescriptions { |
// Set accessibility descriptions. http://openradar.appspot.com/7496255 |
NSString* description = l10n_util::GetNSStringWithFixup(IDS_ACCNAME_BACK); |