Index: chrome/browser/cocoa/infobar_controller_unittest.mm |
=================================================================== |
--- chrome/browser/cocoa/infobar_controller_unittest.mm (revision 30850) |
+++ chrome/browser/cocoa/infobar_controller_unittest.mm (working copy) |
@@ -8,6 +8,7 @@ |
#include "base/string_util.h" |
#include "base/sys_string_conversions.h" |
#import "chrome/browser/cocoa/cocoa_test_helper.h" |
+#import "chrome/browser/cocoa/infobar_container_controller.h" |
#import "chrome/browser/cocoa/infobar_controller.h" |
#include "chrome/browser/cocoa/infobar_test_helper.h" |
#include "chrome/browser/tab_contents/infobar_delegate.h" |
@@ -24,6 +25,37 @@ |
} |
@end |
+ |
+// Calls to removeDelegate: normally start an animation, which removes the |
+// infobar completely when finished. For unittesting purposes, we create a mock |
+// container which calls close: immediately, rather than kicking off an |
+// animation. |
+@interface InfoBarContainerTest : NSObject <InfoBarContainer> { |
+ InfoBarController* controller_; |
+} |
+- (id)initWithController:(InfoBarController*)controller; |
+- (void)removeDelegate:(InfoBarDelegate*)delegate; |
+- (void)removeController:(InfoBarController*)controller; |
+@end |
+ |
+@implementation InfoBarContainerTest |
+- (id)initWithController:(InfoBarController*)controller { |
+ if ((self = [super init])) { |
+ controller_ = controller; |
+ } |
+ return self; |
+} |
+ |
+- (void)removeDelegate:(InfoBarDelegate*)delegate { |
+ [controller_ close]; |
+} |
+ |
+- (void)removeController:(InfoBarController*)controller { |
+ DCHECK(controller_ == controller); |
+ controller_ = nil; |
+} |
+@end |
+ |
namespace { |
/////////////////////////////////////////////////////////////////////////// |
@@ -36,12 +68,16 @@ |
controller_.reset( |
[[AlertInfoBarController alloc] initWithDelegate:&delegate_]); |
+ container_.reset( |
+ [[InfoBarContainerTest alloc] initWithController:controller_]); |
+ [controller_ setContainerController:container_]; |
[helper_.contentView() addSubview:[controller_ view]]; |
} |
protected: |
CocoaTestHelper helper_; |
MockAlertInfoBarDelegate delegate_; |
+ scoped_nsobject<id> container_; |
scoped_nsobject<AlertInfoBarController> controller_; |
}; |
@@ -52,12 +88,16 @@ |
controller_.reset( |
[[LinkInfoBarController alloc] initWithDelegate:&delegate_]); |
+ container_.reset( |
+ [[InfoBarContainerTest alloc] initWithController:controller_]); |
+ [controller_ setContainerController:container_]; |
[helper_.contentView() addSubview:[controller_ view]]; |
} |
protected: |
CocoaTestHelper helper_; |
MockLinkInfoBarDelegate delegate_; |
+ scoped_nsobject<id> container_; |
scoped_nsobject<LinkInfoBarController> controller_; |
}; |
@@ -68,12 +108,16 @@ |
controller_.reset( |
[[ConfirmInfoBarController alloc] initWithDelegate:&delegate_]); |
+ container_.reset( |
+ [[InfoBarContainerTest alloc] initWithController:controller_]); |
+ [controller_ setContainerController:container_]; |
[helper_.contentView() addSubview:[controller_ view]]; |
} |
protected: |
CocoaTestHelper helper_; |
MockConfirmInfoBarDelegate delegate_; |
+ scoped_nsobject<id> container_; |
scoped_nsobject<ConfirmInfoBarController> controller_; |
}; |