Chromium Code Reviews| Index: content/browser/renderer_host/media/webrtc_logging_handler_host.cc |
| diff --git a/content/browser/renderer_host/media/webrtc_logging_handler_host.cc b/content/browser/renderer_host/media/webrtc_logging_handler_host.cc |
| index 00d90fd8553091d344c3f8b298f4ef6c17b277b5..ad32bf1654f62e1d3eaac034311f2188deb681ce 100644 |
| --- a/content/browser/renderer_host/media/webrtc_logging_handler_host.cc |
| +++ b/content/browser/renderer_host/media/webrtc_logging_handler_host.cc |
| @@ -6,19 +6,21 @@ |
| #include "base/bind.h" |
| #include "base/logging.h" |
| +#include "base/shared_memory.h" |
| #include "content/common/media/webrtc_logging_messages.h" |
| +#include "content/public/browser/browser_thread.h" |
| +#include "content/public/browser/content_browser_client.h" |
| namespace content { |
| const size_t kWebRtcLogSize = 6 * 1024 * 1024; // 6 MB |
| -WebRtcLoggingHandlerHost::WebRtcLoggingHandlerHost() { |
| -} |
| +WebRtcLoggingHandlerHost::WebRtcLoggingHandlerHost() {} |
| -WebRtcLoggingHandlerHost::~WebRtcLoggingHandlerHost() { |
| -} |
| +WebRtcLoggingHandlerHost::~WebRtcLoggingHandlerHost() {} |
| void WebRtcLoggingHandlerHost::OnChannelClosing() { |
| + UploadLog(); |
| BrowserMessageFilter::OnChannelClosing(); |
| } |
| @@ -40,16 +42,35 @@ bool WebRtcLoggingHandlerHost::OnMessageReceived(const IPC::Message& message, |
| void WebRtcLoggingHandlerHost::OnOpenLog() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| - DCHECK(!base::SharedMemory::IsHandleValid(shared_memory_.handle())); |
| - if (!shared_memory_.CreateAndMapAnonymous(kWebRtcLogSize)) { |
| + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, base::Bind( |
| + &WebRtcLoggingHandlerHost::CheckLoggingAllowed, this)); |
| +} |
| + |
| +void WebRtcLoggingHandlerHost::CheckLoggingAllowed() { |
|
Jói
2013/05/14 21:30:29
The name could be a bit more descriptive; how abou
Henrik Grunell
2013/05/15 20:17:53
sgtm, done.
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + |
| + if (!GetContentClient()->browser()->IsWebRtcLoggingAllowed()) |
| + return; |
| + |
| + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind( |
| + &WebRtcLoggingHandlerHost::DoOpenLog, this)); |
| +} |
| + |
| +void WebRtcLoggingHandlerHost::DoOpenLog() { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| + DCHECK(!shared_memory_); |
| + |
| + shared_memory_.reset(new base::SharedMemory()); |
| + |
| + if (!shared_memory_->CreateAndMapAnonymous(kWebRtcLogSize)) { |
| DLOG(ERROR) << "Failed to create shared memory."; |
| Send(new WebRtcLoggingMsg_OpenLogFailed()); |
| return; |
| } |
| base::SharedMemoryHandle foreign_memory_handle; |
| - if (!shared_memory_.ShareToProcess(peer_handle(), |
| + if (!shared_memory_->ShareToProcess(peer_handle(), |
| &foreign_memory_handle)) { |
| Send(new WebRtcLoggingMsg_OpenLogFailed()); |
| return; |
| @@ -58,4 +79,15 @@ void WebRtcLoggingHandlerHost::OnOpenLog() { |
| Send(new WebRtcLoggingMsg_LogOpened(foreign_memory_handle, kWebRtcLogSize)); |
| } |
| +void WebRtcLoggingHandlerHost::UploadLog() { |
| + if (!shared_memory_) |
| + return; |
| + |
| + BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, base::Bind( |
| + &ContentBrowserClient::UploadWebRtcLog, |
| + base::Unretained(GetContentClient()->browser()), |
| + Passed(&shared_memory_), |
| + kWebRtcLogSize)); |
| +} |
| + |
| } // namespace content |