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

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

Issue 11094060: Exclude host-side code from the NaCl IRT proxy build. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 1 month 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
« no previous file with comments | « ppapi/proxy/ppb_graphics_3d_proxy.cc ('k') | ppapi/proxy/ppb_instance_proxy.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_image_data_proxy.h" 5 #include "ppapi/proxy/ppb_image_data_proxy.h"
6 6
7 #include <string.h> // For memcpy 7 #include <string.h> // For memcpy
8 8
9 #include <map> 9 #include <map>
10 #include <vector> 10 #include <vector>
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 // We serialize the PP_ImageDataDesc just by copying to a string. 485 // We serialize the PP_ImageDataDesc just by copying to a string.
486 PP_ImageDataDesc desc; 486 PP_ImageDataDesc desc;
487 memcpy(&desc, image_data_desc.data(), sizeof(PP_ImageDataDesc)); 487 memcpy(&desc, image_data_desc.data(), sizeof(PP_ImageDataDesc));
488 488
489 return (new ImageData(result, desc, image_handle))->GetReference(); 489 return (new ImageData(result, desc, image_handle))->GetReference();
490 } 490 }
491 491
492 bool PPB_ImageData_Proxy::OnMessageReceived(const IPC::Message& msg) { 492 bool PPB_ImageData_Proxy::OnMessageReceived(const IPC::Message& msg) {
493 bool handled = true; 493 bool handled = true;
494 IPC_BEGIN_MESSAGE_MAP(PPB_ImageData_Proxy, msg) 494 IPC_BEGIN_MESSAGE_MAP(PPB_ImageData_Proxy, msg)
495 #if !defined(OS_NACL)
495 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBImageData_Create, OnHostMsgCreate) 496 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBImageData_Create, OnHostMsgCreate)
496 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBImageData_CreateNaCl, 497 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBImageData_CreateNaCl,
497 OnHostMsgCreateNaCl) 498 OnHostMsgCreateNaCl)
498 499 #endif
499 IPC_MESSAGE_HANDLER(PpapiMsg_PPBImageData_NotifyUnusedImageData, 500 IPC_MESSAGE_HANDLER(PpapiMsg_PPBImageData_NotifyUnusedImageData,
500 OnPluginMsgNotifyUnusedImageData) 501 OnPluginMsgNotifyUnusedImageData)
501 502
502 IPC_MESSAGE_UNHANDLED(handled = false) 503 IPC_MESSAGE_UNHANDLED(handled = false)
503 IPC_END_MESSAGE_MAP() 504 IPC_END_MESSAGE_MAP()
504 return handled; 505 return handled;
505 } 506 }
506 507
508 #if !defined(OS_NACL)
507 void PPB_ImageData_Proxy::OnHostMsgCreate(PP_Instance instance, 509 void PPB_ImageData_Proxy::OnHostMsgCreate(PP_Instance instance,
508 int32_t format, 510 int32_t format,
509 const PP_Size& size, 511 const PP_Size& size,
510 PP_Bool init_to_zero, 512 PP_Bool init_to_zero,
511 HostResource* result, 513 HostResource* result,
512 std::string* image_data_desc, 514 std::string* image_data_desc,
513 ImageHandle* result_image_handle) { 515 ImageHandle* result_image_handle) {
514 #if defined(OS_NACL)
515 // This message should never be received in untrusted code. To minimize the
516 // size of the IRT, we just don't handle it.
517 return;
518 #else
519 *result_image_handle = ImageData::NullHandle(); 516 *result_image_handle = ImageData::NullHandle();
520 517
521 thunk::EnterResourceCreation enter(instance); 518 thunk::EnterResourceCreation enter(instance);
522 if (enter.failed()) 519 if (enter.failed())
523 return; 520 return;
524 521
525 PP_Resource resource = enter.functions()->CreateImageData( 522 PP_Resource resource = enter.functions()->CreateImageData(
526 instance, static_cast<PP_ImageDataFormat>(format), size, init_to_zero); 523 instance, static_cast<PP_ImageDataFormat>(format), size, init_to_zero);
527 if (!resource) 524 if (!resource)
528 return; 525 return;
(...skipping 11 matching lines...) Expand all
540 uint32_t byte_count = 0; 537 uint32_t byte_count = 0;
541 int32_t handle = 0; 538 int32_t handle = 0;
542 if (enter_resource.object()->GetSharedMemory(&handle, &byte_count) == PP_OK) { 539 if (enter_resource.object()->GetSharedMemory(&handle, &byte_count) == PP_OK) {
543 #if defined(OS_WIN) 540 #if defined(OS_WIN)
544 ImageHandle ih = ImageData::HandleFromInt(handle); 541 ImageHandle ih = ImageData::HandleFromInt(handle);
545 *result_image_handle = dispatcher()->ShareHandleWithRemote(ih, false); 542 *result_image_handle = dispatcher()->ShareHandleWithRemote(ih, false);
546 #else 543 #else
547 *result_image_handle = ImageData::HandleFromInt(handle); 544 *result_image_handle = ImageData::HandleFromInt(handle);
548 #endif // defined(OS_WIN) 545 #endif // defined(OS_WIN)
549 } 546 }
550 #endif // defined(OS_NACL)
551 } 547 }
552 548
553 void PPB_ImageData_Proxy::OnHostMsgCreateNaCl( 549 void PPB_ImageData_Proxy::OnHostMsgCreateNaCl(
554 PP_Instance instance, 550 PP_Instance instance,
555 int32_t format, 551 int32_t format,
556 const PP_Size& size, 552 const PP_Size& size,
557 PP_Bool init_to_zero, 553 PP_Bool init_to_zero,
558 HostResource* result, 554 HostResource* result,
559 std::string* image_data_desc, 555 std::string* image_data_desc,
560 ppapi::proxy::SerializedHandle* result_image_handle) { 556 ppapi::proxy::SerializedHandle* result_image_handle) {
561 #if defined(OS_NACL)
562 // This message should never be received in untrusted code. To minimize the
563 // size of the IRT, we just don't handle it.
564 return;
565 #else
566 result_image_handle->set_null_shmem(); 557 result_image_handle->set_null_shmem();
567 HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance); 558 HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance);
568 if (!dispatcher) 559 if (!dispatcher)
569 return; 560 return;
570 561
571 thunk::EnterResourceCreation enter(instance); 562 thunk::EnterResourceCreation enter(instance);
572 if (enter.failed()) 563 if (enter.failed())
573 return; 564 return;
574 565
575 PP_Resource resource = enter.functions()->CreateImageDataNaCl( 566 PP_Resource resource = enter.functions()->CreateImageDataNaCl(
(...skipping 21 matching lines...) Expand all
597 #if defined(OS_WIN) 588 #if defined(OS_WIN)
598 reinterpret_cast<HANDLE>(static_cast<intptr_t>(local_fd)); 589 reinterpret_cast<HANDLE>(static_cast<intptr_t>(local_fd));
599 #elif defined(OS_POSIX) 590 #elif defined(OS_POSIX)
600 local_fd; 591 local_fd;
601 #else 592 #else
602 #error Not implemented. 593 #error Not implemented.
603 #endif // defined(OS_WIN) 594 #endif // defined(OS_WIN)
604 result_image_handle->set_shmem( 595 result_image_handle->set_shmem(
605 dispatcher->ShareHandleWithRemote(platform_file, false), 596 dispatcher->ShareHandleWithRemote(platform_file, false),
606 byte_count); 597 byte_count);
607 #endif // defined(OS_NACL)
608 } 598 }
599 #endif // !defined(OS_NACL)
609 600
610 void PPB_ImageData_Proxy::OnPluginMsgNotifyUnusedImageData( 601 void PPB_ImageData_Proxy::OnPluginMsgNotifyUnusedImageData(
611 const HostResource& old_image_data) { 602 const HostResource& old_image_data) {
612 PluginGlobals* plugin_globals = PluginGlobals::Get(); 603 PluginGlobals* plugin_globals = PluginGlobals::Get();
613 if (!plugin_globals) 604 if (!plugin_globals)
614 return; // This may happen if the plugin is maliciously sending this 605 return; // This may happen if the plugin is maliciously sending this
615 // message to the renderer. 606 // message to the renderer.
616 607
617 EnterPluginFromHostResource<PPB_ImageData_API> enter(old_image_data); 608 EnterPluginFromHostResource<PPB_ImageData_API> enter(old_image_data);
618 if (enter.succeeded()) { 609 if (enter.succeeded()) {
619 ImageData* image_data = static_cast<ImageData*>(enter.object()); 610 ImageData* image_data = static_cast<ImageData*>(enter.object());
620 ImageDataCache::GetInstance()->ImageDataUsable(image_data); 611 ImageDataCache::GetInstance()->ImageDataUsable(image_data);
621 } 612 }
622 613
623 // The renderer sent us a reference with the message. If the image data was 614 // The renderer sent us a reference with the message. If the image data was
624 // still cached in our process, the proxy still holds a reference so we can 615 // still cached in our process, the proxy still holds a reference so we can
625 // remove the one the renderer just sent is. If the proxy no longer holds a 616 // remove the one the renderer just sent is. If the proxy no longer holds a
626 // reference, we released everything and we should also release the one the 617 // reference, we released everything and we should also release the one the
627 // renderer just sent us. 618 // renderer just sent us.
628 dispatcher()->Send(new PpapiHostMsg_PPBCore_ReleaseResource( 619 dispatcher()->Send(new PpapiHostMsg_PPBCore_ReleaseResource(
629 API_ID_PPB_CORE, old_image_data)); 620 API_ID_PPB_CORE, old_image_data));
630 } 621 }
631 622
632 } // namespace proxy 623 } // namespace proxy
633 } // namespace ppapi 624 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/proxy/ppb_graphics_3d_proxy.cc ('k') | ppapi/proxy/ppb_instance_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698