Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(65)

Unified Diff: ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_var.cc

Issue 9022021: Proxy PPB_ArrayBuffer_Dev, make them work over Messaging (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review comment. Created 8 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_var.cc
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_var.cc b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_var.cc
index 65823c837545283883e941515dce85676f8c752d..c00266b908a5f08769516cfbdd0818c5c6516651 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_var.cc
+++ b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_var.cc
@@ -13,6 +13,7 @@
#include "native_client/src/include/nacl_macros.h"
#include "native_client/src/include/portability.h"
#include "native_client/src/include/portability_io.h"
+#include "native_client/src/shared/ppapi_proxy/array_buffer_proxy_var.h"
#include "native_client/src/shared/ppapi_proxy/proxy_var_cache.h"
#include "native_client/src/shared/ppapi_proxy/string_proxy_var.h"
#include "native_client/src/shared/ppapi_proxy/utility.h"
@@ -83,6 +84,41 @@ int64_t GetVarId(PP_Var var) {
}
}
+PP_Var CreateArrayBuffer(uint32_t size_in_bytes) {
+ DebugPrintf("PPB_VarArrayBuffer::Create: size_in_bytes=%"NACL_PRIu32"\n",
+ size_in_bytes);
+ SharedProxyVar proxy_var(new ArrayBufferProxyVar(size_in_bytes));
+ ProxyVarCache::GetInstance().RetainSharedProxyVar(proxy_var);
+ PP_Var var;
+ var.type = PP_VARTYPE_ARRAY_BUFFER;
+ var.value.as_id = proxy_var->id();
+ // Increment the reference count for the return to the caller.
+ AddRef(var);
+ DebugPrintf("PPB_VarArrayBuffer::Create: as_id=%"NACL_PRId64"\n",
+ var.value.as_id);
+ return var;
+}
+
+uint32_t ByteLength(PP_Var var) {
+ DebugPrintf("PPB_VarArrayBuffer::ByteLength: var=PPB_Var(%s)\n",
+ PluginVar::DebugString(var).c_str());
+ SharedArrayBufferProxyVar buffer_var = ArrayBufferProxyVar::CastFromProxyVar(
+ ProxyVarCache::GetInstance().SharedProxyVarForVar(var));
+ uint32_t len = buffer_var->buffer_length();
+ DebugPrintf("PPB_VarArrayBuffer::ByteLength: length=%"NACL_PRIu32"\n", len);
+ return len;
+}
+
+void* Map(PP_Var var) {
+ DebugPrintf("PPB_VarArrayBuffer::Map: var=PPB_Var(%s)\n",
+ PluginVar::DebugString(var).c_str());
+ SharedArrayBufferProxyVar buffer_var = ArrayBufferProxyVar::CastFromProxyVar(
+ ProxyVarCache::GetInstance().SharedProxyVarForVar(var));
+ void* data = buffer_var->buffer();
+ DebugPrintf("PPB_VarArrayBuffer::Map: buffer=%p\n", data);
+ return data;
+}
+
} // namespace
const PPB_Var* PluginVar::GetInterface() {
@@ -105,6 +141,15 @@ const PPB_Var_1_0* PluginVar::GetInterface1_0() {
return &var_interface;
}
+const PPB_VarArrayBuffer_Dev* PluginVar::GetArrayBufferInterface() {
+ static const PPB_VarArrayBuffer_Dev interface = {
+ CreateArrayBuffer,
+ ByteLength,
+ Map
+ };
+ return &interface;
+}
+
std::string PluginVar::DebugString(const PP_Var& var) {
switch (var.type) {
case PP_VARTYPE_UNDEFINED:
@@ -137,12 +182,18 @@ std::string PluginVar::DebugString(const PP_Var& var) {
{
char buf[32];
const size_t kBufSize = sizeof(buf);
- SNPRINTF(buf, kBufSize, "%"NACL_PRIu64"", GetVarId(var));
+ SNPRINTF(buf, kBufSize, "%"NACL_PRId64"", GetVarId(var));
return std::string("##OBJECT##") + buf + "##";
}
+ case PP_VARTYPE_ARRAY_BUFFER:
+ {
+ char buf[32];
+ const size_t kBufSize = sizeof(buf);
+ SNPRINTF(buf, kBufSize, "%"NACL_PRId64"", GetVarId(var));
+ return std::string("##ARRAYBUFFER##") + buf + "##";
+ }
case PP_VARTYPE_ARRAY:
case PP_VARTYPE_DICTIONARY:
- case PP_VARTYPE_ARRAY_BUFFER:
NACL_NOTREACHED();
break;
}

Powered by Google App Engine
This is Rietveld 408576698