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/child/child_thread_impl.h" | 5 #include "content/child/child_thread_impl.h" |
6 | 6 |
7 #include <signal.h> | 7 #include <signal.h> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 channel_->Init( | 406 channel_->Init( |
407 IPC::ChannelMojo::CreateClientFactory( | 407 IPC::ChannelMojo::CreateClientFactory( |
408 std::move(handle), ChildProcess::current()->io_task_runner()), | 408 std::move(handle), ChildProcess::current()->io_task_runner()), |
409 true /* create_pipe_now */); | 409 true /* create_pipe_now */); |
410 } | 410 } |
411 | 411 |
412 void ChildThreadImpl::Init(const Options& options) { | 412 void ChildThreadImpl::Init(const Options& options) { |
413 g_lazy_tls.Pointer()->Set(this); | 413 g_lazy_tls.Pointer()->Set(this); |
414 on_channel_error_called_ = false; | 414 on_channel_error_called_ = false; |
415 message_loop_ = base::MessageLoop::current(); | 415 message_loop_ = base::MessageLoop::current(); |
416 #ifdef IPC_MESSAGE_LOG_ENABLED | 416 #if BUILDFLAG(IPC_MESSAGE_LOG_ENABLED) |
417 // We must make sure to instantiate the IPC Logger *before* we create the | 417 // We must make sure to instantiate the IPC Logger *before* we create the |
418 // channel, otherwise we can get a callback on the IO thread which creates | 418 // channel, otherwise we can get a callback on the IO thread which creates |
419 // the logger, and the logger does not like being created on the IO thread. | 419 // the logger, and the logger does not like being created on the IO thread. |
420 IPC::Logging::GetInstance(); | 420 IPC::Logging::GetInstance(); |
421 #endif | 421 #endif |
422 | 422 |
423 channel_ = | 423 channel_ = |
424 IPC::SyncChannel::Create(this, ChildProcess::current()->io_task_runner(), | 424 IPC::SyncChannel::Create(this, ChildProcess::current()->io_task_runner(), |
425 ChildProcess::current()->GetShutDownEvent()); | 425 ChildProcess::current()->GetShutDownEvent()); |
426 #ifdef IPC_MESSAGE_LOG_ENABLED | 426 #if BUILDFLAG(IPC_MESSAGE_LOG_ENABLED) |
427 if (!IsInBrowserProcess()) | 427 if (!IsInBrowserProcess()) |
428 IPC::Logging::GetInstance()->SetIPCSender(this); | 428 IPC::Logging::GetInstance()->SetIPCSender(this); |
429 #endif | 429 #endif |
430 | 430 |
431 if (!IsInBrowserProcess()) { | 431 if (!IsInBrowserProcess()) { |
432 // Don't double-initialize IPC support in single-process mode. | 432 // Don't double-initialize IPC support in single-process mode. |
433 mojo_ipc_support_.reset(new mojo::edk::ScopedIPCSupport( | 433 mojo_ipc_support_.reset(new mojo::edk::ScopedIPCSupport( |
434 GetIOTaskRunner(), mojo::edk::ScopedIPCSupport::ShutdownPolicy::FAST)); | 434 GetIOTaskRunner(), mojo::edk::ScopedIPCSupport::ShutdownPolicy::FAST)); |
435 InitializeMojoIPCChannel(); | 435 InitializeMojoIPCChannel(); |
436 } | 436 } |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
547 FROM_HERE, base::Bind(&ChildThreadImpl::EnsureConnected, | 547 FROM_HERE, base::Bind(&ChildThreadImpl::EnsureConnected, |
548 channel_connected_factory_->GetWeakPtr()), | 548 channel_connected_factory_->GetWeakPtr()), |
549 base::TimeDelta::FromSeconds(connection_timeout)); | 549 base::TimeDelta::FromSeconds(connection_timeout)); |
550 | 550 |
551 #if defined(OS_ANDROID) | 551 #if defined(OS_ANDROID) |
552 g_quit_closure.Get().BindToMainThread(); | 552 g_quit_closure.Get().BindToMainThread(); |
553 #endif | 553 #endif |
554 } | 554 } |
555 | 555 |
556 ChildThreadImpl::~ChildThreadImpl() { | 556 ChildThreadImpl::~ChildThreadImpl() { |
557 #ifdef IPC_MESSAGE_LOG_ENABLED | 557 #if BUILDFLAG(IPC_MESSAGE_LOG_ENABLED) |
558 IPC::Logging::GetInstance()->SetIPCSender(NULL); | 558 IPC::Logging::GetInstance()->SetIPCSender(NULL); |
559 #endif | 559 #endif |
560 | 560 |
561 channel_->RemoveFilter(histogram_message_filter_.get()); | 561 channel_->RemoveFilter(histogram_message_filter_.get()); |
562 channel_->RemoveFilter(sync_message_filter_.get()); | 562 channel_->RemoveFilter(sync_message_filter_.get()); |
563 | 563 |
564 // The ChannelProxy object caches a pointer to the IPC thread, so need to | 564 // The ChannelProxy object caches a pointer to the IPC thread, so need to |
565 // reset it as it's not guaranteed to outlive this object. | 565 // reset it as it's not guaranteed to outlive this object. |
566 // NOTE: this also has the side-effect of not closing the main IPC channel to | 566 // NOTE: this also has the side-effect of not closing the main IPC channel to |
567 // the browser process. This is needed because this is the signal that the | 567 // the browser process. This is needed because this is the signal that the |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
673 bool ChildThreadImpl::OnMessageReceived(const IPC::Message& msg) { | 673 bool ChildThreadImpl::OnMessageReceived(const IPC::Message& msg) { |
674 // Resource responses are sent to the resource dispatcher. | 674 // Resource responses are sent to the resource dispatcher. |
675 if (resource_dispatcher_->OnMessageReceived(msg)) | 675 if (resource_dispatcher_->OnMessageReceived(msg)) |
676 return true; | 676 return true; |
677 if (file_system_dispatcher_->OnMessageReceived(msg)) | 677 if (file_system_dispatcher_->OnMessageReceived(msg)) |
678 return true; | 678 return true; |
679 | 679 |
680 bool handled = true; | 680 bool handled = true; |
681 IPC_BEGIN_MESSAGE_MAP(ChildThreadImpl, msg) | 681 IPC_BEGIN_MESSAGE_MAP(ChildThreadImpl, msg) |
682 IPC_MESSAGE_HANDLER(ChildProcessMsg_Shutdown, OnShutdown) | 682 IPC_MESSAGE_HANDLER(ChildProcessMsg_Shutdown, OnShutdown) |
683 #if defined(IPC_MESSAGE_LOG_ENABLED) | 683 #if BUILDFLAG(IPC_MESSAGE_LOG_ENABLED) |
684 IPC_MESSAGE_HANDLER(ChildProcessMsg_SetIPCLoggingEnabled, | 684 IPC_MESSAGE_HANDLER(ChildProcessMsg_SetIPCLoggingEnabled, |
685 OnSetIPCLoggingEnabled) | 685 OnSetIPCLoggingEnabled) |
686 #endif | 686 #endif |
687 IPC_MESSAGE_HANDLER(ChildProcessMsg_SetProfilerStatus, | 687 IPC_MESSAGE_HANDLER(ChildProcessMsg_SetProfilerStatus, |
688 OnSetProfilerStatus) | 688 OnSetProfilerStatus) |
689 IPC_MESSAGE_HANDLER(ChildProcessMsg_GetChildProfilerData, | 689 IPC_MESSAGE_HANDLER(ChildProcessMsg_GetChildProfilerData, |
690 OnGetChildProfilerData) | 690 OnGetChildProfilerData) |
691 IPC_MESSAGE_HANDLER(ChildProcessMsg_ProfilingPhaseCompleted, | 691 IPC_MESSAGE_HANDLER(ChildProcessMsg_ProfilingPhaseCompleted, |
692 OnProfilingPhaseCompleted) | 692 OnProfilingPhaseCompleted) |
693 IPC_MESSAGE_HANDLER(ChildProcessMsg_SetProcessBackgrounded, | 693 IPC_MESSAGE_HANDLER(ChildProcessMsg_SetProcessBackgrounded, |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
740 | 740 |
741 void ChildThreadImpl::OnProcessPurgeAndSuspend() { | 741 void ChildThreadImpl::OnProcessPurgeAndSuspend() { |
742 } | 742 } |
743 | 743 |
744 void ChildThreadImpl::OnProcessResume() {} | 744 void ChildThreadImpl::OnProcessResume() {} |
745 | 745 |
746 void ChildThreadImpl::OnShutdown() { | 746 void ChildThreadImpl::OnShutdown() { |
747 base::MessageLoop::current()->QuitWhenIdle(); | 747 base::MessageLoop::current()->QuitWhenIdle(); |
748 } | 748 } |
749 | 749 |
750 #if defined(IPC_MESSAGE_LOG_ENABLED) | 750 #if BUILDFLAG(IPC_MESSAGE_LOG_ENABLED) |
751 void ChildThreadImpl::OnSetIPCLoggingEnabled(bool enable) { | 751 void ChildThreadImpl::OnSetIPCLoggingEnabled(bool enable) { |
752 if (enable) | 752 if (enable) |
753 IPC::Logging::GetInstance()->Enable(); | 753 IPC::Logging::GetInstance()->Enable(); |
754 else | 754 else |
755 IPC::Logging::GetInstance()->Disable(); | 755 IPC::Logging::GetInstance()->Disable(); |
756 } | 756 } |
757 #endif // IPC_MESSAGE_LOG_ENABLED | 757 #endif // IPC_MESSAGE_LOG_ENABLED |
758 | 758 |
759 void ChildThreadImpl::OnSetProfilerStatus(ThreadData::Status status) { | 759 void ChildThreadImpl::OnSetProfilerStatus(ThreadData::Status status) { |
760 ThreadData::InitializeAndSetTrackingStatus(status); | 760 ThreadData::InitializeAndSetTrackingStatus(status); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
820 Listener* route = router_.GetRoute(routing_id); | 820 Listener* route = router_.GetRoute(routing_id); |
821 if (route) | 821 if (route) |
822 route->OnAssociatedInterfaceRequest(name, request.PassHandle()); | 822 route->OnAssociatedInterfaceRequest(name, request.PassHandle()); |
823 } | 823 } |
824 | 824 |
825 bool ChildThreadImpl::IsInBrowserProcess() const { | 825 bool ChildThreadImpl::IsInBrowserProcess() const { |
826 return static_cast<bool>(browser_process_io_runner_); | 826 return static_cast<bool>(browser_process_io_runner_); |
827 } | 827 } |
828 | 828 |
829 } // namespace content | 829 } // namespace content |
OLD | NEW |