| 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 #include "chrome/browser/ui/views/tabs/tab.h" | 5 #include "chrome/browser/ui/views/tabs/tab.h" |
| 6 | 6 |
| 7 #include "base/i18n/rtl.h" | 7 #include "base/i18n/rtl.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "chrome/browser/ui/tabs/tab_utils.h" | 9 #include "chrome/browser/ui/tabs/tab_utils.h" |
| 10 #include "chrome/browser/ui/views/tabs/media_indicator_button.h" | 10 #include "chrome/browser/ui/views/tabs/media_indicator_button.h" |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 190 tab.close_button_->GetInsets().left()); | 190 tab.close_button_->GetInsets().left()); |
| 191 } | 191 } |
| 192 if (tab.ShouldShowCloseBox()) { | 192 if (tab.ShouldShowCloseBox()) { |
| 193 // Note: The title bounds can overlap the left-insets of the close box, | 193 // Note: The title bounds can overlap the left-insets of the close box, |
| 194 // but should otherwise be to the left of the close button. | 194 // but should otherwise be to the left of the close button. |
| 195 if (tab.title_->width() > 0) { | 195 if (tab.title_->width() > 0) { |
| 196 EXPECT_LE(tab.title_->bounds().right(), | 196 EXPECT_LE(tab.title_->bounds().right(), |
| 197 tab.close_button_->bounds().x() + | 197 tab.close_button_->bounds().x() + |
| 198 tab.close_button_->GetInsets().left()); | 198 tab.close_button_->GetInsets().left()); |
| 199 } | 199 } |
| 200 EXPECT_LE(tab.close_button_->bounds().right(), contents_bounds.right()); | 200 // We need to use the close button contents bounds instead of its bounds, |
| 201 EXPECT_LE(contents_bounds.y(), tab.close_button_->bounds().y()); | 201 // since it has an empty border around it to extend its clickable area for |
| 202 EXPECT_LE(tab.close_button_->bounds().bottom(), contents_bounds.bottom()); | 202 // touch. |
| 203 // Note: The close button right edge can be outside the nominal contents |
| 204 // bounds, but shouldn't leave the local bounds. |
| 205 const gfx::Rect close_bounds = tab.close_button_->GetContentsBounds(); |
| 206 EXPECT_LE(close_bounds.right(), tab.GetLocalBounds().right()); |
| 207 EXPECT_LE(contents_bounds.y(), close_bounds.y()); |
| 208 EXPECT_LE(close_bounds.bottom(), contents_bounds.bottom()); |
| 203 } | 209 } |
| 204 } | 210 } |
| 205 | 211 |
| 206 protected: | 212 protected: |
| 207 void InitWidget(Widget* widget) { | 213 void InitWidget(Widget* widget) { |
| 208 Widget::InitParams params(CreateParams(Widget::InitParams::TYPE_WINDOW)); | 214 Widget::InitParams params(CreateParams(Widget::InitParams::TYPE_WINDOW)); |
| 209 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 215 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
| 210 params.bounds.SetRect(10, 20, 300, 400); | 216 params.bounds.SetRect(10, 20, 300, 400); |
| 211 widget->Init(params); | 217 widget->Init(params); |
| 212 } | 218 } |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 400 EXPECT_EQ(50, tab.close_button_->bounds().height()); | 406 EXPECT_EQ(50, tab.close_button_->bounds().height()); |
| 401 } | 407 } |
| 402 | 408 |
| 403 // Test in both a LTR and a RTL locale. Note: The fact that the UI code is | 409 // Test in both a LTR and a RTL locale. Note: The fact that the UI code is |
| 404 // configured for an RTL locale does *not* change how the coordinates are | 410 // configured for an RTL locale does *not* change how the coordinates are |
| 405 // examined in the tests above because views::View and friends are supposed to | 411 // examined in the tests above because views::View and friends are supposed to |
| 406 // auto-mirror the widgets when painting. Thus, what we're testing here is that | 412 // auto-mirror the widgets when painting. Thus, what we're testing here is that |
| 407 // there's no code in Tab that will erroneously subvert this automatic | 413 // there's no code in Tab that will erroneously subvert this automatic |
| 408 // coordinate translation. http://crbug.com/384179 | 414 // coordinate translation. http://crbug.com/384179 |
| 409 INSTANTIATE_TEST_CASE_P(, TabTest, ::testing::Values(false, true)); | 415 INSTANTIATE_TEST_CASE_P(, TabTest, ::testing::Values(false, true)); |
| OLD | NEW |