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/mac/mac_util.h" |
5 #include "base/memory/scoped_nsobject.h" | 6 #include "base/memory/scoped_nsobject.h" |
6 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
7 #include "chrome/app/chrome_command_ids.h" | 8 #include "chrome/app/chrome_command_ids.h" |
8 #include "chrome/browser/prefs/pref_service.h" | 9 #include "chrome/browser/prefs/pref_service.h" |
9 #include "chrome/browser/sync/sync_ui_util.h" | 10 #include "chrome/browser/sync/sync_ui_util.h" |
10 #include "chrome/browser/ui/browser_list.h" | 11 #include "chrome/browser/ui/browser_list.h" |
11 #include "chrome/browser/ui/browser_window.h" | 12 #include "chrome/browser/ui/browser_window.h" |
12 #include "chrome/browser/ui/cocoa/browser_test_helper.h" | 13 #include "chrome/browser/ui/cocoa/browser_test_helper.h" |
13 #include "chrome/browser/ui/cocoa/browser_window_controller.h" | 14 #include "chrome/browser/ui/cocoa/browser_window_controller.h" |
14 #include "chrome/browser/ui/cocoa/cocoa_test_helper.h" | 15 #include "chrome/browser/ui/cocoa/cocoa_test_helper.h" |
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 // We release the window ourselves, so we don't have to rely on the unittest | 648 // We release the window ourselves, so we don't have to rely on the unittest |
648 // doing it for us. | 649 // doing it for us. |
649 scoped_nsobject<NSWindow> testFullscreenWindow_; | 650 scoped_nsobject<NSWindow> testFullscreenWindow_; |
650 } | 651 } |
651 @end | 652 @end |
652 | 653 |
653 class BrowserWindowFullScreenControllerTest : public CocoaTest { | 654 class BrowserWindowFullScreenControllerTest : public CocoaTest { |
654 public: | 655 public: |
655 virtual void SetUp() { | 656 virtual void SetUp() { |
656 CocoaTest::SetUp(); | 657 CocoaTest::SetUp(); |
| 658 |
| 659 // This test case crashes when run on Lion. Fail early. |
| 660 if (base::mac::IsOSLionOrLater()) { |
| 661 controller_ = nil; // Need to make sure this isn't uninitialized memory. |
| 662 FAIL() << "This test crashes on Lion; http://crbug.com/93925"; |
| 663 } |
| 664 |
657 Browser* browser = browser_helper_.browser(); | 665 Browser* browser = browser_helper_.browser(); |
658 controller_ = | 666 controller_ = |
659 [[BrowserWindowControllerFakeFullscreen alloc] initWithBrowser:browser | 667 [[BrowserWindowControllerFakeFullscreen alloc] initWithBrowser:browser |
660 takeOwnership:NO]; | 668 takeOwnership:NO]; |
661 } | 669 } |
662 | 670 |
663 virtual void TearDown() { | 671 virtual void TearDown() { |
664 [controller_ close]; | 672 [controller_ close]; |
665 CocoaTest::TearDown(); | 673 CocoaTest::TearDown(); |
666 } | 674 } |
667 | 675 |
668 public: | 676 public: |
669 BrowserTestHelper browser_helper_; | 677 BrowserTestHelper browser_helper_; |
670 BrowserWindowController* controller_; | 678 BrowserWindowController* controller_; |
671 }; | 679 }; |
672 | 680 |
673 @interface BrowserWindowController (PrivateAPI) | 681 @interface BrowserWindowController (PrivateAPI) |
674 - (BOOL)supportsFullscreen; | 682 - (BOOL)supportsFullscreen; |
675 @end | 683 @end |
676 | 684 |
677 // Check if the window is front most or if one of its child windows (such | 685 // Check if the window is front most or if one of its child windows (such |
678 // as a status bubble) is front most. | 686 // as a status bubble) is front most. |
679 static bool IsFrontWindow(NSWindow *window) { | 687 static bool IsFrontWindow(NSWindow *window) { |
680 NSWindow* frontmostWindow = [[NSApp orderedWindows] objectAtIndex:0]; | 688 NSWindow* frontmostWindow = [[NSApp orderedWindows] objectAtIndex:0]; |
681 return [frontmostWindow isEqual:window] || | 689 return [frontmostWindow isEqual:window] || |
682 [[frontmostWindow parentWindow] isEqual:window]; | 690 [[frontmostWindow parentWindow] isEqual:window]; |
683 } | 691 } |
684 | 692 |
685 TEST_F(BrowserWindowFullScreenControllerTest, TestFullscreen) { | 693 TEST_F(BrowserWindowFullScreenControllerTest, TestFullscreenNotLion) { |
686 EXPECT_FALSE([controller_ isFullscreen]); | 694 EXPECT_FALSE([controller_ isFullscreen]); |
687 [controller_ setFullscreen:YES]; | 695 [controller_ setFullscreen:YES]; |
688 EXPECT_TRUE([controller_ isFullscreen]); | 696 EXPECT_TRUE([controller_ isFullscreen]); |
689 [controller_ setFullscreen:NO]; | 697 [controller_ setFullscreen:NO]; |
690 EXPECT_FALSE([controller_ isFullscreen]); | 698 EXPECT_FALSE([controller_ isFullscreen]); |
691 } | 699 } |
692 | 700 |
693 // If this test fails, it is usually a sign that the bots have some sort of | 701 // If this test fails, it is usually a sign that the bots have some sort of |
694 // problem (such as a modal dialog up). This tests is a very useful canary, so | 702 // problem (such as a modal dialog up). This tests is a very useful canary, so |
695 // please do not mark it as flaky without first verifying that there are no bot | 703 // please do not mark it as flaky without first verifying that there are no bot |
696 // problems. | 704 // problems. |
697 TEST_F(BrowserWindowFullScreenControllerTest, TestActivate) { | 705 TEST_F(BrowserWindowFullScreenControllerTest, TestActivateNotLion) { |
698 EXPECT_FALSE([controller_ isFullscreen]); | 706 EXPECT_FALSE([controller_ isFullscreen]); |
699 | 707 |
700 [controller_ activate]; | 708 [controller_ activate]; |
701 EXPECT_TRUE(IsFrontWindow([controller_ window])); | 709 EXPECT_TRUE(IsFrontWindow([controller_ window])); |
702 | 710 |
703 [controller_ setFullscreen:YES]; | 711 [controller_ setFullscreen:YES]; |
704 [controller_ activate]; | 712 [controller_ activate]; |
705 EXPECT_TRUE(IsFrontWindow([controller_ createFullscreenWindow])); | 713 EXPECT_TRUE(IsFrontWindow([controller_ createFullscreenWindow])); |
706 | 714 |
707 // We have to cleanup after ourselves by unfullscreening. | 715 // We have to cleanup after ourselves by unfullscreening. |
(...skipping 13 matching lines...) Expand all Loading... |
721 testFullscreenWindow_.reset( | 729 testFullscreenWindow_.reset( |
722 [[NSWindow alloc] initWithContentRect:NSMakeRect(0,0,400,400) | 730 [[NSWindow alloc] initWithContentRect:NSMakeRect(0,0,400,400) |
723 styleMask:NSBorderlessWindowMask | 731 styleMask:NSBorderlessWindowMask |
724 backing:NSBackingStoreBuffered | 732 backing:NSBackingStoreBuffered |
725 defer:NO]); | 733 defer:NO]); |
726 return testFullscreenWindow_.get(); | 734 return testFullscreenWindow_.get(); |
727 } | 735 } |
728 @end | 736 @end |
729 | 737 |
730 /* TODO(???): test other methods of BrowserWindowController */ | 738 /* TODO(???): test other methods of BrowserWindowController */ |
OLD | NEW |