OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/public/browser/content_ipc_logging.h" | 5 #include "content/public/browser/content_ipc_logging.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "content/browser/browser_child_process_host.h" | 8 #include "content/browser/browser_child_process_host.h" |
9 #include "content/common/child_process_messages.h" | 9 #include "content/common/child_process_messages.h" |
| 10 #include "content/public/browser/browser_child_process_host_iterator.h" |
10 #include "content/public/browser/browser_thread.h" | 11 #include "content/public/browser/browser_thread.h" |
11 #include "content/public/browser/render_process_host.h" | 12 #include "content/public/browser/render_process_host.h" |
12 #include "ipc/ipc_logging.h" | 13 #include "ipc/ipc_logging.h" |
13 | 14 |
14 namespace content { | 15 namespace content { |
15 | 16 |
16 #if defined(IPC_MESSAGE_LOG_ENABLED) | 17 #if defined(IPC_MESSAGE_LOG_ENABLED) |
17 | 18 |
18 void EnableIPCLoggingForChildProcesses(bool enabled) { | 19 void EnableIPCLoggingForChildProcesses(bool enabled) { |
19 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 20 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
20 | 21 |
21 BrowserChildProcessHost::Iterator i; // default constr references a singleton | 22 BrowserChildProcessHostIterator i; // default constr references a singleton |
22 while (!i.Done()) { | 23 while (!i.Done()) { |
23 i->Send(new ChildProcessMsg_SetIPCLoggingEnabled(enabled)); | 24 i.Send(new ChildProcessMsg_SetIPCLoggingEnabled(enabled)); |
24 ++i; | 25 ++i; |
25 } | 26 } |
26 } | 27 } |
27 | 28 |
28 void EnableIPCLogging(bool enable) { | 29 void EnableIPCLogging(bool enable) { |
29 // First enable myself. | 30 // First enable myself. |
30 if (enable) | 31 if (enable) |
31 IPC::Logging::GetInstance()->Enable(); | 32 IPC::Logging::GetInstance()->Enable(); |
32 else | 33 else |
33 IPC::Logging::GetInstance()->Disable(); | 34 IPC::Logging::GetInstance()->Disable(); |
34 | 35 |
35 // Now tell subprocesses. Messages to ChildProcess-derived | 36 // Now tell subprocesses. Messages to ChildProcess-derived |
36 // processes must be done on the IO thread. | 37 // processes must be done on the IO thread. |
37 BrowserThread::PostTask( | 38 BrowserThread::PostTask( |
38 BrowserThread::IO, | 39 BrowserThread::IO, |
39 FROM_HERE, | 40 FROM_HERE, |
40 base::Bind(EnableIPCLoggingForChildProcesses, enable)); | 41 base::Bind(EnableIPCLoggingForChildProcesses, enable)); |
41 | 42 |
42 // Finally, tell the renderers which don't derive from ChildProcess. | 43 // Finally, tell the renderers which don't derive from ChildProcess. |
43 // Messages to the renderers must be done on the UI (main) thread. | 44 // Messages to the renderers must be done on the UI (main) thread. |
44 for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator()); | 45 for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator()); |
45 !i.IsAtEnd(); i.Advance()) | 46 !i.IsAtEnd(); i.Advance()) |
46 i.GetCurrentValue()->Send(new ChildProcessMsg_SetIPCLoggingEnabled(enable)); | 47 i.GetCurrentValue()->Send(new ChildProcessMsg_SetIPCLoggingEnabled(enable)); |
47 } | 48 } |
48 | 49 |
49 #endif // IPC_MESSAGE_LOG_ENABLED | 50 #endif // IPC_MESSAGE_LOG_ENABLED |
50 | 51 |
51 } // namespace content | 52 } // namespace content |
OLD | NEW |