Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(475)

Side by Side Diff: chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc

Issue 1650133002: Start and stop RTC event logs from private extension API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Create a new handler for the internal WebRTC logs instead of using WebRTCLoggingHandlerHost. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_pr ivate_api.h" 5 #include "chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_pr ivate_api.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/hash.h" 8 #include "base/hash.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 24 matching lines...) Expand all
35 namespace StartRtpDump = api::webrtc_logging_private::StartRtpDump; 35 namespace StartRtpDump = api::webrtc_logging_private::StartRtpDump;
36 namespace Stop = api::webrtc_logging_private::Stop; 36 namespace Stop = api::webrtc_logging_private::Stop;
37 namespace StopRtpDump = api::webrtc_logging_private::StopRtpDump; 37 namespace StopRtpDump = api::webrtc_logging_private::StopRtpDump;
38 namespace Store = api::webrtc_logging_private::Store; 38 namespace Store = api::webrtc_logging_private::Store;
39 namespace Upload = api::webrtc_logging_private::Upload; 39 namespace Upload = api::webrtc_logging_private::Upload;
40 namespace UploadStored = api::webrtc_logging_private::UploadStored; 40 namespace UploadStored = api::webrtc_logging_private::UploadStored;
41 namespace StartAudioDebugRecordings = 41 namespace StartAudioDebugRecordings =
42 api::webrtc_logging_private::StartAudioDebugRecordings; 42 api::webrtc_logging_private::StartAudioDebugRecordings;
43 namespace StopAudioDebugRecordings = 43 namespace StopAudioDebugRecordings =
44 api::webrtc_logging_private::StopAudioDebugRecordings; 44 api::webrtc_logging_private::StopAudioDebugRecordings;
45 namespace StartRtcEventLogging =
46 api::webrtc_logging_private::StartRtcEventLogging;
47 namespace StopRtcEventLogging =
48 api::webrtc_logging_private::StopRtcEventLogging;
45 49
46 namespace { 50 namespace {
47 std::string HashIdWithOrigin(const std::string& security_origin, 51 std::string HashIdWithOrigin(const std::string& security_origin,
48 const std::string& log_id) { 52 const std::string& log_id) {
49 return base::UintToString(base::Hash(security_origin + log_id)); 53 return base::UintToString(base::Hash(security_origin + log_id));
50 } 54 }
51 } // namespace 55 } // namespace
52 56
53 content::RenderProcessHost* WebrtcLoggingPrivateFunction::RphFromRequest( 57 content::RenderProcessHost* WebrtcLoggingPrivateFunction::RphFromRequest(
54 const RequestInfo& request, const std::string& security_origin) { 58 const RequestInfo& request, const std::string& security_origin) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 if (success) { 127 if (success) {
124 api::webrtc_logging_private::UploadResult result; 128 api::webrtc_logging_private::UploadResult result;
125 result.report_id = report_id; 129 result.report_id = report_id;
126 SetResult(result.ToValue().release()); 130 SetResult(result.ToValue().release());
127 } else { 131 } else {
128 SetError(error_message); 132 SetError(error_message);
129 } 133 }
130 SendResponse(success); 134 SendResponse(success);
131 } 135 }
132 136
133 void WebrtcLoggingPrivateFunctionWithAudioDebugRecordingsCallback:: 137 void WebrtcLoggingPrivateFunctionWithTimeLimitedRecordingCallback::
134 FireErrorCallback(const std::string& error_message) { 138 FireErrorCallback(const std::string& error_message) {
135 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 139 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
136 SetError(error_message); 140 SetError(error_message);
137 SendResponse(false); 141 SendResponse(false);
138 } 142 }
139 143
140 void WebrtcLoggingPrivateFunctionWithAudioDebugRecordingsCallback::FireCallback( 144 void WebrtcLoggingPrivateFunctionWithTimeLimitedRecordingCallback::FireCallback(
141 const std::string& prefix_path, 145 const std::string& prefix_path,
142 bool did_stop, 146 bool did_stop,
143 bool did_manual_stop) { 147 bool did_manual_stop) {
144 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 148 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
145 api::webrtc_logging_private::AudioDebugRecordingsInfo result; 149 api::webrtc_logging_private::TimeLimitedRecordingInfo result;
146 result.prefix_path = prefix_path; 150 result.prefix_path = prefix_path;
147 result.did_stop = did_stop; 151 result.did_stop = did_stop;
148 result.did_manual_stop = did_manual_stop; 152 result.did_manual_stop = did_manual_stop;
149 SetResult(result.ToValue().release()); 153 SetResult(result.ToValue().release());
150 SendResponse(true); 154 SendResponse(true);
151 } 155 }
152 156
153 bool WebrtcLoggingPrivateSetMetaDataFunction::RunAsync() { 157 bool WebrtcLoggingPrivateSetMetaDataFunction::RunAsync() {
154 scoped_ptr<SetMetaData::Params> params(SetMetaData::Params::Create(*args_)); 158 scoped_ptr<SetMetaData::Params> params(SetMetaData::Params::Create(*args_));
155 EXTENSION_FUNCTION_VALIDATE(params.get()); 159 EXTENSION_FUNCTION_VALIDATE(params.get());
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 if (params->seconds < 0) { 391 if (params->seconds < 0) {
388 FireErrorCallback("seconds must be greater than or equal to 0"); 392 FireErrorCallback("seconds must be greater than or equal to 0");
389 return true; 393 return true;
390 } 394 }
391 395
392 content::RenderProcessHost* host = 396 content::RenderProcessHost* host =
393 RphFromRequest(params->request, params->security_origin); 397 RphFromRequest(params->request, params->security_origin);
394 if (!host) 398 if (!host)
395 return false; 399 return false;
396 400
397 scoped_refptr<WebRtcLoggingHandlerHost> webrtc_logging_handler_host( 401 scoped_refptr<WebRtcInternalLogHandlerHost> webrtc_internal_log_handler_host(
398 base::UserDataAdapter<WebRtcLoggingHandlerHost>::Get(host, host)); 402 base::UserDataAdapter<WebRtcInternalLogHandlerHost>::Get(host, host));
399 403
400 webrtc_logging_handler_host->StartAudioDebugRecordings( 404 webrtc_internal_log_handler_host->StartAudioDebugRecordings(
401 host, base::TimeDelta::FromSeconds(params->seconds), 405 host, base::TimeDelta::FromSeconds(params->seconds),
402 base::Bind( 406 base::Bind(
403 &WebrtcLoggingPrivateStartAudioDebugRecordingsFunction::FireCallback, 407 &WebrtcLoggingPrivateStartAudioDebugRecordingsFunction::FireCallback,
404 this), 408 this),
405 base::Bind(&WebrtcLoggingPrivateStartAudioDebugRecordingsFunction:: 409 base::Bind(&WebrtcLoggingPrivateStartAudioDebugRecordingsFunction::
406 FireErrorCallback, 410 FireErrorCallback,
407 this)); 411 this));
408 return true; 412 return true;
409 } 413 }
410 414
411 bool WebrtcLoggingPrivateStopAudioDebugRecordingsFunction::RunAsync() { 415 bool WebrtcLoggingPrivateStopAudioDebugRecordingsFunction::RunAsync() {
412 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( 416 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
413 switches::kEnableAudioDebugRecordingsFromExtension)) { 417 switches::kEnableAudioDebugRecordingsFromExtension)) {
414 return false; 418 return false;
415 } 419 }
416 420
417 scoped_ptr<StopAudioDebugRecordings::Params> params( 421 scoped_ptr<StopAudioDebugRecordings::Params> params(
418 StopAudioDebugRecordings::Params::Create(*args_)); 422 StopAudioDebugRecordings::Params::Create(*args_));
419 EXTENSION_FUNCTION_VALIDATE(params.get()); 423 EXTENSION_FUNCTION_VALIDATE(params.get());
420 424
421 content::RenderProcessHost* host = 425 content::RenderProcessHost* host =
422 RphFromRequest(params->request, params->security_origin); 426 RphFromRequest(params->request, params->security_origin);
423 if (!host) 427 if (!host)
424 return false; 428 return false;
425 429
426 scoped_refptr<WebRtcLoggingHandlerHost> webrtc_logging_handler_host( 430 scoped_refptr<WebRtcInternalLogHandlerHost> webrtc_internal_log_handler_host(
427 base::UserDataAdapter<WebRtcLoggingHandlerHost>::Get(host, host)); 431 base::UserDataAdapter<WebRtcInternalLogHandlerHost>::Get(host, host));
428 432
429 webrtc_logging_handler_host->StopAudioDebugRecordings( 433 webrtc_internal_log_handler_host->StopAudioDebugRecordings(
430 host, 434 host,
431 base::Bind( 435 base::Bind(
432 &WebrtcLoggingPrivateStopAudioDebugRecordingsFunction::FireCallback, 436 &WebrtcLoggingPrivateStopAudioDebugRecordingsFunction::FireCallback,
433 this), 437 this),
434 base::Bind(&WebrtcLoggingPrivateStopAudioDebugRecordingsFunction:: 438 base::Bind(&WebrtcLoggingPrivateStopAudioDebugRecordingsFunction::
435 FireErrorCallback, 439 FireErrorCallback,
436 this)); 440 this));
437 return true; 441 return true;
438 } 442 }
439 443
444 bool WebrtcLoggingPrivateStartRtcEventLoggingFunction::RunAsync() {
445 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
446 switches::kEnableRtcEventLoggingFromExtension)) {
tommi (sloooow) - chröme 2016/02/05 11:09:00 Is there information about when this switch will b
terelius1 2016/02/16 20:09:12 Extra privacy protection. See previous comments an
447 return false;
448 }
449
450 scoped_ptr<StartRtcEventLogging::Params> params(
451 StartRtcEventLogging::Params::Create(*args_));
452 EXTENSION_FUNCTION_VALIDATE(params.get());
453
454 if (params->seconds < 0) {
455 FireErrorCallback("seconds must be greater than or equal to 0");
456 return true;
457 }
458
459 content::RenderProcessHost* host =
460 RphFromRequest(params->request, params->security_origin);
461 if (!host)
462 return false;
463
464 scoped_refptr<WebRtcInternalLogHandlerHost> webrtc_internal_log_handler_host(
465 base::UserDataAdapter<WebRtcInternalLogHandlerHost>::Get(host, host));
466
467 webrtc_internal_log_handler_host->StartRtcEventLogging(
468 host, base::TimeDelta::FromSeconds(params->seconds),
469 base::Bind(
470 &WebrtcLoggingPrivateStartRtcEventLoggingFunction::FireCallback,
471 this),
472 base::Bind(
473 &WebrtcLoggingPrivateStartRtcEventLoggingFunction::FireErrorCallback,
474 this));
475 return true;
476 }
477
478 bool WebrtcLoggingPrivateStopRtcEventLoggingFunction::RunAsync() {
479 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
480 switches::kEnableRtcEventLoggingFromExtension)) {
481 return false;
482 }
483
484 scoped_ptr<StopRtcEventLogging::Params> params(
485 StopRtcEventLogging::Params::Create(*args_));
486 EXTENSION_FUNCTION_VALIDATE(params.get());
487
488 content::RenderProcessHost* host =
489 RphFromRequest(params->request, params->security_origin);
490 if (!host)
491 return false;
492
493 scoped_refptr<WebRtcInternalLogHandlerHost> webrtc_internal_log_handler_host(
494 base::UserDataAdapter<WebRtcInternalLogHandlerHost>::Get(host, host));
495
496 webrtc_internal_log_handler_host->StopRtcEventLogging(
497 host,
498 base::Bind(&WebrtcLoggingPrivateStopRtcEventLoggingFunction::FireCallback,
tommi (sloooow) - chröme 2016/02/05 11:09:00 nit: use the same way of wrapping as you do two li
terelius1 2016/02/16 20:09:12 Done.
499 this),
500 base::Bind(
501 &WebrtcLoggingPrivateStopRtcEventLoggingFunction::FireErrorCallback,
502 this));
503 return true;
504 }
505
440 } // namespace extensions 506 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698