Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(627)

Unified Diff: components/suggestions/image_manager.cc

Issue 630073002: [Suggestions] Create ImageEncoder, to abstract away image encode/decode. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: gn fix Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/suggestions/image_manager.cc
diff --git a/components/suggestions/image_manager.cc b/components/suggestions/image_manager.cc
index 9e4338127d35e4fcce065d010f06a66a5fe01ecb..b702fed30feba66f7c61002cc19015f5c708defe 100644
--- a/components/suggestions/image_manager.cc
+++ b/components/suggestions/image_manager.cc
@@ -5,28 +5,21 @@
#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) {
@@ -139,7 +132,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 (EncodeImage(bitmap, &encoded_data)) {
+ if (image_encoder_->EncodeImage(bitmap, &encoded_data)) {
// Save the resulting bitmap to the database.
ImageData data;
data.set_url(url.spec());
@@ -194,7 +187,7 @@ void ImageManager::LoadEntriesInCache(scoped_ptr<ImageDataVector> entries) {
std::vector<unsigned char> encoded_data(it->data().begin(),
it->data().end());
- scoped_ptr<SkBitmap> bitmap(DecodeImage(encoded_data));
+ scoped_ptr<SkBitmap> bitmap(image_encoder_->DecodeImage(encoded_data));
if (bitmap.get()) {
image_map_.insert(std::make_pair(it->url(), *bitmap));
}
@@ -212,17 +205,4 @@ 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

Powered by Google App Engine
This is Rietveld 408576698