| Index: chrome/browser/ui/cocoa/browser/zoom_bubble_controller.mm
|
| diff --git a/chrome/browser/ui/cocoa/browser/zoom_bubble_controller.mm b/chrome/browser/ui/cocoa/browser/zoom_bubble_controller.mm
|
| index 234eb6d92827d1b22738ade1fe3a7921cbfe6ddc..05c9221a6f3caa69d83dc0136eb528dd24f0a3b9 100644
|
| --- a/chrome/browser/ui/cocoa/browser/zoom_bubble_controller.mm
|
| +++ b/chrome/browser/ui/cocoa/browser/zoom_bubble_controller.mm
|
| @@ -75,6 +75,8 @@ void SetZoomBubbleAutoCloseDelayForTesting(NSTimeInterval time_interval) {
|
|
|
| @implementation ZoomBubbleController
|
|
|
| +@synthesize delegate = delegate_;
|
| +
|
| - (id)initWithParentWindow:(NSWindow*)parentWindow
|
| delegate:(ZoomBubbleControllerDelegate*)delegate {
|
| base::scoped_nsobject<InfoBubbleWindow> window(
|
| @@ -126,6 +128,10 @@ void SetZoomBubbleAutoCloseDelayForTesting(NSTimeInterval time_interval) {
|
| }
|
|
|
| - (void)onZoomChanged {
|
| + // |delegate_| may be set null by this object's owner.
|
| + if (!delegate_)
|
| + return;
|
| +
|
| // TODO(shess): It may be appropriate to close the window if
|
| // |contents| or |zoomController| are NULL. But they can be NULL in
|
| // tests.
|
| @@ -169,8 +175,11 @@ void SetZoomBubbleAutoCloseDelayForTesting(NSTimeInterval time_interval) {
|
| }
|
|
|
| - (void)windowWillClose:(NSNotification*)notification {
|
| - delegate_->OnClose();
|
| - delegate_ = NULL;
|
| + // |delegate_| may be set null by this object's owner.
|
| + if (delegate_) {
|
| + delegate_->OnClose();
|
| + delegate_ = NULL;
|
| + }
|
| [NSObject cancelPreviousPerformRequestsWithTarget:self
|
| selector:@selector(autoCloseBubble)
|
| object:nil];
|
|
|