1// Copyright 2014 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 "chrome/browser/chromeos/file_system_provider/operations/create_directory.h" 6 7#include <string> 8 9#include "chrome/common/extensions/api/file_system_provider.h" 10#include "chrome/common/extensions/api/file_system_provider_internal.h" 11 12namespace chromeos { 13namespace file_system_provider { 14namespace operations { 15 16CreateDirectory::CreateDirectory( 17 extensions::EventRouter* event_router, 18 const ProvidedFileSystemInfo& file_system_info, 19 const base::FilePath& directory_path, 20 bool recursive, 21 const storage::AsyncFileUtil::StatusCallback& callback) 22 : Operation(event_router, file_system_info), 23 directory_path_(directory_path), 24 recursive_(recursive), 25 callback_(callback) { 26} 27 28CreateDirectory::~CreateDirectory() { 29} 30 31bool CreateDirectory::Execute(int request_id) { 32 using extensions::api::file_system_provider::CreateDirectoryRequestedOptions; 33 34 if (!file_system_info_.writable()) 35 return false; 36 37 CreateDirectoryRequestedOptions options; 38 options.file_system_id = file_system_info_.file_system_id(); 39 options.request_id = request_id; 40 options.directory_path = directory_path_.AsUTF8Unsafe(); 41 options.recursive = recursive_; 42 43 return SendEvent( 44 request_id, 45 extensions::api::file_system_provider::OnCreateDirectoryRequested:: 46 kEventName, 47 extensions::api::file_system_provider::OnCreateDirectoryRequested::Create( 48 options)); 49} 50 51void CreateDirectory::OnSuccess(int /* request_id */, 52 scoped_ptr<RequestValue> /* result */, 53 bool has_more) { 54 callback_.Run(base::File::FILE_OK); 55} 56 57void CreateDirectory::OnError(int /* request_id */, 58 scoped_ptr<RequestValue> /* result */, 59 base::File::Error error) { 60 callback_.Run(error); 61} 62 63} // namespace operations 64} // namespace file_system_provider 65} // namespace chromeos 66