| 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 f2d762a8cf62f853a3364d8aaaebfacece6440fb..04b908f586f0104bfff92a09657039aa792beabb 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
|
| @@ -2,16 +2,14 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include <string>
|
| -
|
| #include "chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.h"
|
|
|
| +#include "base/hash.h"
|
| #include "base/logging.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/supports_user_data.h"
|
| #include "chrome/browser/extensions/api/tabs/tabs_constants.h"
|
| #include "chrome/browser/extensions/extension_tab_util.h"
|
| -#include "chrome/browser/media/webrtc_logging_handler_host.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/render_process_host.h"
|
| @@ -21,22 +19,30 @@
|
| #include "extensions/browser/process_manager.h"
|
| #include "extensions/common/error_utils.h"
|
|
|
| -using content::BrowserThread;
|
| -
|
| namespace extensions {
|
|
|
| +using api::webrtc_logging_private::MetaDataEntry;
|
| +using api::webrtc_logging_private::RequestInfo;
|
| +using content::BrowserThread;
|
| +
|
| +namespace Discard = api::webrtc_logging_private::Discard;
|
| namespace SetMetaData = api::webrtc_logging_private::SetMetaData;
|
| -namespace Start = api::webrtc_logging_private::Start;
|
| namespace SetUploadOnRenderClose =
|
| api::webrtc_logging_private::SetUploadOnRenderClose;
|
| -namespace Stop = api::webrtc_logging_private::Stop;
|
| -namespace Upload = api::webrtc_logging_private::Upload;
|
| -namespace Discard = api::webrtc_logging_private::Discard;
|
| +namespace Start = api::webrtc_logging_private::Start;
|
| namespace StartRtpDump = api::webrtc_logging_private::StartRtpDump;
|
| +namespace Stop = api::webrtc_logging_private::Stop;
|
| namespace StopRtpDump = api::webrtc_logging_private::StopRtpDump;
|
| +namespace Store = api::webrtc_logging_private::Store;
|
| +namespace Upload = api::webrtc_logging_private::Upload;
|
| +namespace UploadStored = api::webrtc_logging_private::UploadStored;
|
|
|
| -using api::webrtc_logging_private::MetaDataEntry;
|
| -using api::webrtc_logging_private::RequestInfo;
|
| +namespace {
|
| +std::string HashIdWithOrigin(const std::string& security_origin,
|
| + const std::string& log_id) {
|
| + return base::UintToString(base::Hash(security_origin + log_id));
|
| +}
|
| +} // namespace
|
|
|
| content::RenderProcessHost* WebrtcLoggingPrivateFunction::RphFromRequest(
|
| const RequestInfo& request, const std::string& security_origin) {
|
| @@ -74,67 +80,79 @@ content::RenderProcessHost* WebrtcLoggingPrivateFunction::RphFromRequest(
|
| return contents->GetRenderProcessHost();
|
| }
|
|
|
| -WebrtcLoggingPrivateSetMetaDataFunction::
|
| -WebrtcLoggingPrivateSetMetaDataFunction() {}
|
| +scoped_refptr<WebRtcLoggingHandlerHost>
|
| +WebrtcLoggingPrivateFunction::LoggingHandlerFromRequest(
|
| + const api::webrtc_logging_private::RequestInfo& request,
|
| + const std::string& security_origin) {
|
| + content::RenderProcessHost* host = RphFromRequest(request, security_origin);
|
| + if (!host)
|
| + return nullptr;
|
|
|
| -WebrtcLoggingPrivateSetMetaDataFunction::
|
| -~WebrtcLoggingPrivateSetMetaDataFunction() {}
|
| + return base::UserDataAdapter<WebRtcLoggingHandlerHost>::Get(host, host);
|
| +}
|
| +
|
| +scoped_refptr<WebRtcLoggingHandlerHost>
|
| +WebrtcLoggingPrivateFunctionWithGenericCallback::PrepareTask(
|
| + const RequestInfo& request, const std::string& security_origin,
|
| + WebRtcLoggingHandlerHost::GenericDoneCallback* callback) {
|
| + *callback = base::Bind(
|
| + &WebrtcLoggingPrivateFunctionWithGenericCallback::FireCallback, this);
|
| + return LoggingHandlerFromRequest(request, security_origin);
|
| +}
|
| +
|
| +void WebrtcLoggingPrivateFunctionWithGenericCallback::FireCallback(
|
| + bool success, const std::string& error_message) {
|
| + DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| + if (!success)
|
| + SetError(error_message);
|
| + SendResponse(success);
|
| +}
|
| +
|
| +void WebrtcLoggingPrivateFunctionWithUploadCallback::FireCallback(
|
| + bool success, const std::string& report_id,
|
| + const std::string& error_message) {
|
| + DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| + if (success) {
|
| + api::webrtc_logging_private::UploadResult result;
|
| + result.report_id = report_id;
|
| + SetResult(result.ToValue().release());
|
| + } else {
|
| + SetError(error_message);
|
| + }
|
| + SendResponse(success);
|
| +}
|
|
|
| bool WebrtcLoggingPrivateSetMetaDataFunction::RunAsync() {
|
| scoped_ptr<SetMetaData::Params> params(SetMetaData::Params::Create(*args_));
|
| EXTENSION_FUNCTION_VALIDATE(params.get());
|
|
|
| - content::RenderProcessHost* host =
|
| - RphFromRequest(params->request, params->security_origin);
|
| - if (!host)
|
| + WebRtcLoggingHandlerHost::GenericDoneCallback callback;
|
| + scoped_refptr<WebRtcLoggingHandlerHost> webrtc_logging_handler_host =
|
| + PrepareTask(params->request, params->security_origin, &callback);
|
| + if (!webrtc_logging_handler_host.get())
|
| return false;
|
|
|
| - 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);
|
| + scoped_ptr<MetaDataMap> meta_data(new MetaDataMap());
|
| + for (const linked_ptr<MetaDataEntry>& entry : params->meta_data)
|
| + (*meta_data.get())[entry->key] = entry->value;
|
|
|
| BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind(
|
| &WebRtcLoggingHandlerHost::SetMetaData, webrtc_logging_handler_host,
|
| - meta_data, callback));
|
| + base::Passed(&meta_data), callback));
|
|
|
| return true;
|
| }
|
|
|
| -void WebrtcLoggingPrivateSetMetaDataFunction::SetMetaDataCallback(
|
| - bool success, const std::string& error_message) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| - if (!success)
|
| - SetError(error_message);
|
| - SendResponse(success);
|
| -}
|
| -
|
| -WebrtcLoggingPrivateStartFunction::WebrtcLoggingPrivateStartFunction() {}
|
| -
|
| -WebrtcLoggingPrivateStartFunction::~WebrtcLoggingPrivateStartFunction() {}
|
| -
|
| bool WebrtcLoggingPrivateStartFunction::RunAsync() {
|
| scoped_ptr<Start::Params> params(Start::Params::Create(*args_));
|
| EXTENSION_FUNCTION_VALIDATE(params.get());
|
|
|
| - content::RenderProcessHost* host =
|
| - RphFromRequest(params->request, params->security_origin);
|
| - if (!host)
|
| + WebRtcLoggingHandlerHost::GenericDoneCallback callback;
|
| + scoped_refptr<WebRtcLoggingHandlerHost> webrtc_logging_handler_host =
|
| + PrepareTask(params->request, params->security_origin, &callback);
|
| + if (!webrtc_logging_handler_host.get())
|
| return false;
|
|
|
| - 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));
|
| @@ -142,32 +160,15 @@ bool WebrtcLoggingPrivateStartFunction::RunAsync() {
|
| return true;
|
| }
|
|
|
| -void WebrtcLoggingPrivateStartFunction::StartCallback(
|
| - bool success, const std::string& error_message) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| - if (!success)
|
| - SetError(error_message);
|
| - SendResponse(success);
|
| -}
|
| -
|
| -WebrtcLoggingPrivateSetUploadOnRenderCloseFunction::
|
| -WebrtcLoggingPrivateSetUploadOnRenderCloseFunction() {}
|
| -
|
| -WebrtcLoggingPrivateSetUploadOnRenderCloseFunction::
|
| -~WebrtcLoggingPrivateSetUploadOnRenderCloseFunction() {}
|
| -
|
| bool WebrtcLoggingPrivateSetUploadOnRenderCloseFunction::RunAsync() {
|
| scoped_ptr<SetUploadOnRenderClose::Params> params(
|
| SetUploadOnRenderClose::Params::Create(*args_));
|
| EXTENSION_FUNCTION_VALIDATE(params.get());
|
|
|
| - content::RenderProcessHost* host =
|
| - RphFromRequest(params->request, params->security_origin);
|
| - if (!host)
|
| - return false;
|
| -
|
| scoped_refptr<WebRtcLoggingHandlerHost> webrtc_logging_handler_host(
|
| - base::UserDataAdapter<WebRtcLoggingHandlerHost>::Get(host, host));
|
| + LoggingHandlerFromRequest(params->request, params->security_origin));
|
| + if (!webrtc_logging_handler_host.get())
|
| + return false;
|
|
|
| webrtc_logging_handler_host->set_upload_log_on_render_close(
|
| params->should_upload);
|
| @@ -175,25 +176,16 @@ bool WebrtcLoggingPrivateSetUploadOnRenderCloseFunction::RunAsync() {
|
| return true;
|
| }
|
|
|
| -WebrtcLoggingPrivateStopFunction::WebrtcLoggingPrivateStopFunction() {}
|
| -
|
| -WebrtcLoggingPrivateStopFunction::~WebrtcLoggingPrivateStopFunction() {}
|
| -
|
| bool WebrtcLoggingPrivateStopFunction::RunAsync() {
|
| scoped_ptr<Stop::Params> params(Stop::Params::Create(*args_));
|
| EXTENSION_FUNCTION_VALIDATE(params.get());
|
|
|
| - content::RenderProcessHost* host =
|
| - RphFromRequest(params->request, params->security_origin);
|
| - if (!host)
|
| + WebRtcLoggingHandlerHost::GenericDoneCallback callback;
|
| + scoped_refptr<WebRtcLoggingHandlerHost> webrtc_logging_handler_host =
|
| + PrepareTask(params->request, params->security_origin, &callback);
|
| + if (!webrtc_logging_handler_host.get())
|
| return false;
|
|
|
| - 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));
|
| @@ -201,73 +193,76 @@ bool WebrtcLoggingPrivateStopFunction::RunAsync() {
|
| return true;
|
| }
|
|
|
| -void WebrtcLoggingPrivateStopFunction::StopCallback(
|
| - bool success, const std::string& error_message) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| - if (!success)
|
| - SetError(error_message);
|
| - SendResponse(success);
|
| -}
|
| +bool WebrtcLoggingPrivateStoreFunction::RunAsync() {
|
| + scoped_ptr<Store::Params> params(Store::Params::Create(*args_));
|
| + EXTENSION_FUNCTION_VALIDATE(params.get());
|
|
|
| -WebrtcLoggingPrivateUploadFunction::WebrtcLoggingPrivateUploadFunction() {}
|
| + WebRtcLoggingHandlerHost::GenericDoneCallback callback;
|
| + scoped_refptr<WebRtcLoggingHandlerHost> webrtc_logging_handler_host =
|
| + PrepareTask(params->request, params->security_origin, &callback);
|
| + if (!webrtc_logging_handler_host.get())
|
| + return false;
|
|
|
| -WebrtcLoggingPrivateUploadFunction::~WebrtcLoggingPrivateUploadFunction() {}
|
| + const std::string local_log_id(HashIdWithOrigin(params->security_origin,
|
| + params->log_id));
|
|
|
| -bool WebrtcLoggingPrivateUploadFunction::RunAsync() {
|
| - scoped_ptr<Upload::Params> params(Upload::Params::Create(*args_));
|
| + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind(
|
| + &WebRtcLoggingHandlerHost::StoreLog,
|
| + webrtc_logging_handler_host, local_log_id, callback));
|
| +
|
| + return true;
|
| +}
|
| +
|
| +bool WebrtcLoggingPrivateUploadStoredFunction::RunAsync() {
|
| + scoped_ptr<UploadStored::Params> params(UploadStored::Params::Create(*args_));
|
| EXTENSION_FUNCTION_VALIDATE(params.get());
|
|
|
| - content::RenderProcessHost* host =
|
| - RphFromRequest(params->request, params->security_origin);
|
| - if (!host)
|
| + scoped_refptr<WebRtcLoggingHandlerHost> logging_handler(
|
| + LoggingHandlerFromRequest(params->request, params->security_origin));
|
| + if (!logging_handler.get())
|
| return false;
|
|
|
| - scoped_refptr<WebRtcLoggingHandlerHost> webrtc_logging_handler_host(
|
| - base::UserDataAdapter<WebRtcLoggingHandlerHost>::Get(host, host));
|
| -
|
| WebRtcLoggingHandlerHost::UploadDoneCallback callback = base::Bind(
|
| - &WebrtcLoggingPrivateUploadFunction::UploadCallback, this);
|
| + &WebrtcLoggingPrivateUploadStoredFunction::FireCallback, this);
|
| +
|
| + const std::string local_log_id(HashIdWithOrigin(params->security_origin,
|
| + params->log_id));
|
|
|
| BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind(
|
| - &WebRtcLoggingHandlerHost::UploadLog, webrtc_logging_handler_host,
|
| + &WebRtcLoggingHandlerHost::UploadStoredLog, logging_handler, local_log_id,
|
| callback));
|
|
|
| return true;
|
| }
|
|
|
| -void WebrtcLoggingPrivateUploadFunction::UploadCallback(
|
| - bool success, const std::string& report_id,
|
| - const std::string& error_message) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| - if (success) {
|
| - api::webrtc_logging_private::UploadResult result;
|
| - result.report_id = report_id;
|
| - SetResult(result.ToValue().release());
|
| - } else {
|
| - SetError(error_message);
|
| - }
|
| - SendResponse(success);
|
| -}
|
| +bool WebrtcLoggingPrivateUploadFunction::RunAsync() {
|
| + scoped_ptr<Upload::Params> params(Upload::Params::Create(*args_));
|
| + EXTENSION_FUNCTION_VALIDATE(params.get());
|
| +
|
| + scoped_refptr<WebRtcLoggingHandlerHost> logging_handler(
|
| + LoggingHandlerFromRequest(params->request, params->security_origin));
|
| + if (!logging_handler.get())
|
| + return false;
|
|
|
| -WebrtcLoggingPrivateDiscardFunction::WebrtcLoggingPrivateDiscardFunction() {}
|
| + WebRtcLoggingHandlerHost::UploadDoneCallback callback = base::Bind(
|
| + &WebrtcLoggingPrivateUploadFunction::FireCallback, this);
|
|
|
| -WebrtcLoggingPrivateDiscardFunction::~WebrtcLoggingPrivateDiscardFunction() {}
|
| + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind(
|
| + &WebRtcLoggingHandlerHost::UploadLog, logging_handler, callback));
|
| +
|
| + return true;
|
| +}
|
|
|
| bool WebrtcLoggingPrivateDiscardFunction::RunAsync() {
|
| scoped_ptr<Discard::Params> params(Discard::Params::Create(*args_));
|
| EXTENSION_FUNCTION_VALIDATE(params.get());
|
|
|
| - content::RenderProcessHost* host =
|
| - RphFromRequest(params->request, params->security_origin);
|
| - if (!host)
|
| + WebRtcLoggingHandlerHost::GenericDoneCallback callback;
|
| + scoped_refptr<WebRtcLoggingHandlerHost> webrtc_logging_handler_host =
|
| + PrepareTask(params->request, params->security_origin, &callback);
|
| + if (!webrtc_logging_handler_host.get())
|
| return false;
|
|
|
| - 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));
|
| @@ -275,26 +270,12 @@ bool WebrtcLoggingPrivateDiscardFunction::RunAsync() {
|
| return true;
|
| }
|
|
|
| -void WebrtcLoggingPrivateDiscardFunction::DiscardCallback(
|
| - bool success, const std::string& error_message) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| - if (!success)
|
| - SetError(error_message);
|
| - SendResponse(success);
|
| -}
|
| -
|
| -WebrtcLoggingPrivateStartRtpDumpFunction::
|
| - WebrtcLoggingPrivateStartRtpDumpFunction() {}
|
| -
|
| -WebrtcLoggingPrivateStartRtpDumpFunction::
|
| - ~WebrtcLoggingPrivateStartRtpDumpFunction() {}
|
| -
|
| bool WebrtcLoggingPrivateStartRtpDumpFunction::RunAsync() {
|
| scoped_ptr<StartRtpDump::Params> params(StartRtpDump::Params::Create(*args_));
|
| EXTENSION_FUNCTION_VALIDATE(params.get());
|
|
|
| if (!params->incoming && !params->outgoing) {
|
| - StartRtpDumpCallback(false, "Either incoming or outgoing must be true.");
|
| + FireCallback(false, "Either incoming or outgoing must be true.");
|
| return true;
|
| }
|
|
|
| @@ -312,7 +293,7 @@ bool WebrtcLoggingPrivateStartRtpDumpFunction::RunAsync() {
|
| base::UserDataAdapter<WebRtcLoggingHandlerHost>::Get(host, host));
|
|
|
| WebRtcLoggingHandlerHost::GenericDoneCallback callback = base::Bind(
|
| - &WebrtcLoggingPrivateStartRtpDumpFunction::StartRtpDumpCallback, this);
|
| + &WebrtcLoggingPrivateStartRtpDumpFunction::FireCallback, this);
|
|
|
| // This call cannot fail.
|
| content::RenderProcessHost::WebRtcStopRtpDumpCallback stop_callback =
|
| @@ -331,27 +312,12 @@ bool WebrtcLoggingPrivateStartRtpDumpFunction::RunAsync() {
|
| return true;
|
| }
|
|
|
| -void WebrtcLoggingPrivateStartRtpDumpFunction::StartRtpDumpCallback(
|
| - bool success,
|
| - const std::string& error_message) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| - if (!success)
|
| - SetError(error_message);
|
| - SendResponse(success);
|
| -}
|
| -
|
| -WebrtcLoggingPrivateStopRtpDumpFunction::
|
| - WebrtcLoggingPrivateStopRtpDumpFunction() {}
|
| -
|
| -WebrtcLoggingPrivateStopRtpDumpFunction::
|
| - ~WebrtcLoggingPrivateStopRtpDumpFunction() {}
|
| -
|
| bool WebrtcLoggingPrivateStopRtpDumpFunction::RunAsync() {
|
| scoped_ptr<StopRtpDump::Params> params(StopRtpDump::Params::Create(*args_));
|
| EXTENSION_FUNCTION_VALIDATE(params.get());
|
|
|
| if (!params->incoming && !params->outgoing) {
|
| - StopRtpDumpCallback(false, "Either incoming or outgoing must be true.");
|
| + FireCallback(false, "Either incoming or outgoing must be true.");
|
| return true;
|
| }
|
|
|
| @@ -369,7 +335,7 @@ bool WebrtcLoggingPrivateStopRtpDumpFunction::RunAsync() {
|
| base::UserDataAdapter<WebRtcLoggingHandlerHost>::Get(host, host));
|
|
|
| WebRtcLoggingHandlerHost::GenericDoneCallback callback = base::Bind(
|
| - &WebrtcLoggingPrivateStopRtpDumpFunction::StopRtpDumpCallback, this);
|
| + &WebrtcLoggingPrivateStopRtpDumpFunction::FireCallback, this);
|
|
|
| BrowserThread::PostTask(BrowserThread::IO,
|
| FROM_HERE,
|
| @@ -380,13 +346,4 @@ bool WebrtcLoggingPrivateStopRtpDumpFunction::RunAsync() {
|
| return true;
|
| }
|
|
|
| -void WebrtcLoggingPrivateStopRtpDumpFunction::StopRtpDumpCallback(
|
| - bool success,
|
| - const std::string& error_message) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| - if (!success)
|
| - SetError(error_message);
|
| - SendResponse(success);
|
| -}
|
| -
|
| } // namespace extensions
|
|
|