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 |