diff options
author | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
---|---|---|
committer | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
commit | 679147eead574d186ebf3069647b4c23e8ccace6 (patch) | |
tree | fc247a0ac8ff119f7c8550879ebb6d3dd8d1ff69 /chromium/content/browser/browser_ipc_logging.cc | |
download | qtwebengine-chromium-679147eead574d186ebf3069647b4c23e8ccace6.tar.gz |
Initial import.
Diffstat (limited to 'chromium/content/browser/browser_ipc_logging.cc')
-rw-r--r-- | chromium/content/browser/browser_ipc_logging.cc | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/chromium/content/browser/browser_ipc_logging.cc b/chromium/content/browser/browser_ipc_logging.cc new file mode 100644 index 00000000000..20a56f6f6d5 --- /dev/null +++ b/chromium/content/browser/browser_ipc_logging.cc @@ -0,0 +1,51 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/public/browser/browser_ipc_logging.h" + +#include "base/bind.h" +#include "content/common/child_process_messages.h" +#include "content/public/browser/browser_child_process_host_iterator.h" +#include "content/public/browser/browser_thread.h" +#include "content/public/browser/render_process_host.h" +#include "ipc/ipc_logging.h" + +namespace content { + +#if defined(IPC_MESSAGE_LOG_ENABLED) + +void EnableIPCLoggingForChildProcesses(bool enabled) { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); + + BrowserChildProcessHostIterator i; // default constr references a singleton + while (!i.Done()) { + i.Send(new ChildProcessMsg_SetIPCLoggingEnabled(enabled)); + ++i; + } +} + +void EnableIPCLogging(bool enable) { + // First enable myself. + if (enable) + IPC::Logging::GetInstance()->Enable(); + else + IPC::Logging::GetInstance()->Disable(); + + // Now tell subprocesses. Messages to ChildProcess-derived + // processes must be done on the IO thread. + BrowserThread::PostTask( + BrowserThread::IO, + FROM_HERE, + base::Bind(EnableIPCLoggingForChildProcesses, enable)); + + // Finally, tell the renderers which don't derive from ChildProcess. + // Messages to the renderers must be done on the UI (main) thread. + for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator()); + !i.IsAtEnd(); i.Advance()) + i.GetCurrentValue()->Send(new ChildProcessMsg_SetIPCLoggingEnabled(enable)); +} + +#endif // IPC_MESSAGE_LOG_ENABLED + +} // namespace content |