| OLD | NEW |
| 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 "ppapi/proxy/ppb_var_deprecated_proxy.h" | 5 #include "ppapi/proxy/ppb_var_deprecated_proxy.h" |
| 6 | 6 |
| 7 #include <stdlib.h> // For malloc | 7 #include <stdlib.h> // For malloc |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "base/message_loop.h" | 11 #include "base/message_loop.h" |
| 12 #include "ppapi/c/dev/ppb_var_deprecated.h" | 12 #include "ppapi/c/dev/ppb_var_deprecated.h" |
| 13 #include "ppapi/c/pp_var.h" | 13 #include "ppapi/c/pp_var.h" |
| 14 #include "ppapi/c/ppb_var.h" | 14 #include "ppapi/c/ppb_var.h" |
| 15 #include "ppapi/c/ppb_core.h" | 15 #include "ppapi/c/ppb_core.h" |
| 16 #include "ppapi/proxy/host_dispatcher.h" | 16 #include "ppapi/proxy/host_dispatcher.h" |
| 17 #include "ppapi/proxy/plugin_dispatcher.h" | 17 #include "ppapi/proxy/plugin_dispatcher.h" |
| 18 #include "ppapi/proxy/plugin_globals.h" | 18 #include "ppapi/proxy/plugin_globals.h" |
| 19 #include "ppapi/proxy/plugin_resource_tracker.h" | 19 #include "ppapi/proxy/plugin_resource_tracker.h" |
| 20 #include "ppapi/proxy/plugin_var_tracker.h" | 20 #include "ppapi/proxy/plugin_var_tracker.h" |
| 21 #include "ppapi/proxy/ppapi_messages.h" | 21 #include "ppapi/proxy/ppapi_messages.h" |
| 22 #include "ppapi/proxy/ppp_class_proxy.h" | 22 #include "ppapi/proxy/ppp_class_proxy.h" |
| 23 #include "ppapi/proxy/serialized_var.h" | 23 #include "ppapi/proxy/serialized_var.h" |
| 24 #include "ppapi/shared_impl/ppb_var_shared.h" | 24 #include "ppapi/shared_impl/ppb_var_shared.h" |
| 25 #include "ppapi/shared_impl/proxy_lock.h" |
| 25 #include "ppapi/shared_impl/var.h" | 26 #include "ppapi/shared_impl/var.h" |
| 26 | 27 |
| 27 namespace ppapi { | 28 namespace ppapi { |
| 28 namespace proxy { | 29 namespace proxy { |
| 29 | 30 |
| 30 namespace { | 31 namespace { |
| 31 | 32 |
| 32 // Used to do get the set-up information for calling a var object. If the | 33 // Used to do get the set-up information for calling a var object. If the |
| 33 // exception is set, returns NULL. Otherwise, computes the dispatcher for the | 34 // exception is set, returns NULL. Otherwise, computes the dispatcher for the |
| 34 // given var object. If the var is not a valid object, returns NULL and sets | 35 // given var object. If the var is not a valid object, returns NULL and sets |
| (...skipping 22 matching lines...) Expand all Loading... |
| 57 std::string("Attempting to use an invalid object")); | 58 std::string("Attempting to use an invalid object")); |
| 58 } | 59 } |
| 59 return NULL; | 60 return NULL; |
| 60 } | 61 } |
| 61 | 62 |
| 62 // PPB_Var_Deprecated plugin --------------------------------------------------- | 63 // PPB_Var_Deprecated plugin --------------------------------------------------- |
| 63 | 64 |
| 64 bool HasProperty(PP_Var var, | 65 bool HasProperty(PP_Var var, |
| 65 PP_Var name, | 66 PP_Var name, |
| 66 PP_Var* exception) { | 67 PP_Var* exception) { |
| 68 ProxyAutoLock lock; |
| 67 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception); | 69 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception); |
| 68 if (!dispatcher) | 70 if (!dispatcher) |
| 69 return false; | 71 return false; |
| 70 | 72 |
| 71 ReceiveSerializedException se(dispatcher, exception); | 73 ReceiveSerializedException se(dispatcher, exception); |
| 72 PP_Bool result = PP_FALSE; | 74 PP_Bool result = PP_FALSE; |
| 73 if (!se.IsThrown()) { | 75 if (!se.IsThrown()) { |
| 74 dispatcher->Send(new PpapiHostMsg_PPBVar_HasProperty( | 76 dispatcher->Send(new PpapiHostMsg_PPBVar_HasProperty( |
| 75 API_ID_PPB_VAR_DEPRECATED, | 77 API_ID_PPB_VAR_DEPRECATED, |
| 76 SerializedVarSendInput(dispatcher, var), | 78 SerializedVarSendInput(dispatcher, var), |
| 77 SerializedVarSendInput(dispatcher, name), &se, &result)); | 79 SerializedVarSendInput(dispatcher, name), &se, &result)); |
| 78 } | 80 } |
| 79 return PP_ToBool(result); | 81 return PP_ToBool(result); |
| 80 } | 82 } |
| 81 | 83 |
| 82 bool HasMethod(PP_Var var, | 84 bool HasMethod(PP_Var var, |
| 83 PP_Var name, | 85 PP_Var name, |
| 84 PP_Var* exception) { | 86 PP_Var* exception) { |
| 87 ProxyAutoLock lock; |
| 85 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception); | 88 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception); |
| 86 if (!dispatcher) | 89 if (!dispatcher) |
| 87 return false; | 90 return false; |
| 88 | 91 |
| 89 ReceiveSerializedException se(dispatcher, exception); | 92 ReceiveSerializedException se(dispatcher, exception); |
| 90 PP_Bool result = PP_FALSE; | 93 PP_Bool result = PP_FALSE; |
| 91 if (!se.IsThrown()) { | 94 if (!se.IsThrown()) { |
| 92 dispatcher->Send(new PpapiHostMsg_PPBVar_HasMethodDeprecated( | 95 dispatcher->Send(new PpapiHostMsg_PPBVar_HasMethodDeprecated( |
| 93 API_ID_PPB_VAR_DEPRECATED, | 96 API_ID_PPB_VAR_DEPRECATED, |
| 94 SerializedVarSendInput(dispatcher, var), | 97 SerializedVarSendInput(dispatcher, var), |
| 95 SerializedVarSendInput(dispatcher, name), &se, &result)); | 98 SerializedVarSendInput(dispatcher, name), &se, &result)); |
| 96 } | 99 } |
| 97 return PP_ToBool(result); | 100 return PP_ToBool(result); |
| 98 } | 101 } |
| 99 | 102 |
| 100 PP_Var GetProperty(PP_Var var, | 103 PP_Var GetProperty(PP_Var var, |
| 101 PP_Var name, | 104 PP_Var name, |
| 102 PP_Var* exception) { | 105 PP_Var* exception) { |
| 106 ProxyAutoLock lock; |
| 103 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception); | 107 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception); |
| 104 if (!dispatcher) | 108 if (!dispatcher) |
| 105 return PP_MakeUndefined(); | 109 return PP_MakeUndefined(); |
| 106 | 110 |
| 107 ReceiveSerializedException se(dispatcher, exception); | 111 ReceiveSerializedException se(dispatcher, exception); |
| 108 ReceiveSerializedVarReturnValue result; | 112 ReceiveSerializedVarReturnValue result; |
| 109 if (!se.IsThrown()) { | 113 if (!se.IsThrown()) { |
| 110 dispatcher->Send(new PpapiHostMsg_PPBVar_GetProperty( | 114 dispatcher->Send(new PpapiHostMsg_PPBVar_GetProperty( |
| 111 API_ID_PPB_VAR_DEPRECATED, | 115 API_ID_PPB_VAR_DEPRECATED, |
| 112 SerializedVarSendInput(dispatcher, var), | 116 SerializedVarSendInput(dispatcher, var), |
| 113 SerializedVarSendInput(dispatcher, name), &se, &result)); | 117 SerializedVarSendInput(dispatcher, name), &se, &result)); |
| 114 } | 118 } |
| 115 return result.Return(dispatcher); | 119 return result.Return(dispatcher); |
| 116 } | 120 } |
| 117 | 121 |
| 118 void EnumerateProperties(PP_Var var, | 122 void EnumerateProperties(PP_Var var, |
| 119 uint32_t* property_count, | 123 uint32_t* property_count, |
| 120 PP_Var** properties, | 124 PP_Var** properties, |
| 121 PP_Var* exception) { | 125 PP_Var* exception) { |
| 126 ProxyAutoLock lock; |
| 122 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception); | 127 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception); |
| 123 if (!dispatcher) { | 128 if (!dispatcher) { |
| 124 *property_count = 0; | 129 *property_count = 0; |
| 125 *properties = NULL; | 130 *properties = NULL; |
| 126 return; | 131 return; |
| 127 } | 132 } |
| 128 | 133 |
| 129 ReceiveSerializedVarVectorOutParam out_vector(dispatcher, | 134 ReceiveSerializedVarVectorOutParam out_vector(dispatcher, |
| 130 property_count, properties); | 135 property_count, properties); |
| 131 ReceiveSerializedException se(dispatcher, exception); | 136 ReceiveSerializedException se(dispatcher, exception); |
| 132 if (!se.IsThrown()) { | 137 if (!se.IsThrown()) { |
| 133 dispatcher->Send(new PpapiHostMsg_PPBVar_EnumerateProperties( | 138 dispatcher->Send(new PpapiHostMsg_PPBVar_EnumerateProperties( |
| 134 API_ID_PPB_VAR_DEPRECATED, | 139 API_ID_PPB_VAR_DEPRECATED, |
| 135 SerializedVarSendInput(dispatcher, var), | 140 SerializedVarSendInput(dispatcher, var), |
| 136 out_vector.OutParam(), &se)); | 141 out_vector.OutParam(), &se)); |
| 137 } | 142 } |
| 138 } | 143 } |
| 139 | 144 |
| 140 void SetProperty(PP_Var var, | 145 void SetProperty(PP_Var var, |
| 141 PP_Var name, | 146 PP_Var name, |
| 142 PP_Var value, | 147 PP_Var value, |
| 143 PP_Var* exception) { | 148 PP_Var* exception) { |
| 149 ProxyAutoLock lock; |
| 144 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception); | 150 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception); |
| 145 if (!dispatcher) | 151 if (!dispatcher) |
| 146 return; | 152 return; |
| 147 | 153 |
| 148 ReceiveSerializedException se(dispatcher, exception); | 154 ReceiveSerializedException se(dispatcher, exception); |
| 149 if (!se.IsThrown()) { | 155 if (!se.IsThrown()) { |
| 150 dispatcher->Send(new PpapiHostMsg_PPBVar_SetPropertyDeprecated( | 156 dispatcher->Send(new PpapiHostMsg_PPBVar_SetPropertyDeprecated( |
| 151 API_ID_PPB_VAR_DEPRECATED, | 157 API_ID_PPB_VAR_DEPRECATED, |
| 152 SerializedVarSendInput(dispatcher, var), | 158 SerializedVarSendInput(dispatcher, var), |
| 153 SerializedVarSendInput(dispatcher, name), | 159 SerializedVarSendInput(dispatcher, name), |
| 154 SerializedVarSendInput(dispatcher, value), &se)); | 160 SerializedVarSendInput(dispatcher, value), &se)); |
| 155 } | 161 } |
| 156 } | 162 } |
| 157 | 163 |
| 158 void RemoveProperty(PP_Var var, | 164 void RemoveProperty(PP_Var var, |
| 159 PP_Var name, | 165 PP_Var name, |
| 160 PP_Var* exception) { | 166 PP_Var* exception) { |
| 167 ProxyAutoLock lock; |
| 161 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception); | 168 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, exception); |
| 162 if (!dispatcher) | 169 if (!dispatcher) |
| 163 return; | 170 return; |
| 164 | 171 |
| 165 ReceiveSerializedException se(dispatcher, exception); | 172 ReceiveSerializedException se(dispatcher, exception); |
| 166 PP_Bool result = PP_FALSE; | 173 PP_Bool result = PP_FALSE; |
| 167 if (!se.IsThrown()) { | 174 if (!se.IsThrown()) { |
| 168 dispatcher->Send(new PpapiHostMsg_PPBVar_DeleteProperty( | 175 dispatcher->Send(new PpapiHostMsg_PPBVar_DeleteProperty( |
| 169 API_ID_PPB_VAR_DEPRECATED, | 176 API_ID_PPB_VAR_DEPRECATED, |
| 170 SerializedVarSendInput(dispatcher, var), | 177 SerializedVarSendInput(dispatcher, var), |
| 171 SerializedVarSendInput(dispatcher, name), &se, &result)); | 178 SerializedVarSendInput(dispatcher, name), &se, &result)); |
| 172 } | 179 } |
| 173 } | 180 } |
| 174 | 181 |
| 175 PP_Var Call(PP_Var object, | 182 PP_Var Call(PP_Var object, |
| 176 PP_Var method_name, | 183 PP_Var method_name, |
| 177 uint32_t argc, | 184 uint32_t argc, |
| 178 PP_Var* argv, | 185 PP_Var* argv, |
| 179 PP_Var* exception) { | 186 PP_Var* exception) { |
| 187 ProxyAutoLock lock; |
| 180 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(object, exception); | 188 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(object, exception); |
| 181 if (!dispatcher) | 189 if (!dispatcher) |
| 182 return PP_MakeUndefined(); | 190 return PP_MakeUndefined(); |
| 183 | 191 |
| 184 ReceiveSerializedVarReturnValue result; | 192 ReceiveSerializedVarReturnValue result; |
| 185 ReceiveSerializedException se(dispatcher, exception); | 193 ReceiveSerializedException se(dispatcher, exception); |
| 186 if (!se.IsThrown()) { | 194 if (!se.IsThrown()) { |
| 187 std::vector<SerializedVar> argv_vect; | 195 std::vector<SerializedVar> argv_vect; |
| 188 SerializedVarSendInput::ConvertVector(dispatcher, argv, argc, &argv_vect); | 196 SerializedVarSendInput::ConvertVector(dispatcher, argv, argc, &argv_vect); |
| 189 | 197 |
| 190 dispatcher->Send(new PpapiHostMsg_PPBVar_CallDeprecated( | 198 dispatcher->Send(new PpapiHostMsg_PPBVar_CallDeprecated( |
| 191 API_ID_PPB_VAR_DEPRECATED, | 199 API_ID_PPB_VAR_DEPRECATED, |
| 192 SerializedVarSendInput(dispatcher, object), | 200 SerializedVarSendInput(dispatcher, object), |
| 193 SerializedVarSendInput(dispatcher, method_name), argv_vect, | 201 SerializedVarSendInput(dispatcher, method_name), argv_vect, |
| 194 &se, &result)); | 202 &se, &result)); |
| 195 } | 203 } |
| 196 return result.Return(dispatcher); | 204 return result.Return(dispatcher); |
| 197 } | 205 } |
| 198 | 206 |
| 199 PP_Var Construct(PP_Var object, | 207 PP_Var Construct(PP_Var object, |
| 200 uint32_t argc, | 208 uint32_t argc, |
| 201 PP_Var* argv, | 209 PP_Var* argv, |
| 202 PP_Var* exception) { | 210 PP_Var* exception) { |
| 211 ProxyAutoLock lock; |
| 203 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(object, exception); | 212 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(object, exception); |
| 204 if (!dispatcher) | 213 if (!dispatcher) |
| 205 return PP_MakeUndefined(); | 214 return PP_MakeUndefined(); |
| 206 | 215 |
| 207 ReceiveSerializedVarReturnValue result; | 216 ReceiveSerializedVarReturnValue result; |
| 208 ReceiveSerializedException se(dispatcher, exception); | 217 ReceiveSerializedException se(dispatcher, exception); |
| 209 if (!se.IsThrown()) { | 218 if (!se.IsThrown()) { |
| 210 std::vector<SerializedVar> argv_vect; | 219 std::vector<SerializedVar> argv_vect; |
| 211 SerializedVarSendInput::ConvertVector(dispatcher, argv, argc, &argv_vect); | 220 SerializedVarSendInput::ConvertVector(dispatcher, argv, argc, &argv_vect); |
| 212 | 221 |
| 213 dispatcher->Send(new PpapiHostMsg_PPBVar_Construct( | 222 dispatcher->Send(new PpapiHostMsg_PPBVar_Construct( |
| 214 API_ID_PPB_VAR_DEPRECATED, | 223 API_ID_PPB_VAR_DEPRECATED, |
| 215 SerializedVarSendInput(dispatcher, object), | 224 SerializedVarSendInput(dispatcher, object), |
| 216 argv_vect, &se, &result)); | 225 argv_vect, &se, &result)); |
| 217 } | 226 } |
| 218 return result.Return(dispatcher); | 227 return result.Return(dispatcher); |
| 219 } | 228 } |
| 220 | 229 |
| 221 bool IsInstanceOf(PP_Var var, | 230 bool IsInstanceOf(PP_Var var, |
| 222 const PPP_Class_Deprecated* ppp_class, | 231 const PPP_Class_Deprecated* ppp_class, |
| 223 void** ppp_class_data) { | 232 void** ppp_class_data) { |
| 233 ProxyAutoLock lock; |
| 224 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, NULL); | 234 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, NULL); |
| 225 if (!dispatcher) | 235 if (!dispatcher) |
| 226 return false; | 236 return false; |
| 227 | 237 |
| 228 PP_Bool result = PP_FALSE; | 238 PP_Bool result = PP_FALSE; |
| 229 int64 class_int = static_cast<int64>(reinterpret_cast<intptr_t>(ppp_class)); | 239 int64 class_int = static_cast<int64>(reinterpret_cast<intptr_t>(ppp_class)); |
| 230 int64 class_data_int = 0; | 240 int64 class_data_int = 0; |
| 231 dispatcher->Send(new PpapiHostMsg_PPBVar_IsInstanceOfDeprecated( | 241 dispatcher->Send(new PpapiHostMsg_PPBVar_IsInstanceOfDeprecated( |
| 232 API_ID_PPB_VAR_DEPRECATED, SerializedVarSendInput(dispatcher, var), | 242 API_ID_PPB_VAR_DEPRECATED, SerializedVarSendInput(dispatcher, var), |
| 233 class_int, &class_data_int, &result)); | 243 class_int, &class_data_int, &result)); |
| 234 *ppp_class_data = | 244 *ppp_class_data = |
| 235 reinterpret_cast<void*>(static_cast<intptr_t>(class_data_int)); | 245 reinterpret_cast<void*>(static_cast<intptr_t>(class_data_int)); |
| 236 return PP_ToBool(result); | 246 return PP_ToBool(result); |
| 237 } | 247 } |
| 238 | 248 |
| 239 PP_Var CreateObject(PP_Instance instance, | 249 PP_Var CreateObject(PP_Instance instance, |
| 240 const PPP_Class_Deprecated* ppp_class, | 250 const PPP_Class_Deprecated* ppp_class, |
| 241 void* ppp_class_data) { | 251 void* ppp_class_data) { |
| 252 ProxyAutoLock lock; |
| 242 Dispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); | 253 Dispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); |
| 243 if (!dispatcher) | 254 if (!dispatcher) |
| 244 return PP_MakeUndefined(); | 255 return PP_MakeUndefined(); |
| 245 | 256 |
| 246 ReceiveSerializedVarReturnValue result; | 257 ReceiveSerializedVarReturnValue result; |
| 247 int64 class_int = static_cast<int64>(reinterpret_cast<intptr_t>(ppp_class)); | 258 int64 class_int = static_cast<int64>(reinterpret_cast<intptr_t>(ppp_class)); |
| 248 int64 data_int = | 259 int64 data_int = |
| 249 static_cast<int64>(reinterpret_cast<intptr_t>(ppp_class_data)); | 260 static_cast<int64>(reinterpret_cast<intptr_t>(ppp_class_data)); |
| 250 dispatcher->Send(new PpapiHostMsg_PPBVar_CreateObjectDeprecated( | 261 dispatcher->Send(new PpapiHostMsg_PPBVar_CreateObjectDeprecated( |
| 251 API_ID_PPB_VAR_DEPRECATED, instance, class_int, data_int, | 262 API_ID_PPB_VAR_DEPRECATED, instance, class_int, data_int, |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 360 // release the object before it is AddRef'ed on the browser side. | 371 // release the object before it is AddRef'ed on the browser side. |
| 361 // To work around this, we post a task here, that will not execute before | 372 // To work around this, we post a task here, that will not execute before |
| 362 // control goes back to the main message loop, that will ensure the sync send | 373 // control goes back to the main message loop, that will ensure the sync send |
| 363 // has returned and the browser side can take its reference before we Release. | 374 // has returned and the browser side can take its reference before we Release. |
| 364 // Note: if the instance is gone by the time the task is executed, then it | 375 // Note: if the instance is gone by the time the task is executed, then it |
| 365 // will Release the objects itself and this Release will be a NOOP (aside of a | 376 // will Release the objects itself and this Release will be a NOOP (aside of a |
| 366 // spurious warning). | 377 // spurious warning). |
| 367 // TODO(piman): See if we can fix the IPC code to enforce strict ordering, and | 378 // TODO(piman): See if we can fix the IPC code to enforce strict ordering, and |
| 368 // then remove this. | 379 // then remove this. |
| 369 MessageLoop::current()->PostNonNestableTask(FROM_HERE, | 380 MessageLoop::current()->PostNonNestableTask(FROM_HERE, |
| 370 base::Bind(&PPB_Var_Deprecated_Proxy::DoReleaseObject, | 381 RunWhileLocked(base::Bind(&PPB_Var_Deprecated_Proxy::DoReleaseObject, |
| 371 task_factory_.GetWeakPtr(), | 382 task_factory_.GetWeakPtr(), |
| 372 object_id)); | 383 object_id))); |
| 373 } | 384 } |
| 374 | 385 |
| 375 void PPB_Var_Deprecated_Proxy::OnMsgHasProperty( | 386 void PPB_Var_Deprecated_Proxy::OnMsgHasProperty( |
| 376 SerializedVarReceiveInput var, | 387 SerializedVarReceiveInput var, |
| 377 SerializedVarReceiveInput name, | 388 SerializedVarReceiveInput name, |
| 378 SerializedVarOutParam exception, | 389 SerializedVarOutParam exception, |
| 379 PP_Bool* result) { | 390 PP_Bool* result) { |
| 380 SetAllowPluginReentrancy(); | 391 SetAllowPluginReentrancy(); |
| 381 *result = PP_FromBool(ppb_var_impl_->HasProperty( | 392 *result = PP_FromBool(ppb_var_impl_->HasProperty( |
| 382 var.Get(dispatcher()), | 393 var.Get(dispatcher()), |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 502 } | 513 } |
| 503 | 514 |
| 504 void PPB_Var_Deprecated_Proxy::DoReleaseObject(int64 object_id) { | 515 void PPB_Var_Deprecated_Proxy::DoReleaseObject(int64 object_id) { |
| 505 PP_Var var = { PP_VARTYPE_OBJECT }; | 516 PP_Var var = { PP_VARTYPE_OBJECT }; |
| 506 var.value.as_id = object_id; | 517 var.value.as_id = object_id; |
| 507 ppb_var_impl_->Release(var); | 518 ppb_var_impl_->Release(var); |
| 508 } | 519 } |
| 509 | 520 |
| 510 } // namespace proxy | 521 } // namespace proxy |
| 511 } // namespace ppapi | 522 } // namespace ppapi |
| OLD | NEW |