| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "native_client/src/shared/ppapi_proxy/plugin_ppb_file_system.h" | 5 #include "native_client/src/shared/ppapi_proxy/plugin_ppb_file_system.h" |
| 6 | 6 |
| 7 #include "native_client/src/include/portability.h" | 7 #include "native_client/src/include/portability.h" |
| 8 #include "native_client/src/shared/ppapi_proxy/plugin_callback.h" | 8 #include "native_client/src/shared/ppapi_proxy/plugin_callback.h" |
| 9 #include "native_client/src/shared/ppapi_proxy/plugin_globals.h" | 9 #include "native_client/src/shared/ppapi_proxy/plugin_globals.h" |
| 10 #include "native_client/src/shared/ppapi_proxy/utility.h" | 10 #include "native_client/src/shared/ppapi_proxy/utility.h" |
| 11 #include "ppapi/c/pp_completion_callback.h" | 11 #include "ppapi/c/pp_completion_callback.h" |
| 12 #include "ppapi/c/pp_errors.h" | 12 #include "ppapi/c/pp_errors.h" |
| 13 #include "srpcgen/ppb_rpc.h" | 13 #include "srpcgen/ppb_rpc.h" |
| 14 | 14 |
| 15 namespace ppapi_proxy { | 15 namespace ppapi_proxy { |
| 16 | 16 |
| 17 namespace { | 17 namespace { |
| 18 | 18 |
| 19 PP_Resource Create(PP_Instance instance, PP_FileSystemType type) { | 19 PP_Resource Create(PP_Instance instance, PP_FileSystemType type) { |
| 20 DebugPrintf("PPB_FileSystem::Create: instance=%"NACL_PRIu32" " | 20 DebugPrintf("PPB_FileSystem::Create: instance=%"NACL_PRId32" " |
| 21 "type=%"NACL_PRIu32"\n", | 21 "type=%"NACL_PRIu32"\n", |
| 22 instance, type); | 22 instance, type); |
| 23 PP_Resource pp_resource = kInvalidResourceId; | 23 PP_Resource pp_resource = kInvalidResourceId; |
| 24 NaClSrpcError srpc_result = | 24 NaClSrpcError srpc_result = |
| 25 PpbFileSystemRpcClient::PPB_FileSystem_Create( | 25 PpbFileSystemRpcClient::PPB_FileSystem_Create( |
| 26 GetMainSrpcChannel(), | 26 GetMainSrpcChannel(), |
| 27 instance, | 27 instance, |
| 28 type, | 28 type, |
| 29 &pp_resource); | 29 &pp_resource); |
| 30 DebugPrintf("PPB_FileSystem::Create: %s\n", | 30 DebugPrintf("PPB_FileSystem::Create: %s\n", |
| 31 NaClSrpcErrorString(srpc_result)); | 31 NaClSrpcErrorString(srpc_result)); |
| 32 if (srpc_result == NACL_SRPC_RESULT_OK) | 32 if (srpc_result == NACL_SRPC_RESULT_OK) |
| 33 return pp_resource; | 33 return pp_resource; |
| 34 return kInvalidResourceId; | 34 return kInvalidResourceId; |
| 35 } | 35 } |
| 36 | 36 |
| 37 PP_Bool IsFileSystem(PP_Resource resource) { | 37 PP_Bool IsFileSystem(PP_Resource resource) { |
| 38 DebugPrintf("PPB_FileSystem::IsFileSystem: resource=%"NACL_PRIu32"\n", | 38 DebugPrintf("PPB_FileSystem::IsFileSystem: resource=%"NACL_PRId32"\n", |
| 39 resource); | 39 resource); |
| 40 int32_t is_file_system = 0; | 40 int32_t is_file_system = 0; |
| 41 NaClSrpcError srpc_result = | 41 NaClSrpcError srpc_result = |
| 42 PpbFileSystemRpcClient::PPB_FileSystem_IsFileSystem( | 42 PpbFileSystemRpcClient::PPB_FileSystem_IsFileSystem( |
| 43 GetMainSrpcChannel(), | 43 GetMainSrpcChannel(), |
| 44 resource, | 44 resource, |
| 45 &is_file_system); | 45 &is_file_system); |
| 46 DebugPrintf("PPB_FileSystem::IsFileSystem: %s\n", | 46 DebugPrintf("PPB_FileSystem::IsFileSystem: %s\n", |
| 47 NaClSrpcErrorString(srpc_result)); | 47 NaClSrpcErrorString(srpc_result)); |
| 48 if (NACL_SRPC_RESULT_OK != srpc_result) { | 48 if (NACL_SRPC_RESULT_OK != srpc_result) { |
| 49 return PP_FALSE; | 49 return PP_FALSE; |
| 50 } | 50 } |
| 51 return PP_FromBool(is_file_system); | 51 return PP_FromBool(is_file_system); |
| 52 } | 52 } |
| 53 | 53 |
| 54 int32_t Open(PP_Resource file_system, | 54 int32_t Open(PP_Resource file_system, |
| 55 int64_t expected_size, | 55 int64_t expected_size, |
| 56 struct PP_CompletionCallback callback) { | 56 struct PP_CompletionCallback callback) { |
| 57 DebugPrintf("PPB_FileSystem::Open: file_system=%"NACL_PRIu32"\n", | 57 DebugPrintf("PPB_FileSystem::Open: file_system=%"NACL_PRId32"\n", |
| 58 file_system); | 58 file_system); |
| 59 int32_t callback_id = CompletionCallbackTable::Get()->AddCallback(callback); | 59 int32_t callback_id = CompletionCallbackTable::Get()->AddCallback(callback); |
| 60 if (callback_id == 0) // Just like Chrome, for now disallow blocking calls. | 60 if (callback_id == 0) // Just like Chrome, for now disallow blocking calls. |
| 61 return PP_ERROR_BLOCKS_MAIN_THREAD; | 61 return PP_ERROR_BLOCKS_MAIN_THREAD; |
| 62 | 62 |
| 63 int32_t pp_error; | 63 int32_t pp_error; |
| 64 NaClSrpcError srpc_result = | 64 NaClSrpcError srpc_result = |
| 65 PpbFileSystemRpcClient::PPB_FileSystem_Open( | 65 PpbFileSystemRpcClient::PPB_FileSystem_Open( |
| 66 GetMainSrpcChannel(), | 66 GetMainSrpcChannel(), |
| 67 file_system, | 67 file_system, |
| 68 expected_size, | 68 expected_size, |
| 69 callback_id, | 69 callback_id, |
| 70 &pp_error); | 70 &pp_error); |
| 71 DebugPrintf("PPB_FileSystem::Open: %s\n", | 71 DebugPrintf("PPB_FileSystem::Open: %s\n", |
| 72 NaClSrpcErrorString(srpc_result)); | 72 NaClSrpcErrorString(srpc_result)); |
| 73 if (srpc_result != NACL_SRPC_RESULT_OK) | 73 if (srpc_result != NACL_SRPC_RESULT_OK) |
| 74 pp_error = PP_ERROR_FAILED; | 74 pp_error = PP_ERROR_FAILED; |
| 75 return MayForceCallback(callback, pp_error); | 75 return MayForceCallback(callback, pp_error); |
| 76 } | 76 } |
| 77 | 77 |
| 78 PP_FileSystemType GetType(PP_Resource file_system) { | 78 PP_FileSystemType GetType(PP_Resource file_system) { |
| 79 DebugPrintf("PPB_FileSystem::GetType: file_system=%"NACL_PRIu32"\n", | 79 DebugPrintf("PPB_FileSystem::GetType: file_system=%"NACL_PRId32"\n", |
| 80 file_system); | 80 file_system); |
| 81 int32_t type = PP_FILESYSTEMTYPE_INVALID; | 81 int32_t type = PP_FILESYSTEMTYPE_INVALID; |
| 82 NaClSrpcError srpc_result = | 82 NaClSrpcError srpc_result = |
| 83 PpbFileSystemRpcClient::PPB_FileSystem_GetType( | 83 PpbFileSystemRpcClient::PPB_FileSystem_GetType( |
| 84 GetMainSrpcChannel(), | 84 GetMainSrpcChannel(), |
| 85 file_system, | 85 file_system, |
| 86 &type); | 86 &type); |
| 87 DebugPrintf("PPB_FileSystem::GetType: %s\n", | 87 DebugPrintf("PPB_FileSystem::GetType: %s\n", |
| 88 NaClSrpcErrorString(srpc_result)); | 88 NaClSrpcErrorString(srpc_result)); |
| 89 if (srpc_result == NACL_SRPC_RESULT_OK) | 89 if (srpc_result == NACL_SRPC_RESULT_OK) |
| 90 return static_cast<PP_FileSystemType>(type); | 90 return static_cast<PP_FileSystemType>(type); |
| 91 return PP_FILESYSTEMTYPE_INVALID; | 91 return PP_FILESYSTEMTYPE_INVALID; |
| 92 } | 92 } |
| 93 | 93 |
| 94 } // namespace | 94 } // namespace |
| 95 | 95 |
| 96 const PPB_FileSystem* PluginFileSystem::GetInterface() { | 96 const PPB_FileSystem* PluginFileSystem::GetInterface() { |
| 97 static const PPB_FileSystem file_system_interface = { | 97 static const PPB_FileSystem file_system_interface = { |
| 98 Create, | 98 Create, |
| 99 IsFileSystem, | 99 IsFileSystem, |
| 100 Open, | 100 Open, |
| 101 GetType | 101 GetType |
| 102 }; | 102 }; |
| 103 return &file_system_interface; | 103 return &file_system_interface; |
| 104 } | 104 } |
| 105 } // namespace ppapi_proxy | 105 } // namespace ppapi_proxy |
| OLD | NEW |