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

Side by Side Diff: chrome/browser/ui/cocoa/website_settings/permission_bubble_cocoa_browsertest.mm

Issue 986333006: Center permission bubble if location bar is hidden in MacOS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix broken tests Created 5 years, 8 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
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/browser.h"
6 #include "chrome/browser/ui/browser_window.h"
7 #import "chrome/browser/ui/cocoa/browser_window_controller.h"
8 #import "chrome/browser/ui/cocoa/website_settings/permission_bubble_cocoa.h"
9 #include "chrome/browser/ui/test/permission_bubble_browsertest.h"
10 #include "testing/gmock/include/gmock/gmock.h"
11 #import "ui/base/cocoa/fullscreen_window_manager.h"
12
groby-ooo-7-16 2015/04/08 18:39:15 Put all this (constants, test helper classes, stat
hcarmona 2015/04/10 18:54:07 Done.
13 // To be used when getting the anchor with a location bar. The bubble should be
14 // in the top-right corner.
15 const int kTolerance = 50;
groby-ooo-7-16 2015/04/08 18:39:15 Still a huge tolerance. Why so big?
hcarmona 2015/04/10 18:54:07 I've changed my expected value to be exactly the a
16
17 class TestPermissionBubbleCocoa : public PermissionBubbleCocoa {
18 public:
19 TestPermissionBubbleCocoa(NSWindow* parent_window)
20 : PermissionBubbleCocoa(parent_window) {}
21
22 // Returns the base class value for testing |HasLocationBar|.
23 bool HasLocationBar() override {
groby-ooo-7-16 2015/04/08 18:39:15 You could just friend the test, saving you a lot o
hcarmona 2015/04/10 18:54:07 Friended.
24 return PermissionBubbleCocoa::HasLocationBar();
25 }
26
27 private:
28 DISALLOW_COPY_AND_ASSIGN(TestPermissionBubbleCocoa);
29 };
30
31 class MockPermissionBubbleCocoa : public PermissionBubbleCocoa {
32 public:
33 MockPermissionBubbleCocoa(NSWindow* parent_window)
34 : PermissionBubbleCocoa(parent_window) {}
35
36 MOCK_METHOD0(HasLocationBar, bool());
37
38 private:
39 DISALLOW_COPY_AND_ASSIGN(MockPermissionBubbleCocoa);
40 };
41
42 static void CloseController(Browser* browser) {
groby-ooo-7-16 2015/04/08 18:39:15 No need to be static in anon namespace.
hcarmona 2015/04/10 18:54:07 Done.
43 browser->tab_strip_model()->CloseSelectedTabs();
44
45 NSWindow* native_window = browser->window()->GetNativeWindow();
46 BrowserWindowController* controller =
47 [BrowserWindowController browserWindowControllerForWindow:native_window];
48
49 [controller close];
50 }
51
52 // Default Window Test /////////////////////////////////////////////////////////
groby-ooo-7-16 2015/04/08 18:39:15 I'd get rid of these separators - the test names s
hcarmona 2015/04/10 18:54:07 Done.
53
54 IN_PROC_BROWSER_TEST_F(PermissionBubbleBrowsertest, HasLocationBarByDefault) {
55 TestPermissionBubbleCocoa bubble(browser()->window()->GetNativeWindow());
56 bubble.SetDelegate(test_delegate());
57 bubble.Show(requests(), accept_states());
58 EXPECT_TRUE(bubble.HasLocationBar());
59 CloseController(browser());
groby-ooo-7-16 2015/04/08 18:39:15 Why do we need this at all? Shouldn't browser test
hcarmona 2015/04/10 18:54:07 I remember having issues without it, but everythin
60 }
61
62 // Fullscreen Test /////////////////////////////////////////////////////////////
63
64 IN_PROC_BROWSER_TEST_F(PermissionBubbleBrowsertest, FullscreenHasLocationBar) {
65 TestPermissionBubbleCocoa bubble(browser()->window()->GetNativeWindow());
66 bubble.SetDelegate(test_delegate());
67 bubble.Show(requests(), accept_states());
68
69 NSWindow* window = browser()->window()->GetNativeWindow();
70 base::scoped_nsobject<FullscreenWindowManager> manager(
71 [[FullscreenWindowManager alloc] initWithWindow:window
72 desiredScreen:[NSScreen mainScreen]]);
73 EXPECT_TRUE(bubble.HasLocationBar());
74 [manager enterFullscreenMode];
75 EXPECT_TRUE(bubble.HasLocationBar());
76 [manager exitFullscreenMode];
77 EXPECT_TRUE(bubble.HasLocationBar());
78 CloseController(browser());
79 }
80
81 // App Test ////////////////////////////////////////////////////////////////////
82
83 IN_PROC_BROWSER_TEST_F(PermissionBubbleAppBrowsertest, AppHasNoLocationBar) {
84 TestPermissionBubbleCocoa bubble(app_browser()->window()->GetNativeWindow());
85 bubble.SetDelegate(test_delegate());
86 bubble.Show(requests(), accept_states());
87 EXPECT_FALSE(bubble.HasLocationBar());
88 CloseController(app_browser());
89 }
90
91 // Kiosk Test //////////////////////////////////////////////////////////////////
92
93 // http://crbug.com/470724
94 // Kiosk mode on Mac has a location bar but it shouldn't.
95 IN_PROC_BROWSER_TEST_F(PermissionBubbleKioskBrowsertest,
96 DISABLED_KioskHasNoLocationBar) {
97 TestPermissionBubbleCocoa bubble(browser()->window()->GetNativeWindow());
98 bubble.SetDelegate(test_delegate());
99 bubble.Show(requests(), accept_states());
100 EXPECT_FALSE(bubble.HasLocationBar());
101 CloseController(browser());
102 }
103
104 // Anchor Position Tests ///////////////////////////////////////////////////////
105
106 IN_PROC_BROWSER_TEST_F(PermissionBubbleBrowsertest,
107 AnchorPositionWithLocationBar) {
108 testing::NiceMock<MockPermissionBubbleCocoa> bubble(
109 browser()->window()->GetNativeWindow());
110 bubble.SetDelegate(test_delegate());
111 bubble.Show(requests(), accept_states());
112 ON_CALL(bubble, HasLocationBar()).WillByDefault(testing::Return(true));
113
114 NSPoint anchor = bubble.GetAnchorPoint();
115 NSWindow* window = browser()->window()->GetNativeWindow();
116 NSRect frame = [window frame];
117
118 // Expected anchor location will be top left when there's a location bar.
119 NSPoint expected = NSMakePoint(NSMinX(frame) + 100, NSMaxY(frame) - 25);
120
121 // Anchor should be close to the left of the screen.
122 ASSERT_NEAR(expected.x, anchor.x, kTolerance);
123
124 // Anchor should be close to the top of the screen.
125 ASSERT_NEAR(expected.y, anchor.y, kTolerance);
126 CloseController(browser());
127 }
128
129 IN_PROC_BROWSER_TEST_F(PermissionBubbleBrowsertest,
130 AnchorPositionWithoutLocationBar) {
131 testing::NiceMock<MockPermissionBubbleCocoa> bubble(
132 browser()->window()->GetNativeWindow());
133 bubble.SetDelegate(test_delegate());
134 bubble.Show(requests(), accept_states());
135 ON_CALL(bubble, HasLocationBar()).WillByDefault(testing::Return(false));
136
137 NSPoint anchor = bubble.GetAnchorPoint();
138 NSWindow* window = browser()->window()->GetNativeWindow();
139 NSRect frame = [window frame];
140
141 // Expected anchor location will be top center when there's no location bar.
142 NSPoint expected = NSMakePoint(frame.size.width / 2, frame.size.height);
143 expected = [window convertBaseToScreen:expected];
144
145 // Anchor should be centered.
146 EXPECT_TRUE(NSEqualPoints(expected, anchor));
147 CloseController(browser());
148 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698