| Index: ui/views/style/mac/dialog_button_border_mac_unittest.cc
|
| diff --git a/ui/views/style/mac/dialog_button_border_mac_unittest.cc b/ui/views/style/mac/dialog_button_border_mac_unittest.cc
|
| deleted file mode 100644
|
| index af6ab014a8349a2cb18eae136cb452224b8b386c..0000000000000000000000000000000000000000
|
| --- a/ui/views/style/mac/dialog_button_border_mac_unittest.cc
|
| +++ /dev/null
|
| @@ -1,200 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "ui/views/style/mac/dialog_button_border_mac.h"
|
| -
|
| -#include "base/macros.h"
|
| -#include "base/memory/ptr_util.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "third_party/skia/include/core/SkCanvas.h"
|
| -#include "ui/compositor/canvas_painter.h"
|
| -#include "ui/gfx/canvas.h"
|
| -#include "ui/views/border.h"
|
| -#include "ui/views/controls/button/label_button.h"
|
| -#include "ui/views/test/views_test_base.h"
|
| -
|
| -namespace views {
|
| -namespace {
|
| -
|
| -// LabelButton that can optionally provide a custom border.
|
| -class TestLabelButton : public LabelButton {
|
| - public:
|
| - explicit TestLabelButton(const char* text)
|
| - : LabelButton(nullptr, base::ASCIIToUTF16(text)) {}
|
| -
|
| - void SimulateAddToWidget() { OnNativeThemeChanged(nullptr); }
|
| - void set_provide_custom_border(bool value) { provide_custom_border_ = value; }
|
| -
|
| - // LabelButton:
|
| - std::unique_ptr<LabelButtonBorder> CreateDefaultBorder() const override {
|
| - if (!provide_custom_border_)
|
| - return LabelButton::CreateDefaultBorder();
|
| -
|
| - return base::MakeUnique<LabelButtonAssetBorder>(style());
|
| - }
|
| -
|
| - private:
|
| - bool provide_custom_border_ = false;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestLabelButton);
|
| -};
|
| -
|
| -gfx::Size DialogButtonBorderMacSize() {
|
| - const DialogButtonBorderMac template_border;
|
| - return template_border.GetMinimumSize();
|
| -}
|
| -
|
| -// A heuristic that tries to determine whether the border on |view| is a
|
| -// DialogButtonBorderMac by checking its minimum size.
|
| -bool BorderIsDialogButton(const View& view) {
|
| - const Border* border = view.border();
|
| - return border && DialogButtonBorderMacSize() == border->GetMinimumSize();
|
| -}
|
| -
|
| -SkColor TestPaint(View* view) {
|
| - EXPECT_TRUE(view->visible());
|
| - EXPECT_FALSE(view->bounds().IsEmpty());
|
| - const gfx::Point center = view->bounds().CenterPoint();
|
| - gfx::Canvas canvas(view->bounds().size(), 1.0, false /* is_opaque */);
|
| - SkCanvas* sk_canvas = canvas.sk_canvas();
|
| -
|
| - // Read a pixel - it should be blank.
|
| - SkColor initial_pixel;
|
| - SkBitmap bitmap;
|
| - bitmap.allocN32Pixels(1, 1);
|
| - EXPECT_TRUE(sk_canvas->readPixels(&bitmap, center.x(), center.y()));
|
| - initial_pixel = bitmap.getColor(0, 0);
|
| - EXPECT_EQ(static_cast<SkColor>(SK_ColorTRANSPARENT), initial_pixel);
|
| -
|
| - view->Paint(ui::CanvasPainter(&canvas, 1.f).context());
|
| -
|
| - // Ensure save()/restore() calls are balanced.
|
| - EXPECT_EQ(1, sk_canvas->getSaveCount());
|
| -
|
| - // Ensure "something" happened. This assumes the border is a
|
| - // DialogButtonBorderMac, which always modifies the center pixel.
|
| - EXPECT_TRUE(sk_canvas->readPixels(&bitmap, center.x(), center.y()));
|
| - return bitmap.getColor(0, 0);
|
| -}
|
| -
|
| -void TestPaintAllStates(CustomButton* button, bool verify) {
|
| - for (int i = 0; i < Button::STATE_COUNT; ++i) {
|
| - Button::ButtonState state = static_cast<Button::ButtonState>(i);
|
| - SCOPED_TRACE(testing::Message() << "Button::ButtonState: " << state);
|
| - button->SetState(state);
|
| - SkColor color = TestPaint(button);
|
| - if (verify)
|
| - EXPECT_NE(static_cast<SkColor>(SK_ColorTRANSPARENT), color);
|
| - }
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -using DialogButtonBorderMacTest = ViewsTestBase;
|
| -
|
| -// Verify that the DialogButtonBorderMac insets are consistent with the
|
| -// minimum size, and they're correctly carried across to the View's preferred
|
| -// size.
|
| -TEST_F(DialogButtonBorderMacTest, DrawMinimumSize) {
|
| - TestLabelButton button("");
|
| - button.SetStyle(Button::STYLE_BUTTON);
|
| - button.SimulateAddToWidget();
|
| -
|
| - EXPECT_TRUE(BorderIsDialogButton(button));
|
| -
|
| - // The border minimum size should be at least the size of the insets.
|
| - const gfx::Size border_min_size = DialogButtonBorderMacSize();
|
| - const gfx::Insets insets = button.GetInsets();
|
| - EXPECT_LE(insets.width(), border_min_size.width());
|
| - EXPECT_LE(insets.height(), border_min_size.height());
|
| -
|
| - // The view preferred size should be at least as big as the border minimum.
|
| - gfx::Size view_preferred_size = button.GetPreferredSize();
|
| - EXPECT_LE(border_min_size.width(), view_preferred_size.width());
|
| - EXPECT_LE(border_min_size.height(), view_preferred_size.height());
|
| -
|
| - // Note that Mac's PlatformStyle specifies a minimum button size, but it
|
| - // shouldn't be larger than the size of the button's label plus border insets.
|
| - // If it was, a Button::SetMinSize() call would be needed here to override it.
|
| -
|
| - button.SizeToPreferredSize();
|
| - EXPECT_EQ(view_preferred_size.width(), button.width());
|
| - EXPECT_EQ(view_preferred_size.height(), button.height());
|
| -
|
| - {
|
| - SCOPED_TRACE("Preferred Size");
|
| - TestPaintAllStates(&button, true);
|
| - }
|
| -
|
| - // The View can ignore the border minimum size. To account for shadows, the
|
| - // border will paint something as small as 4x4.
|
| - {
|
| - SCOPED_TRACE("Minimum Paint Size");
|
| - button.SetSize(gfx::Size(4, 4));
|
| - TestPaintAllStates(&button, true);
|
| - }
|
| -
|
| - // Smaller than that, nothing gets painted, but the paint code should be sane.
|
| - {
|
| - SCOPED_TRACE("Size 1x1");
|
| - button.SetSize(gfx::Size(1, 1));
|
| - TestPaintAllStates(&button, false);
|
| - }
|
| -}
|
| -
|
| -// Test drawing with some text. The usual case.
|
| -TEST_F(DialogButtonBorderMacTest, DrawWithLabel) {
|
| - TestLabelButton button("");
|
| - button.SetStyle(Button::STYLE_BUTTON);
|
| - button.SimulateAddToWidget();
|
| -
|
| - EXPECT_TRUE(BorderIsDialogButton(button));
|
| -
|
| - button.SizeToPreferredSize();
|
| - const gfx::Size no_label_size = button.size();
|
| -
|
| - button.SetText(
|
| - base::ASCIIToUTF16("Label Text That Exceeds the Minimum Button Size"));
|
| - button.SizeToPreferredSize();
|
| -
|
| - // Long label, so the button width should be greater than the empty button.
|
| - EXPECT_LT(no_label_size.width(), button.width());
|
| -
|
| - // The height shouldn't change.
|
| - EXPECT_EQ(no_label_size.height(), button.height());
|
| -
|
| - TestPaintAllStates(&button, true);
|
| -}
|
| -
|
| -// Test that the themed style is not used for STYLE_TEXTBUTTON (the default), or
|
| -// when a custom Border is set, or when a LabelButton subclass provides its own
|
| -// default border.
|
| -TEST_F(DialogButtonBorderMacTest, ChecksButtonStyle) {
|
| - TestLabelButton button("");
|
| - button.SimulateAddToWidget();
|
| -
|
| - // Default style is STYLE_TEXTBUTTON, which doesn't use the themed border.
|
| - EXPECT_FALSE(BorderIsDialogButton(button));
|
| -
|
| - button.SetStyle(Button::STYLE_BUTTON);
|
| - button.SimulateAddToWidget();
|
| - EXPECT_TRUE(BorderIsDialogButton(button));
|
| -
|
| - button.set_provide_custom_border(true);
|
| - button.SimulateAddToWidget();
|
| - EXPECT_FALSE(BorderIsDialogButton(button));
|
| -
|
| - button.set_provide_custom_border(false);
|
| - button.SimulateAddToWidget();
|
| - EXPECT_TRUE(BorderIsDialogButton(button));
|
| -
|
| - // Any call to SetBorder() will immediately prevent themed buttons and adding
|
| - // to a Widget (to pick up a NativeTheme) shouldn't restore them.
|
| - button.SetBorder(Border::NullBorder());
|
| - EXPECT_FALSE(BorderIsDialogButton(button));
|
| - button.SimulateAddToWidget();
|
| - EXPECT_FALSE(BorderIsDialogButton(button));
|
| -}
|
| -
|
| -} // namespace views
|
|
|