| Index: chrome/browser/ui/app_list/search/launcher_search/extension_badged_icon_image_unittest.cc
|
| diff --git a/chrome/browser/ui/app_list/search/launcher_search/extension_badged_icon_image_unittest.cc b/chrome/browser/ui/app_list/search/launcher_search/extension_badged_icon_image_unittest.cc
|
| deleted file mode 100644
|
| index 46e8f474780a3ca93dc2a007ec23387a5332cc33..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/app_list/search/launcher_search/extension_badged_icon_image_unittest.cc
|
| +++ /dev/null
|
| @@ -1,269 +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 "chrome/browser/ui/app_list/search/launcher_search/extension_badged_icon_image.h"
|
| -
|
| -#include "chrome/browser/chromeos/launcher_search_provider/error_reporter.h"
|
| -#include "extensions/common/manifest_constants.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "ui/gfx/canvas.h"
|
| -#include "ui/gfx/geometry/rect.h"
|
| -#include "ui/gfx/geometry/size.h"
|
| -#include "ui/gfx/image/canvas_image_source.h"
|
| -#include "ui/gfx/image/image_skia.h"
|
| -#include "ui/gfx/image/image_unittest_util.h"
|
| -#include "url/gurl.h"
|
| -
|
| -using chromeos::launcher_search_provider::ErrorReporter;
|
| -
|
| -namespace app_list {
|
| -
|
| -namespace {
|
| -
|
| -const char kTestExtensionId[] = "foo";
|
| -const char kTestCustomIconURL[] = "chrome-extension://foo/bar";
|
| -
|
| -// This image source generates following image:
|
| -//
|
| -// ###
|
| -// #**
|
| -// #**
|
| -//
|
| -// where # is the primary fill color, and * is the secondary fill color.
|
| -class BadgedImageSource : public gfx::CanvasImageSource {
|
| - public:
|
| - BadgedImageSource(const gfx::Size& image_size,
|
| - const SkColor primary_fill_color)
|
| - : CanvasImageSource(image_size, false),
|
| - primary_fill_color_(primary_fill_color),
|
| - secondary_fill_color_(SK_ColorTRANSPARENT) {}
|
| -
|
| - BadgedImageSource(const gfx::Size& image_size,
|
| - const SkColor primary_fill_color,
|
| - const SkColor secondary_fill_color)
|
| - : CanvasImageSource(image_size, false),
|
| - primary_fill_color_(primary_fill_color),
|
| - secondary_fill_color_(secondary_fill_color) {}
|
| -
|
| - void Draw(gfx::Canvas* canvas) override {
|
| - canvas->FillRect(gfx::Rect(size()), primary_fill_color_);
|
| -
|
| - const int badge_dimension = size().width() * 2 / 3;
|
| - const int offset = size().width() - badge_dimension;
|
| - canvas->FillRect(
|
| - gfx::Rect(offset, offset, badge_dimension, badge_dimension),
|
| - secondary_fill_color_);
|
| - }
|
| -
|
| - private:
|
| - const SkColor primary_fill_color_;
|
| - const SkColor secondary_fill_color_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(BadgedImageSource);
|
| -};
|
| -
|
| -// Test implementation of ExtensionBadgedIconImage.
|
| -class ExtensionBadgedIconImageTestImpl : public ExtensionBadgedIconImage {
|
| - public:
|
| - // Use base class constructor.
|
| - using ExtensionBadgedIconImage::ExtensionBadgedIconImage;
|
| -
|
| - const gfx::ImageSkia& LoadExtensionIcon() override {
|
| - // Returns 32x32 black image.
|
| - extension_icon_ = gfx::ImageSkia(
|
| - new BadgedImageSource(icon_size_, SK_ColorBLACK), icon_size_);
|
| - return extension_icon_;
|
| - }
|
| -
|
| - // Calls OnExtensionIconImageChnaged callback with |extension_icon|.
|
| - void LoadExtensionIconAsync(const gfx::ImageSkia& image) {
|
| - OnExtensionIconChanged(image);
|
| - }
|
| -
|
| - void LoadIconResourceFromExtension() override {
|
| - // For success case, returns 32x32 blue image.
|
| - is_load_extension_icon_resource_called_ = true;
|
| - }
|
| -
|
| - bool IsLoadExtensionIconResourceCalled() const {
|
| - return is_load_extension_icon_resource_called_;
|
| - }
|
| -
|
| - // Calls OnCustomIconLoaded callback with |custom_icon|. Sets an empty image
|
| - // for simulating a failure case.
|
| - void CallOnCustomIconLoaded(gfx::ImageSkia custom_icon) {
|
| - OnCustomIconLoaded(custom_icon);
|
| - }
|
| -
|
| - private:
|
| - gfx::ImageSkia extension_icon_;
|
| - bool is_load_extension_icon_resource_called_ = false;
|
| -};
|
| -
|
| -// A fake error reporter to test error message.
|
| -class FakeErrorReporter : public ErrorReporter {
|
| - public:
|
| - FakeErrorReporter() : ErrorReporter(nullptr, -1) {
|
| - last_message_.reset(new std::string());
|
| - }
|
| - explicit FakeErrorReporter(const linked_ptr<std::string>& last_message)
|
| - : ErrorReporter(nullptr, -1), last_message_(last_message) {}
|
| - ~FakeErrorReporter() override {}
|
| - void Warn(const std::string& message) override {
|
| - last_message_->clear();
|
| - last_message_->append(message);
|
| - }
|
| -
|
| - const std::string& GetLastWarningMessage() { return *last_message_.get(); }
|
| -
|
| - scoped_ptr<ErrorReporter> Duplicate() override {
|
| - return make_scoped_ptr(new FakeErrorReporter(last_message_));
|
| - }
|
| -
|
| - private:
|
| - linked_ptr<std::string> last_message_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(FakeErrorReporter);
|
| -};
|
| -
|
| -// Creates a test extension with |extension_id|.
|
| -scoped_refptr<extensions::Extension> CreateTestExtension(
|
| - const std::string& extension_id) {
|
| - base::DictionaryValue manifest;
|
| - std::string error;
|
| - manifest.SetStringWithoutPathExpansion(extensions::manifest_keys::kVersion,
|
| - "1");
|
| - manifest.SetStringWithoutPathExpansion(extensions::manifest_keys::kName,
|
| - "TestExtension");
|
| - return extensions::Extension::Create(
|
| - base::FilePath(), extensions::Manifest::UNPACKED, manifest,
|
| - extensions::Extension::NO_FLAGS, extension_id, &error);
|
| -}
|
| -
|
| -// Returns true if icon image of |badged_icon_image| equals to |expected_image|.
|
| -bool IsEqual(const gfx::ImageSkia& expected_image,
|
| - const ExtensionBadgedIconImage& badged_icon_image) {
|
| - return gfx::test::IsEqual(
|
| - expected_image.GetRepresentation(1.0).sk_bitmap(),
|
| - badged_icon_image.GetIconImage().GetRepresentation(1.0).sk_bitmap());
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -class ExtensionBadgedIconImageTest : public testing::Test {
|
| - protected:
|
| - void SetUp() override { extension_ = CreateTestExtension(kTestExtensionId); }
|
| -
|
| - scoped_ptr<FakeErrorReporter> GetFakeErrorReporter() {
|
| - return make_scoped_ptr(new FakeErrorReporter());
|
| - }
|
| -
|
| - scoped_refptr<extensions::Extension> extension_;
|
| -};
|
| -
|
| -TEST_F(ExtensionBadgedIconImageTest, WithoutCustomIconSuccessCase) {
|
| - GURL icon_url; // No custom icon.
|
| - ExtensionBadgedIconImageTestImpl impl(icon_url, nullptr, nullptr, 32,
|
| - GetFakeErrorReporter());
|
| - impl.LoadResources();
|
| -
|
| - // Icon should be black image.
|
| - gfx::Size icon_size(32, 32);
|
| - gfx::ImageSkia expected_image(new BadgedImageSource(icon_size, SK_ColorBLACK),
|
| - icon_size);
|
| - ASSERT_TRUE(IsEqual(expected_image, impl));
|
| -}
|
| -
|
| -TEST_F(ExtensionBadgedIconImageTest, ExtensionIconAsyncLoadSuccessCase) {
|
| - GURL icon_url; // No custom icon.
|
| - ExtensionBadgedIconImageTestImpl impl(icon_url, nullptr, nullptr, 32,
|
| - GetFakeErrorReporter());
|
| - impl.LoadResources();
|
| -
|
| - // Extension icon is loaded as async.
|
| - gfx::Size icon_size(32, 32);
|
| - gfx::ImageSkia extension_icon(new BadgedImageSource(icon_size, SK_ColorGREEN),
|
| - icon_size);
|
| - impl.LoadExtensionIconAsync(extension_icon);
|
| -
|
| - gfx::ImageSkia expected_image(new BadgedImageSource(icon_size, SK_ColorGREEN),
|
| - icon_size);
|
| - ASSERT_TRUE(IsEqual(expected_image, impl));
|
| -}
|
| -
|
| -TEST_F(ExtensionBadgedIconImageTest, WithCustomIconSuccessCase) {
|
| - GURL icon_url(kTestCustomIconURL);
|
| - ExtensionBadgedIconImageTestImpl impl(icon_url, nullptr, extension_.get(), 32,
|
| - GetFakeErrorReporter());
|
| - ASSERT_FALSE(impl.IsLoadExtensionIconResourceCalled());
|
| - impl.LoadResources();
|
| -
|
| - // Asserts that LoadExtensionIconResource is called.
|
| - ASSERT_TRUE(impl.IsLoadExtensionIconResourceCalled());
|
| -
|
| - // Load custom icon as async.
|
| - gfx::Size icon_size(32, 32);
|
| - gfx::ImageSkia custom_icon(new BadgedImageSource(icon_size, SK_ColorGREEN),
|
| - icon_size);
|
| - impl.CallOnCustomIconLoaded(custom_icon);
|
| -
|
| - gfx::ImageSkia expected_image(
|
| - new BadgedImageSource(icon_size, SK_ColorGREEN, SK_ColorBLACK),
|
| - icon_size);
|
| - ASSERT_TRUE(IsEqual(expected_image, impl));
|
| -}
|
| -
|
| -TEST_F(ExtensionBadgedIconImageTest, InvalidCustomIconUrl) {
|
| - // Use a really long URL (for testing the string truncation).
|
| - // The URL is from the wrong extension (foo2), so should be rejected.
|
| - std::string invalid_url =
|
| - "chrome-extension://foo2/bar/"
|
| - "901234567890123456789012345678901234567890123456789012345678901234567890"
|
| - "1";
|
| - ASSERT_EQ(101U, invalid_url.size());
|
| -
|
| - scoped_ptr<FakeErrorReporter> fake_error_reporter = GetFakeErrorReporter();
|
| - GURL icon_url(invalid_url);
|
| - ExtensionBadgedIconImageTestImpl impl(icon_url, nullptr, extension_.get(), 32,
|
| - fake_error_reporter->Duplicate());
|
| - impl.LoadResources();
|
| -
|
| - // Warning message should be provided.
|
| - ASSERT_EQ(
|
| - "[chrome.launcherSearchProvider.setSearchResults] Invalid icon URL: "
|
| - "chrome-extension://foo2/bar/"
|
| - "901234567890123456789012345678901234567890123456789012345678901234567..."
|
| - ". Must have a valid URL within chrome-extension://foo.",
|
| - fake_error_reporter->GetLastWarningMessage());
|
| -
|
| - // LoadExtensionIconResource should not be called.
|
| - ASSERT_FALSE(impl.IsLoadExtensionIconResourceCalled());
|
| -}
|
| -
|
| -TEST_F(ExtensionBadgedIconImageTest, FailedToLoadCustomIcon) {
|
| - scoped_ptr<FakeErrorReporter> fake_error_reporter = GetFakeErrorReporter();
|
| - GURL icon_url(kTestCustomIconURL);
|
| - ExtensionBadgedIconImageTestImpl impl(icon_url, nullptr, extension_.get(), 32,
|
| - fake_error_reporter->Duplicate());
|
| - impl.LoadResources();
|
| - ASSERT_TRUE(impl.IsLoadExtensionIconResourceCalled());
|
| -
|
| - // Fails to load custom icon by passing an empty image.
|
| - gfx::ImageSkia custom_icon;
|
| - impl.CallOnCustomIconLoaded(custom_icon);
|
| -
|
| - // Warning message should be shown.
|
| - ASSERT_EQ(
|
| - "[chrome.launcherSearchProvider.setSearchResults] Failed to load icon "
|
| - "URL: chrome-extension://foo/bar",
|
| - fake_error_reporter->GetLastWarningMessage());
|
| -
|
| - // Icon should be extension icon.
|
| - gfx::Size icon_size(32, 32);
|
| - gfx::ImageSkia expected_image(new BadgedImageSource(icon_size, SK_ColorBLACK),
|
| - icon_size);
|
| - ASSERT_TRUE(IsEqual(expected_image, impl));
|
| -}
|
| -
|
| -} // namespace app_list
|
|
|