1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/ui/toolbar/wrench_icon_painter.h" 6 7 #include "base/message_loop/message_loop.h" 8 #include "chrome/browser/themes/theme_service.h" 9 #include "chrome/browser/themes/theme_service_factory.h" 10 #include "chrome/test/base/testing_profile.h" 11 #include "grit/theme_resources.h" 12 #include "testing/gtest/include/gtest/gtest.h" 13 #include "ui/gfx/canvas.h" 14 #include "ui/gfx/rect.h" 15 16 class WrenchIconPainterTest : public testing::Test, 17 public WrenchIconPainter::Delegate { 18 public: 19 WrenchIconPainterTest() : schedule_paint_count_(0), painter_(this) { 20 theme_provider_ = ThemeServiceFactory::GetForProfile(&profile_); 21 } 22 23 virtual void ScheduleWrenchIconPaint() OVERRIDE { ++schedule_paint_count_; } 24 25 protected: 26 base::MessageLoopForUI message_loop_; // Needed for ui::Animation. 27 TestingProfile profile_; 28 int schedule_paint_count_; 29 ui::ThemeProvider* theme_provider_; 30 WrenchIconPainter painter_; 31 32 private: 33 DISALLOW_COPY_AND_ASSIGN(WrenchIconPainterTest); 34 }; 35 36 // Nothing to test here. Just exercise the paint code to verify that nothing 37 // leaks or crashes. 38 TEST_F(WrenchIconPainterTest, Paint) { 39 gfx::Rect rect(0, 0, 29, 29); 40 gfx::Canvas canvas(rect.size(), ui::SCALE_FACTOR_100P, true); 41 42 painter_.Paint(&canvas, theme_provider_, rect, WrenchIconPainter::BEZEL_NONE); 43 painter_.Paint( 44 &canvas, theme_provider_, rect, WrenchIconPainter::BEZEL_HOVER); 45 painter_.Paint( 46 &canvas, theme_provider_, rect, WrenchIconPainter::BEZEL_PRESSED); 47 48 painter_.SetSeverity(WrenchIconPainter::SEVERITY_LOW, true); 49 painter_.Paint( 50 &canvas, theme_provider_, rect, WrenchIconPainter::BEZEL_PRESSED); 51 painter_.SetSeverity(WrenchIconPainter::SEVERITY_MEDIUM, true); 52 painter_.Paint( 53 &canvas, theme_provider_, rect, WrenchIconPainter::BEZEL_PRESSED); 54 painter_.SetSeverity(WrenchIconPainter::SEVERITY_HIGH, true); 55 painter_.Paint( 56 &canvas, theme_provider_, rect, WrenchIconPainter::BEZEL_PRESSED); 57 58 painter_.set_badge(*theme_provider_->GetImageSkiaNamed(IDR_PRODUCT_LOGO_16)); 59 painter_.Paint( 60 &canvas, theme_provider_, rect, WrenchIconPainter::BEZEL_PRESSED); 61 } 62 63 TEST_F(WrenchIconPainterTest, PaintCallback) { 64 painter_.SetSeverity(WrenchIconPainter::SEVERITY_LOW, true); 65 schedule_paint_count_ = 0; 66 painter_.AnimationProgressed(NULL); 67 EXPECT_EQ(1, schedule_paint_count_); 68 } 69