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

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

Issue 1440423003: Add support for HandleBlockingMessage to NaClMessageScanner (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove extra whitespace Created 5 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
« no previous file with comments | « no previous file | ppapi/tests/test_message_handler.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/nacl_message_scanner.h" 5 #include "ppapi/proxy/nacl_message_scanner.h"
6 6
7 #include <vector> 7 #include <vector>
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "ipc/ipc_message.h" 9 #include "ipc/ipc_message.h"
10 #include "ipc/ipc_message_macros.h" 10 #include "ipc/ipc_message_macros.h"
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 } 180 }
181 bool ScanMessage(ScanningResults* results) { 181 bool ScanMessage(ScanningResults* results) {
182 typename base::TupleTypes<typename MessageType::Schema::Param>::ValueTuple 182 typename base::TupleTypes<typename MessageType::Schema::Param>::ValueTuple
183 params; 183 params;
184 if (!MessageType::Read(msg_, &params)) 184 if (!MessageType::Read(msg_, &params))
185 return false; 185 return false;
186 ScanTuple(params, results); 186 ScanTuple(params, results);
187 return true; 187 return true;
188 } 188 }
189 189
190 bool ScanSyncMessage(ScanningResults* results) {
191 typename base::TupleTypes<
192 typename MessageType::Schema::SendParam>::ValueTuple params;
193 if (!MessageType::ReadSendParam(msg_, &params))
194 return false;
195 ScanTuple(params, results);
Mark Seaborn 2015/12/17 01:46:54 This needs to be: bool ScanSyncMessage(Scanning
dmichael (off chromium) 2015/12/17 19:04:29 Done.
196 return true;
197 }
198
190 bool ScanReply(ScanningResults* results) { 199 bool ScanReply(ScanningResults* results) {
191 typename base::TupleTypes<typename MessageType::Schema::ReplyParam> 200 typename base::TupleTypes<typename MessageType::Schema::ReplyParam>
192 ::ValueTuple params; 201 ::ValueTuple params;
193 if (!MessageType::ReadReplyParam(msg_, &params)) 202 if (!MessageType::ReadReplyParam(msg_, &params))
194 return false; 203 return false;
195 // If we need to rewrite the message, write the message id first. 204 // If we need to rewrite the message, write the message id first.
196 if (results->new_msg) { 205 if (results->new_msg) {
197 results->new_msg->set_reply(); 206 results->new_msg->set_reply();
198 int id = IPC::SyncMessage::GetMessageId(*msg_); 207 int id = IPC::SyncMessage::GetMessageId(*msg_);
199 results->new_msg->WriteInt(id); 208 results->new_msg->WriteInt(id);
200 } 209 }
201 ScanTuple(params, results); 210 ScanTuple(params, results);
202 return true; 211 return true;
203 } 212 }
204 // TODO(dmichael): Add ScanSyncMessage for outgoing sync messages, if we ever 213 // TODO(dmichael): Add ScanSyncMessage for outgoing sync messages, if we ever
Mark Seaborn 2015/12/17 01:49:04 This TODO should be removed too.
dmichael (off chromium) 2015/12/17 19:04:29 Done.
205 // need to scan those. 214 // need to scan those.
206 215
207 private: 216 private:
208 const MessageType* msg_; 217 const MessageType* msg_;
209 }; 218 };
210 219
211 } // namespace 220 } // namespace
212 221
213 #define CASE_FOR_MESSAGE(MESSAGE_TYPE) \ 222 #define CASE_FOR_MESSAGE(MESSAGE_TYPE) \
214 case MESSAGE_TYPE::ID: { \ 223 case MESSAGE_TYPE::ID: { \
215 MessageScannerImpl<MESSAGE_TYPE> scanner(&msg); \ 224 MessageScannerImpl<MESSAGE_TYPE> scanner(&msg); \
216 if (rewrite_msg) \ 225 if (rewrite_msg) \
217 results.new_msg.reset( \ 226 results.new_msg.reset( \
218 new IPC::Message(msg.routing_id(), msg.type(), \ 227 new IPC::Message(msg.routing_id(), msg.type(), \
219 IPC::Message::PRIORITY_NORMAL)); \ 228 IPC::Message::PRIORITY_NORMAL)); \
220 if (!scanner.ScanMessage(&results)) \ 229 if (!scanner.ScanMessage(&results)) \
221 return false; \ 230 return false; \
222 break; \ 231 break; \
223 } 232 }
233 #define CASE_FOR_SYNC_MESSAGE(MESSAGE_TYPE) \
234 case MESSAGE_TYPE::ID: { \
Mark Seaborn 2015/12/17 01:46:54 Nit: can you make the indentation alignment match
dmichael (off chromium) 2015/12/17 19:04:29 Done (actually changed the others; not sure why I
235 MessageScannerImpl<MESSAGE_TYPE> scanner(&msg); \
236 if (rewrite_msg) \
237 results.new_msg.reset(new IPC::Message(msg.routing_id(), msg.type(), \
238 IPC::Message::PRIORITY_NORMAL)); \
239 if (!scanner.ScanSyncMessage(&results)) \
240 return false; \
241 break; \
242 }
224 #define CASE_FOR_REPLY(MESSAGE_TYPE) \ 243 #define CASE_FOR_REPLY(MESSAGE_TYPE) \
225 case MESSAGE_TYPE::ID: { \ 244 case MESSAGE_TYPE::ID: { \
226 MessageScannerImpl<MESSAGE_TYPE> scanner(&msg); \ 245 MessageScannerImpl<MESSAGE_TYPE> scanner(&msg); \
227 if (rewrite_msg) \ 246 if (rewrite_msg) \
228 results.new_msg.reset( \ 247 results.new_msg.reset( \
229 new IPC::Message(msg.routing_id(), msg.type(), \ 248 new IPC::Message(msg.routing_id(), msg.type(), \
230 IPC::Message::PRIORITY_NORMAL)); \ 249 IPC::Message::PRIORITY_NORMAL)); \
231 if (!scanner.ScanReply(&results)) \ 250 if (!scanner.ScanReply(&results)) \
232 return false; \ 251 return false; \
233 break; \ 252 break; \
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 // that there are no handles, we can cancel the rewriting by clearing the 338 // that there are no handles, we can cancel the rewriting by clearing the
320 // results.new_msg pointer. 339 // results.new_msg pointer.
321 ScanningResults results; 340 ScanningResults results;
322 results.nested_msg_callback = 341 results.nested_msg_callback =
323 base::Bind(&NaClMessageScanner::AuditNestedMessage, 342 base::Bind(&NaClMessageScanner::AuditNestedMessage,
324 base::Unretained(this)); 343 base::Unretained(this));
325 switch (type) { 344 switch (type) {
326 CASE_FOR_MESSAGE(PpapiMsg_PPBAudio_NotifyAudioStreamCreated) 345 CASE_FOR_MESSAGE(PpapiMsg_PPBAudio_NotifyAudioStreamCreated)
327 CASE_FOR_MESSAGE(PpapiMsg_PPPMessaging_HandleMessage) 346 CASE_FOR_MESSAGE(PpapiMsg_PPPMessaging_HandleMessage)
328 CASE_FOR_MESSAGE(PpapiPluginMsg_ResourceReply) 347 CASE_FOR_MESSAGE(PpapiPluginMsg_ResourceReply)
348 CASE_FOR_SYNC_MESSAGE(PpapiMsg_PPPMessageHandler_HandleBlockingMessage)
329 CASE_FOR_REPLY(PpapiHostMsg_OpenResource) 349 CASE_FOR_REPLY(PpapiHostMsg_OpenResource)
330 CASE_FOR_REPLY(PpapiHostMsg_PPBGraphics3D_Create) 350 CASE_FOR_REPLY(PpapiHostMsg_PPBGraphics3D_Create)
331 CASE_FOR_REPLY(PpapiHostMsg_PPBGraphics3D_CreateTransferBuffer) 351 CASE_FOR_REPLY(PpapiHostMsg_PPBGraphics3D_CreateTransferBuffer)
332 CASE_FOR_REPLY(PpapiHostMsg_PPBImageData_CreateSimple) 352 CASE_FOR_REPLY(PpapiHostMsg_PPBImageData_CreateSimple)
333 CASE_FOR_REPLY(PpapiHostMsg_ResourceSyncCall) 353 CASE_FOR_REPLY(PpapiHostMsg_ResourceSyncCall)
334 CASE_FOR_REPLY(PpapiHostMsg_SharedMemory_CreateSharedMemory) 354 CASE_FOR_REPLY(PpapiHostMsg_SharedMemory_CreateSharedMemory)
335 default: 355 default:
336 // Do nothing for messages we don't know. 356 // Do nothing for messages we don't know.
337 break; 357 break;
338 } 358 }
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 fio_it->second->SetMaxWrittenOffset(offset_it->second); 539 fio_it->second->SetMaxWrittenOffset(offset_it->second);
520 } 540 }
521 } 541 }
522 break; 542 break;
523 } 543 }
524 } 544 }
525 } 545 }
526 546
527 } // namespace proxy 547 } // namespace proxy
528 } // namespace ppapi 548 } // namespace ppapi
OLDNEW
« no previous file with comments | « no previous file | ppapi/tests/test_message_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698