Index: chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm |
diff --git a/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm b/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm |
index 39bb2400afe7c9b0100f04f541703b84ab16bb52..2d8fca884bcb855a3ce86183f8249c1df4eadea0 100644 |
--- a/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm |
+++ b/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm |
@@ -31,6 +31,7 @@ |
#import "chrome/browser/ui/cocoa/nsview_additions.h" |
#import "chrome/browser/ui/cocoa/profiles/avatar_base_controller.h" |
#import "chrome/browser/ui/cocoa/tab_contents/overlayable_contents_controller.h" |
+#import "chrome/browser/ui/cocoa/tabs/tab_strip_view.h" |
#include "chrome/browser/ui/extensions/application_launch.h" |
#include "chrome/browser/ui/find_bar/find_bar_controller.h" |
#include "chrome/browser/ui/find_bar/find_bar.h" |
@@ -213,6 +214,19 @@ class BrowserWindowControllerTest : public InProcessBrowserTest { |
convertPoint:info_bar_top toView:nil]; |
return icon_bottom.y - info_bar_top.y; |
} |
+ // The traffic lights should always be in front of the content view and the |
+ // tab strip view. Since the traffic lights change across OSX versions, this |
+ // test verifies that the contentView is in the back, and if the tab strip |
+ // view is a sibling, it is directly in front of the content view. |
+ void VerifyTrafficLightZOrder() const { |
+ NSView* contentView = [[controller() window] contentView]; |
+ NSView* rootView = [contentView superview]; |
+ EXPECT_EQ(contentView, [[rootView subviews] objectAtIndex:0]); |
+ |
+ NSView* tabStripView = [controller() tabStripView]; |
+ if ([[rootView subviews] containsObject:tabStripView]) |
+ EXPECT_EQ(tabStripView, [[rootView subviews] objectAtIndex:1]); |
+ } |
private: |
DISALLOW_COPY_AND_ASSIGN(BrowserWindowControllerTest); |
@@ -462,3 +476,18 @@ IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, |
EXPECT_EQ(std::min(GetExpectedTopInfoBarTipHeight(), max_tip_height), |
[[controller() infoBarContainerController] overlappingTipHeight]); |
} |
+ |
+IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest, TrafficLightZOrder) { |
+ // Verify z order immediately after creation. |
+ VerifyTrafficLightZOrder(); |
+ |
+ // Toggle overlay, then verify z order. |
+ [controller() showOverlay]; |
+ [controller() removeOverlay]; |
+ VerifyTrafficLightZOrder(); |
+ |
+ // Toggle immersive fullscreen, then verify z order. |
+ [controller() enterImmersiveFullscreen]; |
+ [controller() exitImmersiveFullscreen]; |
+ VerifyTrafficLightZOrder(); |
+} |