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

Side by Side 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, 11 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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>
11 11
12 #include "native_client/src/include/checked_cast.h" 12 #include "native_client/src/include/checked_cast.h"
13 #include "native_client/src/include/nacl_macros.h" 13 #include "native_client/src/include/nacl_macros.h"
14 #include "native_client/src/include/portability.h" 14 #include "native_client/src/include/portability.h"
15 #include "native_client/src/include/portability_io.h" 15 #include "native_client/src/include/portability_io.h"
16 #include "native_client/src/shared/ppapi_proxy/array_buffer_proxy_var.h"
16 #include "native_client/src/shared/ppapi_proxy/proxy_var_cache.h" 17 #include "native_client/src/shared/ppapi_proxy/proxy_var_cache.h"
17 #include "native_client/src/shared/ppapi_proxy/string_proxy_var.h" 18 #include "native_client/src/shared/ppapi_proxy/string_proxy_var.h"
18 #include "native_client/src/shared/ppapi_proxy/utility.h" 19 #include "native_client/src/shared/ppapi_proxy/utility.h"
19 #include "ppapi/c/pp_var.h" 20 #include "ppapi/c/pp_var.h"
20 #include "ppapi/c/ppb_var.h" 21 #include "ppapi/c/ppb_var.h"
21 22
22 namespace ppapi_proxy { 23 namespace ppapi_proxy {
23 24
24 namespace { 25 namespace {
25 26
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 int64_t GetVarId(PP_Var var) { 77 int64_t GetVarId(PP_Var var) {
77 SharedProxyVar proxy_var = 78 SharedProxyVar proxy_var =
78 ProxyVarCache::GetInstance().SharedProxyVarForVar(var); 79 ProxyVarCache::GetInstance().SharedProxyVarForVar(var);
79 if (proxy_var == NULL) { 80 if (proxy_var == NULL) {
80 return -1; 81 return -1;
81 } else { 82 } else {
82 return proxy_var->id(); 83 return proxy_var->id();
83 } 84 }
84 } 85 }
85 86
87 PP_Var CreateArrayBuffer(uint32_t size_in_bytes) {
88 DebugPrintf("PPB_VarArrayBuffer::Create: size_in_bytes=%"NACL_PRIu32"\n",
89 size_in_bytes);
90 SharedProxyVar proxy_var(new ArrayBufferProxyVar(size_in_bytes));
91 ProxyVarCache::GetInstance().RetainSharedProxyVar(proxy_var);
92 PP_Var var;
93 var.type = PP_VARTYPE_ARRAY_BUFFER;
94 var.value.as_id = proxy_var->id();
95 // Increment the reference count for the return to the caller.
96 AddRef(var);
97 DebugPrintf("PPB_VarArrayBuffer::Create: as_id=%"NACL_PRId64"\n",
98 var.value.as_id);
99 return var;
100 }
101
102 uint32_t ByteLength(PP_Var var) {
103 DebugPrintf("PPB_VarArrayBuffer::ByteLength: var=PPB_Var(%s)\n",
104 PluginVar::DebugString(var).c_str());
105 SharedArrayBufferProxyVar buffer_var = ArrayBufferProxyVar::CastFromProxyVar(
106 ProxyVarCache::GetInstance().SharedProxyVarForVar(var));
107 uint32_t len = buffer_var->buffer_length();
108 DebugPrintf("PPB_VarArrayBuffer::ByteLength: length=%"NACL_PRIu32"\n", len);
109 return len;
110 }
111
112 void* Map(PP_Var var) {
113 DebugPrintf("PPB_VarArrayBuffer::Map: var=PPB_Var(%s)\n",
114 PluginVar::DebugString(var).c_str());
115 SharedArrayBufferProxyVar buffer_var = ArrayBufferProxyVar::CastFromProxyVar(
116 ProxyVarCache::GetInstance().SharedProxyVarForVar(var));
117 void* data = buffer_var->buffer();
118 DebugPrintf("PPB_VarArrayBuffer::Map: buffer=%p\n", data);
119 return data;
120 }
121
86 } // namespace 122 } // namespace
87 123
88 const PPB_Var* PluginVar::GetInterface() { 124 const PPB_Var* PluginVar::GetInterface() {
89 static const PPB_Var var_interface = { 125 static const PPB_Var var_interface = {
90 AddRef, 126 AddRef,
91 Release, 127 Release,
92 VarFromUtf8, 128 VarFromUtf8,
93 VarToUtf8 129 VarToUtf8
94 }; 130 };
95 return &var_interface; 131 return &var_interface;
96 } 132 }
97 133
98 const PPB_Var_1_0* PluginVar::GetInterface1_0() { 134 const PPB_Var_1_0* PluginVar::GetInterface1_0() {
99 static const PPB_Var_1_0 var_interface = { 135 static const PPB_Var_1_0 var_interface = {
100 AddRef, 136 AddRef,
101 Release, 137 Release,
102 VarFromUtf8_1_0, 138 VarFromUtf8_1_0,
103 VarToUtf8 139 VarToUtf8
104 }; 140 };
105 return &var_interface; 141 return &var_interface;
106 } 142 }
107 143
144 const PPB_VarArrayBuffer_Dev* PluginVar::GetArrayBufferInterface() {
145 static const PPB_VarArrayBuffer_Dev interface = {
146 CreateArrayBuffer,
147 ByteLength,
148 Map
149 };
150 return &interface;
151 }
152
108 std::string PluginVar::DebugString(const PP_Var& var) { 153 std::string PluginVar::DebugString(const PP_Var& var) {
109 switch (var.type) { 154 switch (var.type) {
110 case PP_VARTYPE_UNDEFINED: 155 case PP_VARTYPE_UNDEFINED:
111 return "##UNDEFINED##"; 156 return "##UNDEFINED##";
112 case PP_VARTYPE_NULL: 157 case PP_VARTYPE_NULL:
113 return "##NULL##"; 158 return "##NULL##";
114 case PP_VARTYPE_BOOL: 159 case PP_VARTYPE_BOOL:
115 return (var.value.as_bool ? "true" : "false"); 160 return (var.value.as_bool ? "true" : "false");
116 case PP_VARTYPE_INT32: 161 case PP_VARTYPE_INT32:
117 { 162 {
(...skipping 12 matching lines...) Expand all
130 case PP_VARTYPE_STRING: 175 case PP_VARTYPE_STRING:
131 { 176 {
132 uint32_t len; 177 uint32_t len;
133 const char* data = VarToUtf8(var, &len); 178 const char* data = VarToUtf8(var, &len);
134 return std::string(data, len); 179 return std::string(data, len);
135 } 180 }
136 case PP_VARTYPE_OBJECT: 181 case PP_VARTYPE_OBJECT:
137 { 182 {
138 char buf[32]; 183 char buf[32];
139 const size_t kBufSize = sizeof(buf); 184 const size_t kBufSize = sizeof(buf);
140 SNPRINTF(buf, kBufSize, "%"NACL_PRIu64"", GetVarId(var)); 185 SNPRINTF(buf, kBufSize, "%"NACL_PRId64"", GetVarId(var));
141 return std::string("##OBJECT##") + buf + "##"; 186 return std::string("##OBJECT##") + buf + "##";
142 } 187 }
188 case PP_VARTYPE_ARRAY_BUFFER:
189 {
190 char buf[32];
191 const size_t kBufSize = sizeof(buf);
192 SNPRINTF(buf, kBufSize, "%"NACL_PRId64"", GetVarId(var));
193 return std::string("##ARRAYBUFFER##") + buf + "##";
194 }
143 case PP_VARTYPE_ARRAY: 195 case PP_VARTYPE_ARRAY:
144 case PP_VARTYPE_DICTIONARY: 196 case PP_VARTYPE_DICTIONARY:
145 case PP_VARTYPE_ARRAY_BUFFER:
146 NACL_NOTREACHED(); 197 NACL_NOTREACHED();
147 break; 198 break;
148 } 199 }
149 ASSERT_MSG(0, "Unexpected type seen"); 200 ASSERT_MSG(0, "Unexpected type seen");
150 return "##ERROR##"; 201 return "##ERROR##";
151 } 202 }
152 203
153 PP_Var PluginVar::StringToPPVar(const std::string& str) { 204 PP_Var PluginVar::StringToPPVar(const std::string& str) {
154 static const PPB_Var* ppb_var = NULL; 205 static const PPB_Var* ppb_var = NULL;
155 if (ppb_var == NULL) { 206 if (ppb_var == NULL) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 break; 256 break;
206 case PP_VARTYPE_ARRAY: 257 case PP_VARTYPE_ARRAY:
207 case PP_VARTYPE_DICTIONARY: 258 case PP_VARTYPE_DICTIONARY:
208 case PP_VARTYPE_ARRAY_BUFFER: 259 case PP_VARTYPE_ARRAY_BUFFER:
209 NACL_NOTREACHED(); 260 NACL_NOTREACHED();
210 break; 261 break;
211 } 262 }
212 } 263 }
213 264
214 } // namespace ppapi_proxy 265 } // namespace ppapi_proxy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698