| Index: chrome/browser/image_writer/image_writer.cc
|
| diff --git a/chrome/browser/image_writer/image_writer.cc b/chrome/browser/image_writer/image_writer.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..400080b09a6f63d2991cd355c7be6dd0909774e5
|
| --- /dev/null
|
| +++ b/chrome/browser/image_writer/image_writer.cc
|
| @@ -0,0 +1,74 @@
|
| +// 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.
|
| +
|
| +#include "base/bind.h"
|
| +#include "chrome/browser/browser_process.h"
|
| +#include "chrome/browser/image_writer/image_writer.h"
|
| +#include "chrome/common/chrome_utility_messages.h"
|
| +#include "content/public/browser/browser_thread.h"
|
| +#include "content/public/browser/utility_process_host.h"
|
| +
|
| +using content::BrowserThread;
|
| +using content::UtilityProcessHost;
|
| +
|
| +ImageWriter::ImageWriter(Delegate* delegate,
|
| + const base::FilePath& source,
|
| + const base::FilePath& target)
|
| + : delegate_(delegate),
|
| + source_(source),
|
| + target_(target) {
|
| +}
|
| +
|
| +ImageWriter::~ImageWriter() {}
|
| +
|
| +void ImageWriter::Start(scoped_refptr<base::SequencedTaskRunner> task_runner) {
|
| + task_runner_ = task_runner;
|
| + BrowserThread::PostTask(
|
| + BrowserThread::IO,
|
| + FROM_HERE,
|
| + base::Bind(&ImageWriter::StartWriteInUtilityProcess, this));
|
| +}
|
| +
|
| +bool ImageWriter::OnMessageReceived(const IPC::Message& message) {
|
| + bool handled = true;
|
| + IPC_BEGIN_MESSAGE_MAP(ImageWriter, message)
|
| + IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ImageWriter_Succeeded,
|
| + OnWriteImageSucceeded)
|
| + IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ImageWriter_Failed,
|
| + OnWriteImageFailed)
|
| + IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ImageWriter_Progress,
|
| + OnWriteImageProgress)
|
| + IPC_MESSAGE_UNHANDLED(handled = false)
|
| + IPC_END_MESSAGE_MAP()
|
| + return handled;
|
| +}
|
| +
|
| +void ImageWriter::OnWriteImageSucceeded() {
|
| + if (delegate_)
|
| + delegate_->OnWriteImageSucceeded();
|
| +}
|
| +
|
| +void ImageWriter::OnWriteImageFailed(const std::string& message) {
|
| + if (delegate_)
|
| + delegate_->OnWriteImageFailed(message);
|
| +}
|
| +
|
| +void ImageWriter::OnWriteImageProgress(int progress) {
|
| + if (delegate_)
|
| + delegate_->OnWriteImageProgress(progress);
|
| +}
|
| +
|
| +void ImageWriter::StartWriteInUtilityProcess() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| +
|
| + DVLOG(0) << "Sending image write request.";
|
| +
|
| + UtilityProcessHost* utility_process_host;
|
| + utility_process_host = UtilityProcessHost::Create(this, task_runner_.get());
|
| + utility_process_host->DisableSandbox();
|
| + if (!utility_process_host->Send(
|
| + new ChromeUtilityMsg_ImageWriter_Write(source_, target_))) {
|
| + DLOG(ERROR) << "Unable to send Write message to Utility Process.";
|
| + }
|
| +}
|
|
|