| Index: chrome/browser/ui/webui/options/chromeos/change_picture_options_handler.cc
|
| diff --git a/chrome/browser/ui/webui/options/chromeos/change_picture_options_handler.cc b/chrome/browser/ui/webui/options/chromeos/change_picture_options_handler.cc
|
| index 300965fae792800e6f21f5fa3c4bad8bbc31195c..203772c8bf209452cd679618eb82ea86346e1763 100644
|
| --- a/chrome/browser/ui/webui/options/chromeos/change_picture_options_handler.cc
|
| +++ b/chrome/browser/ui/webui/options/chromeos/change_picture_options_handler.cc
|
| @@ -77,7 +77,9 @@ const char kProfileDownloadReason[] = "Preferences";
|
| } // namespace
|
|
|
| ChangePictureOptionsHandler::ChangePictureOptionsHandler()
|
| - : previous_image_url_(url::kAboutBlankURL),
|
| + : ImageRequest(
|
| + BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)),
|
| + previous_image_url_(url::kAboutBlankURL),
|
| previous_image_index_(user_manager::User::USER_IMAGE_INVALID) {
|
| registrar_.Add(this, chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED,
|
| content::NotificationService::AllSources());
|
| @@ -98,8 +100,6 @@ ChangePictureOptionsHandler::~ChangePictureOptionsHandler() {
|
| CameraPresenceNotifier::GetInstance()->RemoveObserver(this);
|
| if (select_file_dialog_.get())
|
| select_file_dialog_->ListenerDestroyed();
|
| - if (image_decoder_.get())
|
| - image_decoder_->set_delegate(NULL);
|
| }
|
|
|
| void ChangePictureOptionsHandler::GetLocalizedValues(
|
| @@ -240,13 +240,8 @@ void ChangePictureOptionsHandler::HandlePhotoTaken(
|
| user_photo_ = gfx::ImageSkia();
|
| user_photo_data_url_ = image_url;
|
|
|
| - if (image_decoder_.get())
|
| - image_decoder_->set_delegate(NULL);
|
| - image_decoder_ = new ImageDecoder(this, raw_data,
|
| - ImageDecoder::DEFAULT_CODEC);
|
| - scoped_refptr<base::MessageLoopProxy> task_runner =
|
| - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI);
|
| - image_decoder_->Start(task_runner);
|
| + ImageDecoder::Cancel(this);
|
| + ImageDecoder::Start(this, raw_data, ImageDecoder::DEFAULT_CODEC, false);
|
| }
|
|
|
| void ChangePictureOptionsHandler::HandlePageInitialized(
|
| @@ -370,7 +365,6 @@ void ChangePictureOptionsHandler::HandleSelectImage(
|
| } else if (image_type == "camera") {
|
| // Camera image is selected.
|
| if (user_photo_.isNull()) {
|
| - DCHECK(image_decoder_.get());
|
| waiting_for_camera_photo = true;
|
| VLOG(1) << "Still waiting for camera image to decode";
|
| } else {
|
| @@ -396,8 +390,8 @@ void ChangePictureOptionsHandler::HandleSelectImage(
|
| }
|
|
|
| // Ignore the result of the previous decoding if it's no longer needed.
|
| - if (!waiting_for_camera_photo && image_decoder_.get())
|
| - image_decoder_->set_delegate(NULL);
|
| + if (!waiting_for_camera_photo)
|
| + ImageDecoder::Cancel(this);
|
| }
|
|
|
| void ChangePictureOptionsHandler::FileSelected(const base::FilePath& path,
|
| @@ -458,16 +452,12 @@ gfx::NativeWindow ChangePictureOptionsHandler::GetBrowserWindow() const {
|
| }
|
|
|
| void ChangePictureOptionsHandler::OnImageDecoded(
|
| - const ImageDecoder* decoder,
|
| const SkBitmap& decoded_image) {
|
| - DCHECK_EQ(image_decoder_.get(), decoder);
|
| - image_decoder_ = NULL;
|
| user_photo_ = gfx::ImageSkia::CreateFrom1xBitmap(decoded_image);
|
| SetImageFromCamera(user_photo_);
|
| }
|
|
|
| -void ChangePictureOptionsHandler::OnDecodeImageFailed(
|
| - const ImageDecoder* decoder) {
|
| +void ChangePictureOptionsHandler::OnDecodeImageFailed() {
|
| NOTREACHED() << "Failed to decode PNG image from WebUI";
|
| }
|
|
|
|
|