| 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 "ipc/ipc_channel_proxy.h" | 5 #include "ipc/ipc_channel_proxy.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 | 71 |
| 72 base::AutoLock l(pending_filters_lock_); | 72 base::AutoLock l(pending_filters_lock_); |
| 73 for (auto& entry : pending_io_thread_interfaces_) | 73 for (auto& entry : pending_io_thread_interfaces_) |
| 74 support->AddGenericAssociatedInterface(entry.first, entry.second); | 74 support->AddGenericAssociatedInterface(entry.first, entry.second); |
| 75 pending_io_thread_interfaces_.clear(); | 75 pending_io_thread_interfaces_.clear(); |
| 76 } | 76 } |
| 77 } | 77 } |
| 78 | 78 |
| 79 bool ChannelProxy::Context::TryFilters(const Message& message) { | 79 bool ChannelProxy::Context::TryFilters(const Message& message) { |
| 80 DCHECK(message_filter_router_); | 80 DCHECK(message_filter_router_); |
| 81 #if BUILDFLAG(IPC_MESSAGE_LOG_ENABLED) | 81 #ifdef IPC_MESSAGE_LOG_ENABLED |
| 82 Logging* logger = Logging::GetInstance(); | 82 Logging* logger = Logging::GetInstance(); |
| 83 if (logger->Enabled()) | 83 if (logger->Enabled()) |
| 84 logger->OnPreDispatchMessage(message); | 84 logger->OnPreDispatchMessage(message); |
| 85 #endif | 85 #endif |
| 86 | 86 |
| 87 if (message_filter_router_->TryFilters(message)) { | 87 if (message_filter_router_->TryFilters(message)) { |
| 88 if (message.dispatch_error()) { | 88 if (message.dispatch_error()) { |
| 89 listener_task_runner_->PostTask( | 89 listener_task_runner_->PostTask( |
| 90 FROM_HERE, base::Bind(&Context::OnDispatchBadMessage, this, message)); | 90 FROM_HERE, base::Bind(&Context::OnDispatchBadMessage, this, message)); |
| 91 } | 91 } |
| 92 #if BUILDFLAG(IPC_MESSAGE_LOG_ENABLED) | 92 #ifdef IPC_MESSAGE_LOG_ENABLED |
| 93 if (logger->Enabled()) | 93 if (logger->Enabled()) |
| 94 logger->OnPostDispatchMessage(message); | 94 logger->OnPostDispatchMessage(message); |
| 95 #endif | 95 #endif |
| 96 return true; | 96 return true; |
| 97 } | 97 } |
| 98 return false; | 98 return false; |
| 99 } | 99 } |
| 100 | 100 |
| 101 // Called on the IPC::Channel thread | 101 // Called on the IPC::Channel thread |
| 102 void ChannelProxy::Context::PauseChannel() { | 102 void ChannelProxy::Context::PauseChannel() { |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 FROM_HERE, base::Bind(&Context::OnAddFilter, this)); | 308 FROM_HERE, base::Bind(&Context::OnAddFilter, this)); |
| 309 } | 309 } |
| 310 | 310 |
| 311 // Called on the listener's thread | 311 // Called on the listener's thread |
| 312 void ChannelProxy::Context::OnDispatchMessage(const Message& message) { | 312 void ChannelProxy::Context::OnDispatchMessage(const Message& message) { |
| 313 if (!listener_) | 313 if (!listener_) |
| 314 return; | 314 return; |
| 315 | 315 |
| 316 OnDispatchConnected(); | 316 OnDispatchConnected(); |
| 317 | 317 |
| 318 #if BUILDFLAG(IPC_MESSAGE_LOG_ENABLED) | 318 #ifdef IPC_MESSAGE_LOG_ENABLED |
| 319 Logging* logger = Logging::GetInstance(); | 319 Logging* logger = Logging::GetInstance(); |
| 320 if (message.type() == IPC_LOGGING_ID) { | 320 if (message.type() == IPC_LOGGING_ID) { |
| 321 logger->OnReceivedLoggingMessage(message); | 321 logger->OnReceivedLoggingMessage(message); |
| 322 return; | 322 return; |
| 323 } | 323 } |
| 324 | 324 |
| 325 if (logger->Enabled()) | 325 if (logger->Enabled()) |
| 326 logger->OnPreDispatchMessage(message); | 326 logger->OnPreDispatchMessage(message); |
| 327 #endif | 327 #endif |
| 328 | 328 |
| 329 listener_->OnMessageReceived(message); | 329 listener_->OnMessageReceived(message); |
| 330 if (message.dispatch_error()) | 330 if (message.dispatch_error()) |
| 331 listener_->OnBadMessageReceived(message); | 331 listener_->OnBadMessageReceived(message); |
| 332 | 332 |
| 333 #if BUILDFLAG(IPC_MESSAGE_LOG_ENABLED) | 333 #ifdef IPC_MESSAGE_LOG_ENABLED |
| 334 if (logger->Enabled()) | 334 if (logger->Enabled()) |
| 335 logger->OnPostDispatchMessage(message); | 335 logger->OnPostDispatchMessage(message); |
| 336 #endif | 336 #endif |
| 337 } | 337 } |
| 338 | 338 |
| 339 // Called on the listener's thread | 339 // Called on the listener's thread |
| 340 void ChannelProxy::Context::OnDispatchConnected() { | 340 void ChannelProxy::Context::OnDispatchConnected() { |
| 341 if (channel_connected_called_) | 341 if (channel_connected_called_) |
| 342 return; | 342 return; |
| 343 | 343 |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 523 // tests that call Send() from a wrong thread. See http://crbug.com/163523. | 523 // tests that call Send() from a wrong thread. See http://crbug.com/163523. |
| 524 | 524 |
| 525 #ifdef ENABLE_IPC_FUZZER | 525 #ifdef ENABLE_IPC_FUZZER |
| 526 // In IPC fuzzing builds, it is possible to define a filter to apply to | 526 // In IPC fuzzing builds, it is possible to define a filter to apply to |
| 527 // outgoing messages. It will either rewrite the message and return a new | 527 // outgoing messages. It will either rewrite the message and return a new |
| 528 // one, freeing the original, or return the message unchanged. | 528 // one, freeing the original, or return the message unchanged. |
| 529 if (outgoing_message_filter()) | 529 if (outgoing_message_filter()) |
| 530 message = outgoing_message_filter()->Rewrite(message); | 530 message = outgoing_message_filter()->Rewrite(message); |
| 531 #endif | 531 #endif |
| 532 | 532 |
| 533 #if BUILDFLAG(IPC_MESSAGE_LOG_ENABLED) | 533 #ifdef IPC_MESSAGE_LOG_ENABLED |
| 534 Logging::GetInstance()->OnSendMessage(message); | 534 Logging::GetInstance()->OnSendMessage(message); |
| 535 #endif | 535 #endif |
| 536 | 536 |
| 537 context_->Send(message); | 537 context_->Send(message); |
| 538 return true; | 538 return true; |
| 539 } | 539 } |
| 540 | 540 |
| 541 void ChannelProxy::AddFilter(MessageFilter* filter) { | 541 void ChannelProxy::AddFilter(MessageFilter* filter) { |
| 542 DCHECK(CalledOnValidThread()); | 542 DCHECK(CalledOnValidThread()); |
| 543 | 543 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 572 DCHECK(CalledOnValidThread()); | 572 DCHECK(CalledOnValidThread()); |
| 573 context()->ClearIPCTaskRunner(); | 573 context()->ClearIPCTaskRunner(); |
| 574 } | 574 } |
| 575 | 575 |
| 576 void ChannelProxy::OnChannelInit() { | 576 void ChannelProxy::OnChannelInit() { |
| 577 } | 577 } |
| 578 | 578 |
| 579 //----------------------------------------------------------------------------- | 579 //----------------------------------------------------------------------------- |
| 580 | 580 |
| 581 } // namespace IPC | 581 } // namespace IPC |
| OLD | NEW |