Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(481)

Side by Side Diff: content/child/child_thread_impl.cc

Issue 2867693004: Snapshot of all changes to get jumbo in blink and content.
Patch Set: Exclude certain files from jumbo because of a Windows problem Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 93
94 using tracked_objects::ThreadData; 94 using tracked_objects::ThreadData;
95 95
96 namespace content { 96 namespace content {
97 namespace { 97 namespace {
98 98
99 // How long to wait for a connection to the browser process before giving up. 99 // How long to wait for a connection to the browser process before giving up.
100 const int kConnectionTimeoutS = 15; 100 const int kConnectionTimeoutS = 15;
101 101
102 base::LazyInstance<base::ThreadLocalPointer<ChildThreadImpl>>::DestructorAtExit 102 base::LazyInstance<base::ThreadLocalPointer<ChildThreadImpl>>::DestructorAtExit
103 g_lazy_tls = LAZY_INSTANCE_INITIALIZER; 103 g_lazy_child_tls = LAZY_INSTANCE_INITIALIZER;
104 104
105 // This isn't needed on Windows because there the sandbox's job object 105 // This isn't needed on Windows because there the sandbox's job object
106 // terminates child processes automatically. For unsandboxed processes (i.e. 106 // terminates child processes automatically. For unsandboxed processes (i.e.
107 // plugins), PluginThread has EnsureTerminateMessageFilter. 107 // plugins), PluginThread has EnsureTerminateMessageFilter.
108 #if defined(OS_POSIX) 108 #if defined(OS_POSIX)
109 109
110 #if defined(ADDRESS_SANITIZER) || defined(LEAK_SANITIZER) || \ 110 #if defined(ADDRESS_SANITIZER) || defined(LEAK_SANITIZER) || \
111 defined(MEMORY_SANITIZER) || defined(THREAD_SANITIZER) || \ 111 defined(MEMORY_SANITIZER) || defined(THREAD_SANITIZER) || \
112 defined(UNDEFINED_SANITIZER) 112 defined(UNDEFINED_SANITIZER)
113 // A thread delegate that waits for |duration| and then exits the process with 113 // A thread delegate that waits for |duration| and then exits the process with
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 service_manager_connection_->AddConnectionFilter( 425 service_manager_connection_->AddConnectionFilter(
426 base::MakeUnique<ChannelBootstrapFilter>(bootstrap.PassInterface())); 426 base::MakeUnique<ChannelBootstrapFilter>(bootstrap.PassInterface()));
427 427
428 channel_->Init( 428 channel_->Init(
429 IPC::ChannelMojo::CreateClientFactory( 429 IPC::ChannelMojo::CreateClientFactory(
430 std::move(handle), ChildProcess::current()->io_task_runner()), 430 std::move(handle), ChildProcess::current()->io_task_runner()),
431 true /* create_pipe_now */); 431 true /* create_pipe_now */);
432 } 432 }
433 433
434 void ChildThreadImpl::Init(const Options& options) { 434 void ChildThreadImpl::Init(const Options& options) {
435 g_lazy_tls.Pointer()->Set(this); 435 g_lazy_child_tls.Pointer()->Set(this);
436 on_channel_error_called_ = false; 436 on_channel_error_called_ = false;
437 message_loop_ = base::MessageLoop::current(); 437 message_loop_ = base::MessageLoop::current();
438 #if BUILDFLAG(IPC_MESSAGE_LOG_ENABLED) 438 #if BUILDFLAG(IPC_MESSAGE_LOG_ENABLED)
439 // We must make sure to instantiate the IPC Logger *before* we create the 439 // We must make sure to instantiate the IPC Logger *before* we create the
440 // channel, otherwise we can get a callback on the IO thread which creates 440 // channel, otherwise we can get a callback on the IO thread which creates
441 // the logger, and the logger does not like being created on the IO thread. 441 // the logger, and the logger does not like being created on the IO thread.
442 IPC::Logging::GetInstance(); 442 IPC::Logging::GetInstance();
443 #endif 443 #endif
444 444
445 channel_ = 445 channel_ =
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 618
619 // The ChannelProxy object caches a pointer to the IPC thread, so need to 619 // The ChannelProxy object caches a pointer to the IPC thread, so need to
620 // reset it as it's not guaranteed to outlive this object. 620 // reset it as it's not guaranteed to outlive this object.
621 // NOTE: this also has the side-effect of not closing the main IPC channel to 621 // NOTE: this also has the side-effect of not closing the main IPC channel to
622 // the browser process. This is needed because this is the signal that the 622 // the browser process. This is needed because this is the signal that the
623 // browser uses to know that this process has died, so we need it to be alive 623 // browser uses to know that this process has died, so we need it to be alive
624 // until this process is shut down, and the OS closes the handle 624 // until this process is shut down, and the OS closes the handle
625 // automatically. We used to watch the object handle on Windows to do this, 625 // automatically. We used to watch the object handle on Windows to do this,
626 // but it wasn't possible to do so on POSIX. 626 // but it wasn't possible to do so on POSIX.
627 channel_->ClearIPCTaskRunner(); 627 channel_->ClearIPCTaskRunner();
628 g_lazy_tls.Pointer()->Set(NULL); 628 g_lazy_child_tls.Pointer()->Set(NULL);
629 } 629 }
630 630
631 void ChildThreadImpl::Shutdown() { 631 void ChildThreadImpl::Shutdown() {
632 // Delete objects that hold references to blink so derived classes can 632 // Delete objects that hold references to blink so derived classes can
633 // safely shutdown blink in their Shutdown implementation. 633 // safely shutdown blink in their Shutdown implementation.
634 file_system_dispatcher_.reset(); 634 file_system_dispatcher_.reset();
635 quota_dispatcher_.reset(); 635 quota_dispatcher_.reset();
636 WebFileSystemImpl::DeleteThreadSpecificInstance(); 636 WebFileSystemImpl::DeleteThreadSpecificInstance();
637 } 637 }
638 638
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 #if BUILDFLAG(IPC_MESSAGE_LOG_ENABLED) 812 #if BUILDFLAG(IPC_MESSAGE_LOG_ENABLED)
813 void ChildThreadImpl::OnSetIPCLoggingEnabled(bool enable) { 813 void ChildThreadImpl::OnSetIPCLoggingEnabled(bool enable) {
814 if (enable) 814 if (enable)
815 IPC::Logging::GetInstance()->Enable(); 815 IPC::Logging::GetInstance()->Enable();
816 else 816 else
817 IPC::Logging::GetInstance()->Disable(); 817 IPC::Logging::GetInstance()->Disable();
818 } 818 }
819 #endif // IPC_MESSAGE_LOG_ENABLED 819 #endif // IPC_MESSAGE_LOG_ENABLED
820 820
821 ChildThreadImpl* ChildThreadImpl::current() { 821 ChildThreadImpl* ChildThreadImpl::current() {
822 return g_lazy_tls.Pointer()->Get(); 822 return g_lazy_child_tls.Pointer()->Get();
823 } 823 }
824 824
825 #if defined(OS_ANDROID) 825 #if defined(OS_ANDROID)
826 // The method must NOT be called on the child thread itself. 826 // The method must NOT be called on the child thread itself.
827 // It may block the child thread if so. 827 // It may block the child thread if so.
828 void ChildThreadImpl::ShutdownThread() { 828 void ChildThreadImpl::ShutdownThread() {
829 DCHECK(!ChildThreadImpl::current()) << 829 DCHECK(!ChildThreadImpl::current()) <<
830 "this method should NOT be called from child thread itself"; 830 "this method should NOT be called from child thread itself";
831 g_quit_closure.Get().PostQuitFromNonMainThread(); 831 g_quit_closure.Get().PostQuitFromNonMainThread();
832 } 832 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
865 Listener* route = router_.GetRoute(routing_id); 865 Listener* route = router_.GetRoute(routing_id);
866 if (route) 866 if (route)
867 route->OnAssociatedInterfaceRequest(name, request.PassHandle()); 867 route->OnAssociatedInterfaceRequest(name, request.PassHandle());
868 } 868 }
869 869
870 bool ChildThreadImpl::IsInBrowserProcess() const { 870 bool ChildThreadImpl::IsInBrowserProcess() const {
871 return static_cast<bool>(browser_process_io_runner_); 871 return static_cast<bool>(browser_process_io_runner_);
872 } 872 }
873 873
874 } // namespace content 874 } // namespace content
OLDNEW
« no previous file with comments | « content/child/appcache/appcache_frontend_impl.cc ('k') | content/child/notifications/notification_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698