| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/mac/scoped_nsautorelease_pool.h" | 7 #include "base/mac/scoped_nsautorelease_pool.h" |
| 8 #include "chrome/browser/ui/browser_window.h" | 8 #include "chrome/browser/ui/browser_window.h" |
| 9 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" | 9 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" |
| 10 #import "chrome/browser/ui/cocoa/new_tab_button.h" | 10 #import "chrome/browser/ui/cocoa/new_tab_button.h" |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 CocoaProfileTest::SetUp(); | 86 CocoaProfileTest::SetUp(); |
| 87 ASSERT_TRUE(browser()); | 87 ASSERT_TRUE(browser()); |
| 88 | 88 |
| 89 NSWindow* window = browser()->window()->GetNativeWindow(); | 89 NSWindow* window = browser()->window()->GetNativeWindow(); |
| 90 NSView* parent = [window contentView]; | 90 NSView* parent = [window contentView]; |
| 91 NSRect content_frame = [parent frame]; | 91 NSRect content_frame = [parent frame]; |
| 92 | 92 |
| 93 // Create the "switch view" (view that gets changed out when a tab | 93 // Create the "switch view" (view that gets changed out when a tab |
| 94 // switches). | 94 // switches). |
| 95 NSRect switch_frame = NSMakeRect(0, 0, content_frame.size.width, 500); | 95 NSRect switch_frame = NSMakeRect(0, 0, content_frame.size.width, 500); |
| 96 scoped_nsobject<NSView> switch_view( | 96 base::scoped_nsobject<NSView> switch_view( |
| 97 [[NSView alloc] initWithFrame:switch_frame]); | 97 [[NSView alloc] initWithFrame:switch_frame]); |
| 98 [parent addSubview:switch_view.get()]; | 98 [parent addSubview:switch_view.get()]; |
| 99 | 99 |
| 100 // Create the tab strip view. It's expected to have a child button in it | 100 // Create the tab strip view. It's expected to have a child button in it |
| 101 // already as the "new tab" button so create that too. | 101 // already as the "new tab" button so create that too. |
| 102 NSRect strip_frame = NSMakeRect(0, NSMaxY(switch_frame), | 102 NSRect strip_frame = NSMakeRect(0, NSMaxY(switch_frame), |
| 103 content_frame.size.width, 30); | 103 content_frame.size.width, 30); |
| 104 tab_strip_.reset( | 104 tab_strip_.reset( |
| 105 [[TabStripView alloc] initWithFrame:strip_frame]); | 105 [[TabStripView alloc] initWithFrame:strip_frame]); |
| 106 [parent addSubview:tab_strip_.get()]; | 106 [parent addSubview:tab_strip_.get()]; |
| 107 NSRect button_frame = NSMakeRect(0, 0, 15, 15); | 107 NSRect button_frame = NSMakeRect(0, 0, 15, 15); |
| 108 scoped_nsobject<NewTabButton> new_tab_button( | 108 base::scoped_nsobject<NewTabButton> new_tab_button( |
| 109 [[NewTabButton alloc] initWithFrame:button_frame]); | 109 [[NewTabButton alloc] initWithFrame:button_frame]); |
| 110 [tab_strip_ addSubview:new_tab_button.get()]; | 110 [tab_strip_ addSubview:new_tab_button.get()]; |
| 111 [tab_strip_ setNewTabButton:new_tab_button.get()]; | 111 [tab_strip_ setNewTabButton:new_tab_button.get()]; |
| 112 | 112 |
| 113 delegate_.reset(new TestTabStripModelDelegate()); | 113 delegate_.reset(new TestTabStripModelDelegate()); |
| 114 model_ = browser()->tab_strip_model(); | 114 model_ = browser()->tab_strip_model(); |
| 115 controller_delegate_.reset([TestTabStripControllerDelegate alloc]); | 115 controller_delegate_.reset([TestTabStripControllerDelegate alloc]); |
| 116 controller_.reset([[TabStripController alloc] | 116 controller_.reset([[TabStripController alloc] |
| 117 initWithView:static_cast<TabStripView*>(tab_strip_.get()) | 117 initWithView:static_cast<TabStripView*>(tab_strip_.get()) |
| 118 switchView:switch_view.get() | 118 switchView:switch_view.get() |
| (...skipping 26 matching lines...) Expand all Loading... |
| 145 controller_.reset(); | 145 controller_.reset(); |
| 146 tab_strip_.reset(); | 146 tab_strip_.reset(); |
| 147 // Schedule a NSLeftMouseUp to end the nested drag event loop. | 147 // Schedule a NSLeftMouseUp to end the nested drag event loop. |
| 148 NSEvent* event = | 148 NSEvent* event = |
| 149 cocoa_test_event_utils::MouseEventWithType(NSLeftMouseUp, 0); | 149 cocoa_test_event_utils::MouseEventWithType(NSLeftMouseUp, 0); |
| 150 [NSApp postEvent:event atStart:NO]; | 150 [NSApp postEvent:event atStart:NO]; |
| 151 } | 151 } |
| 152 | 152 |
| 153 scoped_ptr<TestTabStripModelDelegate> delegate_; | 153 scoped_ptr<TestTabStripModelDelegate> delegate_; |
| 154 TabStripModel* model_; | 154 TabStripModel* model_; |
| 155 scoped_nsobject<TestTabStripControllerDelegate> controller_delegate_; | 155 base::scoped_nsobject<TestTabStripControllerDelegate> controller_delegate_; |
| 156 scoped_nsobject<TabStripController> controller_; | 156 base::scoped_nsobject<TabStripController> controller_; |
| 157 scoped_nsobject<TabStripView> tab_strip_; | 157 base::scoped_nsobject<TabStripView> tab_strip_; |
| 158 }; | 158 }; |
| 159 | 159 |
| 160 // Test adding and removing tabs and making sure that views get added to | 160 // Test adding and removing tabs and making sure that views get added to |
| 161 // the tab strip. | 161 // the tab strip. |
| 162 TEST_F(TabStripControllerTest, AddRemoveTabs) { | 162 TEST_F(TabStripControllerTest, AddRemoveTabs) { |
| 163 EXPECT_TRUE(model_->empty()); | 163 EXPECT_TRUE(model_->empty()); |
| 164 CreateTab(); | 164 CreateTab(); |
| 165 EXPECT_EQ(model_->count(), 1); | 165 EXPECT_EQ(model_->count(), 1); |
| 166 } | 166 } |
| 167 | 167 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 // tab strip model. Use a ScopedNSAutoreleasePool to get a truly weak ref | 233 // tab strip model. Use a ScopedNSAutoreleasePool to get a truly weak ref |
| 234 // to it to test that -maybeStartDrag:forTab: can handle that properly. | 234 // to it to test that -maybeStartDrag:forTab: can handle that properly. |
| 235 { | 235 { |
| 236 base::mac::ScopedNSAutoreleasePool pool; | 236 base::mac::ScopedNSAutoreleasePool pool; |
| 237 tab = [CreateTab() controller]; | 237 tab = [CreateTab() controller]; |
| 238 } | 238 } |
| 239 | 239 |
| 240 // Schedule a task to close all the tabs and stop the drag, before the call to | 240 // Schedule a task to close all the tabs and stop the drag, before the call to |
| 241 // -maybeStartDrag:forTab:, which starts a nested event loop. This task will | 241 // -maybeStartDrag:forTab:, which starts a nested event loop. This task will |
| 242 // run in that nested event loop, which shouldn't crash. | 242 // run in that nested event loop, which shouldn't crash. |
| 243 scoped_nsobject<TestClosureRunner> runner( | 243 base::scoped_nsobject<TestClosureRunner> runner([[TestClosureRunner alloc] |
| 244 [[TestClosureRunner alloc] initWithClosure: | 244 initWithClosure:base::Bind(&TabStripControllerTest::CloseTabsAndEndDrag, |
| 245 base::Bind(&TabStripControllerTest::CloseTabsAndEndDrag, | 245 base::Unretained(this))]); |
| 246 base::Unretained(this))]); | |
| 247 [runner scheduleDelayedRun]; | 246 [runner scheduleDelayedRun]; |
| 248 | 247 |
| 249 NSEvent* event = | 248 NSEvent* event = |
| 250 cocoa_test_event_utils::LeftMouseDownAtPoint(NSMakePoint(0, 0)); | 249 cocoa_test_event_utils::LeftMouseDownAtPoint(NSMakePoint(0, 0)); |
| 251 [[controller_ dragController] maybeStartDrag:event forTab:tab]; | 250 [[controller_ dragController] maybeStartDrag:event forTab:tab]; |
| 252 } | 251 } |
| 253 | 252 |
| 254 TEST_F(TabStripControllerTest, ViewAccessibility_Contents) { | 253 TEST_F(TabStripControllerTest, ViewAccessibility_Contents) { |
| 255 NSArray* attrs = [tab_strip_ accessibilityAttributeNames]; | 254 NSArray* attrs = [tab_strip_ accessibilityAttributeNames]; |
| 256 ASSERT_TRUE([attrs containsObject:NSAccessibilityContentsAttribute]); | 255 ASSERT_TRUE([attrs containsObject:NSAccessibilityContentsAttribute]); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 281 | 280 |
| 282 model_->ActivateTabAt(0, false); | 281 model_->ActivateTabAt(0, false); |
| 283 EXPECT_TRUE([tab1 controller].selected); | 282 EXPECT_TRUE([tab1 controller].selected); |
| 284 EXPECT_FALSE([tab2 controller].selected); | 283 EXPECT_FALSE([tab2 controller].selected); |
| 285 value = | 284 value = |
| 286 [tab_strip_ accessibilityAttributeValue:NSAccessibilityValueAttribute]; | 285 [tab_strip_ accessibilityAttributeValue:NSAccessibilityValueAttribute]; |
| 287 EXPECT_EQ(tab1, value); | 286 EXPECT_EQ(tab1, value); |
| 288 } | 287 } |
| 289 | 288 |
| 290 } // namespace | 289 } // namespace |
| OLD | NEW |