1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/files/file_util.h"
6 #include "chrome/browser/extensions/api/image_writer_private/error_messages.h"
7 #include "chrome/browser/extensions/api/image_writer_private/write_from_file_operation.h"
8 #include "content/public/browser/browser_thread.h"
9
10 namespace extensions {
11 namespace image_writer {
12
13 using content::BrowserThread;
14
WriteFromFileOperation(base::WeakPtr<OperationManager> manager,const ExtensionId & extension_id,const base::FilePath & user_file_path,const std::string & device_path)15 WriteFromFileOperation::WriteFromFileOperation(
16 base::WeakPtr<OperationManager> manager,
17 const ExtensionId& extension_id,
18 const base::FilePath& user_file_path,
19 const std::string& device_path)
20 : Operation(manager, extension_id, device_path) {
21 image_path_ = user_file_path;
22 }
23
~WriteFromFileOperation()24 WriteFromFileOperation::~WriteFromFileOperation() {}
25
StartImpl()26 void WriteFromFileOperation::StartImpl() {
27 if (!base::PathExists(image_path_) || base::DirectoryExists(image_path_)) {
28 DLOG(ERROR) << "Source must exist and not be a directory.";
29 Error(error::kImageInvalid);
30 return;
31 }
32
33 BrowserThread::PostTask(
34 BrowserThread::FILE,
35 FROM_HERE,
36 base::Bind(
37 &WriteFromFileOperation::Unzip,
38 this,
39 base::Bind(
40 &WriteFromFileOperation::Write,
41 this,
42 base::Bind(&WriteFromFileOperation::VerifyWrite,
43 this,
44 base::Bind(&WriteFromFileOperation::Finish, this)))));
45 }
46
47 } // namespace image_writer
48 } // namespace extensions
49