OLD | NEW |
1 // Copyright (c) 2012 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_var.h" | 5 #include "native_client/src/shared/ppapi_proxy/plugin_ppb_var.h" |
6 | 6 |
7 #include <stdio.h> | 7 #include <stdio.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 PP_Var var; | 92 PP_Var var; |
93 var.type = PP_VARTYPE_ARRAY_BUFFER; | 93 var.type = PP_VARTYPE_ARRAY_BUFFER; |
94 var.value.as_id = proxy_var->id(); | 94 var.value.as_id = proxy_var->id(); |
95 // Increment the reference count for the return to the caller. | 95 // Increment the reference count for the return to the caller. |
96 AddRef(var); | 96 AddRef(var); |
97 DebugPrintf("PPB_VarArrayBuffer::Create: as_id=%"NACL_PRId64"\n", | 97 DebugPrintf("PPB_VarArrayBuffer::Create: as_id=%"NACL_PRId64"\n", |
98 var.value.as_id); | 98 var.value.as_id); |
99 return var; | 99 return var; |
100 } | 100 } |
101 | 101 |
102 uint32_t ByteLength(PP_Var var) { | 102 PP_Bool ByteLength(PP_Var var, uint32_t* byte_length) { |
103 DebugPrintf("PPB_VarArrayBuffer::ByteLength: var=PPB_Var(%s)\n", | 103 DebugPrintf("PPB_VarArrayBuffer::ByteLength: var=PPB_Var(%s)\n", |
104 PluginVar::DebugString(var).c_str()); | 104 PluginVar::DebugString(var).c_str()); |
105 SharedArrayBufferProxyVar buffer_var = ArrayBufferProxyVar::CastFromProxyVar( | 105 SharedArrayBufferProxyVar buffer_var = ArrayBufferProxyVar::CastFromProxyVar( |
106 ProxyVarCache::GetInstance().SharedProxyVarForVar(var)); | 106 ProxyVarCache::GetInstance().SharedProxyVarForVar(var)); |
107 uint32_t len = buffer_var->buffer_length(); | 107 if (buffer_var) { |
108 DebugPrintf("PPB_VarArrayBuffer::ByteLength: length=%"NACL_PRIu32"\n", len); | 108 *byte_length = buffer_var->buffer_length(); |
109 return len; | 109 DebugPrintf("PPB_VarArrayBuffer::ByteLength: length=%"NACL_PRIu32"\n", |
| 110 *byte_length); |
| 111 return PP_TRUE; |
| 112 } |
| 113 return PP_FALSE; |
110 } | 114 } |
111 | 115 |
112 void* Map(PP_Var var) { | 116 void* Map(PP_Var var) { |
113 DebugPrintf("PPB_VarArrayBuffer::Map: var=PPB_Var(%s)\n", | 117 DebugPrintf("PPB_VarArrayBuffer::Map: var=PPB_Var(%s)\n", |
114 PluginVar::DebugString(var).c_str()); | 118 PluginVar::DebugString(var).c_str()); |
115 SharedArrayBufferProxyVar buffer_var = ArrayBufferProxyVar::CastFromProxyVar( | 119 SharedArrayBufferProxyVar buffer_var = ArrayBufferProxyVar::CastFromProxyVar( |
116 ProxyVarCache::GetInstance().SharedProxyVarForVar(var)); | 120 ProxyVarCache::GetInstance().SharedProxyVarForVar(var)); |
117 void* data = buffer_var->buffer(); | 121 void* data = buffer_var->buffer(); |
118 DebugPrintf("PPB_VarArrayBuffer::Map: buffer=%p\n", data); | 122 DebugPrintf("PPB_VarArrayBuffer::Map: buffer=%p\n", data); |
119 return data; | 123 return data; |
120 } | 124 } |
121 | 125 |
| 126 void Unmap(PP_Var var) { |
| 127 DebugPrintf("PPB_VarArrayBuffer::Unap: var=PPB_Var(%s)\n", |
| 128 PluginVar::DebugString(var).c_str()); |
| 129 // We don't use shared memory, so there's nothing to do. |
| 130 } |
| 131 |
122 } // namespace | 132 } // namespace |
123 | 133 |
124 const PPB_Var* PluginVar::GetInterface() { | 134 const PPB_Var* PluginVar::GetInterface() { |
125 static const PPB_Var var_interface = { | 135 static const PPB_Var var_interface = { |
126 AddRef, | 136 AddRef, |
127 Release, | 137 Release, |
128 VarFromUtf8, | 138 VarFromUtf8, |
129 VarToUtf8 | 139 VarToUtf8 |
130 }; | 140 }; |
131 return &var_interface; | 141 return &var_interface; |
132 } | 142 } |
133 | 143 |
134 const PPB_Var_1_0* PluginVar::GetInterface1_0() { | 144 const PPB_Var_1_0* PluginVar::GetInterface1_0() { |
135 static const PPB_Var_1_0 var_interface = { | 145 static const PPB_Var_1_0 var_interface = { |
136 AddRef, | 146 AddRef, |
137 Release, | 147 Release, |
138 VarFromUtf8_1_0, | 148 VarFromUtf8_1_0, |
139 VarToUtf8 | 149 VarToUtf8 |
140 }; | 150 }; |
141 return &var_interface; | 151 return &var_interface; |
142 } | 152 } |
143 | 153 |
144 const PPB_VarArrayBuffer_Dev* PluginVar::GetArrayBufferInterface() { | 154 const PPB_VarArrayBuffer_Dev* PluginVar::GetArrayBufferInterface() { |
145 static const PPB_VarArrayBuffer_Dev interface = { | 155 static const PPB_VarArrayBuffer_Dev interface = { |
146 CreateArrayBuffer, | 156 CreateArrayBuffer, |
147 ByteLength, | 157 ByteLength, |
148 Map | 158 Map, |
| 159 Unmap |
149 }; | 160 }; |
150 return &interface; | 161 return &interface; |
151 } | 162 } |
152 | 163 |
153 std::string PluginVar::DebugString(const PP_Var& var) { | 164 std::string PluginVar::DebugString(const PP_Var& var) { |
154 switch (var.type) { | 165 switch (var.type) { |
155 case PP_VARTYPE_UNDEFINED: | 166 case PP_VARTYPE_UNDEFINED: |
156 return "##UNDEFINED##"; | 167 return "##UNDEFINED##"; |
157 case PP_VARTYPE_NULL: | 168 case PP_VARTYPE_NULL: |
158 return "##NULL##"; | 169 return "##NULL##"; |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 case PP_VARTYPE_STRING: | 258 case PP_VARTYPE_STRING: |
248 { | 259 { |
249 std::string str = DebugString(var); | 260 std::string str = DebugString(var); |
250 DebugPrintf("PP_Var(string: '%*s')", | 261 DebugPrintf("PP_Var(string: '%*s')", |
251 static_cast<uint32_t>(str.size()), | 262 static_cast<uint32_t>(str.size()), |
252 str.c_str()); | 263 str.c_str()); |
253 } | 264 } |
254 case PP_VARTYPE_OBJECT: | 265 case PP_VARTYPE_OBJECT: |
255 DebugPrintf("PP_Var(object: %"NACL_PRIu64")", GetVarId(var)); | 266 DebugPrintf("PP_Var(object: %"NACL_PRIu64")", GetVarId(var)); |
256 break; | 267 break; |
| 268 case PP_VARTYPE_ARRAY_BUFFER: |
| 269 DebugPrintf("PP_Var(object: %"NACL_PRIu64")", GetVarId(var)); |
| 270 break; |
257 case PP_VARTYPE_ARRAY: | 271 case PP_VARTYPE_ARRAY: |
258 case PP_VARTYPE_DICTIONARY: | 272 case PP_VARTYPE_DICTIONARY: |
259 case PP_VARTYPE_ARRAY_BUFFER: | |
260 NACL_NOTREACHED(); | |
261 break; | 273 break; |
262 } | 274 } |
263 } | 275 } |
264 | 276 |
265 } // namespace ppapi_proxy | 277 } // namespace ppapi_proxy |
OLD | NEW |