Index: chrome/browser/chromeos/login/user_image_loader.cc |
diff --git a/chrome/browser/chromeos/login/user_image_loader.cc b/chrome/browser/chromeos/login/user_image_loader.cc |
index 21b8813b2597f2ff357dd1627fbd22ec5a0ce00d..edb5dcd470c920e633d9cde838f519683d36ae24 100644 |
--- a/chrome/browser/chromeos/login/user_image_loader.cc |
+++ b/chrome/browser/chromeos/login/user_image_loader.cc |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2012 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. |
@@ -7,8 +7,10 @@ |
#include "base/bind.h" |
#include "base/file_path.h" |
#include "base/file_util.h" |
+#include "base/memory/scoped_ptr.h" |
#include "base/message_loop.h" |
#include "chrome/browser/chromeos/login/helper.h" |
+#include "chrome/browser/chromeos/login/user_image.h" |
#include "content/public/browser/browser_thread.h" |
#include "skia/ext/image_operations.h" |
#include "third_party/skia/include/core/SkBitmap.h" |
@@ -19,8 +21,11 @@ using content::BrowserThread; |
namespace chromeos { |
-UserImageLoader::ImageInfo::ImageInfo(int size, const LoadedCallback& loaded_cb) |
+UserImageLoader::ImageInfo::ImageInfo(int size, |
+ bool save_raw_image, |
+ const LoadedCallback& loaded_cb) |
: size(size), |
+ save_raw_image(save_raw_image), |
loaded_cb(loaded_cb) { |
} |
@@ -36,10 +41,11 @@ UserImageLoader::~UserImageLoader() { |
void UserImageLoader::Start(const std::string& filepath, |
int size, |
+ bool save_raw_image, |
const LoadedCallback& loaded_cb) { |
target_message_loop_ = MessageLoop::current(); |
- ImageInfo image_info(size, loaded_cb); |
+ ImageInfo image_info(size, save_raw_image, loaded_cb); |
BrowserThread::PostTask( |
BrowserThread::FILE, FROM_HERE, |
base::Bind(&UserImageLoader::LoadImage, this, filepath, image_info)); |
@@ -86,9 +92,19 @@ void UserImageLoader::OnImageDecoded(const ImageDecoder* decoder, |
image_info.size); |
} |
+ scoped_ptr<UserImage> user_image; |
+ if (image_info.save_raw_image) { |
+ std::vector<unsigned char> image_data; |
+ decoder->get_image_data(&image_data); |
+ |
+ user_image.reset(new UserImage(final_image, image_data)); |
+ } else { |
+ user_image.reset(new UserImage(final_image)); |
+ } |
+ |
target_message_loop_->PostTask( |
FROM_HERE, |
- base::Bind(image_info.loaded_cb, final_image)); |
+ base::Bind(image_info.loaded_cb, *user_image)); |
image_info_map_.erase(info_it); |
} |