| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "ui/views/cocoa/bridged_native_widget.h" | 5 #import "ui/views/cocoa/bridged_native_widget.h" |
| 6 | 6 |
| 7 #import <Cocoa/Cocoa.h> | 7 #import <Cocoa/Cocoa.h> |
| 8 | 8 |
| 9 #import "base/mac/mac_util.h" | 9 #import "base/mac/mac_util.h" |
| 10 #import "base/mac/sdk_forward_declarations.h" | 10 #import "base/mac/sdk_forward_declarations.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 } | 70 } |
| 71 | 71 |
| 72 protected: | 72 protected: |
| 73 scoped_ptr<Widget> widget_; | 73 scoped_ptr<Widget> widget_; |
| 74 }; | 74 }; |
| 75 | 75 |
| 76 // Tests for correct fullscreen tracking, regardless of whether it is initiated | 76 // Tests for correct fullscreen tracking, regardless of whether it is initiated |
| 77 // by the Widget code or elsewhere (e.g. by the user). | 77 // by the Widget code or elsewhere (e.g. by the user). |
| 78 TEST_F(BridgedNativeWidgetUITest, FullscreenSynchronousState) { | 78 TEST_F(BridgedNativeWidgetUITest, FullscreenSynchronousState) { |
| 79 EXPECT_FALSE(widget_->IsFullscreen()); | 79 EXPECT_FALSE(widget_->IsFullscreen()); |
| 80 if (base::mac::IsOSSnowLeopard()) | |
| 81 return; | |
| 82 | 80 |
| 83 // Allow user-initiated fullscreen changes on the Window. | 81 // Allow user-initiated fullscreen changes on the Window. |
| 84 [test_window() | 82 [test_window() |
| 85 setCollectionBehavior:[test_window() collectionBehavior] | | 83 setCollectionBehavior:[test_window() collectionBehavior] | |
| 86 NSWindowCollectionBehaviorFullScreenPrimary]; | 84 NSWindowCollectionBehaviorFullScreenPrimary]; |
| 87 | 85 |
| 88 base::scoped_nsobject<NSWindowFullscreenNotificationWaiter> waiter( | 86 base::scoped_nsobject<NSWindowFullscreenNotificationWaiter> waiter( |
| 89 [[NSWindowFullscreenNotificationWaiter alloc] | 87 [[NSWindowFullscreenNotificationWaiter alloc] |
| 90 initWithWindow:test_window()]); | 88 initWithWindow:test_window()]); |
| 91 const gfx::Rect restored_bounds = widget_->GetRestoredBounds(); | 89 const gfx::Rect restored_bounds = widget_->GetRestoredBounds(); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 | 137 |
| 140 EXPECT_FALSE(widget_->IsFullscreen()); | 138 EXPECT_FALSE(widget_->IsFullscreen()); |
| 141 const gfx::Rect restored_bounds = widget_->GetRestoredBounds(); | 139 const gfx::Rect restored_bounds = widget_->GetRestoredBounds(); |
| 142 EXPECT_FALSE(restored_bounds.IsEmpty()); | 140 EXPECT_FALSE(restored_bounds.IsEmpty()); |
| 143 | 141 |
| 144 // Ensure this works without having to change collection behavior as for the | 142 // Ensure this works without having to change collection behavior as for the |
| 145 // test above. Also check that making a hidden widget fullscreen shows it. | 143 // test above. Also check that making a hidden widget fullscreen shows it. |
| 146 EXPECT_FALSE(widget_->IsVisible()); | 144 EXPECT_FALSE(widget_->IsVisible()); |
| 147 widget_->SetFullscreen(true); | 145 widget_->SetFullscreen(true); |
| 148 EXPECT_TRUE(widget_->IsVisible()); | 146 EXPECT_TRUE(widget_->IsVisible()); |
| 149 if (base::mac::IsOSSnowLeopard()) { | |
| 150 // On Snow Leopard, SetFullscreen() isn't implemented. But shouldn't crash. | |
| 151 EXPECT_FALSE(widget_->IsFullscreen()); | |
| 152 return; | |
| 153 } | |
| 154 | 147 |
| 155 EXPECT_TRUE(widget_->IsFullscreen()); | 148 EXPECT_TRUE(widget_->IsFullscreen()); |
| 156 EXPECT_EQ(restored_bounds, widget_->GetRestoredBounds()); | 149 EXPECT_EQ(restored_bounds, widget_->GetRestoredBounds()); |
| 157 | 150 |
| 158 // Should be zero until the runloop spins. | 151 // Should be zero until the runloop spins. |
| 159 EXPECT_EQ(0, [waiter enterCount]); | 152 EXPECT_EQ(0, [waiter enterCount]); |
| 160 [waiter waitForEnterCount:1 exitCount:0]; | 153 [waiter waitForEnterCount:1 exitCount:0]; |
| 161 | 154 |
| 162 // Verify it hasn't exceeded. | 155 // Verify it hasn't exceeded. |
| 163 EXPECT_EQ(1, [waiter enterCount]); | 156 EXPECT_EQ(1, [waiter enterCount]); |
| 164 EXPECT_EQ(0, [waiter exitCount]); | 157 EXPECT_EQ(0, [waiter exitCount]); |
| 165 EXPECT_TRUE(widget_->IsFullscreen()); | 158 EXPECT_TRUE(widget_->IsFullscreen()); |
| 166 EXPECT_EQ(restored_bounds, widget_->GetRestoredBounds()); | 159 EXPECT_EQ(restored_bounds, widget_->GetRestoredBounds()); |
| 167 | 160 |
| 168 widget_->SetFullscreen(false); | 161 widget_->SetFullscreen(false); |
| 169 EXPECT_FALSE(widget_->IsFullscreen()); | 162 EXPECT_FALSE(widget_->IsFullscreen()); |
| 170 EXPECT_EQ(restored_bounds, widget_->GetRestoredBounds()); | 163 EXPECT_EQ(restored_bounds, widget_->GetRestoredBounds()); |
| 171 | 164 |
| 172 [waiter waitForEnterCount:1 exitCount:1]; | 165 [waiter waitForEnterCount:1 exitCount:1]; |
| 173 EXPECT_EQ(1, [waiter enterCount]); | 166 EXPECT_EQ(1, [waiter enterCount]); |
| 174 EXPECT_EQ(1, [waiter exitCount]); | 167 EXPECT_EQ(1, [waiter exitCount]); |
| 175 EXPECT_EQ(restored_bounds, widget_->GetRestoredBounds()); | 168 EXPECT_EQ(restored_bounds, widget_->GetRestoredBounds()); |
| 176 } | 169 } |
| 177 | 170 |
| 178 // Test that Widget::Restore exits fullscreen. | 171 // Test that Widget::Restore exits fullscreen. |
| 179 TEST_F(BridgedNativeWidgetUITest, FullscreenRestore) { | 172 TEST_F(BridgedNativeWidgetUITest, FullscreenRestore) { |
| 180 if (base::mac::IsOSSnowLeopard()) | |
| 181 return; | |
| 182 | |
| 183 base::scoped_nsobject<NSWindowFullscreenNotificationWaiter> waiter( | 173 base::scoped_nsobject<NSWindowFullscreenNotificationWaiter> waiter( |
| 184 [[NSWindowFullscreenNotificationWaiter alloc] | 174 [[NSWindowFullscreenNotificationWaiter alloc] |
| 185 initWithWindow:test_window()]); | 175 initWithWindow:test_window()]); |
| 186 | 176 |
| 187 EXPECT_FALSE(widget_->IsFullscreen()); | 177 EXPECT_FALSE(widget_->IsFullscreen()); |
| 188 const gfx::Rect restored_bounds = widget_->GetRestoredBounds(); | 178 const gfx::Rect restored_bounds = widget_->GetRestoredBounds(); |
| 189 EXPECT_FALSE(restored_bounds.IsEmpty()); | 179 EXPECT_FALSE(restored_bounds.IsEmpty()); |
| 190 | 180 |
| 191 widget_->SetFullscreen(true); | 181 widget_->SetFullscreen(true); |
| 192 EXPECT_TRUE(widget_->IsFullscreen()); | 182 EXPECT_TRUE(widget_->IsFullscreen()); |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 486 NSEvent* mouse_up = cocoa_test_event_utils::MouseEventAtPointInWindow( | 476 NSEvent* mouse_up = cocoa_test_event_utils::MouseEventAtPointInWindow( |
| 487 NSMakePoint(30, 30), NSLeftMouseUp, window, 0); | 477 NSMakePoint(30, 30), NSLeftMouseUp, window, 0); |
| 488 CGEventPost(kCGSessionEventTap, [mouse_up CGEvent]); | 478 CGEventPost(kCGSessionEventTap, [mouse_up CGEvent]); |
| 489 WaitForEvent(NSLeftMouseUpMask); | 479 WaitForEvent(NSLeftMouseUpMask); |
| 490 EXPECT_EQ(120, [window frame].origin.x); | 480 EXPECT_EQ(120, [window frame].origin.x); |
| 491 } | 481 } |
| 492 } | 482 } |
| 493 | 483 |
| 494 } // namespace test | 484 } // namespace test |
| 495 } // namespace views | 485 } // namespace views |
| OLD | NEW |