Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <Cocoa/Cocoa.h> | 5 #import <Cocoa/Cocoa.h> |
| 6 | 6 |
| 7 #include "base/logging.h" // for NOTREACHED() | 7 #include "base/logging.h" // for NOTREACHED() |
| 8 #include "base/mac/mac_util.h" | 8 #include "base/mac/mac_util.h" |
| 9 #include "base/sys_string_conversions.h" | 9 #include "base/sys_string_conversions.h" |
| 10 #include "chrome/browser/infobars/infobar_tab_helper.h" | |
| 10 #include "chrome/browser/tab_contents/confirm_infobar_delegate.h" | 11 #include "chrome/browser/tab_contents/confirm_infobar_delegate.h" |
| 11 #include "chrome/browser/tab_contents/link_infobar_delegate.h" | 12 #include "chrome/browser/tab_contents/link_infobar_delegate.h" |
| 12 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 13 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| 13 #import "chrome/browser/ui/cocoa/animatable_view.h" | 14 #import "chrome/browser/ui/cocoa/animatable_view.h" |
| 14 #import "chrome/browser/ui/cocoa/browser_window_controller.h" | 15 #import "chrome/browser/ui/cocoa/browser_window_controller.h" |
| 15 #include "chrome/browser/ui/cocoa/event_utils.h" | 16 #include "chrome/browser/ui/cocoa/event_utils.h" |
| 16 #include "chrome/browser/ui/cocoa/infobars/infobar.h" | 17 #include "chrome/browser/ui/cocoa/infobars/infobar.h" |
| 17 #import "chrome/browser/ui/cocoa/infobars/infobar_container_controller.h" | 18 #import "chrome/browser/ui/cocoa/infobars/infobar_container_controller.h" |
| 18 #import "chrome/browser/ui/cocoa/infobars/infobar_controller.h" | 19 #import "chrome/browser/ui/cocoa/infobars/infobar_controller.h" |
| 19 #import "chrome/browser/ui/cocoa/infobars/infobar_gradient_view.h" | 20 #import "chrome/browser/ui/cocoa/infobars/infobar_gradient_view.h" |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 109 | 110 |
| 110 @synthesize containerController = containerController_; | 111 @synthesize containerController = containerController_; |
| 111 @synthesize delegate = delegate_; | 112 @synthesize delegate = delegate_; |
| 112 | 113 |
| 113 - (id)initWithDelegate:(InfoBarDelegate*)delegate | 114 - (id)initWithDelegate:(InfoBarDelegate*)delegate |
| 114 owner:(TabContentsWrapper*)owner { | 115 owner:(TabContentsWrapper*)owner { |
| 115 DCHECK(delegate); | 116 DCHECK(delegate); |
| 116 if ((self = [super initWithNibName:@"InfoBar" | 117 if ((self = [super initWithNibName:@"InfoBar" |
| 117 bundle:base::mac::MainAppBundle()])) { | 118 bundle:base::mac::MainAppBundle()])) { |
| 118 delegate_ = delegate; | 119 delegate_ = delegate; |
| 119 owner_ = owner; | 120 owner_ = owner; |
|
Peter Kasting
2011/08/31 18:47:32
Another |owner_| that should probably become an In
| |
| 120 } | 121 } |
| 121 return self; | 122 return self; |
| 122 } | 123 } |
| 123 | 124 |
| 124 // All infobars have an icon, so we set up the icon in the base class | 125 // All infobars have an icon, so we set up the icon in the base class |
| 125 // awakeFromNib. | 126 // awakeFromNib. |
| 126 - (void)awakeFromNib { | 127 - (void)awakeFromNib { |
| 127 DCHECK(delegate_); | 128 DCHECK(delegate_); |
| 128 if (delegate_->GetIcon()) { | 129 if (delegate_->GetIcon()) { |
| 129 [image_ setImage:*(delegate_->GetIcon())]; | 130 [image_ setImage:*(delegate_->GetIcon())]; |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 274 [label_.get() setHorizontallyResizable:NO]; | 275 [label_.get() setHorizontallyResizable:NO]; |
| 275 [label_.get() setVerticallyResizable:NO]; | 276 [label_.get() setVerticallyResizable:NO]; |
| 276 } | 277 } |
| 277 | 278 |
| 278 - (void)removeSelf { | 279 - (void)removeSelf { |
| 279 // TODO(rohitrao): This method can be called even if the infobar has already | 280 // TODO(rohitrao): This method can be called even if the infobar has already |
| 280 // been removed and |delegate_| is NULL. Is there a way to rewrite the code | 281 // been removed and |delegate_| is NULL. Is there a way to rewrite the code |
| 281 // so that inner event loops don't cause us to try and remove the infobar | 282 // so that inner event loops don't cause us to try and remove the infobar |
| 282 // twice? http://crbug.com/54253 | 283 // twice? http://crbug.com/54253 |
| 283 if (owner_) | 284 if (owner_) |
| 284 owner_->RemoveInfoBar(delegate_); | 285 owner_->infobar_tab_helper()->RemoveInfoBar(delegate_); |
| 285 owner_ = NULL; | 286 owner_ = NULL; |
| 286 } | 287 } |
| 287 | 288 |
| 288 - (void)cleanUpAfterAnimation:(BOOL)finished { | 289 - (void)cleanUpAfterAnimation:(BOOL)finished { |
| 289 // Don't need to do any cleanup if the bar was animating open. | 290 // Don't need to do any cleanup if the bar was animating open. |
| 290 if (!infoBarClosing_) | 291 if (!infoBarClosing_) |
| 291 return; | 292 return; |
| 292 | 293 |
| 293 // Notify the delegate that the infobar was closed. The delegate will delete | 294 // Notify the delegate that the infobar was closed. The delegate will delete |
| 294 // itself as a result of InfoBarClosed(), so we null out its pointer. | 295 // itself as a result of InfoBarClosed(), so we null out its pointer. |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 561 LinkInfoBarController* controller = | 562 LinkInfoBarController* controller = |
| 562 [[LinkInfoBarController alloc] initWithDelegate:this owner:owner]; | 563 [[LinkInfoBarController alloc] initWithDelegate:this owner:owner]; |
| 563 return new InfoBar(controller, this); | 564 return new InfoBar(controller, this); |
| 564 } | 565 } |
| 565 | 566 |
| 566 InfoBar* ConfirmInfoBarDelegate::CreateInfoBar(TabContentsWrapper* owner) { | 567 InfoBar* ConfirmInfoBarDelegate::CreateInfoBar(TabContentsWrapper* owner) { |
| 567 ConfirmInfoBarController* controller = | 568 ConfirmInfoBarController* controller = |
| 568 [[ConfirmInfoBarController alloc] initWithDelegate:this owner:owner]; | 569 [[ConfirmInfoBarController alloc] initWithDelegate:this owner:owner]; |
| 569 return new InfoBar(controller, this); | 570 return new InfoBar(controller, this); |
| 570 } | 571 } |
| OLD | NEW |