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"; |
} |