| Index: ppapi/proxy/resource_message_test_sink.h
|
| diff --git a/ppapi/proxy/resource_message_test_sink.h b/ppapi/proxy/resource_message_test_sink.h
|
| index bf74becc27442589a6ff9383ab06c6a0f35cd275..7694fb0f8fd3fe4851f06fe39524471804a670ce 100644
|
| --- a/ppapi/proxy/resource_message_test_sink.h
|
| +++ b/ppapi/proxy/resource_message_test_sink.h
|
| @@ -6,6 +6,7 @@
|
| #define PPAPI_PROXY_RESOURCE_MESSAGE_TEST_SINK_H_
|
|
|
| #include "ipc/ipc_test_sink.h"
|
| +#include "ppapi/c/pp_stdint.h"
|
|
|
| namespace ppapi {
|
| namespace proxy {
|
| @@ -20,6 +21,14 @@ class ResourceMessageTestSink : public IPC::TestSink {
|
| ResourceMessageTestSink();
|
| virtual ~ResourceMessageTestSink();
|
|
|
| + // IPC::TestSink.
|
| + // Overridden to handle sync messages.
|
| + virtual bool Send(IPC::Message* msg) OVERRIDE;
|
| +
|
| + // Sets the reply message that will be returned to the next sync message sent.
|
| + // This test sink owns any reply messages passed into this method.
|
| + void SetSyncReplyMessage(IPC::Message* reply_msg);
|
| +
|
| // Searches the queue for the first resource call message with a nested
|
| // message matching the given ID. On success, returns true and populates the
|
| // givem params and nested message.
|
| @@ -33,6 +42,46 @@ class ResourceMessageTestSink : public IPC::TestSink {
|
| uint32 id,
|
| ResourceMessageReplyParams* params,
|
| IPC::Message* nested_msg);
|
| +
|
| + private:
|
| + scoped_ptr<IPC::Message> sync_reply_msg_;
|
| +};
|
| +
|
| +// This is a message handler which generates reply messages for synchronous
|
| +// resource calls. This allows unit testing of the plugin side of resources
|
| +// which send sync messages. If you want to reply to a sync message type named
|
| +// |PpapiHostMsg_X_Y| with |PpapiPluginMsg_X_YReply| then usage would be as
|
| +// follows (from within |PluginProxyTest|s):
|
| +//
|
| +// PpapiHostMsg_X_YReply my_reply;
|
| +// ResourceSyncCallHandler handler(&sink(),
|
| +// PpapiHostMsg_X_Y::ID,
|
| +// PP_OK,
|
| +// my_reply);
|
| +// sink().AddFilter(&handler);
|
| +// // Do stuff to send a sync message ...
|
| +// // You can check handler.last_handled_msg() to ensure the correct message was
|
| +// // handled.
|
| +// sink().RemoveFilter(&handler);
|
| +class ResourceSyncCallHandler : public IPC::Listener {
|
| + public:
|
| + ResourceSyncCallHandler(ResourceMessageTestSink* test_sink,
|
| + uint32 incoming_type,
|
| + int32_t result,
|
| + const IPC::Message& reply_msg);
|
| + virtual ~ResourceSyncCallHandler();
|
| +
|
| + // IPC::Listener.
|
| + virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
|
| +
|
| + IPC::Message last_handled_msg() { return last_handled_msg_; }
|
| +
|
| + private:
|
| + ResourceMessageTestSink* test_sink_;
|
| + uint32 incoming_type_;
|
| + int32_t result_;
|
| + IPC::Message reply_msg_;
|
| + IPC::Message last_handled_msg_;
|
| };
|
|
|
| } // namespace proxy
|
|
|