| 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 "base/message_loop/message_loop.h" | 5 #include "base/message_loop/message_loop.h" |
| 6 #include "base/message_loop/message_loop_proxy.h" | 6 #include "base/message_loop/message_loop_proxy.h" |
| 7 #include "base/synchronization/waitable_event.h" | 7 #include "base/synchronization/waitable_event.h" |
| 8 #include "base/threading/thread.h" | 8 #include "base/threading/thread.h" |
| 9 #include "ipc/ipc_message.h" | 9 #include "ipc/ipc_message.h" |
| 10 #include "ppapi/c/pp_errors.h" | 10 #include "ppapi/c/pp_errors.h" |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 | 57 |
| 58 void AddMessageFilter(scoped_refptr<ResourceMessageFilter> filter) { | 58 void AddMessageFilter(scoped_refptr<ResourceMessageFilter> filter) { |
| 59 AddFilter(filter); | 59 AddFilter(filter); |
| 60 } | 60 } |
| 61 | 61 |
| 62 virtual int32_t OnResourceMessageReceived( | 62 virtual int32_t OnResourceMessageReceived( |
| 63 const IPC::Message& msg, | 63 const IPC::Message& msg, |
| 64 HostMessageContext* context) OVERRIDE { | 64 HostMessageContext* context) OVERRIDE { |
| 65 last_handled_msg_ = msg; | 65 last_handled_msg_ = msg; |
| 66 if (msg.type() == msg_type_) { | 66 if (msg.type() == msg_type_) { |
| 67 context->reply_msg = IPC::Message(0, reply_msg_type_); | 67 context->reply_msg = IPC::Message(0, reply_msg_type_, |
| 68 IPC::Message::PRIORITY_NORMAL); |
| 68 return PP_OK; | 69 return PP_OK; |
| 69 } | 70 } |
| 70 return PP_ERROR_FAILED; | 71 return PP_ERROR_FAILED; |
| 71 } | 72 } |
| 72 | 73 |
| 73 virtual void SendReply(const ReplyMessageContext& context, | 74 virtual void SendReply(const ReplyMessageContext& context, |
| 74 const IPC::Message& msg) OVERRIDE { | 75 const IPC::Message& msg) OVERRIDE { |
| 75 last_reply_msg_ = msg; | 76 last_reply_msg_ = msg; |
| 76 last_reply_message_loop_ = base::MessageLoop::current(); | 77 last_reply_message_loop_ = base::MessageLoop::current(); |
| 77 g_handler_completion.Signal(); | 78 g_handler_completion.Signal(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 return message_loop_proxy_; | 116 return message_loop_proxy_; |
| 116 return NULL; | 117 return NULL; |
| 117 } | 118 } |
| 118 | 119 |
| 119 virtual int32_t OnResourceMessageReceived( | 120 virtual int32_t OnResourceMessageReceived( |
| 120 const IPC::Message& msg, | 121 const IPC::Message& msg, |
| 121 HostMessageContext* context) OVERRIDE { | 122 HostMessageContext* context) OVERRIDE { |
| 122 last_handled_msg_ = msg; | 123 last_handled_msg_ = msg; |
| 123 last_message_loop_ = base::MessageLoop::current(); | 124 last_message_loop_ = base::MessageLoop::current(); |
| 124 if (msg.type() == msg_type_) { | 125 if (msg.type() == msg_type_) { |
| 125 context->reply_msg = IPC::Message(0, reply_msg_type_); | 126 context->reply_msg = IPC::Message(0, reply_msg_type_, |
| 127 IPC::Message::PRIORITY_NORMAL); |
| 126 return PP_OK; | 128 return PP_OK; |
| 127 } | 129 } |
| 128 return PP_ERROR_FAILED; | 130 return PP_ERROR_FAILED; |
| 129 } | 131 } |
| 130 | 132 |
| 131 private: | 133 private: |
| 132 scoped_refptr<base::MessageLoopProxy> message_loop_proxy_; | 134 scoped_refptr<base::MessageLoopProxy> message_loop_proxy_; |
| 133 uint32 msg_type_; | 135 uint32 msg_type_; |
| 134 uint32 reply_msg_type_; | 136 uint32 reply_msg_type_; |
| 135 | 137 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 157 | 159 |
| 158 PP_Instance instance = 12345; | 160 PP_Instance instance = 12345; |
| 159 PP_Resource resource = 67890; | 161 PP_Resource resource = 67890; |
| 160 MyResourceHost host(NULL, instance, resource, MSG3_TYPE, REPLY_MSG3_TYPE); | 162 MyResourceHost host(NULL, instance, resource, MSG3_TYPE, REPLY_MSG3_TYPE); |
| 161 host.AddMessageFilter(filter1); | 163 host.AddMessageFilter(filter1); |
| 162 host.AddMessageFilter(filter2); | 164 host.AddMessageFilter(filter2); |
| 163 | 165 |
| 164 proxy::ResourceMessageCallParams params(resource, 1); | 166 proxy::ResourceMessageCallParams params(resource, 1); |
| 165 params.set_has_callback(); | 167 params.set_has_callback(); |
| 166 HostMessageContext context(params); | 168 HostMessageContext context(params); |
| 167 IPC::Message message1(0, MSG1_TYPE); | 169 IPC::Message message1(0, MSG1_TYPE, IPC::Message::PRIORITY_NORMAL); |
| 168 IPC::Message message2(0, MSG2_TYPE); | 170 IPC::Message message2(0, MSG2_TYPE, IPC::Message::PRIORITY_NORMAL); |
| 169 IPC::Message message3(0, MSG3_TYPE); | 171 IPC::Message message3(0, MSG3_TYPE, IPC::Message::PRIORITY_NORMAL); |
| 170 | 172 |
| 171 // Message 1 handled by the first filter. | 173 // Message 1 handled by the first filter. |
| 172 host.HandleMessage(message1, &context); | 174 host.HandleMessage(message1, &context); |
| 173 g_handler_completion.Wait(); | 175 g_handler_completion.Wait(); |
| 174 EXPECT_EQ(filter1->last_handled_msg().type(), message1.type()); | 176 EXPECT_EQ(filter1->last_handled_msg().type(), message1.type()); |
| 175 EXPECT_EQ(filter1->last_message_loop(), bg_thread1.message_loop()); | 177 EXPECT_EQ(filter1->last_message_loop(), bg_thread1.message_loop()); |
| 176 EXPECT_EQ(host.last_reply_msg().type(), static_cast<uint32>(REPLY_MSG1_TYPE)); | 178 EXPECT_EQ(host.last_reply_msg().type(), static_cast<uint32>(REPLY_MSG1_TYPE)); |
| 177 EXPECT_EQ(host.last_reply_message_loop(), io_thread.message_loop()); | 179 EXPECT_EQ(host.last_reply_message_loop(), io_thread.message_loop()); |
| 178 g_handler_completion.Reset(); | 180 g_handler_completion.Reset(); |
| 179 | 181 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 191 EXPECT_EQ(host.last_handled_msg().type(), message3.type()); | 193 EXPECT_EQ(host.last_handled_msg().type(), message3.type()); |
| 192 EXPECT_EQ(host.last_reply_msg().type(), static_cast<uint32>(REPLY_MSG3_TYPE)); | 194 EXPECT_EQ(host.last_reply_msg().type(), static_cast<uint32>(REPLY_MSG3_TYPE)); |
| 193 | 195 |
| 194 io_thread.Stop(); | 196 io_thread.Stop(); |
| 195 bg_thread1.Stop(); | 197 bg_thread1.Stop(); |
| 196 bg_thread2.Stop(); | 198 bg_thread2.Stop(); |
| 197 } | 199 } |
| 198 | 200 |
| 199 } // namespace proxy | 201 } // namespace proxy |
| 200 } // namespace ppapi | 202 } // namespace ppapi |
| OLD | NEW |