Home | History | Annotate | Download | only in toolbar
      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 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.
     38 TEST_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 
     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