15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/chromeos/file_system_provider/operations/create_file.h" 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include <string> 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/common/extensions/api/file_system_provider.h" 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/common/extensions/api/file_system_provider_internal.h" 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace chromeos { 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace file_system_provider { 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace operations { 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)CreateFile::CreateFile(extensions::EventRouter* event_router, 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const ProvidedFileSystemInfo& file_system_info, 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const base::FilePath& file_path, 1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::AsyncFileUtil::StatusCallback& callback) 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) : Operation(event_router, file_system_info), 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) file_path_(file_path), 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) callback_(callback) { 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)CreateFile::~CreateFile() { 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool CreateFile::Execute(int request_id) { 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci using extensions::api::file_system_provider::CreateFileRequestedOptions; 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!file_system_info_.writable()) 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return false; 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CreateFileRequestedOptions options; 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci options.file_system_id = file_system_info_.file_system_id(); 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci options.request_id = request_id; 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci options.file_path = file_path_.AsUTF8Unsafe(); 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return SendEvent( 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) request_id, 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) extensions::api::file_system_provider::OnCreateFileRequested::kEventName, 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci extensions::api::file_system_provider::OnCreateFileRequested::Create( 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci options)); 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void CreateFile::OnSuccess(int /* request_id */, 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<RequestValue> /* result */, 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool has_more) { 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) callback_.Run(base::File::FILE_OK); 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void CreateFile::OnError(int /* request_id */, 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<RequestValue> /* result */, 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::File::Error error) { 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) callback_.Run(error); 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace operations 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace file_system_provider 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace chromeos 61