| 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/renderer/pepper/pepper_in_process_router.h" | 5 #include "content/renderer/pepper/pepper_in_process_router.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/location.h" | 8 #include "base/location.h" |
| 9 #include "base/single_thread_task_runner.h" | 9 #include "base/single_thread_task_runner.h" |
| 10 #include "base/thread_task_runner_handle.h" | 10 #include "base/thread_task_runner_handle.h" |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 ppapi::PpapiGlobals::Get()->GetResourceTracker()->GetResource( | 94 ppapi::PpapiGlobals::Get()->GetResourceTracker()->GetResource( |
| 95 reply_params.pp_resource()); | 95 reply_params.pp_resource()); |
| 96 // If the resource doesn't exist, it may have been destroyed so just ignore | 96 // If the resource doesn't exist, it may have been destroyed so just ignore |
| 97 // the message. | 97 // the message. |
| 98 if (resource) | 98 if (resource) |
| 99 resource->OnReplyReceived(reply_params, nested_msg); | 99 resource->OnReplyReceived(reply_params, nested_msg); |
| 100 return true; | 100 return true; |
| 101 } | 101 } |
| 102 | 102 |
| 103 bool PepperInProcessRouter::SendToHost(IPC::Message* msg) { | 103 bool PepperInProcessRouter::SendToHost(IPC::Message* msg) { |
| 104 scoped_ptr<IPC::Message> message(msg); | 104 std::unique_ptr<IPC::Message> message(msg); |
| 105 | 105 |
| 106 if (!message->is_sync()) { | 106 if (!message->is_sync()) { |
| 107 // If this is a resource destroyed message, post a task to dispatch it. | 107 // If this is a resource destroyed message, post a task to dispatch it. |
| 108 // Dispatching it synchronously can cause the host to re-enter the proxy | 108 // Dispatching it synchronously can cause the host to re-enter the proxy |
| 109 // code while we're still in the resource destructor, leading to a crash. | 109 // code while we're still in the resource destructor, leading to a crash. |
| 110 // http://crbug.com/276368. | 110 // http://crbug.com/276368. |
| 111 // This won't cause message reordering problems because the resource | 111 // This won't cause message reordering problems because the resource |
| 112 // destroyed message is always the last one sent for a resource. | 112 // destroyed message is always the last one sent for a resource. |
| 113 if (message->type() == PpapiHostMsg_ResourceDestroyed::ID) { | 113 if (message->type() == PpapiHostMsg_ResourceDestroyed::ID) { |
| 114 base::ThreadTaskRunnerHandle::Get()->PostTask( | 114 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| (...skipping 15 matching lines...) Expand all Loading... |
| 130 | 130 |
| 131 bool result = host_impl_->GetPpapiHost()->OnMessageReceived(*message); | 131 bool result = host_impl_->GetPpapiHost()->OnMessageReceived(*message); |
| 132 DCHECK(result) << "The message was not handled by the host."; | 132 DCHECK(result) << "The message was not handled by the host."; |
| 133 | 133 |
| 134 pending_message_id_ = 0; | 134 pending_message_id_ = 0; |
| 135 reply_deserializer_.reset(NULL); | 135 reply_deserializer_.reset(NULL); |
| 136 return reply_result_; | 136 return reply_result_; |
| 137 } | 137 } |
| 138 | 138 |
| 139 bool PepperInProcessRouter::SendToPlugin(IPC::Message* msg) { | 139 bool PepperInProcessRouter::SendToPlugin(IPC::Message* msg) { |
| 140 scoped_ptr<IPC::Message> message(msg); | 140 std::unique_ptr<IPC::Message> message(msg); |
| 141 CHECK(!msg->is_sync()); | 141 CHECK(!msg->is_sync()); |
| 142 if (IPC::SyncMessage::IsMessageReplyTo(*message, pending_message_id_)) { | 142 if (IPC::SyncMessage::IsMessageReplyTo(*message, pending_message_id_)) { |
| 143 if (!msg->is_reply_error()) | 143 if (!msg->is_reply_error()) |
| 144 reply_result_ = reply_deserializer_->SerializeOutputParameters(*message); | 144 reply_result_ = reply_deserializer_->SerializeOutputParameters(*message); |
| 145 } else { | 145 } else { |
| 146 CHECK(!pending_message_id_); | 146 CHECK(!pending_message_id_); |
| 147 // Dispatch plugin messages from the message loop. | 147 // Dispatch plugin messages from the message loop. |
| 148 base::ThreadTaskRunnerHandle::Get()->PostTask( | 148 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 149 FROM_HERE, | 149 FROM_HERE, |
| 150 base::Bind(&PepperInProcessRouter::DispatchPluginMsg, | 150 base::Bind(&PepperInProcessRouter::DispatchPluginMsg, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 161 void PepperInProcessRouter::DispatchPluginMsg(IPC::Message* msg) { | 161 void PepperInProcessRouter::DispatchPluginMsg(IPC::Message* msg) { |
| 162 bool handled = OnPluginMsgReceived(*msg); | 162 bool handled = OnPluginMsgReceived(*msg); |
| 163 DCHECK(handled); | 163 DCHECK(handled); |
| 164 } | 164 } |
| 165 | 165 |
| 166 bool PepperInProcessRouter::SendToBrowser(IPC::Message* msg) { | 166 bool PepperInProcessRouter::SendToBrowser(IPC::Message* msg) { |
| 167 return RenderThread::Get()->Send(msg); | 167 return RenderThread::Get()->Send(msg); |
| 168 } | 168 } |
| 169 | 169 |
| 170 } // namespace content | 170 } // namespace content |
| OLD | NEW |