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