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 |