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

Unified Diff: chrome/browser/extensions/image_loading_tracker.cc

Issue 2867008: Show extension icons next to their top-level context menu items.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 6 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: chrome/browser/extensions/image_loading_tracker.cc
===================================================================
--- chrome/browser/extensions/image_loading_tracker.cc (revision 50770)
+++ chrome/browser/extensions/image_loading_tracker.cc (working copy)
@@ -14,6 +14,8 @@
#include "third_party/skia/include/core/SkBitmap.h"
#include "webkit/glue/image_decoder.h"
+ImageLoadingTracker::Observer::~Observer() {}
+
////////////////////////////////////////////////////////////////////////////////
// ImageLoadingTracker::ImageLoader
@@ -54,7 +56,7 @@
std::string file_contents;
FilePath path = resource.GetFilePath();
if (path.empty() || !file_util::ReadFileToString(path, &file_contents)) {
- ReportBack(NULL, resource, id);
+ ReportBack(NULL, resource, gfx::Size(), id);
return;
}
@@ -65,10 +67,12 @@
scoped_ptr<SkBitmap> decoded(new SkBitmap());
*decoded = decoder.Decode(data, file_contents.length());
if (decoded->empty()) {
- ReportBack(NULL, resource, id);
+ ReportBack(NULL, resource, gfx::Size(), id);
return; // Unable to decode.
}
+ gfx::Size original_size(decoded->width(), decoded->height());
+
if (decoded->width() > max_size.width() ||
decoded->height() > max_size.height()) {
// The bitmap is too big, re-sample.
@@ -77,25 +81,25 @@
max_size.width(), max_size.height());
}
- ReportBack(decoded.release(), resource, id);
+ ReportBack(decoded.release(), resource, original_size, id);
}
void ReportBack(SkBitmap* image, const ExtensionResource& resource,
- int id) {
+ const gfx::Size& original_size, int id) {
DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE));
ChromeThread::PostTask(
callback_thread_id_, FROM_HERE,
NewRunnableMethod(this, &ImageLoader::ReportOnUIThread,
- image, resource, id));
+ image, resource, original_size, id));
}
void ReportOnUIThread(SkBitmap* image, ExtensionResource resource,
- int id) {
+ const gfx::Size& original_size, int id) {
DCHECK(!ChromeThread::CurrentlyOn(ChromeThread::FILE));
if (tracker_)
- tracker_->OnImageLoaded(image, resource, id);
+ tracker_->OnImageLoaded(image, resource, original_size, id);
delete image;
}
@@ -138,16 +142,16 @@
// back.
int id = next_id_++;
if (resource.relative_path().empty()) {
- OnImageLoaded(NULL, resource, id);
+ OnImageLoaded(NULL, resource, max_size, id);
return;
}
DCHECK(extension->path() == resource.extension_root());
// See if the extension has the image already.
- if (extension->HasCachedImage(resource)) {
- SkBitmap image = extension->GetCachedImage(resource);
- OnImageLoaded(&image, resource, id);
+ if (extension->HasCachedImage(resource, max_size)) {
+ SkBitmap image = extension->GetCachedImage(resource, max_size);
+ OnImageLoaded(&image, resource, max_size, id);
return;
}
@@ -165,10 +169,12 @@
void ImageLoadingTracker::OnImageLoaded(
SkBitmap* image,
const ExtensionResource& resource,
+ const gfx::Size& original_size,
int id) {
LoadMap::iterator i = load_map_.find(id);
if (i != load_map_.end()) {
- i->second->SetCachedImage(resource, image ? *image : SkBitmap());
+ i->second->SetCachedImage(resource, image ? *image : SkBitmap(),
+ original_size);
load_map_.erase(i);
}
« no previous file with comments | « chrome/browser/extensions/image_loading_tracker.h ('k') | chrome/browser/extensions/image_loading_tracker_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698