| 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 "content/public/test/mock_render_thread.h" | 5 #include "content/public/test/mock_render_thread.h" |
| 6 | 6 |
| 7 #include "base/message_loop/message_loop_proxy.h" | 7 #include "base/message_loop/message_loop_proxy.h" |
| 8 #include "content/common/view_messages.h" | 8 #include "content/common/view_messages.h" |
| 9 #include "content/public/renderer/render_process_observer.h" |
| 9 #include "ipc/ipc_message_utils.h" | 10 #include "ipc/ipc_message_utils.h" |
| 10 #include "ipc/ipc_sync_message.h" | 11 #include "ipc/ipc_sync_message.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 12 #include "third_party/WebKit/public/web/WebScriptController.h" | 13 #include "third_party/WebKit/public/web/WebScriptController.h" |
| 13 | 14 |
| 14 namespace content { | 15 namespace content { |
| 15 | 16 |
| 16 MockRenderThread::MockRenderThread() | 17 MockRenderThread::MockRenderThread() |
| 17 : routing_id_(0), | 18 : routing_id_(0), |
| 18 surface_id_(0), | 19 surface_id_(0), |
| (...skipping 21 matching lines...) Expand all Loading... |
| 40 // class. | 41 // class. |
| 41 bool MockRenderThread::Send(IPC::Message* msg) { | 42 bool MockRenderThread::Send(IPC::Message* msg) { |
| 42 // We need to simulate a synchronous channel, thus we are going to receive | 43 // We need to simulate a synchronous channel, thus we are going to receive |
| 43 // through this function messages, messages with reply and reply messages. | 44 // through this function messages, messages with reply and reply messages. |
| 44 // We can only handle one synchronous message at a time. | 45 // We can only handle one synchronous message at a time. |
| 45 if (msg->is_reply()) { | 46 if (msg->is_reply()) { |
| 46 if (reply_deserializer_) { | 47 if (reply_deserializer_) { |
| 47 reply_deserializer_->SerializeOutputParameters(*msg); | 48 reply_deserializer_->SerializeOutputParameters(*msg); |
| 48 reply_deserializer_.reset(); | 49 reply_deserializer_.reset(); |
| 49 } | 50 } |
| 51 } else if (msg->routing_id() == MSG_ROUTING_CONTROL) { |
| 52 OnControlMessageReceived(*msg); |
| 50 } else { | 53 } else { |
| 51 if (msg->is_sync()) { | 54 if (msg->is_sync()) { |
| 52 // We actually need to handle deleting the reply deserializer for sync | 55 // We actually need to handle deleting the reply deserializer for sync |
| 53 // messages. | 56 // messages. |
| 54 reply_deserializer_.reset( | 57 reply_deserializer_.reset( |
| 55 static_cast<IPC::SyncMessage*>(msg)->GetReplyDeserializer()); | 58 static_cast<IPC::SyncMessage*>(msg)->GetReplyDeserializer()); |
| 56 } | 59 } |
| 57 OnMessageReceived(*msg); | 60 OnMessageReceived(*msg); |
| 58 } | 61 } |
| 59 delete msg; | 62 delete msg; |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 } | 120 } |
| 118 } | 121 } |
| 119 NOTREACHED() << "filter to be removed not found"; | 122 NOTREACHED() << "filter to be removed not found"; |
| 120 } | 123 } |
| 121 | 124 |
| 122 void MockRenderThread::SetOutgoingMessageFilter( | 125 void MockRenderThread::SetOutgoingMessageFilter( |
| 123 IPC::ChannelProxy::OutgoingMessageFilter* filter) { | 126 IPC::ChannelProxy::OutgoingMessageFilter* filter) { |
| 124 } | 127 } |
| 125 | 128 |
| 126 void MockRenderThread::AddObserver(RenderProcessObserver* observer) { | 129 void MockRenderThread::AddObserver(RenderProcessObserver* observer) { |
| 130 observers_.AddObserver(observer); |
| 127 } | 131 } |
| 128 | 132 |
| 129 void MockRenderThread::RemoveObserver(RenderProcessObserver* observer) { | 133 void MockRenderThread::RemoveObserver(RenderProcessObserver* observer) { |
| 134 observers_.RemoveObserver(observer); |
| 130 } | 135 } |
| 131 | 136 |
| 132 void MockRenderThread::SetResourceDispatcherDelegate( | 137 void MockRenderThread::SetResourceDispatcherDelegate( |
| 133 ResourceDispatcherDelegate* delegate) { | 138 ResourceDispatcherDelegate* delegate) { |
| 134 } | 139 } |
| 135 | 140 |
| 136 void MockRenderThread::WidgetHidden() { | 141 void MockRenderThread::WidgetHidden() { |
| 137 } | 142 } |
| 138 | 143 |
| 139 void MockRenderThread::WidgetRestored() { | 144 void MockRenderThread::WidgetRestored() { |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 int* route_id, | 224 int* route_id, |
| 220 int* main_frame_route_id, | 225 int* main_frame_route_id, |
| 221 int* surface_id, | 226 int* surface_id, |
| 222 int64* cloned_session_storage_namespace_id) { | 227 int64* cloned_session_storage_namespace_id) { |
| 223 *route_id = new_window_routing_id_; | 228 *route_id = new_window_routing_id_; |
| 224 *main_frame_route_id = new_window_main_frame_routing_id_; | 229 *main_frame_route_id = new_window_main_frame_routing_id_; |
| 225 *surface_id = surface_id_; | 230 *surface_id = surface_id_; |
| 226 *cloned_session_storage_namespace_id = 0; | 231 *cloned_session_storage_namespace_id = 0; |
| 227 } | 232 } |
| 228 | 233 |
| 234 bool MockRenderThread::OnControlMessageReceived(const IPC::Message& msg) { |
| 235 ObserverListBase<RenderProcessObserver>::Iterator it(observers_); |
| 236 RenderProcessObserver* observer; |
| 237 while ((observer = it.GetNext()) != NULL) { |
| 238 if (observer->OnControlMessageReceived(msg)) |
| 239 return true; |
| 240 } |
| 241 return false; |
| 242 } |
| 243 |
| 229 bool MockRenderThread::OnMessageReceived(const IPC::Message& msg) { | 244 bool MockRenderThread::OnMessageReceived(const IPC::Message& msg) { |
| 230 // Save the message in the sink. | 245 // Save the message in the sink. |
| 231 sink_.OnMessageReceived(msg); | 246 sink_.OnMessageReceived(msg); |
| 232 | 247 |
| 233 bool handled = true; | 248 bool handled = true; |
| 234 bool msg_is_ok = true; | 249 bool msg_is_ok = true; |
| 235 IPC_BEGIN_MESSAGE_MAP_EX(MockRenderThread, msg, msg_is_ok) | 250 IPC_BEGIN_MESSAGE_MAP_EX(MockRenderThread, msg, msg_is_ok) |
| 236 IPC_MESSAGE_HANDLER(ViewHostMsg_CreateWidget, OnCreateWidget) | 251 IPC_MESSAGE_HANDLER(ViewHostMsg_CreateWidget, OnCreateWidget) |
| 237 IPC_MESSAGE_HANDLER(ViewHostMsg_CreateWindow, OnCreateWindow) | 252 IPC_MESSAGE_HANDLER(ViewHostMsg_CreateWindow, OnCreateWindow) |
| 238 IPC_MESSAGE_UNHANDLED(handled = false) | 253 IPC_MESSAGE_UNHANDLED(handled = false) |
| 239 IPC_END_MESSAGE_MAP_EX() | 254 IPC_END_MESSAGE_MAP_EX() |
| 240 return handled; | 255 return handled; |
| 241 } | 256 } |
| 242 | 257 |
| 243 #if defined(OS_WIN) | 258 #if defined(OS_WIN) |
| 244 void MockRenderThread::OnDuplicateSection( | 259 void MockRenderThread::OnDuplicateSection( |
| 245 base::SharedMemoryHandle renderer_handle, | 260 base::SharedMemoryHandle renderer_handle, |
| 246 base::SharedMemoryHandle* browser_handle) { | 261 base::SharedMemoryHandle* browser_handle) { |
| 247 // We don't have to duplicate the input handles since RenderViewTest does not | 262 // We don't have to duplicate the input handles since RenderViewTest does not |
| 248 // separate a browser process from a renderer process. | 263 // separate a browser process from a renderer process. |
| 249 *browser_handle = renderer_handle; | 264 *browser_handle = renderer_handle; |
| 250 } | 265 } |
| 251 #endif // defined(OS_WIN) | 266 #endif // defined(OS_WIN) |
| 252 | 267 |
| 253 } // namespace content | 268 } // namespace content |
| OLD | NEW |