summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoremircan <emircan@chromium.org>2016-01-08 11:38:42 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-08 19:40:02 +0000
commiteca998f73d6ce53cf373e7881ec5713e1ec3755d (patch)
treec54e545b9a6a0b1c4434bf4ccf60d89a7198d6fb
parent6fc6aa0987377a5d5633103de9c153fcccbf2ed8 (diff)
downloadchromium_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.cc14
-rw-r--r--content/renderer/media/canvas_capture_handler.h20
-rw-r--r--content/renderer/media/canvas_capture_handler_unittest.cc9
-rw-r--r--content/renderer/media/webrtc_uma_histograms.h1
-rw-r--r--content/renderer/renderer_blink_platform_impl.cc2
-rw-r--r--tools/metrics/histograms/histograms.xml2
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">