| 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..8726e742c316debb4a1dff977ccd730e1f7b023e 100644
|
| --- a/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm
|
| +++ b/chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm
|
| @@ -122,6 +122,7 @@ CGFloat BrowserActionsContainerDelegate::GetMaxAllowedWidth() {
|
|
|
| @interface ToolbarController()
|
| @property(assign, nonatomic) Browser* browser;
|
| +- (void)cleanUp;
|
| - (void)addAccessibilityDescriptions;
|
| - (void)initCommandStatus:(CommandUpdater*)commands;
|
| - (void)prefChanged:(const std::string&)prefName;
|
| @@ -206,7 +207,6 @@ class NotificationBridge : public WrenchMenuBadgeController::Delegate {
|
| - (id)initWithCommands:(CommandUpdater*)commands
|
| profile:(Profile*)profile
|
| browser:(Browser*)browser
|
| - resizeDelegate:(id<ViewResizer>)resizeDelegate
|
| nibFileNamed:(NSString*)nibName {
|
| DCHECK(commands && profile && [nibName length]);
|
| if ((self = [super initWithNibName:nibName
|
| @@ -214,7 +214,6 @@ class NotificationBridge : public WrenchMenuBadgeController::Delegate {
|
| commands_ = commands;
|
| profile_ = profile;
|
| browser_ = browser;
|
| - resizeDelegate_ = resizeDelegate;
|
| hasToolbar_ = YES;
|
| hasLocationBar_ = YES;
|
|
|
| @@ -236,41 +235,15 @@ class NotificationBridge : public WrenchMenuBadgeController::Delegate {
|
|
|
| - (id)initWithCommands:(CommandUpdater*)commands
|
| profile:(Profile*)profile
|
| - browser:(Browser*)browser
|
| - resizeDelegate:(id<ViewResizer>)resizeDelegate {
|
| + browser:(Browser*)browser {
|
| if ((self = [self initWithCommands:commands
|
| profile:profile
|
| browser:browser
|
| - resizeDelegate:resizeDelegate
|
| nibFileNamed:@"Toolbar"])) {
|
| }
|
| 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 +371,49 @@ class NotificationBridge : public WrenchMenuBadgeController::Delegate {
|
| [self addAccessibilityDescriptions];
|
| }
|
|
|
| +- (void)dealloc {
|
| + [self cleanUp];
|
| + [super dealloc];
|
| +}
|
| +
|
| +- (void)browserWillBeDestroyed {
|
| + // Pass this call onto other reference counted objects.
|
| + [backMenuController_ browserWillBeDestroyed];
|
| + [forwardMenuController_ browserWillBeDestroyed];
|
| + [browserActionsController_ browserWillBeDestroyed];
|
| + [wrenchMenuController_ browserWillBeDestroyed];
|
| +
|
| + [self cleanUp];
|
| +}
|
| +
|
| +- (void)cleanUp {
|
| + // 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()];
|
| + [trackingArea_.get() clearOwner];
|
| + trackingArea_.reset();
|
| + }
|
| +
|
| + // Destroy owned objects that hold a weak Browser*.
|
| + locationBarView_.reset();
|
| + browserActionsContainerDelegate_.reset();
|
| + browser_ = nullptr;
|
| +}
|
| +
|
| - (void)addAccessibilityDescriptions {
|
| // Set accessibility descriptions. http://openradar.appspot.com/7496255
|
| NSString* description = l10n_util::GetNSStringWithFixup(IDS_ACCNAME_BACK);
|
|
|