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