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

Unified Diff: chrome/browser/chromeos/login/user_image_loader.cc

Issue 286933002: [cros login] Split login related classes into subfolders. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix includes in new tests Created 6 years, 7 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/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
deleted file mode 100644
index e9f1b5c15f7f3a843758fcdf559ec01982683e70..0000000000000000000000000000000000000000
--- a/chrome/browser/chromeos/login/user_image_loader.cc
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright (c) 2013 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.
-
-#include "chrome/browser/chromeos/login/user_image_loader.h"
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/file_util.h"
-#include "base/files/file_path.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/message_loop/message_loop_proxy.h"
-#include "base/sequenced_task_runner.h"
-#include "chrome/browser/chromeos/login/helper.h"
-#include "chrome/browser/chromeos/login/user_image.h"
-#include "skia/ext/image_operations.h"
-#include "third_party/skia/include/core/SkBitmap.h"
-#include "ui/gfx/codec/png_codec.h"
-#include "ui/gfx/skbitmap_operations.h"
-
-namespace chromeos {
-
-UserImageLoader::ImageInfo::ImageInfo(const std::string& file_path,
- int pixels_per_side,
- const LoadedCallback& loaded_cb)
- : file_path(file_path),
- pixels_per_side(pixels_per_side),
- loaded_cb(loaded_cb) {
-}
-
-UserImageLoader::ImageInfo::~ImageInfo() {
-}
-
-UserImageLoader::UserImageLoader(
- ImageDecoder::ImageCodec image_codec,
- scoped_refptr<base::SequencedTaskRunner> background_task_runner)
- : foreground_task_runner_(base::MessageLoopProxy::current()),
- background_task_runner_(background_task_runner),
- image_codec_(image_codec) {
-}
-
-UserImageLoader::~UserImageLoader() {
-}
-
-void UserImageLoader::Start(const std::string& filepath,
- int pixels_per_side,
- const LoadedCallback& loaded_cb) {
- background_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(&UserImageLoader::ReadAndDecodeImage,
- this,
- ImageInfo(filepath, pixels_per_side, loaded_cb)));
-}
-
-void UserImageLoader::Start(scoped_ptr<std::string> data,
- int pixels_per_side,
- const LoadedCallback& loaded_cb) {
- background_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(&UserImageLoader::DecodeImage,
- this,
- base::Passed(&data),
- ImageInfo(std::string(), pixels_per_side, loaded_cb)));
-}
-
-void UserImageLoader::ReadAndDecodeImage(const ImageInfo& image_info) {
- DCHECK(background_task_runner_->RunsTasksOnCurrentThread());
-
- scoped_ptr<std::string> data(new std::string);
- if (!base::ReadFileToString(base::FilePath(image_info.file_path), data.get()))
- LOG(ERROR) << "Failed to read image " << image_info.file_path;
-
- // In case ReadFileToString() fails, |data| is empty and DecodeImage() calls
- // back to OnDecodeImageFailed().
- DecodeImage(data.Pass(), image_info);
-}
-
-void UserImageLoader::DecodeImage(const scoped_ptr<std::string> data,
- const ImageInfo& image_info) {
- DCHECK(background_task_runner_->RunsTasksOnCurrentThread());
-
- scoped_refptr<ImageDecoder> image_decoder =
- new ImageDecoder(this, *data, image_codec_);
- image_info_map_.insert(std::make_pair(image_decoder.get(), image_info));
- image_decoder->Start(background_task_runner_);
-}
-
-void UserImageLoader::OnImageDecoded(const ImageDecoder* decoder,
- const SkBitmap& decoded_image) {
- DCHECK(background_task_runner_->RunsTasksOnCurrentThread());
-
- ImageInfoMap::iterator it = image_info_map_.find(decoder);
- if (it == image_info_map_.end()) {
- NOTREACHED();
- return;
- }
- const std::string file_path = it->second.file_path;
- const int target_size = it->second.pixels_per_side;
- const LoadedCallback loaded_cb = it->second.loaded_cb;
- image_info_map_.erase(it);
-
- SkBitmap final_image = decoded_image;
-
- if (target_size > 0) {
- // Auto crop the image, taking the largest square in the center.
- int pixels_per_side =
- std::min(decoded_image.width(), decoded_image.height());
- int x = (decoded_image.width() - pixels_per_side) / 2;
- int y = (decoded_image.height() - pixels_per_side) / 2;
- SkBitmap cropped_image = SkBitmapOperations::CreateTiledBitmap(
- decoded_image, x, y, pixels_per_side, pixels_per_side);
- if (pixels_per_side > target_size) {
- // Also downsize the image to save space and memory.
- final_image =
- skia::ImageOperations::Resize(cropped_image,
- skia::ImageOperations::RESIZE_LANCZOS3,
- target_size,
- target_size);
- } else {
- final_image = cropped_image;
- }
- }
- // Make the SkBitmap immutable as we won't modify it. This is important
- // because otherwise it gets duplicated during painting, wasting memory.
- final_image.setImmutable();
- gfx::ImageSkia final_image_skia =
- gfx::ImageSkia::CreateFrom1xBitmap(final_image);
- final_image_skia.MakeThreadSafe();
- UserImage user_image(final_image_skia, decoder->get_image_data());
- user_image.set_file_path(file_path);
- if (image_codec_ == ImageDecoder::ROBUST_JPEG_CODEC)
- user_image.MarkAsSafe();
- foreground_task_runner_->PostTask(FROM_HERE,
- base::Bind(loaded_cb, user_image));
-}
-
-void UserImageLoader::OnDecodeImageFailed(const ImageDecoder* decoder) {
- DCHECK(background_task_runner_->RunsTasksOnCurrentThread());
-
- ImageInfoMap::iterator it = image_info_map_.find(decoder);
- if (it == image_info_map_.end()) {
- NOTREACHED();
- return;
- }
- const LoadedCallback loaded_cb = it->second.loaded_cb;
- image_info_map_.erase(it);
-
- foreground_task_runner_->PostTask(FROM_HERE,
- base::Bind(loaded_cb, UserImage()));
-}
-
-} // namespace chromeos
« no previous file with comments | « chrome/browser/chromeos/login/user_image_loader.h ('k') | chrome/browser/chromeos/login/user_image_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698