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

Unified Diff: chrome/browser/ui/cocoa/wrench_menu/wrench_menu_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: Address comments. 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/wrench_menu/wrench_menu_controller.mm
diff --git a/chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.mm b/chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.mm
index 0a200cacc02a0785e4c1c050eb07e67fbb95d620..98a7beeb89615768a1d74de1d9f26a3b77fdcb3e 100644
--- a/chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.mm
+++ b/chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.mm
@@ -114,6 +114,24 @@ class ZoomLevelObserver {
return self;
}
+- (void)dealloc {
+ [self browserWillBeDestroyed];
+ [super dealloc];
+}
+
+- (void)browserWillBeDestroyed {
+ // This method indicates imminent destruction. Destroy owned objects that hold
+ // a weak Browser*, or pass this call onto reference counted objects.
+ recentTabsMenuModelDelegate_.reset();
+ [self setModel:nullptr];
+ wrenchMenuModel_.reset();
+ buttonViewController_.reset();
+
+ [browserActionsController_ browserWillBeDestroyed];
+
+ browser_ = nullptr;
+}
+
- (void)addItemToMenu:(NSMenu*)menu
atIndex:(NSInteger)index
fromModel:(ui::MenuModel*)model {
@@ -328,6 +346,7 @@ class ZoomLevelObserver {
}
- (void)createModel {
+ DCHECK(browser_);
recentTabsMenuModelDelegate_.reset();
wrenchMenuModel_.reset(
new WrenchMenuModel(acceleratorDelegate_.get(), browser_));

Powered by Google App Engine
This is Rietveld 408576698