Chromium Code Reviews| Index: chrome/browser/ui/webui/options2/chromeos/wallpaper_thumbnail_source2.cc |
| diff --git a/chrome/browser/ui/webui/options2/chromeos/wallpaper_thumbnail_source2.cc b/chrome/browser/ui/webui/options2/chromeos/wallpaper_thumbnail_source2.cc |
| index 8186da8b2289512dca0210c72cb4a04f6da38249..860c1898a2a6ce9ca70dbd2dcc6640ef6b9c5641 100644 |
| --- a/chrome/browser/ui/webui/options2/chromeos/wallpaper_thumbnail_source2.cc |
| +++ b/chrome/browser/ui/webui/options2/chromeos/wallpaper_thumbnail_source2.cc |
| @@ -12,6 +12,7 @@ |
| #include "base/string_util.h" |
| #include "base/stringprintf.h" |
| #include "base/threading/thread_restrictions.h" |
| +#include "chrome/browser/chromeos/login/user_manager.h" |
| #include "chrome/browser/io_thread.h" |
| #include "chrome/browser/ui/webui/chrome_url_data_manager.h" |
| #include "chrome/common/url_constants.h" |
| @@ -27,6 +28,7 @@ namespace options2 { |
| namespace { |
| const char kDefaultWallpaperPrefix[] = "default_"; |
| +const char kCustomWallpaperPrefix[] = "custom_"; |
| // Parse an integer from |path| and save it to |index|. For example, deafult_20 |
| // will set |index| to 20. |
| @@ -51,6 +53,17 @@ int PathToIDR(const std::string& path) { |
| return idr; |
| } |
| +// True if |path| is a custom wallpaper thumbnail URL and set |email| parsed |
| +// from |path|. |
| +// custom url = "custom_|email|?date" where date is current time. |
| +bool IsCustomWallpaperPath(const std::string& path, std::string& email) { |
| + if (!StartsWithASCII(path, kCustomWallpaperPrefix, false)) |
| + return false; |
| + email = path.substr(strlen(kCustomWallpaperPrefix), |
| + path.find_first_of("?") - strlen(kCustomWallpaperPrefix)); |
|
flackr
2012/05/04 19:06:17
What if there is no "?"?
bshe
2012/05/08 22:22:18
If the path can pass the first StartsWithASCII che
|
| + return true; |
| +} |
| + |
| } // namespace |
| std::string GetDefaultWallpaperThumbnailURL(int index) { |
| @@ -78,6 +91,16 @@ WallpaperThumbnailSource::~WallpaperThumbnailSource() { |
| void WallpaperThumbnailSource::StartDataRequest(const std::string& path, |
| bool is_incognito, |
| int request_id) { |
| + std::string email; |
| + if (IsCustomWallpaperPath(path, email)) { |
| + const chromeos::User* user = chromeos::UserManager::Get()->FindUser(email); |
| + if (user) { |
| + std::vector<unsigned char> data; |
| + gfx::PNGCodec::EncodeBGRASkBitmap(user->wallpaper_thumb(), false, &data); |
| + SendResponse(request_id, new base::RefCountedBytes(data)); |
| + return; |
| + } |
| + } |
| int idr = PathToIDR(path); |
| if (idr != -1) { |
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |