diff options
author | emircan <emircan@chromium.org> | 2016-01-08 11:38:42 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-08 19:40:02 +0000 |
commit | eca998f73d6ce53cf373e7881ec5713e1ec3755d (patch) | |
tree | c54e545b9a6a0b1c4434bf4ccf60d89a7198d6fb | |
parent | 6fc6aa0987377a5d5633103de9c153fcccbf2ed8 (diff) | |
download | chromium_src-eca998f73d6ce53cf373e7881ec5713e1ec3755d.zip chromium_src-eca998f73d6ce53cf373e7881ec5713e1ec3755d.tar.gz chromium_src-eca998f73d6ce53cf373e7881ec5713e1ec3755d.tar.bz2 |
Add UMA histograms for CanvasCaptureHandler
BUG=524218
Review URL: https://codereview.chromium.org/1564243002
Cr-Commit-Position: refs/heads/master@{#368409}
-rw-r--r-- | content/renderer/media/canvas_capture_handler.cc | 14 | ||||
-rw-r--r-- | content/renderer/media/canvas_capture_handler.h | 20 | ||||
-rw-r--r-- | content/renderer/media/canvas_capture_handler_unittest.cc | 9 | ||||
-rw-r--r-- | content/renderer/media/webrtc_uma_histograms.h | 1 | ||||
-rw-r--r-- | content/renderer/renderer_blink_platform_impl.cc | 2 | ||||
-rw-r--r-- | tools/metrics/histograms/histograms.xml | 2 |
6 files changed, 37 insertions, 11 deletions
diff --git a/content/renderer/media/canvas_capture_handler.cc b/content/renderer/media/canvas_capture_handler.cc index 9da03dd..634267e 100644 --- a/content/renderer/media/canvas_capture_handler.cc +++ b/content/renderer/media/canvas_capture_handler.cc @@ -15,6 +15,7 @@ #include "content/renderer/media/media_stream_video_capturer_source.h" #include "content/renderer/media/media_stream_video_source.h" #include "content/renderer/media/media_stream_video_track.h" +#include "content/renderer/media/webrtc_uma_histograms.h" #include "content/renderer/render_thread_impl.h" #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" #include "third_party/WebKit/public/platform/WebString.h" @@ -115,6 +116,19 @@ CanvasCaptureHandler::~CanvasCaptureHandler() { io_task_runner_->DeleteSoon(FROM_HERE, delegate_.release()); } +// static +CanvasCaptureHandler* CanvasCaptureHandler::CreateCanvasCaptureHandler( + const blink::WebSize& size, + double frame_rate, + const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner, + blink::WebMediaStreamTrack* track) { + // Save histogram data so we can see how much CanvasCapture is used. + // The histogram counts the number of calls to the JS API. + UpdateWebRTCMethodCount(WEBKIT_CANVAS_CAPTURE_STREAM); + + return new CanvasCaptureHandler(size, frame_rate, io_task_runner, track); +} + void CanvasCaptureHandler::sendNewFrame(const SkImage* image) { DCHECK(thread_checker_.CalledOnValidThread()); CreateNewFrame(image); diff --git a/content/renderer/media/canvas_capture_handler.h b/content/renderer/media/canvas_capture_handler.h index f080fd1..c9aa313 100644 --- a/content/renderer/media/canvas_capture_handler.h +++ b/content/renderer/media/canvas_capture_handler.h @@ -34,16 +34,14 @@ namespace content { class CONTENT_EXPORT CanvasCaptureHandler final : public NON_EXPORTED_BASE(blink::WebCanvasCaptureHandler) { public: - // A VideoCapturerSource instance is created, which is responsible for handing - // stop&start callbacks back to CanvasCaptureHandler. That VideoCapturerSource - // is then plugged into a MediaStreamTrack passed as |track|, and it is owned - // by the Blink side MediaStreamSource. - CanvasCaptureHandler( + ~CanvasCaptureHandler() override; + + // Creates a CanvasCaptureHandler instance and updates UMA histogram. + static CanvasCaptureHandler* CreateCanvasCaptureHandler( const blink::WebSize& size, double frame_rate, const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner, blink::WebMediaStreamTrack* track); - ~CanvasCaptureHandler() override; // blink::WebCanvasCaptureHandler Implementation. void sendNewFrame(const SkImage* image) override; @@ -59,6 +57,16 @@ class CONTENT_EXPORT CanvasCaptureHandler final blink::WebSize GetSourceSize() const { return size_; } private: + // A VideoCapturerSource instance is created, which is responsible for handing + // stop&start callbacks back to CanvasCaptureHandler. That VideoCapturerSource + // is then plugged into a MediaStreamTrack passed as |track|, and it is owned + // by the Blink side MediaStreamSource. + CanvasCaptureHandler( + const blink::WebSize& size, + double frame_rate, + const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner, + blink::WebMediaStreamTrack* track); + void CreateNewFrame(const SkImage* image); void AddVideoCapturerSourceToVideoTrack( scoped_ptr<media::VideoCapturerSource> source, diff --git a/content/renderer/media/canvas_capture_handler_unittest.cc b/content/renderer/media/canvas_capture_handler_unittest.cc index 4bbe54d..6f23ed1 100644 --- a/content/renderer/media/canvas_capture_handler_unittest.cc +++ b/content/renderer/media/canvas_capture_handler_unittest.cc @@ -42,10 +42,11 @@ class CanvasCaptureHandlerTest : public Test { CanvasCaptureHandlerTest() {} void SetUp() override { - canvas_capture_handler_.reset(new CanvasCaptureHandler( - blink::WebSize(kTestCanvasCaptureWidth, kTestCanvasCaptureHeight), - kTestCanvasCaptureFramesPerSecond, message_loop_.task_runner(), - &track_)); + canvas_capture_handler_.reset( + CanvasCaptureHandler::CreateCanvasCaptureHandler( + blink::WebSize(kTestCanvasCaptureWidth, kTestCanvasCaptureHeight), + kTestCanvasCaptureFramesPerSecond, message_loop_.task_runner(), + &track_)); } void TearDown() override { diff --git a/content/renderer/media/webrtc_uma_histograms.h b/content/renderer/media/webrtc_uma_histograms.h index 39e703c..c4a5f05 100644 --- a/content/renderer/media/webrtc_uma_histograms.h +++ b/content/renderer/media/webrtc_uma_histograms.h @@ -39,6 +39,7 @@ enum JavaScriptAPIName { WEBKIT_RTC_PEER_CONNECTION, WEBKIT_GET_MEDIA_DEVICES, WEBKIT_MEDIA_STREAM_RECORDER, + WEBKIT_CANVAS_CAPTURE_STREAM, INVALID_NAME }; diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc index 2bffb25..b823677 100644 --- a/content/renderer/renderer_blink_platform_impl.cc +++ b/content/renderer/renderer_blink_platform_impl.cc @@ -933,7 +933,7 @@ WebCanvasCaptureHandler* RendererBlinkPlatformImpl::createCanvasCaptureHandler( double frame_rate, WebMediaStreamTrack* track) { #if defined(ENABLE_WEBRTC) - return new CanvasCaptureHandler( + return CanvasCaptureHandler::CreateCanvasCaptureHandler( size, frame_rate, RenderThread::Get()->GetIOMessageLoopProxy(), track); #else return nullptr; diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 8eded3c..1ce9ebc 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml @@ -55658,6 +55658,7 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries. <histogram name="WebRTC.webkitApiCount" enum="JavaScriptAPIName"> <owner>perkj@chromium.org</owner> <owner>mcasas@chromium.org</owner> + <owner>emircan@chromium.org</owner> <summary>Counts number of calls to WebRTC APIs from JavaScript.</summary> </histogram> @@ -68115,6 +68116,7 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries. <int value="3" label="RTCPeerConnection"/> <int value="4" label="GetMediaDevices"/> <int value="5" label="MediaStreamRecorder"/> + <int value="6" label="CanvasCaptureStream"/> </enum> <enum name="KeyboardControlEvent" type="int"> |