15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/button/blue_button.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/strings/string16.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/canvas.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/skia_util.h" 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "ui/views/controls/button/label_button_border.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/test/views_test_base.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestBlueButton : public BlueButton { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestBlueButton() : BlueButton(NULL, base::ASCIIToUTF16("foo")) {} 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~TestBlueButton() {} 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) using BlueButton::OnNativeThemeChanged; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TestBlueButton); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef ViewsTestBase BlueButtonTest; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BlueButtonTest, Border) { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Compared to a normal LabelButton... 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LabelButton button(NULL, base::ASCIIToUTF16("foo")); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) button.SetBoundsRect(gfx::Rect(gfx::Point(0, 0), button.GetPreferredSize())); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Canvas button_canvas(button.bounds().size(), 1.0, true); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) button.border()->Paint(button, &button_canvas); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ... a special blue border should be used. 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestBlueButton blue_button; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) blue_button.SetBoundsRect(gfx::Rect(gfx::Point(0, 0), 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) blue_button.GetPreferredSize())); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Canvas canvas(blue_button.bounds().size(), 1.0, true); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) blue_button.border()->Paint(blue_button, &canvas); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(button.GetText(), blue_button.GetText()); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(gfx::BitmapsAreEqual(button_canvas.ExtractImageRep().sk_bitmap(), 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) canvas.ExtractImageRep().sk_bitmap())); 49 50 // Make sure it's still used after the native theme "changes". 51 blue_button.OnNativeThemeChanged(NULL); 52 gfx::Canvas canvas2(blue_button.bounds().size(), 1.0, true); 53 blue_button.border()->Paint(blue_button, &canvas2); 54 55 EXPECT_TRUE(gfx::BitmapsAreEqual(canvas.ExtractImageRep().sk_bitmap(), 56 canvas2.ExtractImageRep().sk_bitmap())); 57} 58 59} // namespace views 60