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/resource_message_test_sink.h" | 5 #include "ppapi/proxy/resource_message_test_sink.h" |
6 | 6 |
7 #include "ppapi/proxy/ppapi_messages.h" | 7 #include "ppapi/proxy/ppapi_messages.h" |
8 #include "ppapi/proxy/resource_message_params.h" | 8 #include "ppapi/proxy/resource_message_params.h" |
9 | 9 |
10 namespace ppapi { | 10 namespace ppapi { |
(...skipping 24 matching lines...) Expand all Loading... |
35 } | 35 } |
36 | 36 |
37 } // namespace | 37 } // namespace |
38 | 38 |
39 ResourceMessageTestSink::ResourceMessageTestSink() { | 39 ResourceMessageTestSink::ResourceMessageTestSink() { |
40 } | 40 } |
41 | 41 |
42 ResourceMessageTestSink::~ResourceMessageTestSink() { | 42 ResourceMessageTestSink::~ResourceMessageTestSink() { |
43 } | 43 } |
44 | 44 |
| 45 bool ResourceMessageTestSink::Send(IPC::Message* msg) { |
| 46 scoped_ptr<IPC::MessageReplyDeserializer> reply_deserializer; |
| 47 if (msg->is_sync()) { |
| 48 reply_deserializer.reset( |
| 49 static_cast<IPC::SyncMessage*>(msg)->GetReplyDeserializer()); |
| 50 } |
| 51 bool result = IPC::TestSink::Send(msg); // Deletes |msg|. |
| 52 if (sync_reply_msg_.get()) { |
| 53 reply_deserializer->SerializeOutputParameters(*sync_reply_msg_.get()); |
| 54 sync_reply_msg_.reset(NULL); |
| 55 } |
| 56 return result; |
| 57 } |
| 58 |
| 59 void ResourceMessageTestSink::SetSyncReplyMessage(IPC::Message* reply_msg) { |
| 60 DCHECK(!sync_reply_msg_.get()); |
| 61 sync_reply_msg_.reset(reply_msg); |
| 62 } |
| 63 |
45 bool ResourceMessageTestSink::GetFirstResourceCallMatching( | 64 bool ResourceMessageTestSink::GetFirstResourceCallMatching( |
46 uint32 id, | 65 uint32 id, |
47 ResourceMessageCallParams* params, | 66 ResourceMessageCallParams* params, |
48 IPC::Message* nested_msg) const { | 67 IPC::Message* nested_msg) const { |
49 return GetFirstResourceMessageMatching<PpapiHostMsg_ResourceCall, | 68 return GetFirstResourceMessageMatching<PpapiHostMsg_ResourceCall, |
50 ResourceMessageCallParams>( | 69 ResourceMessageCallParams>( |
51 *this, id, params, nested_msg); | 70 *this, id, params, nested_msg); |
52 } | 71 } |
53 | 72 |
54 bool ResourceMessageTestSink::GetFirstResourceReplyMatching( | 73 bool ResourceMessageTestSink::GetFirstResourceReplyMatching( |
55 uint32 id, | 74 uint32 id, |
56 ResourceMessageReplyParams* params, | 75 ResourceMessageReplyParams* params, |
57 IPC::Message* nested_msg) { | 76 IPC::Message* nested_msg) { |
58 return GetFirstResourceMessageMatching<PpapiPluginMsg_ResourceReply, | 77 return GetFirstResourceMessageMatching<PpapiPluginMsg_ResourceReply, |
59 ResourceMessageReplyParams>( | 78 ResourceMessageReplyParams>( |
60 *this, id, params, nested_msg); | 79 *this, id, params, nested_msg); |
61 } | 80 } |
62 | 81 |
| 82 ResourceSyncCallHandler::ResourceSyncCallHandler( |
| 83 ResourceMessageTestSink* test_sink, |
| 84 uint32 incoming_type, |
| 85 int32_t result, |
| 86 const IPC::Message& reply_msg) |
| 87 : test_sink_(test_sink), |
| 88 incoming_type_(incoming_type), |
| 89 result_(result), |
| 90 reply_msg_(reply_msg) { |
| 91 } |
| 92 |
| 93 ResourceSyncCallHandler::~ResourceSyncCallHandler() { |
| 94 } |
| 95 |
| 96 bool ResourceSyncCallHandler::OnMessageReceived(const IPC::Message& msg) { |
| 97 if (msg.type() != PpapiHostMsg_ResourceSyncCall::ID) |
| 98 return false; |
| 99 PpapiHostMsg_ResourceSyncCall::Schema::SendParam send_params; |
| 100 DCHECK(PpapiHostMsg_ResourceSyncCall::ReadSendParam( |
| 101 &msg, &send_params)); |
| 102 ResourceMessageCallParams call_params = send_params.a; |
| 103 IPC::Message call_msg = send_params.b; |
| 104 if (call_msg.type() != incoming_type_) |
| 105 return false; |
| 106 IPC::Message* wrapper_reply_msg = IPC::SyncMessage::GenerateReply(&msg); |
| 107 ResourceMessageReplyParams reply_params(call_params.pp_resource(), |
| 108 call_params.sequence()); |
| 109 reply_params.set_result(result_); |
| 110 PpapiHostMsg_ResourceSyncCall::WriteReplyParams( |
| 111 wrapper_reply_msg, reply_params, reply_msg_); |
| 112 test_sink_->SetSyncReplyMessage(wrapper_reply_msg); |
| 113 |
| 114 // Stash a copy of the message for inspection later. |
| 115 last_handled_msg_ = call_msg; |
| 116 return true; |
| 117 } |
| 118 |
63 } // namespace proxy | 119 } // namespace proxy |
64 } // namespace ppapi | 120 } // namespace ppapi |
OLD | NEW |