Commit cebf2f90 authored by Brandon Wylie's avatar Brandon Wylie Committed by Commit Bot

Create a fake image decoder to be used for multiple unittests

Bug: 882970
Change-Id: I26400cecff3137842a73692317d05a503ce029bb
Reviewed-on: https://chromium-review.googlesource.com/1239416Reviewed-by: default avatarFilip Gorski <fgorski@chromium.org>
Commit-Queue: Brandon Wylie <wylieb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#593358}
parent ee9be300
...@@ -31,6 +31,8 @@ static_library("core") { ...@@ -31,6 +31,8 @@ static_library("core") {
static_library("test_support") { static_library("test_support") {
testonly = true testonly = true
sources = [ sources = [
"fake_image_decoder.cc",
"fake_image_decoder.h",
"mock_image_decoder.cc", "mock_image_decoder.cc",
"mock_image_decoder.h", "mock_image_decoder.h",
"mock_image_fetcher.cc", "mock_image_fetcher.cc",
...@@ -40,6 +42,8 @@ static_library("test_support") { ...@@ -40,6 +42,8 @@ static_library("test_support") {
":core", ":core",
"//services/network:test_support", "//services/network:test_support",
"//testing/gmock", "//testing/gmock",
"//testing/gtest",
"//ui/gfx:test_support",
] ]
} }
......
// Copyright 2018 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 "components/image_fetcher/core/fake_image_decoder.h"
#include "base/threading/sequenced_task_runner_handle.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/image/image_unittest_util.h"
namespace image_fetcher {
FakeImageDecoder::FakeImageDecoder() : enabled_(true) {}
FakeImageDecoder::~FakeImageDecoder() = default;
void FakeImageDecoder::DecodeImage(
const std::string& image_data,
const gfx::Size& desired_image_frame_size,
const image_fetcher::ImageDecodedCallback& callback) {
ASSERT_TRUE(enabled_);
gfx::Image image;
if (!image_data.empty()) {
image = gfx::test::CreateImage(2, 3);
}
if (before_image_decoded_) {
base::SequencedTaskRunnerHandle::Get()->PostTask(FROM_HERE,
before_image_decoded_);
}
base::SequencedTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindRepeating(callback, image));
}
void FakeImageDecoder::SetEnabled(bool enabled) {
enabled_ = enabled;
}
void FakeImageDecoder::SetBeforeImageDecoded(
const base::RepeatingClosure& callback) {
before_image_decoded_ = callback;
}
} // namespace image_fetcher
\ No newline at end of file
// Copyright 2018 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.
#ifndef COMPONENTS_IMAGE_FETCHER_CORE_FAKE_IMAGE_DECODER_H_
#define COMPONENTS_IMAGE_FETCHER_CORE_FAKE_IMAGE_DECODER_H_
#include "base/bind.h"
#include "components/image_fetcher/core/image_decoder.h"
#include "components/image_fetcher/core/image_fetcher_types.h"
namespace gfx {
class Size;
} // namespace gfx
namespace image_fetcher {
class FakeImageDecoder : public image_fetcher::ImageDecoder {
public:
FakeImageDecoder();
~FakeImageDecoder() override;
void DecodeImage(
const std::string& image_data,
const gfx::Size& desired_image_frame_size,
const image_fetcher::ImageDecodedCallback& callback) override;
void SetEnabled(bool enabled);
void SetBeforeImageDecoded(const base::RepeatingClosure& callback);
private:
bool enabled_;
base::RepeatingClosure before_image_decoded_;
};
} // namespace image_fetcher
#endif // COMPONENTS_IMAGE_FETCHER_CORE_FAKE_IMAGE_DECODER_H_
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
#include "base/test/bind_test_util.h" #include "base/test/bind_test_util.h"
#include "base/test/mock_callback.h" #include "base/test/mock_callback.h"
#include "base/test/scoped_task_environment.h" #include "base/test/scoped_task_environment.h"
#include "components/image_fetcher/core/image_decoder.h" #include "components/image_fetcher/core/fake_image_decoder.h"
#include "components/image_fetcher/core/image_fetcher.h" #include "components/image_fetcher/core/image_fetcher.h"
#include "net/http/http_util.h" #include "net/http/http_util.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h" #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
...@@ -36,36 +36,6 @@ const char kFetchID2[] = "fetch-2"; ...@@ -36,36 +36,6 @@ const char kFetchID2[] = "fetch-2";
const char kImageData[] = "data"; const char kImageData[] = "data";
const char kImageURL[] = "http://image.test/test.png"; const char kImageURL[] = "http://image.test/test.png";
// Always decodes a valid image for all non-empty input.
class FakeImageDecoder : public image_fetcher::ImageDecoder {
public:
void DecodeImage(
const std::string& image_data,
const gfx::Size& desired_image_frame_size,
const image_fetcher::ImageDecodedCallback& callback) override {
ASSERT_TRUE(enabled_);
gfx::Image image;
if (!image_data.empty()) {
ASSERT_EQ(kImageData, image_data);
image = gfx::test::CreateImage(2, 3);
}
if (before_image_decoded_) {
base::SequencedTaskRunnerHandle::Get()->PostTask(FROM_HERE,
before_image_decoded_);
}
base::SequencedTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(callback, image));
}
void SetBeforeImageDecoded(const base::RepeatingClosure& callback) {
before_image_decoded_ = callback;
}
void SetEnabled(bool enabled) { enabled_ = enabled; }
private:
bool enabled_ = true;
base::RepeatingClosure before_image_decoded_;
};
class ImageFetcherImplTest : public testing::Test { class ImageFetcherImplTest : public testing::Test {
public: public:
ImageFetcherImplTest() ImageFetcherImplTest()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment