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

Side by Side Diff: chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_unittest.cc

Issue 1622833002: Fix opaque frame incognito icon and tabstrip positioning. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cleanup
Patch Set: Created 4 years, 11 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
« no previous file with comments | « chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_delegate.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #include "chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h" 5 #include "chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/ui/views/profiles/avatar_menu_button.h" 10 #include "chrome/browser/ui/views/profiles/avatar_menu_button.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 return IsTabStripVisible() ? Tab::GetMinimumInactiveSize().height() : 0; 108 return IsTabStripVisible() ? Tab::GetMinimumInactiveSize().height() : 0;
109 } 109 }
110 110
111 bool IsToolbarVisible() const override { return true; } 111 bool IsToolbarVisible() const override { return true; }
112 112
113 gfx::Size GetTabstripPreferredSize() const override { 113 gfx::Size GetTabstripPreferredSize() const override {
114 // Measured from Tabstrip::GetPreferredSize(). 114 // Measured from Tabstrip::GetPreferredSize().
115 return IsTabStripVisible() ? gfx::Size(78, 29) : gfx::Size(0, 0); 115 return IsTabStripVisible() ? gfx::Size(78, 29) : gfx::Size(0, 0);
116 } 116 }
117 117
118 int GetToolbarLeadingCornerClientWidth() const override {
119 return 0;
120 }
121
118 private: 122 private:
119 base::string16 window_title_; 123 base::string16 window_title_;
120 bool show_avatar_; 124 bool show_avatar_;
121 bool show_caption_buttons_; 125 bool show_caption_buttons_;
122 WindowState window_state_; 126 WindowState window_state_;
123 127
124 DISALLOW_COPY_AND_ASSIGN(TestLayoutDelegate); 128 DISALLOW_COPY_AND_ASSIGN(TestLayoutDelegate);
125 }; 129 };
126 130
127 } // namespace 131 } // namespace
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 delegate_->SetWindowState(TestLayoutDelegate::STATE_MAXIMIZED); 258 delegate_->SetWindowState(TestLayoutDelegate::STATE_MAXIMIZED);
255 root_view_->Layout(); 259 root_view_->Layout();
256 260
257 // Note how the bounds start at the exact top of the window while maximized 261 // Note how the bounds start at the exact top of the window while maximized
258 // while they start 1 pixel below when unmaximized. 262 // while they start 1 pixel below when unmaximized.
259 EXPECT_EQ("0,0 0x0", maximize_button_->bounds().ToString()); 263 EXPECT_EQ("0,0 0x0", maximize_button_->bounds().ToString());
260 EXPECT_EQ("403,0 26x18", minimize_button_->bounds().ToString()); 264 EXPECT_EQ("403,0 26x18", minimize_button_->bounds().ToString());
261 EXPECT_EQ("429,0 25x18", restore_button_->bounds().ToString()); 265 EXPECT_EQ("429,0 25x18", restore_button_->bounds().ToString());
262 EXPECT_EQ("454,0 46x18", close_button_->bounds().ToString()); 266 EXPECT_EQ("454,0 46x18", close_button_->bounds().ToString());
263 267
264 EXPECT_EQ("-5,-3 392x29", 268 EXPECT_EQ("-6,-3 393x29",
265 layout_manager_->GetBoundsForTabStrip( 269 layout_manager_->GetBoundsForTabStrip(
266 delegate_->GetTabstripPreferredSize(), kWidth).ToString()); 270 delegate_->GetTabstripPreferredSize(), kWidth).ToString());
267 EXPECT_EQ("262x61", layout_manager_->GetMinimumSize(kWidth).ToString()); 271 EXPECT_EQ("262x61", layout_manager_->GetMinimumSize(kWidth).ToString());
268 272
269 // In the maximized case, OpaqueBrowserFrameView::NonClientHitTest() uses 273 // In the maximized case, OpaqueBrowserFrameView::NonClientHitTest() uses
270 // this rect, extended to the top left corner of the window. 274 // this rect, extended to the top left corner of the window.
271 EXPECT_EQ("2,0 17x17", layout_manager_->IconBounds().ToString()); 275 EXPECT_EQ("2,0 17x17", layout_manager_->IconBounds().ToString());
272 } 276 }
273 277
274 TEST_F(OpaqueBrowserFrameViewLayoutTest, MaximizedWithYOffset) { 278 TEST_F(OpaqueBrowserFrameViewLayoutTest, MaximizedWithYOffset) {
275 // Tests the layout of a basic chrome window with the caption buttons slightly 279 // Tests the layout of a basic chrome window with the caption buttons slightly
276 // offset from the top of the screen (as they are on Linux). 280 // offset from the top of the screen (as they are on Linux).
277 layout_manager_->set_extra_caption_y(2); 281 layout_manager_->set_extra_caption_y(2);
278 delegate_->SetWindowState(TestLayoutDelegate::STATE_MAXIMIZED); 282 delegate_->SetWindowState(TestLayoutDelegate::STATE_MAXIMIZED);
279 root_view_->Layout(); 283 root_view_->Layout();
280 284
281 // Note how the bounds start at the exact top of the window, DESPITE the 285 // Note how the bounds start at the exact top of the window, DESPITE the
282 // caption Y offset of 2. This ensures that we obey Fitts' Law (the buttons 286 // caption Y offset of 2. This ensures that we obey Fitts' Law (the buttons
283 // are clickable on the top edge of the screen). However, the buttons are 2 287 // are clickable on the top edge of the screen). However, the buttons are 2
284 // pixels taller, so the images appear to be offset by 2 pixels. 288 // pixels taller, so the images appear to be offset by 2 pixels.
285 EXPECT_EQ("0,0 0x0", maximize_button_->bounds().ToString()); 289 EXPECT_EQ("0,0 0x0", maximize_button_->bounds().ToString());
286 EXPECT_EQ("403,0 26x20", minimize_button_->bounds().ToString()); 290 EXPECT_EQ("403,0 26x20", minimize_button_->bounds().ToString());
287 EXPECT_EQ("429,0 25x20", restore_button_->bounds().ToString()); 291 EXPECT_EQ("429,0 25x20", restore_button_->bounds().ToString());
288 EXPECT_EQ("454,0 46x20", close_button_->bounds().ToString()); 292 EXPECT_EQ("454,0 46x20", close_button_->bounds().ToString());
289 293
290 EXPECT_EQ("-5,-3 392x29", 294 EXPECT_EQ("-6,-3 393x29",
291 layout_manager_->GetBoundsForTabStrip( 295 layout_manager_->GetBoundsForTabStrip(
292 delegate_->GetTabstripPreferredSize(), kWidth).ToString()); 296 delegate_->GetTabstripPreferredSize(), kWidth).ToString());
293 EXPECT_EQ("262x61", layout_manager_->GetMinimumSize(kWidth).ToString()); 297 EXPECT_EQ("262x61", layout_manager_->GetMinimumSize(kWidth).ToString());
294 298
295 // In the maximized case, OpaqueBrowserFrameView::NonClientHitTest() uses 299 // In the maximized case, OpaqueBrowserFrameView::NonClientHitTest() uses
296 // this rect, extended to the top left corner of the window. 300 // this rect, extended to the top left corner of the window.
297 EXPECT_EQ("2,0 17x17", layout_manager_->IconBounds().ToString()); 301 EXPECT_EQ("2,0 17x17", layout_manager_->IconBounds().ToString());
298 } 302 }
299 303
300 TEST_F(OpaqueBrowserFrameViewLayoutTest, WindowButtonsOnLeft) { 304 TEST_F(OpaqueBrowserFrameViewLayoutTest, WindowButtonsOnLeft) {
301 // Tests the layout of a chrome window with caption buttons on the left. 305 // Tests the layout of a chrome window with caption buttons on the left.
302 std::vector<views::FrameButton> leading_buttons; 306 std::vector<views::FrameButton> leading_buttons;
303 std::vector<views::FrameButton> trailing_buttons; 307 std::vector<views::FrameButton> trailing_buttons;
304 leading_buttons.push_back(views::FRAME_BUTTON_CLOSE); 308 leading_buttons.push_back(views::FRAME_BUTTON_CLOSE);
305 leading_buttons.push_back(views::FRAME_BUTTON_MINIMIZE); 309 leading_buttons.push_back(views::FRAME_BUTTON_MINIMIZE);
306 leading_buttons.push_back(views::FRAME_BUTTON_MAXIMIZE); 310 leading_buttons.push_back(views::FRAME_BUTTON_MAXIMIZE);
307 layout_manager_->SetButtonOrdering(leading_buttons, trailing_buttons); 311 layout_manager_->SetButtonOrdering(leading_buttons, trailing_buttons);
308 root_view_->Layout(); 312 root_view_->Layout();
309 313
310 EXPECT_EQ("73,1 25x18", maximize_button_->bounds().ToString()); 314 EXPECT_EQ("73,1 25x18", maximize_button_->bounds().ToString());
311 EXPECT_EQ("47,1 26x18", minimize_button_->bounds().ToString()); 315 EXPECT_EQ("47,1 26x18", minimize_button_->bounds().ToString());
312 EXPECT_EQ("0,0 0x0", restore_button_->bounds().ToString()); 316 EXPECT_EQ("0,0 0x0", restore_button_->bounds().ToString());
313 EXPECT_EQ("4,1 43x18", close_button_->bounds().ToString()); 317 EXPECT_EQ("4,1 43x18", close_button_->bounds().ToString());
314 318
315 EXPECT_EQ("93,13 398x29", 319 EXPECT_EQ("92,13 398x29",
316 layout_manager_->GetBoundsForTabStrip( 320 layout_manager_->GetBoundsForTabStrip(
317 delegate_->GetTabstripPreferredSize(), kWidth).ToString()); 321 delegate_->GetTabstripPreferredSize(), kWidth).ToString());
318 EXPECT_EQ("261x73", layout_manager_->GetMinimumSize(kWidth).ToString()); 322 EXPECT_EQ("261x73", layout_manager_->GetMinimumSize(kWidth).ToString());
319 323
320 // If the buttons are on the left, there should be no hidden icon for the user 324 // If the buttons are on the left, there should be no hidden icon for the user
321 // to double click. 325 // to double click.
322 EXPECT_EQ("0,0 0x0", layout_manager_->IconBounds().ToString()); 326 EXPECT_EQ("0,0 0x0", layout_manager_->IconBounds().ToString());
323 } 327 }
324 328
325 TEST_F(OpaqueBrowserFrameViewLayoutTest, WithoutCaptionButtons) { 329 TEST_F(OpaqueBrowserFrameViewLayoutTest, WithoutCaptionButtons) {
326 // Tests the layout of a default chrome window with no caption buttons (which 330 // Tests the layout of a default chrome window with no caption buttons (which
327 // should force the tab strip to be condensed). 331 // should force the tab strip to be condensed).
328 delegate_->SetShouldShowCaptionButtons(false); 332 delegate_->SetShouldShowCaptionButtons(false);
329 root_view_->Layout(); 333 root_view_->Layout();
330 334
331 EXPECT_EQ("0,0 0x0", maximize_button_->bounds().ToString()); 335 EXPECT_EQ("0,0 0x0", maximize_button_->bounds().ToString());
332 EXPECT_EQ("0,0 0x0", minimize_button_->bounds().ToString()); 336 EXPECT_EQ("0,0 0x0", minimize_button_->bounds().ToString());
333 EXPECT_EQ("0,0 0x0", restore_button_->bounds().ToString()); 337 EXPECT_EQ("0,0 0x0", restore_button_->bounds().ToString());
334 EXPECT_EQ("0,0 0x0", close_button_->bounds().ToString()); 338 EXPECT_EQ("0,0 0x0", close_button_->bounds().ToString());
335 339
336 EXPECT_EQ("-5,-3 500x29", 340 EXPECT_EQ("-6,-3 501x29",
337 layout_manager_->GetBoundsForTabStrip( 341 layout_manager_->GetBoundsForTabStrip(
338 delegate_->GetTabstripPreferredSize(), kWidth).ToString()); 342 delegate_->GetTabstripPreferredSize(), kWidth).ToString());
339 EXPECT_EQ("251x61", layout_manager_->GetMinimumSize(kWidth).ToString()); 343 EXPECT_EQ("251x61", layout_manager_->GetMinimumSize(kWidth).ToString());
340 344
341 // A normal window with no window icon still produces icon bounds for 345 // A normal window with no window icon still produces icon bounds for
342 // Windows, which has a hidden icon that a user can double click on to close 346 // Windows, which has a hidden icon that a user can double click on to close
343 // the window. 347 // the window.
344 EXPECT_EQ("2,0 17x17", layout_manager_->IconBounds().ToString()); 348 EXPECT_EQ("2,0 17x17", layout_manager_->IconBounds().ToString());
345 } 349 }
346 350
347 TEST_F(OpaqueBrowserFrameViewLayoutTest, MaximizedWithoutCaptionButtons) { 351 TEST_F(OpaqueBrowserFrameViewLayoutTest, MaximizedWithoutCaptionButtons) {
348 // Tests the layout of a maximized chrome window with no caption buttons. 352 // Tests the layout of a maximized chrome window with no caption buttons.
349 delegate_->SetWindowState(TestLayoutDelegate::STATE_MAXIMIZED); 353 delegate_->SetWindowState(TestLayoutDelegate::STATE_MAXIMIZED);
350 delegate_->SetShouldShowCaptionButtons(false); 354 delegate_->SetShouldShowCaptionButtons(false);
351 root_view_->Layout(); 355 root_view_->Layout();
352 356
353 EXPECT_EQ("0,0 0x0", maximize_button_->bounds().ToString()); 357 EXPECT_EQ("0,0 0x0", maximize_button_->bounds().ToString());
354 EXPECT_EQ("0,0 0x0", minimize_button_->bounds().ToString()); 358 EXPECT_EQ("0,0 0x0", minimize_button_->bounds().ToString());
355 EXPECT_EQ("0,0 0x0", restore_button_->bounds().ToString()); 359 EXPECT_EQ("0,0 0x0", restore_button_->bounds().ToString());
356 EXPECT_EQ("0,0 0x0", close_button_->bounds().ToString()); 360 EXPECT_EQ("0,0 0x0", close_button_->bounds().ToString());
357 361
358 EXPECT_EQ("-5,-3 500x29", 362 EXPECT_EQ("-6,-3 501x29",
359 layout_manager_->GetBoundsForTabStrip( 363 layout_manager_->GetBoundsForTabStrip(
360 delegate_->GetTabstripPreferredSize(), kWidth).ToString()); 364 delegate_->GetTabstripPreferredSize(), kWidth).ToString());
361 EXPECT_EQ("251x61", layout_manager_->GetMinimumSize(kWidth).ToString()); 365 EXPECT_EQ("251x61", layout_manager_->GetMinimumSize(kWidth).ToString());
362 366
363 // In the maximized case, OpaqueBrowserFrameView::NonClientHitTest() uses 367 // In the maximized case, OpaqueBrowserFrameView::NonClientHitTest() uses
364 // this rect, extended to the top left corner of the window. 368 // this rect, extended to the top left corner of the window.
365 EXPECT_EQ("2,0 17x17", layout_manager_->IconBounds().ToString()); 369 EXPECT_EQ("2,0 17x17", layout_manager_->IconBounds().ToString());
366 } 370 }
367 371
368 TEST_F(OpaqueBrowserFrameViewLayoutTest, WithWindowTitleAndIcon) { 372 TEST_F(OpaqueBrowserFrameViewLayoutTest, WithWindowTitleAndIcon) {
(...skipping 19 matching lines...) Expand all
388 392
389 // Check the location of the avatar button. 393 // Check the location of the avatar button.
390 EXPECT_EQ("385,1 12x18", new_avatar_button_->bounds().ToString()); 394 EXPECT_EQ("385,1 12x18", new_avatar_button_->bounds().ToString());
391 // The new tab button is 39px wide and slides completely under the new 395 // The new tab button is 39px wide and slides completely under the new
392 // avatar button, thus increasing the tabstrip by that amount. 396 // avatar button, thus increasing the tabstrip by that amount.
393 EXPECT_EQ("-1,13 420x29", 397 EXPECT_EQ("-1,13 420x29",
394 layout_manager_->GetBoundsForTabStrip( 398 layout_manager_->GetBoundsForTabStrip(
395 delegate_->GetTabstripPreferredSize(), kWidth).ToString()); 399 delegate_->GetTabstripPreferredSize(), kWidth).ToString());
396 EXPECT_EQ("261x73", layout_manager_->GetMinimumSize(kWidth).ToString()); 400 EXPECT_EQ("261x73", layout_manager_->GetMinimumSize(kWidth).ToString());
397 } 401 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_delegate.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698