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