file_system_resource.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
1// Copyright (c) 2013 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 "ppapi/proxy/file_system_resource.h" 6 7#include "base/bind.h" 8#include "ipc/ipc_message.h" 9#include "ppapi/c/pp_errors.h" 10#include "ppapi/proxy/ppapi_messages.h" 11#include "ppapi/shared_impl/tracked_callback.h" 12 13using ppapi::thunk::PPB_FileSystem_API; 14 15namespace ppapi { 16namespace proxy { 17 18FileSystemResource::FileSystemResource(Connection connection, 19 PP_Instance instance, 20 PP_FileSystemType type) 21 : PluginResource(connection, instance), 22 type_(type), 23 called_open_(false) { 24 DCHECK(type_ != PP_FILESYSTEMTYPE_INVALID); 25 SendCreate(RENDERER, PpapiHostMsg_FileSystem_Create(type_)); 26} 27 28FileSystemResource::~FileSystemResource() { 29} 30 31PPB_FileSystem_API* FileSystemResource::AsPPB_FileSystem_API() { 32 return this; 33} 34 35int32_t FileSystemResource::Open(int64_t expected_size, 36 scoped_refptr<TrackedCallback> callback) { 37 if (called_open_) 38 return PP_ERROR_FAILED; 39 called_open_ = true; 40 41 Call<PpapiPluginMsg_FileSystem_OpenReply>(RENDERER, 42 PpapiHostMsg_FileSystem_Open(expected_size), 43 base::Bind(&FileSystemResource::OpenComplete, 44 this, 45 callback)); 46 return PP_OK_COMPLETIONPENDING; 47} 48 49PP_FileSystemType FileSystemResource::GetType() { 50 return type_; 51} 52 53void FileSystemResource::OpenComplete( 54 scoped_refptr<TrackedCallback> callback, 55 const ResourceMessageReplyParams& params) { 56 callback->Run(params.result()); 57} 58 59} // namespace proxy 60} // namespace ppapi 61