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_process.h" | 5 #include "content/child/child_process.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
11 #include "base/metrics/statistics_recorder.h" | 11 #include "base/metrics/statistics_recorder.h" |
12 #include "base/process/process_handle.h" | 12 #include "base/process/process_handle.h" |
| 13 #include "base/single_thread_task_runner.h" |
13 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
14 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
15 #include "base/threading/thread.h" | 16 #include "base/threading/thread.h" |
16 #include "base/threading/thread_local.h" | 17 #include "base/threading/thread_local.h" |
17 #include "build/build_config.h" | 18 #include "build/build_config.h" |
18 #include "content/child/child_thread_impl.h" | 19 #include "content/child/child_thread_impl.h" |
19 | 20 |
20 #if defined(OS_ANDROID) | 21 #if defined(OS_ANDROID) |
21 #include "base/debug/debugger.h" | 22 #include "base/debug/debugger.h" |
22 #endif | 23 #endif |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 ChildThreadImpl* ChildProcess::main_thread() { | 81 ChildThreadImpl* ChildProcess::main_thread() { |
81 return main_thread_.get(); | 82 return main_thread_.get(); |
82 } | 83 } |
83 | 84 |
84 void ChildProcess::set_main_thread(ChildThreadImpl* thread) { | 85 void ChildProcess::set_main_thread(ChildThreadImpl* thread) { |
85 main_thread_.reset(thread); | 86 main_thread_.reset(thread); |
86 } | 87 } |
87 | 88 |
88 void ChildProcess::AddRefProcess() { | 89 void ChildProcess::AddRefProcess() { |
89 DCHECK(!main_thread_.get() || // null in unittests. | 90 DCHECK(!main_thread_.get() || // null in unittests. |
90 base::MessageLoop::current() == main_thread_->message_loop()); | 91 main_thread_->message_loop()->task_runner()->BelongsToCurrentThread()); |
91 ref_count_++; | 92 ref_count_++; |
92 } | 93 } |
93 | 94 |
94 void ChildProcess::ReleaseProcess() { | 95 void ChildProcess::ReleaseProcess() { |
95 DCHECK(!main_thread_.get() || // null in unittests. | 96 DCHECK(!main_thread_.get() || // null in unittests. |
96 base::MessageLoop::current() == main_thread_->message_loop()); | 97 main_thread_->message_loop()->task_runner()->BelongsToCurrentThread()); |
97 DCHECK(ref_count_); | 98 DCHECK(ref_count_); |
98 if (--ref_count_) | 99 if (--ref_count_) |
99 return; | 100 return; |
100 | 101 |
101 if (main_thread_) // null in unittests. | 102 if (main_thread_) // null in unittests. |
102 main_thread_->OnProcessFinalRelease(); | 103 main_thread_->OnProcessFinalRelease(); |
103 } | 104 } |
104 | 105 |
105 ChildProcess* ChildProcess::current() { | 106 ChildProcess* ChildProcess::current() { |
106 return g_lazy_tls.Pointer()->Get(); | 107 return g_lazy_tls.Pointer()->Get(); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 memset(&sa, 0, sizeof(sa)); | 145 memset(&sa, 0, sizeof(sa)); |
145 sa.sa_handler = SigUSR1Handler; | 146 sa.sa_handler = SigUSR1Handler; |
146 sigaction(SIGUSR1, &sa, NULL); | 147 sigaction(SIGUSR1, &sa, NULL); |
147 | 148 |
148 pause(); | 149 pause(); |
149 #endif // defined(OS_ANDROID) | 150 #endif // defined(OS_ANDROID) |
150 #endif // defined(OS_POSIX) | 151 #endif // defined(OS_POSIX) |
151 } | 152 } |
152 | 153 |
153 } // namespace content | 154 } // namespace content |
OLD | NEW |