| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <Cocoa/Cocoa.h> | 5 #import <Cocoa/Cocoa.h> |
| 6 | 6 |
| 7 #include "base/mac/scoped_nsobject.h" | 7 #include "base/mac/scoped_nsobject.h" |
| 8 #include "base/macros.h" | 8 #include "base/macros.h" |
| 9 #import "chrome/browser/ui/cocoa/browser_window_layout.h" | 9 #import "chrome/browser/ui/cocoa/browser_window_layout.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| 11 #import "testing/gtest_mac.h" | 11 #import "testing/gtest_mac.h" |
| 12 #include "ui/base/material_design/material_design_controller.h" | |
| 13 | |
| 14 namespace { | |
| 15 | |
| 16 // In Material Design, the tabstrip's height is 2px smaller. As such, the | |
| 17 // expected y values in the tests need to take account of the offset. | |
| 18 | |
| 19 int TabStripYOffset() { | |
| 20 return ui::MaterialDesignController::IsModeMaterial() ? 2 : 0; | |
| 21 } | |
| 22 | |
| 23 int AvatarYOffset() { | |
| 24 return ui::MaterialDesignController::IsModeMaterial() ? 1 : 0; | |
| 25 } | |
| 26 | |
| 27 } // namespace | |
| 28 | 12 |
| 29 class BrowserWindowLayoutTest : public testing::Test { | 13 class BrowserWindowLayoutTest : public testing::Test { |
| 30 public: | 14 public: |
| 31 BrowserWindowLayoutTest() {} | 15 BrowserWindowLayoutTest() {} |
| 32 void SetUp() override { | 16 void SetUp() override { |
| 33 layout.reset([[BrowserWindowLayout alloc] init]); | 17 layout.reset([[BrowserWindowLayout alloc] init]); |
| 34 | 18 |
| 35 [layout setContentViewSize:NSMakeSize(600, 600)]; | 19 [layout setContentViewSize:NSMakeSize(600, 600)]; |
| 36 [layout setWindowSize:NSMakeSize(600, 622)]; | 20 [layout setWindowSize:NSMakeSize(600, 622)]; |
| 37 [layout setInAnyFullscreen:NO]; | 21 [layout setInAnyFullscreen:NO]; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 65 [layout setFullscreenMenubarOffset:0]; | 49 [layout setFullscreenMenubarOffset:0]; |
| 66 [layout setFullscreenToolbarFraction:0]; | 50 [layout setFullscreenToolbarFraction:0]; |
| 67 [layout setFullscreenButtonFrame:NSZeroRect]; | 51 [layout setFullscreenButtonFrame:NSZeroRect]; |
| 68 } | 52 } |
| 69 | 53 |
| 70 private: | 54 private: |
| 71 DISALLOW_COPY_AND_ASSIGN(BrowserWindowLayoutTest); | 55 DISALLOW_COPY_AND_ASSIGN(BrowserWindowLayoutTest); |
| 72 }; | 56 }; |
| 73 | 57 |
| 74 TEST_F(BrowserWindowLayoutTest, TestAllViews) { | 58 TEST_F(BrowserWindowLayoutTest, TestAllViews) { |
| 75 int yOffset = TabStripYOffset(); | |
| 76 chrome::LayoutOutput output = [layout computeLayout]; | 59 chrome::LayoutOutput output = [layout computeLayout]; |
| 77 | 60 |
| 78 EXPECT_NSEQ(NSMakeRect(0, 585 + yOffset, 600, 37 - yOffset), | 61 EXPECT_NSEQ(NSMakeRect(0, 585, 600, 37), output.tabStripLayout.frame); |
| 79 output.tabStripLayout.frame); | 62 EXPECT_NSEQ(NSMakeRect(502, 589, 63, 28), output.tabStripLayout.avatarFrame); |
| 80 EXPECT_NSEQ(NSMakeRect(502, 589 + AvatarYOffset(), 63, 28), | |
| 81 output.tabStripLayout.avatarFrame); | |
| 82 EXPECT_EQ(70, output.tabStripLayout.leftIndent); | 63 EXPECT_EQ(70, output.tabStripLayout.leftIndent); |
| 83 EXPECT_EQ(98, output.tabStripLayout.rightIndent); | 64 EXPECT_EQ(98, output.tabStripLayout.rightIndent); |
| 84 | 65 EXPECT_NSEQ(NSMakeRect(0, 553, 600, 32), output.toolbarFrame); |
| 85 EXPECT_NSEQ(NSMakeRect(0, 553 + yOffset, 600, 32), output.toolbarFrame); | 66 EXPECT_NSEQ(NSMakeRect(0, 527, 600, 26), output.bookmarkFrame); |
| 86 EXPECT_NSEQ(NSMakeRect(0, 527 + yOffset, 600, 26), output.bookmarkFrame); | |
| 87 EXPECT_NSEQ(NSZeroRect, output.fullscreenBackingBarFrame); | 67 EXPECT_NSEQ(NSZeroRect, output.fullscreenBackingBarFrame); |
| 88 EXPECT_EQ(527 + yOffset, output.findBarMaxY); | 68 EXPECT_EQ(527, output.findBarMaxY); |
| 89 EXPECT_NSEQ(NSMakeRect(0, 455 + yOffset, 600, 111), output.infoBarFrame); | 69 EXPECT_NSEQ(NSMakeRect(0, 455, 600, 111), output.infoBarFrame); |
| 90 EXPECT_NSEQ(NSMakeRect(0, 0, 600, 44), output.downloadShelfFrame); | 70 EXPECT_NSEQ(NSMakeRect(0, 0, 600, 44), output.downloadShelfFrame); |
| 91 EXPECT_NSEQ(NSMakeRect(0, 44, 600, 411 + yOffset), output.contentAreaFrame); | 71 EXPECT_NSEQ(NSMakeRect(0, 44, 600, 411), output.contentAreaFrame); |
| 92 } | 72 } |
| 93 | 73 |
| 94 TEST_F(BrowserWindowLayoutTest, TestAllViewsFullscreen) { | 74 TEST_F(BrowserWindowLayoutTest, TestAllViewsFullscreen) { |
| 95 ApplyStandardFullscreenLayoutParameters(); | 75 ApplyStandardFullscreenLayoutParameters(); |
| 96 int yOffset = TabStripYOffset(); | 76 |
| 97 chrome::LayoutOutput output = [layout computeLayout]; | 77 chrome::LayoutOutput output = [layout computeLayout]; |
| 98 | 78 |
| 99 EXPECT_NSEQ(NSMakeRect(0, 585 + yOffset, 600, 37 - yOffset), | 79 EXPECT_NSEQ(NSMakeRect(0, 585, 600, 37), output.tabStripLayout.frame); |
| 100 output.tabStripLayout.frame); | 80 EXPECT_NSEQ(NSMakeRect(533, 589, 63, 28), output.tabStripLayout.avatarFrame); |
| 101 EXPECT_NSEQ(NSMakeRect(533, 589 + AvatarYOffset(), 63, 28), | |
| 102 output.tabStripLayout.avatarFrame); | |
| 103 EXPECT_EQ(0, output.tabStripLayout.leftIndent); | 81 EXPECT_EQ(0, output.tabStripLayout.leftIndent); |
| 104 EXPECT_FALSE(output.tabStripLayout.addCustomWindowControls); | 82 EXPECT_FALSE(output.tabStripLayout.addCustomWindowControls); |
| 105 EXPECT_EQ(67, output.tabStripLayout.rightIndent); | 83 EXPECT_EQ(67, output.tabStripLayout.rightIndent); |
| 106 EXPECT_NSEQ(NSMakeRect(0, 553 + yOffset, 600, 32), output.toolbarFrame); | 84 EXPECT_NSEQ(NSMakeRect(0, 553, 600, 32), output.toolbarFrame); |
| 107 EXPECT_NSEQ(NSMakeRect(0, 527 + yOffset, 600, 26), output.bookmarkFrame); | 85 EXPECT_NSEQ(NSMakeRect(0, 527, 600, 26), output.bookmarkFrame); |
| 108 EXPECT_NSEQ(NSMakeRect(0, 527 + yOffset, 600, 95 - yOffset), | 86 EXPECT_NSEQ(NSMakeRect(0, 527, 600, 95), output.fullscreenBackingBarFrame); |
| 109 output.fullscreenBackingBarFrame); | 87 EXPECT_EQ(527, output.findBarMaxY); |
| 110 EXPECT_EQ(527 + yOffset, output.findBarMaxY); | 88 EXPECT_EQ(527, output.fullscreenExitButtonMaxY); |
| 111 EXPECT_EQ(527 + yOffset, output.fullscreenExitButtonMaxY); | 89 EXPECT_NSEQ(NSMakeRect(0, 455, 600, 111), output.infoBarFrame); |
| 112 EXPECT_NSEQ(NSMakeRect(0, 455 + yOffset, 600, 111), output.infoBarFrame); | |
| 113 EXPECT_NSEQ(NSMakeRect(0, 0, 600, 44), output.downloadShelfFrame); | 90 EXPECT_NSEQ(NSMakeRect(0, 0, 600, 44), output.downloadShelfFrame); |
| 114 EXPECT_NSEQ(NSMakeRect(0, 44, 600, 411 + yOffset), output.contentAreaFrame); | 91 EXPECT_NSEQ(NSMakeRect(0, 44, 600, 411), output.contentAreaFrame); |
| 115 } | 92 } |
| 116 | 93 |
| 117 // In fullscreen mode for Yosemite, the tab strip's left indent should be | 94 // In fullscreen mode for Yosemite, the tab strip's left indent should be |
| 118 // sufficiently large to accomodate the addition of traffic light buttons. | 95 // sufficiently large to accomodate the addition of traffic light buttons. |
| 119 TEST_F(BrowserWindowLayoutTest, TestYosemiteFullscreenTrafficLights) { | 96 TEST_F(BrowserWindowLayoutTest, TestYosemiteFullscreenTrafficLights) { |
| 120 ApplyStandardFullscreenLayoutParameters(); | 97 ApplyStandardFullscreenLayoutParameters(); |
| 121 [layout setOSYosemiteOrLater:YES]; | 98 [layout setOSYosemiteOrLater:YES]; |
| 122 | 99 |
| 123 chrome::LayoutOutput output = [layout computeLayout]; | 100 chrome::LayoutOutput output = [layout computeLayout]; |
| 124 | 101 |
| 125 EXPECT_EQ(70, output.tabStripLayout.leftIndent); | 102 EXPECT_EQ(70, output.tabStripLayout.leftIndent); |
| 126 EXPECT_TRUE(output.tabStripLayout.addCustomWindowControls); | 103 EXPECT_TRUE(output.tabStripLayout.addCustomWindowControls); |
| 127 } | 104 } |
| 128 | 105 |
| 129 TEST_F(BrowserWindowLayoutTest, TestAllViewsFullscreenMenuBarShowing) { | 106 TEST_F(BrowserWindowLayoutTest, TestAllViewsFullscreenMenuBarShowing) { |
| 130 ApplyStandardFullscreenLayoutParameters(); | 107 ApplyStandardFullscreenLayoutParameters(); |
| 131 [layout setFullscreenMenubarOffset:-10]; | 108 [layout setFullscreenMenubarOffset:-10]; |
| 132 | 109 |
| 133 int yOffset = TabStripYOffset(); | |
| 134 chrome::LayoutOutput output = [layout computeLayout]; | 110 chrome::LayoutOutput output = [layout computeLayout]; |
| 135 | 111 |
| 136 EXPECT_NSEQ(NSMakeRect(0, 575 + yOffset, 600, 37 - yOffset), | 112 EXPECT_NSEQ(NSMakeRect(0, 575, 600, 37), output.tabStripLayout.frame); |
| 137 output.tabStripLayout.frame); | 113 EXPECT_NSEQ(NSMakeRect(533, 579, 63, 28), output.tabStripLayout.avatarFrame); |
| 138 EXPECT_NSEQ(NSMakeRect(533, 579 + AvatarYOffset(), 63, 28), | |
| 139 output.tabStripLayout.avatarFrame); | |
| 140 EXPECT_EQ(0, output.tabStripLayout.leftIndent); | 114 EXPECT_EQ(0, output.tabStripLayout.leftIndent); |
| 141 EXPECT_FALSE(output.tabStripLayout.addCustomWindowControls); | 115 EXPECT_FALSE(output.tabStripLayout.addCustomWindowControls); |
| 142 EXPECT_EQ(67, output.tabStripLayout.rightIndent); | 116 EXPECT_EQ(67, output.tabStripLayout.rightIndent); |
| 143 EXPECT_NSEQ(NSMakeRect(0, 543 + yOffset, 600, 32), output.toolbarFrame); | 117 EXPECT_NSEQ(NSMakeRect(0, 543, 600, 32), output.toolbarFrame); |
| 144 EXPECT_NSEQ(NSMakeRect(0, 517 + yOffset, 600, 26), output.bookmarkFrame); | 118 EXPECT_NSEQ(NSMakeRect(0, 517, 600, 26), output.bookmarkFrame); |
| 145 EXPECT_NSEQ(NSMakeRect(0, 517 + yOffset, 600, 95 - yOffset), | 119 EXPECT_NSEQ(NSMakeRect(0, 517, 600, 95), output.fullscreenBackingBarFrame); |
| 146 output.fullscreenBackingBarFrame); | 120 EXPECT_EQ(517, output.findBarMaxY); |
| 147 EXPECT_EQ(517 + yOffset, output.findBarMaxY); | 121 EXPECT_EQ(517, output.fullscreenExitButtonMaxY); |
| 148 EXPECT_EQ(517 + yOffset, output.fullscreenExitButtonMaxY); | 122 EXPECT_NSEQ(NSMakeRect(0, 445, 600, 111), output.infoBarFrame); |
| 149 EXPECT_NSEQ(NSMakeRect(0, 445 + yOffset, 600, 111), output.infoBarFrame); | |
| 150 EXPECT_NSEQ(NSMakeRect(0, 0, 600, 44), output.downloadShelfFrame); | 123 EXPECT_NSEQ(NSMakeRect(0, 0, 600, 44), output.downloadShelfFrame); |
| 151 EXPECT_NSEQ(NSMakeRect(0, 44, 600, 411 + yOffset), output.contentAreaFrame); | 124 EXPECT_NSEQ(NSMakeRect(0, 44, 600, 411), output.contentAreaFrame); |
| 152 } | 125 } |
| 153 | 126 |
| 154 TEST_F(BrowserWindowLayoutTest, TestPopupWindow) { | 127 TEST_F(BrowserWindowLayoutTest, TestPopupWindow) { |
| 155 [layout setHasTabStrip:NO]; | 128 [layout setHasTabStrip:NO]; |
| 156 [layout setHasToolbar:NO]; | 129 [layout setHasToolbar:NO]; |
| 157 [layout setHasLocationBar:YES]; | 130 [layout setHasLocationBar:YES]; |
| 158 [layout setBookmarkBarHidden:YES]; | 131 [layout setBookmarkBarHidden:YES]; |
| 159 [layout setHasDownloadShelf:NO]; | 132 [layout setHasDownloadShelf:NO]; |
| 160 | 133 |
| 161 chrome::LayoutOutput output = [layout computeLayout]; | 134 chrome::LayoutOutput output = [layout computeLayout]; |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 | 204 |
| 232 EXPECT_NSEQ(NSMakeRect(0, 528, 600, 72), output.infoBarFrame); | 205 EXPECT_NSEQ(NSMakeRect(0, 528, 600, 72), output.infoBarFrame); |
| 233 } | 206 } |
| 234 | 207 |
| 235 // Tests that the avatar button is not aligned on the half pixel. | 208 // Tests that the avatar button is not aligned on the half pixel. |
| 236 TEST_F(BrowserWindowLayoutTest, TestAvatarButtonPixelAlignment) { | 209 TEST_F(BrowserWindowLayoutTest, TestAvatarButtonPixelAlignment) { |
| 237 [layout setAvatarSize:NSMakeSize(28, 28)]; | 210 [layout setAvatarSize:NSMakeSize(28, 28)]; |
| 238 | 211 |
| 239 chrome::LayoutOutput output = [layout computeLayout]; | 212 chrome::LayoutOutput output = [layout computeLayout]; |
| 240 | 213 |
| 241 EXPECT_NSEQ(NSMakeRect(537, 589 + AvatarYOffset(), 28, 28), | 214 EXPECT_NSEQ(NSMakeRect(537, 589, 28, 28), output.tabStripLayout.avatarFrame); |
| 242 output.tabStripLayout.avatarFrame); | |
| 243 } | 215 } |
| OLD | NEW |