Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Side by Side Diff: chrome/browser/ui/cocoa/browser_window_cocoa_unittest.mm

Issue 12018007: Refactor BrowserWindow fullscreen and presentation on Mac to be consistent with other platforms. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge TOT Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/browser_window_cocoa.mm ('k') | chrome/browser/ui/cocoa/browser_window_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698