1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_CREATE_DIRECTORY_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_CREATE_DIRECTORY_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/files/file.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/scoped_ptr.h" 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/chromeos/file_system_provider/operations/operation.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/chromeos/file_system_provider/provided_file_system_info.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h" 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/chromeos/file_system_provider/request_value.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "storage/browser/fileapi/async_file_util.h" 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace base { 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass FilePath; 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace base 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace extensions { 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass EventRouter; 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace extensions 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace chromeos { 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace file_system_provider { 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace operations { 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Creates a directory. If |recursive| is set to true, then creates also all 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// non-existing directories on the path. The operation will fail if the 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// directory already exists. Created per request. 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass CreateDirectory : public Operation { 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch CreateDirectory(extensions::EventRouter* event_router, 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const ProvidedFileSystemInfo& file_system_info, 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const base::FilePath& directory_path, 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool recursive, 3703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::AsyncFileUtil::StatusCallback& callback); 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~CreateDirectory(); 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Operation overrides. 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool Execute(int request_id) OVERRIDE; 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void OnSuccess(int request_id, 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<RequestValue> result, 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool has_more) OVERRIDE; 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void OnError(int request_id, 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<RequestValue> result, 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::File::Error error) OVERRIDE; 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::FilePath directory_path_; 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ProvidedFileSystemInterface::OpenFileMode mode_; 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool recursive_; 5303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::AsyncFileUtil::StatusCallback callback_; 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DISALLOW_COPY_AND_ASSIGN(CreateDirectory); 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace operations 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace file_system_provider 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace chromeos 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif // CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_OPERATIONS_CREATE_DIRECTORY_H_ 63