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 10namespace extensions { 11namespace image_writer { 12 13using content::BrowserThread; 14 15WriteFromFileOperation::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 24WriteFromFileOperation::~WriteFromFileOperation() {} 25 26void 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