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

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

Issue 16140011: Don't send PP_Vars/V8 values with cycles across PostMessage (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 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
« no previous file with comments | « ppapi/proxy/handle_converter.cc ('k') | ppapi/proxy/raw_var_data.h » ('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_instance_proxy.h" 5 #include "ppapi/proxy/ppb_instance_proxy.h"
6 6
7 #include "base/memory/ref_counted.h" 7 #include "base/memory/ref_counted.h"
8 #include "build/build_config.h" 8 #include "build/build_config.h"
9 #include "ppapi/c/pp_errors.h" 9 #include "ppapi/c/pp_errors.h"
10 #include "ppapi/c/pp_time.h" 10 #include "ppapi/c/pp_time.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 using ppapi::thunk::EnterResourceNoLock; 49 using ppapi::thunk::EnterResourceNoLock;
50 using ppapi::thunk::PPB_Graphics2D_API; 50 using ppapi::thunk::PPB_Graphics2D_API;
51 using ppapi::thunk::PPB_Graphics3D_API; 51 using ppapi::thunk::PPB_Graphics3D_API;
52 using ppapi::thunk::PPB_Instance_API; 52 using ppapi::thunk::PPB_Instance_API;
53 53
54 namespace ppapi { 54 namespace ppapi {
55 namespace proxy { 55 namespace proxy {
56 56
57 namespace { 57 namespace {
58 58
59 const char kSerializationError[] = "Failed to convert a PostMessage "
60 "argument from a PP_Var to a Javascript value. It may have cycles or be of "
61 "an unsupported type.";
62
59 InterfaceProxy* CreateInstanceProxy(Dispatcher* dispatcher) { 63 InterfaceProxy* CreateInstanceProxy(Dispatcher* dispatcher) {
60 return new PPB_Instance_Proxy(dispatcher); 64 return new PPB_Instance_Proxy(dispatcher);
61 } 65 }
62 66
63 void RequestSurroundingText(PP_Instance instance) { 67 void RequestSurroundingText(PP_Instance instance) {
64 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); 68 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance);
65 if (!dispatcher) 69 if (!dispatcher)
66 return; // Instance has gone away while message was pending. 70 return; // Instance has gone away while message was pending.
67 71
68 InstanceData* data = dispatcher->GetInstanceData(instance); 72 InstanceData* data = dispatcher->GetInstanceData(instance);
(...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after
926 uint32_t event_classes) { 930 uint32_t event_classes) {
927 EnterInstanceNoLock enter(instance); 931 EnterInstanceNoLock enter(instance);
928 if (enter.succeeded()) 932 if (enter.succeeded())
929 enter.functions()->ClearInputEventRequest(instance, event_classes); 933 enter.functions()->ClearInputEventRequest(instance, event_classes);
930 } 934 }
931 935
932 void PPB_Instance_Proxy::OnHostMsgPostMessage( 936 void PPB_Instance_Proxy::OnHostMsgPostMessage(
933 PP_Instance instance, 937 PP_Instance instance,
934 SerializedVarReceiveInput message) { 938 SerializedVarReceiveInput message) {
935 EnterInstanceNoLock enter(instance); 939 EnterInstanceNoLock enter(instance);
940 if (!message.is_valid_var()) {
941 PpapiGlobals::Get()->LogWithSource(
942 instance, PP_LOGLEVEL_ERROR, std::string(), kSerializationError);
943 return;
944 }
945
936 if (enter.succeeded()) 946 if (enter.succeeded())
937 enter.functions()->PostMessage(instance, 947 enter.functions()->PostMessage(instance,
938 message.GetForInstance(dispatcher(), 948 message.GetForInstance(dispatcher(),
939 instance)); 949 instance));
940 } 950 }
941 951
942 void PPB_Instance_Proxy::OnHostMsgLockMouse(PP_Instance instance) { 952 void PPB_Instance_Proxy::OnHostMsgLockMouse(PP_Instance instance) {
943 // Need to be careful to always issue the callback. 953 // Need to be careful to always issue the callback.
944 pp::CompletionCallback cb = callback_factory_.NewCallback( 954 pp::CompletionCallback cb = callback_factory_.NewCallback(
945 &PPB_Instance_Proxy::MouseLockCompleteInHost, instance); 955 &PPB_Instance_Proxy::MouseLockCompleteInHost, instance);
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
1254 PP_Instance instance) { 1264 PP_Instance instance) {
1255 InstanceData* data = static_cast<PluginDispatcher*>(dispatcher())-> 1265 InstanceData* data = static_cast<PluginDispatcher*>(dispatcher())->
1256 GetInstanceData(instance); 1266 GetInstanceData(instance);
1257 if (!data) 1267 if (!data)
1258 return; // Instance was probably deleted. 1268 return; // Instance was probably deleted.
1259 data->should_do_request_surrounding_text = false; 1269 data->should_do_request_surrounding_text = false;
1260 } 1270 }
1261 1271
1262 } // namespace proxy 1272 } // namespace proxy
1263 } // namespace ppapi 1273 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/proxy/handle_converter.cc ('k') | ppapi/proxy/raw_var_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698