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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/ui/cocoa/extensions/browser_actions_controller.h" 5 #import "chrome/browser/ui/cocoa/extensions/browser_actions_controller.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/strings/sys_string_conversions.h" 9 #include "base/strings/sys_string_conversions.h"
10 #include "chrome/browser/extensions/extension_message_bubble_controller.h" 10 #include "chrome/browser/extensions/extension_message_bubble_controller.h"
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 object:containerView_]; 387 object:containerView_];
388 } 388 }
389 389
390 focusedViewIndex_ = -1; 390 focusedViewIndex_ = -1;
391 } 391 }
392 392
393 return self; 393 return self;
394 } 394 }
395 395
396 - (void)dealloc { 396 - (void)dealloc {
397 [self browserWillBeDestroyed];
398 [super dealloc];
399 }
400
401 - (void)browserWillBeDestroyed {
402 [overflowMenu_ setDelegate:nil];
397 // Explicitly destroy the ToolbarActionsBar so all buttons get removed with a 403 // Explicitly destroy the ToolbarActionsBar so all buttons get removed with a
398 // valid BrowserActionsController, and so we can verify state before 404 // valid BrowserActionsController, and so we can verify state before
399 // destruction. 405 // destruction.
400 toolbarActionsBar_->DeleteActions(); 406 if (toolbarActionsBar_.get()) {
401 toolbarActionsBar_.reset(); 407 toolbarActionsBar_->DeleteActions();
408 toolbarActionsBar_.reset();
409 }
402 DCHECK_EQ(0u, [buttons_ count]); 410 DCHECK_EQ(0u, [buttons_ count]);
403 [[NSNotificationCenter defaultCenter] removeObserver:self]; 411 [[NSNotificationCenter defaultCenter] removeObserver:self];
404 [super dealloc]; 412 browser_ = nullptr;
405 } 413 }
406 414
407 - (void)update { 415 - (void)update {
408 toolbarActionsBar_->Update(); 416 toolbarActionsBar_->Update();
409 } 417 }
410 418
411 - (NSUInteger)buttonCount { 419 - (NSUInteger)buttonCount {
412 return [buttons_ count]; 420 return [buttons_ count];
413 } 421 }
414 422
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after
1027 } 1035 }
1028 1036
1029 #pragma mark - 1037 #pragma mark -
1030 #pragma mark Testing Methods 1038 #pragma mark Testing Methods
1031 1039
1032 - (BrowserActionButton*)buttonWithIndex:(NSUInteger)index { 1040 - (BrowserActionButton*)buttonWithIndex:(NSUInteger)index {
1033 return index < [buttons_ count] ? [buttons_ objectAtIndex:index] : nil; 1041 return index < [buttons_ count] ? [buttons_ objectAtIndex:index] : nil;
1034 } 1042 }
1035 1043
1036 @end 1044 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698