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 "base/string_util.h" | 8 #include "base/string_util.h" |
8 #include "chrome/browser/ui/bookmarks/bookmark_utils.h" | 9 #include "chrome/browser/ui/bookmarks/bookmark_utils.h" |
9 #import "chrome/browser/ui/cocoa/browser_window_cocoa.h" | 10 #import "chrome/browser/ui/cocoa/browser_window_cocoa.h" |
10 #import "chrome/browser/ui/cocoa/browser_window_controller.h" | 11 #import "chrome/browser/ui/cocoa/browser_window_controller.h" |
11 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" | 12 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" |
12 #include "chrome/common/chrome_notification_types.h" | 13 #include "chrome/common/chrome_notification_types.h" |
13 #include "chrome/common/pref_names.h" | 14 #include "chrome/common/pref_names.h" |
14 #include "content/public/browser/notification_details.h" | 15 #include "content/public/browser/notification_details.h" |
(...skipping 26 matching lines...) Expand all Loading... |
41 | 42 |
42 bool before = bwc->IsBookmarkBarVisible(); | 43 bool before = bwc->IsBookmarkBarVisible(); |
43 chrome::ToggleBookmarkBarWhenVisible(profile()); | 44 chrome::ToggleBookmarkBarWhenVisible(profile()); |
44 EXPECT_NE(before, bwc->IsBookmarkBarVisible()); | 45 EXPECT_NE(before, bwc->IsBookmarkBarVisible()); |
45 | 46 |
46 chrome::ToggleBookmarkBarWhenVisible(profile()); | 47 chrome::ToggleBookmarkBarWhenVisible(profile()); |
47 EXPECT_EQ(before, bwc->IsBookmarkBarVisible()); | 48 EXPECT_EQ(before, bwc->IsBookmarkBarVisible()); |
48 } | 49 } |
49 | 50 |
50 @interface FakeController : NSWindowController { | 51 @interface FakeController : NSWindowController { |
51 BOOL fullscreen_; | 52 enum { kNormal, kFullscreen, kPresentation } windowState_; |
52 } | 53 } |
53 @end | 54 @end |
54 | 55 |
55 @implementation FakeController | 56 @implementation FakeController |
56 - (void)enterFullscreenForURL:(const GURL&)url | 57 - (void)enterFullscreen { |
57 bubbleType:(FullscreenExitBubbleType)bubbleType { | 58 windowState_ = kFullscreen; |
58 fullscreen_ = YES; | |
59 } | 59 } |
60 - (void)exitFullscreen { | 60 - (void)exitFullscreen { |
61 fullscreen_ = NO; | 61 windowState_ = kNormal; |
62 } | 62 } |
63 - (BOOL)isFullscreen { | 63 - (BOOL)isFullscreen { |
64 return fullscreen_; | 64 return windowState_ != kNormal; |
| 65 } |
| 66 - (void)enterPresentationModeForURL:(const GURL&)url |
| 67 bubbleType:(FullscreenExitBubbleType)bubbleType { |
| 68 windowState_ = kPresentation; |
| 69 } |
| 70 - (void)exitPresentationMode { |
| 71 windowState_ = kNormal; |
| 72 } |
| 73 - (BOOL)inPresentationMode { |
| 74 return windowState_ == kPresentation; |
65 } | 75 } |
66 @end | 76 @end |
67 | 77 |
68 TEST_F(BrowserWindowCocoaTest, TestFullscreen) { | 78 TEST_F(BrowserWindowCocoaTest, TestFullscreen) { |
69 // Wrap the FakeController in a scoped_nsobject instead of autoreleasing in | 79 // Wrap the FakeController in a scoped_nsobject instead of autoreleasing in |
70 // windowWillClose: because we never actually open a window in this test (so | 80 // windowWillClose: because we never actually open a window in this test (so |
71 // windowWillClose: never gets called). | 81 // windowWillClose: never gets called). |
72 scoped_nsobject<FakeController> fake_controller( | 82 scoped_nsobject<FakeController> fake_controller( |
73 [[FakeController alloc] init]); | 83 [[FakeController alloc] init]); |
74 scoped_ptr<BrowserWindowCocoa> bwc(new BrowserWindowCocoa( | 84 scoped_ptr<BrowserWindowCocoa> bwc(new BrowserWindowCocoa( |
75 browser(), static_cast<BrowserWindowController*>(fake_controller.get()))); | 85 browser(), static_cast<BrowserWindowController*>(fake_controller.get()))); |
76 | 86 |
77 EXPECT_FALSE(bwc->IsFullscreen()); | 87 EXPECT_FALSE(bwc->IsFullscreen()); |
78 bwc->EnterFullscreen(GURL(), FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION); | 88 bwc->EnterFullscreen(GURL(), FEB_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION); |
79 EXPECT_TRUE(bwc->IsFullscreen()); | 89 EXPECT_FALSE(bwc->IsFullscreenWithChrome()); |
| 90 EXPECT_TRUE(bwc->IsFullscreenWithoutChrome()); |
80 bwc->ExitFullscreen(); | 91 bwc->ExitFullscreen(); |
81 EXPECT_FALSE(bwc->IsFullscreen()); | 92 EXPECT_FALSE(bwc->IsFullscreen()); |
82 [fake_controller close]; | 93 [fake_controller close]; |
| 94 } |
| 95 |
| 96 TEST_F(BrowserWindowCocoaTest, TestFullscreenWithChrome) { |
| 97 if (!base::mac::IsOSLionOrLater()) |
| 98 return; |
| 99 // Wrap the FakeController in a scoped_nsobject instead of autoreleasing in |
| 100 // windowWillClose: because we never actually open a window in this test (so |
| 101 // windowWillClose: never gets called). |
| 102 scoped_nsobject<FakeController> fake_controller( |
| 103 [[FakeController alloc] init]); |
| 104 scoped_ptr<BrowserWindowCocoa> bwc(new BrowserWindowCocoa( |
| 105 browser(), static_cast<BrowserWindowController*>(fake_controller.get()))); |
| 106 |
| 107 EXPECT_FALSE(bwc->IsFullscreen()); |
| 108 bwc->EnterFullscreenWithChrome(); |
| 109 EXPECT_TRUE(bwc->IsFullscreenWithChrome()); |
| 110 EXPECT_FALSE(bwc->IsFullscreenWithoutChrome()); |
| 111 bwc->ExitFullscreen(); |
| 112 EXPECT_FALSE(bwc->IsFullscreen()); |
| 113 [fake_controller close]; |
83 } | 114 } |
84 | 115 |
85 // Tests that BrowserWindowCocoa::Close mimics the behavior of | 116 // Tests that BrowserWindowCocoa::Close mimics the behavior of |
86 // -[NSWindow performClose:]. | 117 // -[NSWindow performClose:]. |
87 class BrowserWindowCocoaCloseTest : public CocoaProfileTest { | 118 class BrowserWindowCocoaCloseTest : public CocoaProfileTest { |
88 public: | 119 public: |
89 BrowserWindowCocoaCloseTest() | 120 BrowserWindowCocoaCloseTest() |
90 : controller_( | 121 : controller_( |
91 [OCMockObject mockForClass:[BrowserWindowController class]]), | 122 [OCMockObject mockForClass:[BrowserWindowController class]]), |
92 window_([OCMockObject mockForClass:[NSWindow class]]) { | 123 window_([OCMockObject mockForClass:[NSWindow class]]) { |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 [[[window_ stub] andReturn:nil] delegate]; | 227 [[[window_ stub] andReturn:nil] delegate]; |
197 [[[controller_ stub] andReturn:window_] window]; | 228 [[[controller_ stub] andReturn:window_] window]; |
198 [[window_ expect] orderOut:nil]; | 229 [[window_ expect] orderOut:nil]; |
199 [[window_ expect] close]; | 230 [[window_ expect] close]; |
200 CreateAndCloseBrowserWindow(); | 231 CreateAndCloseBrowserWindow(); |
201 EXPECT_OCMOCK_VERIFY(controller_); | 232 EXPECT_OCMOCK_VERIFY(controller_); |
202 EXPECT_OCMOCK_VERIFY(window_); | 233 EXPECT_OCMOCK_VERIFY(window_); |
203 } | 234 } |
204 | 235 |
205 // TODO(???): test other methods of BrowserWindowCocoa | 236 // TODO(???): test other methods of BrowserWindowCocoa |
OLD | NEW |