summaryrefslogtreecommitdiffstats
path: root/components/suggestions
diff options
context:
space:
mode:
authormathp <mathp@chromium.org>2014-10-08 07:52:45 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-08 14:53:10 +0000
commit60143a3967b0a687f05a166db2314f0495d1fe10 (patch)
tree28977831d167a33330ab30d72cfb6d3d309809fb /components/suggestions
parent07bbf7c1a14f11ab27eedf76c3c29ca4aa98020d (diff)
downloadchromium_src-60143a3967b0a687f05a166db2314f0495d1fe10.zip
chromium_src-60143a3967b0a687f05a166db2314f0495d1fe10.tar.gz
chromium_src-60143a3967b0a687f05a166db2314f0495d1fe10.tar.bz2
Revert of [Suggestions] Create ImageEncoder, to abstract away image encode/decode. (patchset #4 id:170001 of https://codereview.chromium.org/630073002/)
Reason for revert: It is no longer needed, we decided on a different approach. Original issue's description: > [Suggestions] Create ImageEncoder, to abstract away image encode/decode. > > iOS can't depend on JPEG encoder. > > TBR=jam > BUG=387751,409156 > > Committed: https://crrev.com/f5e2e2fa7303d699027095cd9b7cfb9462b585f6 > Cr-Commit-Position: refs/heads/master@{#298510} TBR=huangs@chromium.org,blundell@chromium.org,jam@chromium.org NOTREECHECKS=true NOTRY=true BUG=387751,409156 Review URL: https://codereview.chromium.org/634273002 Cr-Commit-Position: refs/heads/master@{#298706}
Diffstat (limited to 'components/suggestions')
-rw-r--r--components/suggestions/BUILD.gn14
-rw-r--r--components/suggestions/image_encoder.h36
-rw-r--r--components/suggestions/image_manager.cc30
-rw-r--r--components/suggestions/image_manager.h11
-rw-r--r--components/suggestions/image_manager_unittest.cc24
-rw-r--r--components/suggestions/jpeg/jpeg_image_encoder.cc29
-rw-r--r--components/suggestions/jpeg/jpeg_image_encoder.h37
7 files changed, 34 insertions, 147 deletions
diff --git a/components/suggestions/BUILD.gn b/components/suggestions/BUILD.gn
index 855e028..12c9576 100644
--- a/components/suggestions/BUILD.gn
+++ b/components/suggestions/BUILD.gn
@@ -6,7 +6,6 @@ static_library("suggestions") {
sources = [
"blacklist_store.cc",
"blacklist_store.h",
- "image_encoder.h",
"image_fetcher.h",
"image_fetcher_delegate.h",
"image_manager.cc",
@@ -32,16 +31,3 @@ static_library("suggestions") {
"//url",
]
}
-
-static_library("jpeg_image_encoder") {
- sources = [
- "jpeg/jpeg_image_encoder.cc",
- "jpeg/jpeg_image_encoder.h",
- ]
-
- deps = [
- "//base",
- "//ui/gfx",
- ":suggestions",
- ]
-}
diff --git a/components/suggestions/image_encoder.h b/components/suggestions/image_encoder.h
deleted file mode 100644
index 14e511e..0000000
--- a/components/suggestions/image_encoder.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2014 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_SUGGESTIONS_IMAGE_ENCODER_H_
-#define COMPONENTS_SUGGESTIONS_IMAGE_ENCODER_H_
-
-#include <vector>
-
-#include "base/macros.h"
-
-class SkBitmap;
-
-namespace suggestions {
-
-// A interface to encode/decode images.
-class ImageEncoder {
- public:
- ImageEncoder() {}
- virtual ~ImageEncoder() {}
-
- // From encoded bytes to SkBitmap. Caller owns the returned pointer.
- virtual SkBitmap* DecodeImage(
- const std::vector<unsigned char>& encoded_data) = 0;
-
- // From SkBitmap to the vector of encoded bytes, |dst|.
- virtual bool EncodeImage(
- const SkBitmap& bitmap, std::vector<unsigned char>* dest) = 0;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(ImageEncoder);
-};
-
-} // namespace suggestions
-
-#endif // COMPONENTS_SUGGESTIONS_IMAGE_ENCODER_H_
diff --git a/components/suggestions/image_manager.cc b/components/suggestions/image_manager.cc
index b702fed..9e43381 100644
--- a/components/suggestions/image_manager.cc
+++ b/components/suggestions/image_manager.cc
@@ -5,21 +5,28 @@
#include "components/suggestions/image_manager.h"
#include "base/bind.h"
-#include "components/suggestions/image_encoder.h"
#include "components/suggestions/image_fetcher.h"
+#include "ui/gfx/codec/jpeg_codec.h"
using leveldb_proto::ProtoDatabase;
+namespace {
+
+// From JPEG-encoded bytes to SkBitmap.
+SkBitmap* DecodeImage(const std::vector<unsigned char>& encoded_data) {
+ return gfx::JPEGCodec::Decode(&encoded_data[0], encoded_data.size());
+}
+
+} // namespace
+
namespace suggestions {
ImageManager::ImageManager() : weak_ptr_factory_(this) {}
ImageManager::ImageManager(scoped_ptr<ImageFetcher> image_fetcher,
- scoped_ptr<ImageEncoder> image_encoder,
scoped_ptr<ProtoDatabase<ImageData> > database,
const base::FilePath& database_dir)
: image_fetcher_(image_fetcher.Pass()),
- image_encoder_(image_encoder.Pass()),
database_(database.Pass()),
database_ready_(false),
weak_ptr_factory_(this) {
@@ -132,7 +139,7 @@ void ImageManager::SaveImage(const GURL& url, const SkBitmap& bitmap) {
// Attempt to save a JPEG representation to the database. If not successful,
// the fetched bitmap will still be inserted in the cache, above.
std::vector<unsigned char> encoded_data;
- if (image_encoder_->EncodeImage(bitmap, &encoded_data)) {
+ if (EncodeImage(bitmap, &encoded_data)) {
// Save the resulting bitmap to the database.
ImageData data;
data.set_url(url.spec());
@@ -187,7 +194,7 @@ void ImageManager::LoadEntriesInCache(scoped_ptr<ImageDataVector> entries) {
std::vector<unsigned char> encoded_data(it->data().begin(),
it->data().end());
- scoped_ptr<SkBitmap> bitmap(image_encoder_->DecodeImage(encoded_data));
+ scoped_ptr<SkBitmap> bitmap(DecodeImage(encoded_data));
if (bitmap.get()) {
image_map_.insert(std::make_pair(it->url(), *bitmap));
}
@@ -205,4 +212,17 @@ void ImageManager::ServePendingCacheRequests() {
}
}
+// static
+bool ImageManager::EncodeImage(const SkBitmap& bitmap,
+ std::vector<unsigned char>* dest) {
+ SkAutoLockPixels bitmap_lock(bitmap);
+ if (!bitmap.readyToDraw() || bitmap.isNull()) {
+ return false;
+ }
+ return gfx::JPEGCodec::Encode(
+ reinterpret_cast<unsigned char*>(bitmap.getAddr32(0, 0)),
+ gfx::JPEGCodec::FORMAT_SkBitmap, bitmap.width(), bitmap.height(),
+ bitmap.rowBytes(), 100, dest);
+}
+
} // namespace suggestions
diff --git a/components/suggestions/image_manager.h b/components/suggestions/image_manager.h
index 76f8a94..02ec268 100644
--- a/components/suggestions/image_manager.h
+++ b/components/suggestions/image_manager.h
@@ -28,7 +28,6 @@ class URLRequestContextGetter;
namespace suggestions {
class ImageData;
-class ImageEncoder;
class ImageFetcher;
class SuggestionsProfile;
@@ -38,10 +37,7 @@ class ImageManager : public ImageFetcherDelegate {
public:
typedef std::vector<ImageData> ImageDataVector;
- // This class takes ownership of |image_fetcher|, |image_encoder| and
- // |database|.
ImageManager(scoped_ptr<ImageFetcher> image_fetcher,
- scoped_ptr<ImageEncoder> image_encoder,
scoped_ptr<leveldb_proto::ProtoDatabase<ImageData> > database,
const base::FilePath& database_dir);
virtual ~ImageManager();
@@ -123,6 +119,11 @@ class ImageManager : public ImageFetcherDelegate {
void ServePendingCacheRequests();
+ // From SkBitmap to the vector of JPEG-encoded bytes, |dst|. Visible only for
+ // testing.
+ static bool EncodeImage(const SkBitmap& bitmap,
+ std::vector<unsigned char>* dest);
+
// Map from URL to image URL. Should be kept up to date when a new
// SuggestionsProfile is available.
std::map<GURL, GURL> image_url_map_;
@@ -136,8 +137,6 @@ class ImageManager : public ImageFetcherDelegate {
scoped_ptr<ImageFetcher> image_fetcher_;
- scoped_ptr<ImageEncoder> image_encoder_;
-
scoped_ptr<leveldb_proto::ProtoDatabase<ImageData> > database_;
bool database_ready_;
diff --git a/components/suggestions/image_manager_unittest.cc b/components/suggestions/image_manager_unittest.cc
index cd39176..57dd8bf 100644
--- a/components/suggestions/image_manager_unittest.cc
+++ b/components/suggestions/image_manager_unittest.cc
@@ -3,17 +3,14 @@
// found in the LICENSE file.
#include <string>
-#include <vector>
#include "base/files/file_path.h"
#include "base/run_loop.h"
#include "components/leveldb_proto/proto_database.h"
#include "components/leveldb_proto/testing/fake_db.h"
-#include "components/suggestions/image_encoder.h"
#include "components/suggestions/image_fetcher.h"
#include "components/suggestions/image_fetcher_delegate.h"
#include "components/suggestions/image_manager.h"
-#include "components/suggestions/jpeg/jpeg_image_encoder.h"
#include "components/suggestions/proto/suggestions.pb.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -49,15 +46,6 @@ class MockImageFetcher : public suggestions::ImageFetcher {
MOCK_METHOD1(SetImageFetcherDelegate, void(ImageFetcherDelegate*));
};
-class MockImageEncoder : public suggestions::ImageEncoder {
- public:
- MockImageEncoder() {}
- virtual ~MockImageEncoder() {}
- MOCK_METHOD1(DecodeImage,
- SkBitmap*(const std::vector<unsigned char>&));
- MOCK_METHOD2(EncodeImage, bool(const SkBitmap&, std::vector<unsigned char>*));
-};
-
class ImageManagerTest : public testing::Test {
public:
ImageManagerTest()
@@ -67,8 +55,7 @@ class ImageManagerTest : public testing::Test {
virtual void SetUp() override {
fake_db_ = new FakeDB<ImageData>(&db_model_);
- jpeg_image_encoder_ = new JpegImageEncoder();
- image_manager_.reset(CreateImageManager(fake_db_, jpeg_image_encoder_));
+ image_manager_.reset(CreateImageManager(fake_db_));
}
virtual void TearDown() override {
@@ -105,7 +92,7 @@ class ImageManagerTest : public testing::Test {
ImageData data;
data.set_url(url);
std::vector<unsigned char> encoded;
- EXPECT_TRUE(jpeg_image_encoder_->EncodeImage(bm, &encoded));
+ EXPECT_TRUE(ImageManager::EncodeImage(bm, &encoded));
data.set_data(std::string(encoded.begin(), encoded.end()));
return data;
}
@@ -120,13 +107,11 @@ class ImageManagerTest : public testing::Test {
loop->Quit();
}
- ImageManager* CreateImageManager(FakeDB<ImageData>* fake_db,
- JpegImageEncoder* jpeg_image_encoder) {
+ ImageManager* CreateImageManager(FakeDB<ImageData>* fake_db) {
mock_image_fetcher_ = new StrictMock<MockImageFetcher>();
EXPECT_CALL(*mock_image_fetcher_, SetImageFetcherDelegate(_));
return new ImageManager(
scoped_ptr<ImageFetcher>(mock_image_fetcher_),
- scoped_ptr<ImageEncoder>(jpeg_image_encoder),
scoped_ptr<leveldb_proto::ProtoDatabase<ImageData> >(fake_db),
FakeDB<ImageData>::DirectoryForTestDB());
}
@@ -134,7 +119,6 @@ class ImageManagerTest : public testing::Test {
EntryMap db_model_;
// Owned by the ImageManager under test.
FakeDB<ImageData>* fake_db_;
- JpegImageEncoder* jpeg_image_encoder_;
MockImageFetcher* mock_image_fetcher_;
@@ -191,7 +175,7 @@ TEST_F(ImageManagerTest, GetImageForURLNetworkCacheHit) {
// Create the ImageManager with an added entry in the database.
AddEntry(GetSampleImageData(kTestUrl1), &db_model_);
FakeDB<ImageData>* fake_db = new FakeDB<ImageData>(&db_model_);
- image_manager_.reset(CreateImageManager(fake_db, new JpegImageEncoder()));
+ image_manager_.reset(CreateImageManager(fake_db));
image_manager_->Initialize(suggestions_profile);
fake_db->InitCallback(true);
fake_db->LoadCallback(true);
diff --git a/components/suggestions/jpeg/jpeg_image_encoder.cc b/components/suggestions/jpeg/jpeg_image_encoder.cc
deleted file mode 100644
index a3a0cf4..0000000
--- a/components/suggestions/jpeg/jpeg_image_encoder.cc
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2014 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/suggestions/jpeg/jpeg_image_encoder.h"
-
-#include "ui/gfx/codec/jpeg_codec.h"
-#include "ui/gfx/image/image_skia.h"
-
-namespace suggestions {
-
-SkBitmap* JpegImageEncoder::DecodeImage(
- const std::vector<unsigned char>& encoded_data) {
- return gfx::JPEGCodec::Decode(&encoded_data[0], encoded_data.size());
-}
-
-bool JpegImageEncoder::EncodeImage(const SkBitmap& bitmap,
- std::vector<unsigned char>* dest) {
- SkAutoLockPixels bitmap_lock(bitmap);
- if (!bitmap.readyToDraw() || bitmap.isNull()) {
- return false;
- }
- return gfx::JPEGCodec::Encode(
- reinterpret_cast<unsigned char*>(bitmap.getAddr32(0, 0)),
- gfx::JPEGCodec::FORMAT_SkBitmap, bitmap.width(), bitmap.height(),
- bitmap.rowBytes(), 100, dest);
-}
-
-} // namespace suggestions
diff --git a/components/suggestions/jpeg/jpeg_image_encoder.h b/components/suggestions/jpeg/jpeg_image_encoder.h
deleted file mode 100644
index 09f3975..0000000
--- a/components/suggestions/jpeg/jpeg_image_encoder.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2014 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_SUGGESTIONS_JPEG_JPEG_IMAGE_ENCODER_H_
-#define COMPONENTS_SUGGESTIONS_JPEG_JPEG_IMAGE_ENCODER_H_
-
-#include <vector>
-
-#include "base/macros.h"
-#include "components/suggestions/image_encoder.h"
-
-class SkBitmap;
-
-namespace suggestions {
-
-// A class used to encode/decode images using the JPEG codec.
-class JpegImageEncoder : public ImageEncoder {
- public:
- JpegImageEncoder() {}
- virtual ~JpegImageEncoder() {}
-
- // From encoded bytes to SkBitmap. Caller owns the returned pointer.
- virtual SkBitmap* DecodeImage(
- const std::vector<unsigned char>& encoded_data) OVERRIDE;
-
- // From SkBitmap to the vector of encoded bytes, |dst|.
- virtual bool EncodeImage(const SkBitmap& bitmap,
- std::vector<unsigned char>* dest) OVERRIDE;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(JpegImageEncoder);
-};
-
-} // namespace suggestions
-
-#endif // COMPONENTS_SUGGESTIONS_JPEG_JPEG_IMAGE_ENCODER_H_