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

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

Issue 11039012: Implement plugin side of sync EnumerateVideoCaptureDevices (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 2 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
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/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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698