Index: chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc |
diff --git a/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc b/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc |
index 16819e7c106efc7b57cc05e20a0d9b85591abdd4..c28da2b1e201a4041e81ff731ffd01419c959f62 100644 |
--- a/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc |
+++ b/chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc |
@@ -5,7 +5,14 @@ |
#include "chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.h" |
#include "base/logging.h" |
+#include "base/supports_user_data.h" |
+#include "chrome/browser/media/webrtc_logging_handler_host.h" |
#include "content/public/browser/browser_thread.h" |
+#include "content/public/browser/render_process_host.h" |
+#include "content/public/browser/render_view_host.h" |
+#include "content/public/browser/web_contents.h" |
+ |
+using content::BrowserThread; |
namespace extensions { |
@@ -13,6 +20,8 @@ namespace SetMetaData = api::webrtc_logging_private::SetMetaData; |
namespace SetUploadOnRenderClose = |
api::webrtc_logging_private::SetUploadOnRenderClose; |
+using api::webrtc_logging_private::MetaDataEntry; |
+ |
WebrtcLoggingPrivateSetMetaDataFunction:: |
WebrtcLoggingPrivateSetMetaDataFunction() {} |
@@ -23,9 +32,32 @@ bool WebrtcLoggingPrivateSetMetaDataFunction::RunImpl() { |
scoped_ptr<SetMetaData::Params> params(SetMetaData::Params::Create(*args_)); |
EXTENSION_FUNCTION_VALIDATE(params.get()); |
- // TODO(grunell): Implement. |
- NOTIMPLEMENTED(); |
- return false; |
+ content::RenderProcessHost* host = render_view_host()->GetProcess(); |
+ scoped_refptr<WebRtcLoggingHandlerHost> webrtc_logging_handler_host( |
+ base::UserDataAdapter<WebRtcLoggingHandlerHost>::Get(host, host)); |
+ |
+ std::map<std::string, std::string> meta_data; |
+ for (std::vector<linked_ptr<MetaDataEntry> >::const_iterator it = |
+ params->meta_data.begin(); it != params->meta_data.end(); ++it) { |
+ meta_data[(*it)->key] = (*it)->value; |
+ } |
+ |
+ WebRtcLoggingHandlerHost::GenericDoneCallback callback = base::Bind( |
+ &WebrtcLoggingPrivateSetMetaDataFunction::SetMetaDataCallback, this); |
+ |
+ BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind( |
+ &WebRtcLoggingHandlerHost::SetMetaData, webrtc_logging_handler_host, |
+ meta_data, callback)); |
+ |
+ return true; |
+} |
+ |
+void WebrtcLoggingPrivateSetMetaDataFunction::SetMetaDataCallback( |
+ bool success, const std::string& error_message) { |
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
+ if (!success) |
+ SetError(error_message); |
+ SendResponse(success); |
} |
WebrtcLoggingPrivateStartFunction::WebrtcLoggingPrivateStartFunction() {} |
@@ -33,15 +65,25 @@ WebrtcLoggingPrivateStartFunction::WebrtcLoggingPrivateStartFunction() {} |
WebrtcLoggingPrivateStartFunction::~WebrtcLoggingPrivateStartFunction() {} |
bool WebrtcLoggingPrivateStartFunction::RunImpl() { |
- // TODO(grunell): Implement. |
- NOTIMPLEMENTED(); |
- return false; |
+ content::RenderProcessHost* host = render_view_host()->GetProcess(); |
+ scoped_refptr<WebRtcLoggingHandlerHost> webrtc_logging_handler_host( |
+ base::UserDataAdapter<WebRtcLoggingHandlerHost>::Get(host, host)); |
+ |
+ WebRtcLoggingHandlerHost::GenericDoneCallback callback = base::Bind( |
+ &WebrtcLoggingPrivateStartFunction::StartCallback, this); |
+ |
+ BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind( |
+ &WebRtcLoggingHandlerHost::StartLogging, webrtc_logging_handler_host, |
+ callback)); |
+ |
+ return true; |
} |
-void WebrtcLoggingPrivateStartFunction::StartCallback(bool success) { |
+void WebrtcLoggingPrivateStartFunction::StartCallback( |
+ bool success, const std::string& error_message) { |
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
- // TODO(grunell): Implement set lastError. |
- NOTIMPLEMENTED(); |
+ if (!success) |
+ SetError(error_message); |
SendResponse(success); |
} |
@@ -56,9 +98,14 @@ bool WebrtcLoggingPrivateSetUploadOnRenderCloseFunction::RunImpl() { |
SetUploadOnRenderClose::Params::Create(*args_)); |
EXTENSION_FUNCTION_VALIDATE(params.get()); |
- // TODO(grunell): Implement. |
- NOTIMPLEMENTED(); |
- return false; |
+ content::RenderProcessHost* host = render_view_host()->GetProcess(); |
+ scoped_refptr<WebRtcLoggingHandlerHost> webrtc_logging_handler_host( |
+ base::UserDataAdapter<WebRtcLoggingHandlerHost>::Get(host, host)); |
+ |
+ webrtc_logging_handler_host->set_upload_log_on_render_close( |
+ params->should_upload); |
+ |
+ return true; |
} |
WebrtcLoggingPrivateStopFunction::WebrtcLoggingPrivateStopFunction() {} |
@@ -66,15 +113,25 @@ WebrtcLoggingPrivateStopFunction::WebrtcLoggingPrivateStopFunction() {} |
WebrtcLoggingPrivateStopFunction::~WebrtcLoggingPrivateStopFunction() {} |
bool WebrtcLoggingPrivateStopFunction::RunImpl() { |
- // TODO(grunell): Implement. |
- NOTIMPLEMENTED(); |
- return false; |
+ content::RenderProcessHost* host = render_view_host()->GetProcess(); |
+ scoped_refptr<WebRtcLoggingHandlerHost> webrtc_logging_handler_host( |
+ base::UserDataAdapter<WebRtcLoggingHandlerHost>::Get(host, host)); |
+ |
+ WebRtcLoggingHandlerHost::GenericDoneCallback callback = base::Bind( |
+ &WebrtcLoggingPrivateStopFunction::StopCallback, this); |
+ |
+ BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind( |
+ &WebRtcLoggingHandlerHost::StopLogging, webrtc_logging_handler_host, |
+ callback)); |
+ |
+ return true; |
} |
-void WebrtcLoggingPrivateStopFunction::StopCallback(bool success) { |
+void WebrtcLoggingPrivateStopFunction::StopCallback( |
+ bool success, const std::string& error_message) { |
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
- // TODO(grunell): Implement set lastError. |
- NOTIMPLEMENTED(); |
+ if (!success) |
+ SetError(error_message); |
SendResponse(success); |
} |
@@ -83,18 +140,31 @@ WebrtcLoggingPrivateUploadFunction::WebrtcLoggingPrivateUploadFunction() {} |
WebrtcLoggingPrivateUploadFunction::~WebrtcLoggingPrivateUploadFunction() {} |
bool WebrtcLoggingPrivateUploadFunction::RunImpl() { |
- // TODO(grunell): Implement. |
- NOTIMPLEMENTED(); |
- return false; |
+ content::RenderProcessHost* host = render_view_host()->GetProcess(); |
+ scoped_refptr<WebRtcLoggingHandlerHost> webrtc_logging_handler_host( |
+ base::UserDataAdapter<WebRtcLoggingHandlerHost>::Get(host, host)); |
+ |
+ WebRtcLoggingHandlerHost::UploadDoneCallback callback = base::Bind( |
+ &WebrtcLoggingPrivateUploadFunction::UploadCallback, this); |
+ |
+ BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind( |
+ &WebRtcLoggingHandlerHost::UploadLog, webrtc_logging_handler_host, |
+ callback)); |
+ |
+ return true; |
} |
void WebrtcLoggingPrivateUploadFunction::UploadCallback( |
- bool success, std::string report_id) { |
+ bool success, const std::string& report_id, |
+ const std::string& error_message) { |
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
- api::webrtc_logging_private::UploadResult result; |
- result.report_id = report_id; |
- // TODO(grunell): Implement set lastError. |
- NOTIMPLEMENTED(); |
+ if (success) { |
+ api::webrtc_logging_private::UploadResult result; |
+ result.report_id = report_id; |
+ SetResult(result.ToValue().release()); |
+ } else { |
+ SetError(error_message); |
+ } |
SendResponse(success); |
} |
@@ -103,15 +173,25 @@ WebrtcLoggingPrivateDiscardFunction::WebrtcLoggingPrivateDiscardFunction() {} |
WebrtcLoggingPrivateDiscardFunction::~WebrtcLoggingPrivateDiscardFunction() {} |
bool WebrtcLoggingPrivateDiscardFunction::RunImpl() { |
- // TODO(grunell): Implement. |
- NOTIMPLEMENTED(); |
- return false; |
+ content::RenderProcessHost* host = render_view_host()->GetProcess(); |
+ scoped_refptr<WebRtcLoggingHandlerHost> webrtc_logging_handler_host( |
+ base::UserDataAdapter<WebRtcLoggingHandlerHost>::Get(host, host)); |
+ |
+ WebRtcLoggingHandlerHost::GenericDoneCallback callback = base::Bind( |
+ &WebrtcLoggingPrivateDiscardFunction::DiscardCallback, this); |
+ |
+ BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind( |
+ &WebRtcLoggingHandlerHost::DiscardLog, webrtc_logging_handler_host, |
+ callback)); |
+ |
+ return true; |
} |
-void WebrtcLoggingPrivateDiscardFunction::DiscardCallback(bool success) { |
+void WebrtcLoggingPrivateDiscardFunction::DiscardCallback( |
+ bool success, const std::string& error_message) { |
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
- // TODO(grunell): Implement set lastError. |
- NOTIMPLEMENTED(); |
+ if (!success) |
+ SetError(error_message); |
SendResponse(success); |
} |