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

Unified Diff: chrome/browser/ui/webui/options2/chromeos/wallpaper_thumbnail_source.cc

Issue 10857019: wallpaper-webui: Make sure the wallpaper thumbnails are appropriately scaled. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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/ui/webui/options2/chromeos/wallpaper_thumbnail_source.cc
diff --git a/chrome/browser/ui/webui/options2/chromeos/wallpaper_thumbnail_source.cc b/chrome/browser/ui/webui/options2/chromeos/wallpaper_thumbnail_source.cc
index d089cb6de54ca53cc7ce827e0b8047e129259034..105bcaba10810d476e290bbb21b0200258eb6ea4 100644
--- a/chrome/browser/ui/webui/options2/chromeos/wallpaper_thumbnail_source.cc
+++ b/chrome/browser/ui/webui/options2/chromeos/wallpaper_thumbnail_source.cc
@@ -18,6 +18,7 @@
#include "chrome/browser/chromeos/login/wallpaper_manager.h"
#include "chrome/browser/io_thread.h"
#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
+#include "chrome/browser/ui/webui/web_ui_util.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/browser_thread.h"
#include "grit/ui_resources.h"
@@ -35,9 +36,11 @@ class WallpaperThumbnailSource::ThumbnailEncodingOperation
public:
ThumbnailEncodingOperation(int request_id,
const chromeos::User* user,
+ ui::ScaleFactor scale_factor,
scoped_refptr<base::RefCountedBytes> data)
: request_id_(request_id),
user_(user),
+ scale_factor_(scale_factor),
data_(data) {
}
@@ -52,8 +55,10 @@ class WallpaperThumbnailSource::ThumbnailEncodingOperation
void EncodeThumbnail() {
if (cancel_flag_.IsSet())
return;
+ gfx::ImageSkia image =
+ WallpaperManager::Get()->GetCustomWallpaperThumbnail(user_->email());
gfx::PNGCodec::EncodeBGRASkBitmap(
- WallpaperManager::Get()->GetCustomWallpaperThumbnail(user_->email()),
+ image.GetRepresentation(scale_factor_).sk_bitmap(),
false, &data_->data());
}
@@ -73,6 +78,8 @@ class WallpaperThumbnailSource::ThumbnailEncodingOperation
const chromeos::User* user_;
+ ui::ScaleFactor scale_factor_;
+
scoped_refptr<base::RefCountedBytes> data_;
DISALLOW_COPY_AND_ASSIGN(ThumbnailEncodingOperation);
@@ -144,16 +151,21 @@ std::string WallpaperThumbnailSource::GetMimeType(const std::string&) const {
return "images/png";
}
-void WallpaperThumbnailSource::StartDataRequest(const std::string& path,
+void WallpaperThumbnailSource::StartDataRequest(const std::string& full_path,
bool is_incognito,
int request_id) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
+ GURL url(chrome::kChromeUIWallpaperThumbnailURL + full_path);
+ std::string path;
+ ui::ScaleFactor scale_factor;
Ivan Korotkov 2012/08/15 20:36:03 Does the URL ever include username@domain? In that
sadrul 2012/08/15 20:53:28 Good point! I discussed with bshe@, and username@d
sadrul 2012/08/15 22:28:53 I have also submitted http://codereview.chromium.o
Ivan Korotkov 2012/08/16 08:44:17 Thanks! With CL 10837270 submitted it should be sa
+ web_ui_util::ParsePathAndScale(url, &path, &scale_factor);
+
CancelPendingCustomThumbnailEncodingOperation();
content::BrowserThread::PostTask(
content::BrowserThread::UI,
FROM_HERE,
base::Bind(&WallpaperThumbnailSource::GetCurrentUserThumbnail,
- this, path, request_id));
+ this, path, scale_factor, request_id));
}
WallpaperThumbnailSource::~WallpaperThumbnailSource() {
@@ -161,6 +173,7 @@ WallpaperThumbnailSource::~WallpaperThumbnailSource() {
void WallpaperThumbnailSource::GetCurrentUserThumbnail(
const std::string& path,
+ ui::ScaleFactor scale_factor,
int request_id) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
std::string email;
@@ -179,24 +192,26 @@ void WallpaperThumbnailSource::GetCurrentUserThumbnail(
FROM_HERE,
base::Bind(
&WallpaperThumbnailSource::StartCustomThumbnailEncodingOperation,
- this, user, request_id));
+ this, user, scale_factor, request_id));
return;
}
content::BrowserThread::PostTask(
content::BrowserThread::IO,
FROM_HERE,
base::Bind(&WallpaperThumbnailSource::SendCurrentUserDefaultThumbnail,
- this, path, request_id));
+ this, path, scale_factor, request_id));
}
void WallpaperThumbnailSource::StartCustomThumbnailEncodingOperation(
const chromeos::User* user,
+ ui::ScaleFactor scale_factor,
int request_id) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
CancelPendingCustomThumbnailEncodingOperation();
scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
thumbnail_encoding_op_ = new ThumbnailEncodingOperation(request_id,
user,
+ scale_factor,
data);
base::WorkerPool::PostTaskAndReply(
FROM_HERE,
@@ -229,6 +244,7 @@ void WallpaperThumbnailSource::SendCurrentUserCustomThumbnail(
void WallpaperThumbnailSource::SendCurrentUserDefaultThumbnail(
const std::string& path,
+ ui::ScaleFactor scale_factor,
int request_id) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
int idr = PathToIDR(path);
@@ -238,7 +254,7 @@ void WallpaperThumbnailSource::SendCurrentUserDefaultThumbnail(
}
const ResourceBundle& rb = ResourceBundle::GetSharedInstance();
SendResponse(request_id,
- rb.LoadDataResourceBytes(idr, ui::SCALE_FACTOR_100P));
+ rb.LoadDataResourceBytes(idr, scale_factor));
}
} // namespace options2

Powered by Google App Engine
This is Rietveld 408576698