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#include "chrome/browser/chromeos/file_system_provider/operations/create_directory.h"
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <string>
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/common/extensions/api/file_system_provider.h"
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/common/extensions/api/file_system_provider_internal.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace chromeos {
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace file_system_provider {
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace operations {
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
16116680a4aac90f2aa7413d9095a592090648e557Ben MurdochCreateDirectory::CreateDirectory(
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    extensions::EventRouter* event_router,
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const ProvidedFileSystemInfo& file_system_info,
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const base::FilePath& directory_path,
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    bool recursive,
2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    const storage::AsyncFileUtil::StatusCallback& callback)
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    : Operation(event_router, file_system_info),
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      directory_path_(directory_path),
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      recursive_(recursive),
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      callback_(callback) {
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
28116680a4aac90f2aa7413d9095a592090648e557Ben MurdochCreateDirectory::~CreateDirectory() {
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool CreateDirectory::Execute(int request_id) {
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  using extensions::api::file_system_provider::CreateDirectoryRequestedOptions;
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  if (!file_system_info_.writable())
355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    return false;
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  CreateDirectoryRequestedOptions options;
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  options.file_system_id = file_system_info_.file_system_id();
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  options.request_id = request_id;
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  options.directory_path = directory_path_.AsUTF8Unsafe();
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  options.recursive = recursive_;
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return SendEvent(
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      request_id,
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      extensions::api::file_system_provider::OnCreateDirectoryRequested::
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          kEventName,
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      extensions::api::file_system_provider::OnCreateDirectoryRequested::Create(
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          options));
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid CreateDirectory::OnSuccess(int /* request_id */,
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                                scoped_ptr<RequestValue> /* result */,
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                                bool has_more) {
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  callback_.Run(base::File::FILE_OK);
55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
57116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid CreateDirectory::OnError(int /* request_id */,
58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                              scoped_ptr<RequestValue> /* result */,
59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                              base::File::Error error) {
60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  callback_.Run(error);
61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace operations
64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace file_system_provider
65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace chromeos
66