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 16class 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 gfx::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. 38TEST_F(WrenchIconPainterTest, Paint) { 39 gfx::Rect rect(0, 0, 29, 29); 40 gfx::Canvas canvas(rect.size(), 1.0f, 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 63TEST_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