| OLD | NEW |
| 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 "build/build_config.h" | 7 #include "build/build_config.h" |
| 8 #include "ppapi/c/pp_errors.h" | 8 #include "ppapi/c/pp_errors.h" |
| 9 #include "ppapi/c/pp_time.h" | 9 #include "ppapi/c/pp_time.h" |
| 10 #include "ppapi/c/pp_var.h" | 10 #include "ppapi/c/pp_var.h" |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 &CreateInstanceProxy, | 90 &CreateInstanceProxy, |
| 91 }; | 91 }; |
| 92 return &info; | 92 return &info; |
| 93 } | 93 } |
| 94 | 94 |
| 95 bool PPB_Instance_Proxy::OnMessageReceived(const IPC::Message& msg) { | 95 bool PPB_Instance_Proxy::OnMessageReceived(const IPC::Message& msg) { |
| 96 // Prevent the dispatcher from going away during a call to ExecuteScript. | 96 // Prevent the dispatcher from going away during a call to ExecuteScript. |
| 97 // This must happen OUTSIDE of ExecuteScript since the SerializedVars use | 97 // This must happen OUTSIDE of ExecuteScript since the SerializedVars use |
| 98 // the dispatcher upon return of the function (converting the | 98 // the dispatcher upon return of the function (converting the |
| 99 // SerializedVarReturnValue/OutParam to a SerializedVar in the destructor). | 99 // SerializedVarReturnValue/OutParam to a SerializedVar in the destructor). |
| 100 #if !defined(OS_NACL) |
| 100 ScopedModuleReference death_grip(dispatcher()); | 101 ScopedModuleReference death_grip(dispatcher()); |
| 102 #endif |
| 101 | 103 |
| 102 bool handled = true; | 104 bool handled = true; |
| 103 IPC_BEGIN_MESSAGE_MAP(PPB_Instance_Proxy, msg) | 105 IPC_BEGIN_MESSAGE_MAP(PPB_Instance_Proxy, msg) |
| 106 #if !defined(OS_NACL) |
| 104 // Plugin -> Host messages. | 107 // Plugin -> Host messages. |
| 105 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_GetWindowObject, | 108 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_GetWindowObject, |
| 106 OnHostMsgGetWindowObject) | 109 OnHostMsgGetWindowObject) |
| 107 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_GetOwnerElementObject, | 110 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_GetOwnerElementObject, |
| 108 OnHostMsgGetOwnerElementObject) | 111 OnHostMsgGetOwnerElementObject) |
| 109 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_BindGraphics, | 112 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_BindGraphics, |
| 110 OnHostMsgBindGraphics) | 113 OnHostMsgBindGraphics) |
| 111 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_IsFullFrame, | 114 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_IsFullFrame, |
| 112 OnHostMsgIsFullFrame) | 115 OnHostMsgIsFullFrame) |
| 113 IPC_MESSAGE_HANDLER( | 116 IPC_MESSAGE_HANDLER( |
| (...skipping 25 matching lines...) Expand all Loading... |
| 139 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_SetCursor, | 142 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_SetCursor, |
| 140 OnHostMsgSetCursor) | 143 OnHostMsgSetCursor) |
| 141 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_SetTextInputType, | 144 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_SetTextInputType, |
| 142 OnHostMsgSetTextInputType) | 145 OnHostMsgSetTextInputType) |
| 143 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_UpdateCaretPosition, | 146 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_UpdateCaretPosition, |
| 144 OnHostMsgUpdateCaretPosition) | 147 OnHostMsgUpdateCaretPosition) |
| 145 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_CancelCompositionText, | 148 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_CancelCompositionText, |
| 146 OnHostMsgCancelCompositionText) | 149 OnHostMsgCancelCompositionText) |
| 147 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_UpdateSurroundingText, | 150 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_UpdateSurroundingText, |
| 148 OnHostMsgUpdateSurroundingText) | 151 OnHostMsgUpdateSurroundingText) |
| 152 #endif // !defined(OS_NACL) |
| 153 // This message is needed to implement PPB_Testing_Dev. |
| 149 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_GetDocumentURL, | 154 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_GetDocumentURL, |
| 150 OnHostMsgGetDocumentURL) | 155 OnHostMsgGetDocumentURL) |
| 151 | |
| 152 #if !defined(OS_NACL) | 156 #if !defined(OS_NACL) |
| 153 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_ResolveRelativeToDocument, | 157 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_ResolveRelativeToDocument, |
| 154 OnHostMsgResolveRelativeToDocument) | 158 OnHostMsgResolveRelativeToDocument) |
| 155 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_DocumentCanRequest, | 159 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_DocumentCanRequest, |
| 156 OnHostMsgDocumentCanRequest) | 160 OnHostMsgDocumentCanRequest) |
| 157 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_DocumentCanAccessDocument, | 161 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_DocumentCanAccessDocument, |
| 158 OnHostMsgDocumentCanAccessDocument) | 162 OnHostMsgDocumentCanAccessDocument) |
| 159 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_GetPluginInstanceURL, | 163 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_GetPluginInstanceURL, |
| 160 OnHostMsgGetPluginInstanceURL) | 164 OnHostMsgGetPluginInstanceURL) |
| 161 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_NeedKey, | 165 IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBInstance_NeedKey, |
| (...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 777 } | 781 } |
| 778 | 782 |
| 779 void PPB_Instance_Proxy::UpdateSurroundingText(PP_Instance instance, | 783 void PPB_Instance_Proxy::UpdateSurroundingText(PP_Instance instance, |
| 780 const char* text, | 784 const char* text, |
| 781 uint32_t caret, | 785 uint32_t caret, |
| 782 uint32_t anchor) { | 786 uint32_t anchor) { |
| 783 dispatcher()->Send(new PpapiHostMsg_PPBInstance_UpdateSurroundingText( | 787 dispatcher()->Send(new PpapiHostMsg_PPBInstance_UpdateSurroundingText( |
| 784 API_ID_PPB_INSTANCE, instance, text, caret, anchor)); | 788 API_ID_PPB_INSTANCE, instance, text, caret, anchor)); |
| 785 } | 789 } |
| 786 | 790 |
| 791 #if !defined(OS_NACL) |
| 787 void PPB_Instance_Proxy::OnHostMsgGetWindowObject( | 792 void PPB_Instance_Proxy::OnHostMsgGetWindowObject( |
| 788 PP_Instance instance, | 793 PP_Instance instance, |
| 789 SerializedVarReturnValue result) { | 794 SerializedVarReturnValue result) { |
| 790 EnterInstanceNoLock enter(instance); | 795 EnterInstanceNoLock enter(instance); |
| 791 if (enter.succeeded()) | 796 if (enter.succeeded()) |
| 792 result.Return(dispatcher(), enter.functions()->GetWindowObject(instance)); | 797 result.Return(dispatcher(), enter.functions()->GetWindowObject(instance)); |
| 793 } | 798 } |
| 794 | 799 |
| 795 void PPB_Instance_Proxy::OnHostMsgGetOwnerElementObject( | 800 void PPB_Instance_Proxy::OnHostMsgGetOwnerElementObject( |
| 796 PP_Instance instance, | 801 PP_Instance instance, |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 920 EnterInstanceNoLock enter(instance, cb.pp_completion_callback()); | 925 EnterInstanceNoLock enter(instance, cb.pp_completion_callback()); |
| 921 if (enter.succeeded()) | 926 if (enter.succeeded()) |
| 922 enter.SetResult(enter.functions()->LockMouse(instance, enter.callback())); | 927 enter.SetResult(enter.functions()->LockMouse(instance, enter.callback())); |
| 923 } | 928 } |
| 924 | 929 |
| 925 void PPB_Instance_Proxy::OnHostMsgUnlockMouse(PP_Instance instance) { | 930 void PPB_Instance_Proxy::OnHostMsgUnlockMouse(PP_Instance instance) { |
| 926 EnterInstanceNoLock enter(instance); | 931 EnterInstanceNoLock enter(instance); |
| 927 if (enter.succeeded()) | 932 if (enter.succeeded()) |
| 928 enter.functions()->UnlockMouse(instance); | 933 enter.functions()->UnlockMouse(instance); |
| 929 } | 934 } |
| 935 #endif // !defined(OS_NACL) |
| 930 | 936 |
| 931 void PPB_Instance_Proxy::OnHostMsgGetDocumentURL( | 937 void PPB_Instance_Proxy::OnHostMsgGetDocumentURL( |
| 932 PP_Instance instance, | 938 PP_Instance instance, |
| 933 PP_URLComponents_Dev* components, | 939 PP_URLComponents_Dev* components, |
| 934 SerializedVarReturnValue result) { | 940 SerializedVarReturnValue result) { |
| 935 EnterInstanceNoLock enter(instance); | 941 EnterInstanceNoLock enter(instance); |
| 936 if (enter.succeeded()) { | 942 if (enter.succeeded()) { |
| 937 PP_Var document_url = enter.functions()->GetDocumentURL(instance, | 943 PP_Var document_url = enter.functions()->GetDocumentURL(instance, |
| 938 components); | 944 components); |
| 939 result.Return(dispatcher(), document_url); | 945 result.Return(dispatcher(), document_url); |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1104 PP_Resource audio_frames, | 1110 PP_Resource audio_frames, |
| 1105 const std::string& serialized_block_info) { | 1111 const std::string& serialized_block_info) { |
| 1106 PP_DecryptedBlockInfo block_info; | 1112 PP_DecryptedBlockInfo block_info; |
| 1107 if (!DeserializeBlockInfo(serialized_block_info, &block_info)) | 1113 if (!DeserializeBlockInfo(serialized_block_info, &block_info)) |
| 1108 return; | 1114 return; |
| 1109 | 1115 |
| 1110 EnterInstanceNoLock enter(instance); | 1116 EnterInstanceNoLock enter(instance); |
| 1111 if (enter.succeeded()) | 1117 if (enter.succeeded()) |
| 1112 enter.functions()->DeliverSamples(instance, audio_frames, &block_info); | 1118 enter.functions()->DeliverSamples(instance, audio_frames, &block_info); |
| 1113 } | 1119 } |
| 1114 #endif // !defined(OS_NACL) | |
| 1115 | 1120 |
| 1116 void PPB_Instance_Proxy::OnHostMsgSetCursor( | 1121 void PPB_Instance_Proxy::OnHostMsgSetCursor( |
| 1117 PP_Instance instance, | 1122 PP_Instance instance, |
| 1118 int32_t type, | 1123 int32_t type, |
| 1119 const ppapi::HostResource& custom_image, | 1124 const ppapi::HostResource& custom_image, |
| 1120 const PP_Point& hot_spot) { | 1125 const PP_Point& hot_spot) { |
| 1121 EnterInstanceNoLock enter(instance); | 1126 EnterInstanceNoLock enter(instance); |
| 1122 if (enter.succeeded()) { | 1127 if (enter.succeeded()) { |
| 1123 enter.functions()->SetCursor( | 1128 enter.functions()->SetCursor( |
| 1124 instance, static_cast<PP_MouseCursor_Type>(type), | 1129 instance, static_cast<PP_MouseCursor_Type>(type), |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1152 PP_Instance instance, | 1157 PP_Instance instance, |
| 1153 const std::string& text, | 1158 const std::string& text, |
| 1154 uint32_t caret, | 1159 uint32_t caret, |
| 1155 uint32_t anchor) { | 1160 uint32_t anchor) { |
| 1156 EnterInstanceNoLock enter(instance); | 1161 EnterInstanceNoLock enter(instance); |
| 1157 if (enter.succeeded()) { | 1162 if (enter.succeeded()) { |
| 1158 enter.functions()->UpdateSurroundingText(instance, text.c_str(), caret, | 1163 enter.functions()->UpdateSurroundingText(instance, text.c_str(), caret, |
| 1159 anchor); | 1164 anchor); |
| 1160 } | 1165 } |
| 1161 } | 1166 } |
| 1167 #endif // !defined(OS_NACL) |
| 1162 | 1168 |
| 1163 void PPB_Instance_Proxy::OnPluginMsgMouseLockComplete(PP_Instance instance, | 1169 void PPB_Instance_Proxy::OnPluginMsgMouseLockComplete(PP_Instance instance, |
| 1164 int32_t result) { | 1170 int32_t result) { |
| 1165 // Save the mouse callback on the instance data. | 1171 // Save the mouse callback on the instance data. |
| 1166 InstanceData* data = static_cast<PluginDispatcher*>(dispatcher())-> | 1172 InstanceData* data = static_cast<PluginDispatcher*>(dispatcher())-> |
| 1167 GetInstanceData(instance); | 1173 GetInstanceData(instance); |
| 1168 if (!data) | 1174 if (!data) |
| 1169 return; // Instance was probably deleted. | 1175 return; // Instance was probably deleted. |
| 1170 if (!TrackedCallback::IsPending(data->mouse_lock_callback)) { | 1176 if (!TrackedCallback::IsPending(data->mouse_lock_callback)) { |
| 1171 NOTREACHED(); | 1177 NOTREACHED(); |
| 1172 return; | 1178 return; |
| 1173 } | 1179 } |
| 1174 data->mouse_lock_callback->Run(result); | 1180 data->mouse_lock_callback->Run(result); |
| 1175 } | 1181 } |
| 1176 | 1182 |
| 1183 #if !defined(OS_NACL) |
| 1177 void PPB_Instance_Proxy::MouseLockCompleteInHost(int32_t result, | 1184 void PPB_Instance_Proxy::MouseLockCompleteInHost(int32_t result, |
| 1178 PP_Instance instance) { | 1185 PP_Instance instance) { |
| 1179 dispatcher()->Send(new PpapiMsg_PPBInstance_MouseLockComplete( | 1186 dispatcher()->Send(new PpapiMsg_PPBInstance_MouseLockComplete( |
| 1180 API_ID_PPB_INSTANCE, instance, result)); | 1187 API_ID_PPB_INSTANCE, instance, result)); |
| 1181 } | 1188 } |
| 1189 #endif // !defined(OS_NACL) |
| 1182 | 1190 |
| 1183 void PPB_Instance_Proxy::CancelAnyPendingRequestSurroundingText( | 1191 void PPB_Instance_Proxy::CancelAnyPendingRequestSurroundingText( |
| 1184 PP_Instance instance) { | 1192 PP_Instance instance) { |
| 1185 InstanceData* data = static_cast<PluginDispatcher*>(dispatcher())-> | 1193 InstanceData* data = static_cast<PluginDispatcher*>(dispatcher())-> |
| 1186 GetInstanceData(instance); | 1194 GetInstanceData(instance); |
| 1187 if (!data) | 1195 if (!data) |
| 1188 return; // Instance was probably deleted. | 1196 return; // Instance was probably deleted. |
| 1189 data->should_do_request_surrounding_text = false; | 1197 data->should_do_request_surrounding_text = false; |
| 1190 } | 1198 } |
| 1191 | 1199 |
| 1192 } // namespace proxy | 1200 } // namespace proxy |
| 1193 } // namespace ppapi | 1201 } // namespace ppapi |
| OLD | NEW |