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

Side by Side Diff: ppapi/proxy/ppb_var_deprecated_proxy.cc

Issue 1548813002: Switch to standard integer types in ppapi/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixes Created 5 years 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
« no previous file with comments | « ppapi/proxy/ppb_var_deprecated_proxy.h ('k') | ppapi/proxy/ppb_var_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "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"
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 231
232 bool IsInstanceOf(PP_Var var, 232 bool IsInstanceOf(PP_Var var,
233 const PPP_Class_Deprecated* ppp_class, 233 const PPP_Class_Deprecated* ppp_class,
234 void** ppp_class_data) { 234 void** ppp_class_data) {
235 ProxyAutoLock lock; 235 ProxyAutoLock lock;
236 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, NULL); 236 Dispatcher* dispatcher = CheckExceptionAndGetDispatcher(var, NULL);
237 if (!dispatcher) 237 if (!dispatcher)
238 return false; 238 return false;
239 239
240 PP_Bool result = PP_FALSE; 240 PP_Bool result = PP_FALSE;
241 int64 class_int = static_cast<int64>(reinterpret_cast<intptr_t>(ppp_class)); 241 int64_t class_int =
242 int64 class_data_int = 0; 242 static_cast<int64_t>(reinterpret_cast<intptr_t>(ppp_class));
243 int64_t class_data_int = 0;
243 dispatcher->Send(new PpapiHostMsg_PPBVar_IsInstanceOfDeprecated( 244 dispatcher->Send(new PpapiHostMsg_PPBVar_IsInstanceOfDeprecated(
244 API_ID_PPB_VAR_DEPRECATED, SerializedVarSendInput(dispatcher, var), 245 API_ID_PPB_VAR_DEPRECATED, SerializedVarSendInput(dispatcher, var),
245 class_int, &class_data_int, &result)); 246 class_int, &class_data_int, &result));
246 *ppp_class_data = 247 *ppp_class_data =
247 reinterpret_cast<void*>(static_cast<intptr_t>(class_data_int)); 248 reinterpret_cast<void*>(static_cast<intptr_t>(class_data_int));
248 return PP_ToBool(result); 249 return PP_ToBool(result);
249 } 250 }
250 251
251 PP_Var CreateObject(PP_Instance instance, 252 PP_Var CreateObject(PP_Instance instance,
252 const PPP_Class_Deprecated* ppp_class, 253 const PPP_Class_Deprecated* ppp_class,
253 void* ppp_class_data) { 254 void* ppp_class_data) {
254 ProxyAutoLock lock; 255 ProxyAutoLock lock;
255 Dispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); 256 Dispatcher* dispatcher = PluginDispatcher::GetForInstance(instance);
256 if (!dispatcher) 257 if (!dispatcher)
257 return PP_MakeUndefined(); 258 return PP_MakeUndefined();
258 259
259 PluginVarTracker* tracker = PluginGlobals::Get()->plugin_var_tracker(); 260 PluginVarTracker* tracker = PluginGlobals::Get()->plugin_var_tracker();
260 if (tracker->IsPluginImplementedObjectAlive(ppp_class_data)) 261 if (tracker->IsPluginImplementedObjectAlive(ppp_class_data))
261 return PP_MakeUndefined(); // Object already exists with this user data. 262 return PP_MakeUndefined(); // Object already exists with this user data.
262 263
263 ReceiveSerializedVarReturnValue result; 264 ReceiveSerializedVarReturnValue result;
264 int64 class_int = static_cast<int64>(reinterpret_cast<intptr_t>(ppp_class)); 265 int64_t class_int =
265 int64 data_int = 266 static_cast<int64_t>(reinterpret_cast<intptr_t>(ppp_class));
266 static_cast<int64>(reinterpret_cast<intptr_t>(ppp_class_data)); 267 int64_t data_int =
268 static_cast<int64_t>(reinterpret_cast<intptr_t>(ppp_class_data));
267 dispatcher->Send(new PpapiHostMsg_PPBVar_CreateObjectDeprecated( 269 dispatcher->Send(new PpapiHostMsg_PPBVar_CreateObjectDeprecated(
268 API_ID_PPB_VAR_DEPRECATED, instance, class_int, data_int, 270 API_ID_PPB_VAR_DEPRECATED, instance, class_int, data_int,
269 &result)); 271 &result));
270 PP_Var ret_var = result.Return(dispatcher); 272 PP_Var ret_var = result.Return(dispatcher);
271 273
272 // Register this object as being implemented by the plugin. 274 // Register this object as being implemented by the plugin.
273 if (ret_var.type == PP_VARTYPE_OBJECT) { 275 if (ret_var.type == PP_VARTYPE_OBJECT) {
274 tracker->PluginImplementedObjectCreated(instance, ret_var, 276 tracker->PluginImplementedObjectCreated(instance, ret_var,
275 ppp_class, ppp_class_data); 277 ppp_class, ppp_class_data);
276 } 278 }
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBVar_IsInstanceOfDeprecated, 350 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBVar_IsInstanceOfDeprecated,
349 OnMsgIsInstanceOfDeprecated) 351 OnMsgIsInstanceOfDeprecated)
350 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBVar_CreateObjectDeprecated, 352 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBVar_CreateObjectDeprecated,
351 OnMsgCreateObjectDeprecated) 353 OnMsgCreateObjectDeprecated)
352 IPC_MESSAGE_UNHANDLED(handled = false) 354 IPC_MESSAGE_UNHANDLED(handled = false)
353 IPC_END_MESSAGE_MAP() 355 IPC_END_MESSAGE_MAP()
354 // TODO(brettw) handle bad messages! 356 // TODO(brettw) handle bad messages!
355 return handled; 357 return handled;
356 } 358 }
357 359
358 void PPB_Var_Deprecated_Proxy::OnMsgAddRefObject(int64 object_id) { 360 void PPB_Var_Deprecated_Proxy::OnMsgAddRefObject(int64_t object_id) {
359 PP_Var var = { PP_VARTYPE_OBJECT }; 361 PP_Var var = { PP_VARTYPE_OBJECT };
360 var.value.as_id = object_id; 362 var.value.as_id = object_id;
361 ppb_var_impl_->AddRef(var); 363 ppb_var_impl_->AddRef(var);
362 } 364 }
363 365
364 void PPB_Var_Deprecated_Proxy::OnMsgReleaseObject(int64 object_id) { 366 void PPB_Var_Deprecated_Proxy::OnMsgReleaseObject(int64_t object_id) {
365 // Ok, so this is super subtle. 367 // Ok, so this is super subtle.
366 // When the browser side sends a sync IPC message that returns a var, and the 368 // When the browser side sends a sync IPC message that returns a var, and the
367 // plugin wants to give ownership of that var to the browser, dropping all 369 // plugin wants to give ownership of that var to the browser, dropping all
368 // references, it may call ReleaseObject right after returning the result. 370 // references, it may call ReleaseObject right after returning the result.
369 // However, the IPC system doesn't enforce strict ordering of messages in that 371 // However, the IPC system doesn't enforce strict ordering of messages in that
370 // case, where a message that is set to unblock (e.g. a sync message, or in 372 // case, where a message that is set to unblock (e.g. a sync message, or in
371 // our case all messages coming from the plugin) that is sent *after* the 373 // our case all messages coming from the plugin) that is sent *after* the
372 // result may be dispatched on the browser side *before* the sync send 374 // result may be dispatched on the browser side *before* the sync send
373 // returned (see ipc_sync_channel.cc). In this case, that means it could 375 // returned (see ipc_sync_channel.cc). In this case, that means it could
374 // release the object before it is AddRef'ed on the browser side. 376 // release the object before it is AddRef'ed on the browser side.
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 SetAllowPluginReentrancy(); 484 SetAllowPluginReentrancy();
483 uint32_t arg_count = 0; 485 uint32_t arg_count = 0;
484 PP_Var* args = arg_vector.Get(dispatcher(), &arg_count); 486 PP_Var* args = arg_vector.Get(dispatcher(), &arg_count);
485 result.Return(dispatcher(), ppb_var_impl_->Construct( 487 result.Return(dispatcher(), ppb_var_impl_->Construct(
486 var.Get(dispatcher()), arg_count, args, 488 var.Get(dispatcher()), arg_count, args,
487 exception.OutParam(dispatcher()))); 489 exception.OutParam(dispatcher())));
488 } 490 }
489 491
490 void PPB_Var_Deprecated_Proxy::OnMsgIsInstanceOfDeprecated( 492 void PPB_Var_Deprecated_Proxy::OnMsgIsInstanceOfDeprecated(
491 SerializedVarReceiveInput var, 493 SerializedVarReceiveInput var,
492 int64 ppp_class, 494 int64_t ppp_class,
493 int64* ppp_class_data, 495 int64_t* ppp_class_data,
494 PP_Bool* result) { 496 PP_Bool* result) {
495 SetAllowPluginReentrancy(); 497 SetAllowPluginReentrancy();
496 *result = PPP_Class_Proxy::IsInstanceOf(ppb_var_impl_, 498 *result = PPP_Class_Proxy::IsInstanceOf(ppb_var_impl_,
497 var.Get(dispatcher()), 499 var.Get(dispatcher()),
498 ppp_class, 500 ppp_class,
499 ppp_class_data); 501 ppp_class_data);
500 } 502 }
501 503
502 void PPB_Var_Deprecated_Proxy::OnMsgCreateObjectDeprecated( 504 void PPB_Var_Deprecated_Proxy::OnMsgCreateObjectDeprecated(
503 PP_Instance instance, 505 PP_Instance instance,
504 int64 ppp_class, 506 int64_t ppp_class,
505 int64 class_data, 507 int64_t class_data,
506 SerializedVarReturnValue result) { 508 SerializedVarReturnValue result) {
507 SetAllowPluginReentrancy(); 509 SetAllowPluginReentrancy();
508 result.Return(dispatcher(), PPP_Class_Proxy::CreateProxiedObject( 510 result.Return(dispatcher(), PPP_Class_Proxy::CreateProxiedObject(
509 ppb_var_impl_, dispatcher(), instance, ppp_class, class_data)); 511 ppb_var_impl_, dispatcher(), instance, ppp_class, class_data));
510 } 512 }
511 513
512 void PPB_Var_Deprecated_Proxy::SetAllowPluginReentrancy() { 514 void PPB_Var_Deprecated_Proxy::SetAllowPluginReentrancy() {
513 if (dispatcher()->IsPlugin()) 515 if (dispatcher()->IsPlugin())
514 NOTREACHED(); 516 NOTREACHED();
515 else 517 else
516 static_cast<HostDispatcher*>(dispatcher())->set_allow_plugin_reentrancy(); 518 static_cast<HostDispatcher*>(dispatcher())->set_allow_plugin_reentrancy();
517 } 519 }
518 520
519 void PPB_Var_Deprecated_Proxy::DoReleaseObject(int64 object_id) { 521 void PPB_Var_Deprecated_Proxy::DoReleaseObject(int64_t object_id) {
520 PP_Var var = { PP_VARTYPE_OBJECT }; 522 PP_Var var = { PP_VARTYPE_OBJECT };
521 var.value.as_id = object_id; 523 var.value.as_id = object_id;
522 ppb_var_impl_->Release(var); 524 ppb_var_impl_->Release(var);
523 } 525 }
524 526
525 } // namespace proxy 527 } // namespace proxy
526 } // namespace ppapi 528 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/proxy/ppb_var_deprecated_proxy.h ('k') | ppapi/proxy/ppb_var_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698