OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/ui/cocoa/browser_window_controller.h" | 5 #import "chrome/browser/ui/cocoa/browser_window_controller.h" |
6 | 6 |
7 #import "base/mac/mac_util.h" | 7 #import "base/mac/mac_util.h" |
8 #include "base/mac/sdk_forward_declarations.h" | 8 #include "base/mac/sdk_forward_declarations.h" |
9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 return [[controller() downloadShelf] view]; | 125 return [[controller() downloadShelf] view]; |
126 case VIEW_ID_TAB_CONTENT_AREA: | 126 case VIEW_ID_TAB_CONTENT_AREA: |
127 return [controller() tabContentArea]; | 127 return [controller() tabContentArea]; |
128 default: | 128 default: |
129 NOTREACHED(); | 129 NOTREACHED(); |
130 return nil; | 130 return nil; |
131 } | 131 } |
132 } | 132 } |
133 | 133 |
134 void VerifyZOrder(const std::vector<ViewID>& view_list) const { | 134 void VerifyZOrder(const std::vector<ViewID>& view_list) const { |
135 for (size_t i = 0; i < view_list.size() - 1; ++i) { | 135 std::vector<NSView*> visible_views; |
136 NSView* bottom_view = GetViewWithID(view_list[i]); | 136 for (size_t i = 0; i < view_list.size(); ++i) { |
137 NSView* top_view = GetViewWithID(view_list[i + 1]); | 137 NSView* view = GetViewWithID(view_list[i]); |
| 138 if ([view superview]) |
| 139 visible_views.push_back(view); |
| 140 } |
| 141 |
| 142 for (size_t i = 0; i < visible_views.size() - 1; ++i) { |
| 143 NSView* bottom_view = visible_views[i]; |
| 144 NSView* top_view = visible_views[i + 1]; |
| 145 |
138 EXPECT_NSEQ([bottom_view superview], [top_view superview]); | 146 EXPECT_NSEQ([bottom_view superview], [top_view superview]); |
139 EXPECT_TRUE([bottom_view cr_isBelowView:top_view]); | 147 EXPECT_TRUE([bottom_view cr_isBelowView:top_view]); |
140 } | 148 } |
141 | 149 |
142 // Views not in |view_list| must either be nil or not parented. | 150 // Views not in |view_list| must either be nil or not parented. |
143 for (size_t i = 0; i < VIEW_ID_COUNT; ++i) { | 151 for (size_t i = 0; i < VIEW_ID_COUNT; ++i) { |
144 if (std::find(view_list.begin(), view_list.end(), i) == view_list.end()) { | 152 if (std::find(view_list.begin(), view_list.end(), i) == view_list.end()) { |
145 NSView* view = GetViewWithID(static_cast<ViewID>(i)); | 153 NSView* view = GetViewWithID(static_cast<ViewID>(i)); |
146 EXPECT_TRUE(!view || ![view superview]); | 154 EXPECT_TRUE(!view || ![view superview]); |
147 } | 155 } |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 LocationBarViewMac* location_bar_view = [controller() locationBarBridge]; | 215 LocationBarViewMac* location_bar_view = [controller() locationBarBridge]; |
208 NSPoint icon_bottom = location_bar_view->GetPageInfoBubblePoint(); | 216 NSPoint icon_bottom = location_bar_view->GetPageInfoBubblePoint(); |
209 | 217 |
210 NSPoint info_bar_top = NSMakePoint(0, | 218 NSPoint info_bar_top = NSMakePoint(0, |
211 NSHeight([info_bar_container_controller view].frame) - | 219 NSHeight([info_bar_container_controller view].frame) - |
212 overlapping_tip_height); | 220 overlapping_tip_height); |
213 info_bar_top = [[info_bar_container_controller view] | 221 info_bar_top = [[info_bar_container_controller view] |
214 convertPoint:info_bar_top toView:nil]; | 222 convertPoint:info_bar_top toView:nil]; |
215 return icon_bottom.y - info_bar_top.y; | 223 return icon_bottom.y - info_bar_top.y; |
216 } | 224 } |
| 225 |
217 // The traffic lights should always be in front of the content view and the | 226 // The traffic lights should always be in front of the content view and the |
218 // tab strip view. Since the traffic lights change across OSX versions, this | 227 // tab strip view. Since the traffic lights change across OSX versions, this |
219 // test verifies that the contentView is in the back, and if the tab strip | 228 // test verifies that the contentView is in the back, and if the tab strip |
220 // view is a sibling, it is directly in front of the content view. | 229 // view is a sibling, it is directly in front of the content view. |
221 void VerifyTrafficLightZOrder() const { | 230 void VerifyTrafficLightZOrder() const { |
222 NSView* contentView = [[controller() window] contentView]; | 231 NSView* contentView = [[controller() window] contentView]; |
223 NSView* rootView = [contentView superview]; | 232 NSView* rootView = [contentView superview]; |
224 EXPECT_EQ(contentView, [[rootView subviews] objectAtIndex:0]); | 233 EXPECT_EQ(contentView, [[rootView subviews] objectAtIndex:0]); |
225 | 234 |
226 NSView* tabStripView = [controller() tabStripView]; | 235 NSView* tabStripView = [controller() tabStripView]; |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 EXPECT_LT(NSMinX(fullscreen_frame), NSMinX(avatar_frame)); | 301 EXPECT_LT(NSMinX(fullscreen_frame), NSMinX(avatar_frame)); |
293 EXPECT_LT(NSMaxX(fullscreen_frame), NSMinX(avatar_frame)); | 302 EXPECT_LT(NSMaxX(fullscreen_frame), NSMinX(avatar_frame)); |
294 } | 303 } |
295 | 304 |
296 // Verify that in non-Instant normal mode that the find bar and download shelf | 305 // Verify that in non-Instant normal mode that the find bar and download shelf |
297 // are above the content area. Everything else should be below it. | 306 // are above the content area. Everything else should be below it. |
298 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, ZOrderNormal) { | 307 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, ZOrderNormal) { |
299 browser()->GetFindBarController(); // add find bar | 308 browser()->GetFindBarController(); // add find bar |
300 | 309 |
301 std::vector<ViewID> view_list; | 310 std::vector<ViewID> view_list; |
| 311 view_list.push_back(VIEW_ID_DOWNLOAD_SHELF); |
302 view_list.push_back(VIEW_ID_BOOKMARK_BAR); | 312 view_list.push_back(VIEW_ID_BOOKMARK_BAR); |
303 view_list.push_back(VIEW_ID_TOOLBAR); | 313 view_list.push_back(VIEW_ID_TOOLBAR); |
304 view_list.push_back(VIEW_ID_INFO_BAR); | 314 view_list.push_back(VIEW_ID_INFO_BAR); |
305 view_list.push_back(VIEW_ID_TAB_CONTENT_AREA); | 315 view_list.push_back(VIEW_ID_TAB_CONTENT_AREA); |
306 view_list.push_back(VIEW_ID_FIND_BAR); | 316 view_list.push_back(VIEW_ID_FIND_BAR); |
307 view_list.push_back(VIEW_ID_DOWNLOAD_SHELF); | 317 VerifyZOrder(view_list); |
| 318 |
| 319 [controller() showOverlay]; |
| 320 [controller() removeOverlay]; |
| 321 VerifyZOrder(view_list); |
| 322 |
| 323 [controller() enterImmersiveFullscreen]; |
| 324 [controller() exitImmersiveFullscreen]; |
308 VerifyZOrder(view_list); | 325 VerifyZOrder(view_list); |
309 } | 326 } |
310 | 327 |
311 // Verify that in non-Instant presentation mode that the info bar is below the | 328 // Verify that in non-Instant presentation mode that the info bar is below the |
312 // content are and everything else is above it. | 329 // content are and everything else is above it. |
313 // DISABLED due to flaky failures on trybots. http://crbug.com/178778 | 330 // DISABLED due to flaky failures on trybots. http://crbug.com/178778 |
314 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, | 331 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, |
315 DISABLED_ZOrderPresentationMode) { | 332 DISABLED_ZOrderPresentationMode) { |
316 chrome::ToggleFullscreenMode(browser()); | 333 chrome::ToggleFullscreenMode(browser()); |
317 browser()->GetFindBarController(); // add find bar | 334 browser()->GetFindBarController(); // add find bar |
(...skipping 18 matching lines...) Expand all Loading... |
336 return; | 353 return; |
337 | 354 |
338 chrome::ToggleFullscreenMode(browser()); | 355 chrome::ToggleFullscreenMode(browser()); |
339 | 356 |
340 NSView* fullscreen_floating_bar = | 357 NSView* fullscreen_floating_bar = |
341 GetViewWithID(VIEW_ID_FULLSCREEN_FLOATING_BAR); | 358 GetViewWithID(VIEW_ID_FULLSCREEN_FLOATING_BAR); |
342 [fullscreen_floating_bar removeFromSuperview]; | 359 [fullscreen_floating_bar removeFromSuperview]; |
343 [[[controller() window] contentView] addSubview:fullscreen_floating_bar | 360 [[[controller() window] contentView] addSubview:fullscreen_floating_bar |
344 positioned:NSWindowBelow | 361 positioned:NSWindowBelow |
345 relativeTo:nil]; | 362 relativeTo:nil]; |
346 [controller() updateSubviewZOrder:[controller() inPresentationMode]]; | 363 [controller() updateSubviewZOrder]; |
347 | 364 |
348 std::vector<ViewID> view_list; | 365 std::vector<ViewID> view_list; |
349 view_list.push_back(VIEW_ID_INFO_BAR); | 366 view_list.push_back(VIEW_ID_INFO_BAR); |
350 view_list.push_back(VIEW_ID_TAB_CONTENT_AREA); | 367 view_list.push_back(VIEW_ID_TAB_CONTENT_AREA); |
351 view_list.push_back(VIEW_ID_FULLSCREEN_FLOATING_BAR); | 368 view_list.push_back(VIEW_ID_FULLSCREEN_FLOATING_BAR); |
352 view_list.push_back(VIEW_ID_BOOKMARK_BAR); | 369 view_list.push_back(VIEW_ID_BOOKMARK_BAR); |
353 view_list.push_back(VIEW_ID_TOOLBAR); | 370 view_list.push_back(VIEW_ID_TOOLBAR); |
354 view_list.push_back(VIEW_ID_DOWNLOAD_SHELF); | 371 view_list.push_back(VIEW_ID_DOWNLOAD_SHELF); |
355 VerifyZOrder(view_list); | 372 VerifyZOrder(view_list); |
356 } | 373 } |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 gfx::Rect(10, 10, 100, 100)); | 461 gfx::Rect(10, 10, 100, 100)); |
445 | 462 |
446 NSPoint originWithDevTools = [controller() statusBubbleBaseFrame].origin; | 463 NSPoint originWithDevTools = [controller() statusBubbleBaseFrame].origin; |
447 EXPECT_FALSE(NSEqualPoints(origin, originWithDevTools)); | 464 EXPECT_FALSE(NSEqualPoints(origin, originWithDevTools)); |
448 | 465 |
449 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools_window); | 466 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools_window); |
450 } | 467 } |
451 | 468 |
452 // Tests that top infobar tip is streched when bookmark bar becomes SHOWN/HIDDEN | 469 // Tests that top infobar tip is streched when bookmark bar becomes SHOWN/HIDDEN |
453 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, | 470 IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, |
454 InfoBarTipStrechedWhenBookmarkBarStatusChanged) { | 471 InfoBarTipStretchedWhenBookmarkBarStatusChanged) { |
455 EXPECT_FALSE([controller() isBookmarkBarVisible]); | 472 EXPECT_FALSE([controller() isBookmarkBarVisible]); |
456 ShowInfoBar(browser()); | 473 ShowInfoBar(browser()); |
457 // The infobar tip is animated during the infobar is being added, wait until | 474 // The infobar tip is animated during the infobar is being added, wait until |
458 // it completes. | 475 // it completes. |
459 WaitForTopInfoBarAnimationToFinish(); | 476 WaitForTopInfoBarAnimationToFinish(); |
460 | 477 |
461 EXPECT_FALSE([[controller() infoBarContainerController] | 478 EXPECT_FALSE([[controller() infoBarContainerController] |
462 shouldSuppressTopInfoBarTip]); | 479 shouldSuppressTopInfoBarTip]); |
463 | 480 |
464 NSInteger max_tip_height = infobars::InfoBar::kMaximumArrowTargetHeight + | 481 NSInteger max_tip_height = infobars::InfoBar::kMaximumArrowTargetHeight + |
(...skipping 19 matching lines...) Expand all Loading... |
484 // Toggle overlay, then verify z order. | 501 // Toggle overlay, then verify z order. |
485 [controller() showOverlay]; | 502 [controller() showOverlay]; |
486 [controller() removeOverlay]; | 503 [controller() removeOverlay]; |
487 VerifyTrafficLightZOrder(); | 504 VerifyTrafficLightZOrder(); |
488 | 505 |
489 // Toggle immersive fullscreen, then verify z order. | 506 // Toggle immersive fullscreen, then verify z order. |
490 [controller() enterImmersiveFullscreen]; | 507 [controller() enterImmersiveFullscreen]; |
491 [controller() exitImmersiveFullscreen]; | 508 [controller() exitImmersiveFullscreen]; |
492 VerifyTrafficLightZOrder(); | 509 VerifyTrafficLightZOrder(); |
493 } | 510 } |
OLD | NEW |