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 |