| 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 #include "base/debug/debugger.h" | 5 #include "base/debug/debugger.h" |
| 6 #include "base/memory/scoped_nsobject.h" | 6 #include "base/memory/scoped_nsobject.h" |
| 7 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h" | 7 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h" |
| 8 #import "chrome/browser/ui/cocoa/hyperlink_text_view.h" |
| 8 #import "chrome/browser/ui/cocoa/tab_contents/sad_tab_controller.h" | 9 #import "chrome/browser/ui/cocoa/tab_contents/sad_tab_controller.h" |
| 9 #import "chrome/browser/ui/cocoa/tab_contents/sad_tab_view.h" | 10 #import "chrome/browser/ui/cocoa/tab_contents/sad_tab_view.h" |
| 10 #include "chrome/test/base/testing_profile.h" | 11 #include "chrome/test/base/testing_profile.h" |
| 11 #include "content/browser/renderer_host/test_render_view_host.h" | 12 #include "content/browser/renderer_host/test_render_view_host.h" |
| 12 #include "content/browser/tab_contents/test_tab_contents.h" | 13 #include "content/browser/tab_contents/test_tab_contents.h" |
| 13 | 14 |
| 14 @interface SadTabView (ExposedForTesting) | 15 @interface SadTabView (ExposedForTesting) |
| 15 // Implementation is below. | 16 // Implementation is below. |
| 16 - (NSButton*)linkButton; | 17 - (HyperlinkTextView*)helpTextView; |
| 17 @end | 18 @end |
| 18 | 19 |
| 19 @implementation SadTabView (ExposedForTesting) | 20 @implementation SadTabView (ExposedForTesting) |
| 20 - (NSButton*)linkButton { | 21 - (HyperlinkTextView*)helpTextView { |
| 21 return linkButton_; | 22 return help_.get(); |
| 22 } | 23 } |
| 23 @end | 24 @end |
| 24 | 25 |
| 25 namespace { | 26 namespace { |
| 26 | 27 |
| 27 class SadTabControllerTest : public RenderViewHostTestHarness { | 28 class SadTabControllerTest : public RenderViewHostTestHarness { |
| 28 public: | 29 public: |
| 29 SadTabControllerTest() : test_window_(nil) { | 30 SadTabControllerTest() : test_window_(nil) { |
| 30 link_clicked_ = false; | 31 link_clicked_ = false; |
| 31 } | 32 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 55 SadTabController* controller = | 56 SadTabController* controller = |
| 56 [[SadTabController alloc] initWithTabContents:contents() | 57 [[SadTabController alloc] initWithTabContents:contents() |
| 57 superview:contentView]; | 58 superview:contentView]; |
| 58 EXPECT_TRUE(controller); | 59 EXPECT_TRUE(controller); |
| 59 NSView* view = [controller view]; | 60 NSView* view = [controller view]; |
| 60 EXPECT_TRUE(view); | 61 EXPECT_TRUE(view); |
| 61 | 62 |
| 62 return controller; | 63 return controller; |
| 63 } | 64 } |
| 64 | 65 |
| 65 NSButton* GetLinkButton(SadTabController* controller) { | 66 HyperlinkTextView* GetHelpTextView(SadTabController* controller) { |
| 66 SadTabView* view = static_cast<SadTabView*>([controller view]); | 67 SadTabView* view = static_cast<SadTabView*>([controller view]); |
| 67 return ([view linkButton]); | 68 return ([view helpTextView]); |
| 68 } | 69 } |
| 69 | 70 |
| 70 static bool link_clicked_; | 71 static bool link_clicked_; |
| 71 CocoaTestHelperWindow* test_window_; | 72 CocoaTestHelperWindow* test_window_; |
| 72 }; | 73 }; |
| 73 | 74 |
| 74 // static | 75 // static |
| 75 bool SadTabControllerTest::link_clicked_; | 76 bool SadTabControllerTest::link_clicked_; |
| 76 | 77 |
| 77 TEST_F(SadTabControllerTest, WithTabContents) { | 78 TEST_F(SadTabControllerTest, WithTabContents) { |
| 78 scoped_nsobject<SadTabController> controller(CreateController()); | 79 scoped_nsobject<SadTabController> controller(CreateController()); |
| 79 EXPECT_TRUE(controller); | 80 EXPECT_TRUE(controller); |
| 80 NSButton* link = GetLinkButton(controller); | 81 HyperlinkTextView* help = GetHelpTextView(controller); |
| 81 EXPECT_TRUE(link); | 82 EXPECT_TRUE(help); |
| 82 } | 83 } |
| 83 | 84 |
| 84 TEST_F(SadTabControllerTest, WithoutTabContents) { | 85 TEST_F(SadTabControllerTest, WithoutTabContents) { |
| 85 DeleteContents(); | 86 DeleteContents(); |
| 86 scoped_nsobject<SadTabController> controller(CreateController()); | 87 scoped_nsobject<SadTabController> controller(CreateController()); |
| 87 EXPECT_TRUE(controller); | 88 EXPECT_TRUE(controller); |
| 88 NSButton* link = GetLinkButton(controller); | 89 HyperlinkTextView* help = GetHelpTextView(controller); |
| 89 EXPECT_FALSE(link); | 90 EXPECT_FALSE(help); |
| 90 } | 91 } |
| 91 | 92 |
| 92 TEST_F(SadTabControllerTest, ClickOnLink) { | 93 TEST_F(SadTabControllerTest, ClickOnLink) { |
| 93 scoped_nsobject<SadTabController> controller(CreateController()); | 94 scoped_nsobject<SadTabController> controller(CreateController()); |
| 94 NSButton* link = GetLinkButton(controller); | 95 HyperlinkTextView* help = GetHelpTextView(controller); |
| 95 EXPECT_TRUE(link); | 96 EXPECT_TRUE(help); |
| 96 EXPECT_FALSE(link_clicked_); | 97 EXPECT_FALSE(link_clicked_); |
| 97 [link performClick:link]; | 98 [help clickedOnLink:nil atIndex:0]; |
| 98 EXPECT_TRUE(link_clicked_); | 99 EXPECT_TRUE(link_clicked_); |
| 99 } | 100 } |
| 100 | 101 |
| 101 } // namespace | 102 } // namespace |
| 102 | 103 |
| 103 @implementation NSApplication (SadTabControllerUnitTest) | 104 @implementation NSApplication (SadTabControllerUnitTest) |
| 104 // Add handler for the openLearnMoreAboutCrashLink: action to NSApp for testing | 105 // Add handler for the openLearnMoreAboutCrashLink: action to NSApp for testing |
| 105 // purposes. Normally this would be sent up the responder tree correctly, but | 106 // purposes. Normally this would be sent up the responder tree correctly, but |
| 106 // since tests run in the background, key window and main window are never set | 107 // since tests run in the background, key window and main window are never set |
| 107 // on NSApplication. Adding it to NSApplication directly removes the need for | 108 // on NSApplication. Adding it to NSApplication directly removes the need for |
| 108 // worrying about what the current window with focus is. | 109 // worrying about what the current window with focus is. |
| 109 - (void)openLearnMoreAboutCrashLink:(id)sender { | 110 - (void)openLearnMoreAboutCrashLink:(id)sender { |
| 110 SadTabControllerTest::link_clicked_ = true; | 111 SadTabControllerTest::link_clicked_ = true; |
| 111 } | 112 } |
| 112 | 113 |
| 113 @end | 114 @end |
| OLD | NEW |