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

Unified Diff: chrome/browser/ui/cocoa/toolbar/toolbar_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: Fix ToolbarActionsBar tests. 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/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);

Powered by Google App Engine
This is Rietveld 408576698