• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "content/renderer/media/webrtc_uma_histograms.h"
6 
7 #include "testing/gmock/include/gmock/gmock.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 
10 using ::testing::_;
11 
12 namespace content {
13 
14 class MockPerSessionWebRTCAPIMetrics : public PerSessionWebRTCAPIMetrics {
15  public:
MockPerSessionWebRTCAPIMetrics()16   MockPerSessionWebRTCAPIMetrics() {}
17 
18   using PerSessionWebRTCAPIMetrics::LogUsageOnlyOnce;
19 
20   MOCK_METHOD1(LogUsage, void(JavaScriptAPIName));
21 };
22 
TEST(PerSessionWebRTCAPIMetrics,NoCallOngoingGetUserMedia)23 TEST(PerSessionWebRTCAPIMetrics, NoCallOngoingGetUserMedia) {
24   MockPerSessionWebRTCAPIMetrics metrics;
25   EXPECT_CALL(metrics, LogUsage(_)).Times(1);
26   metrics.LogUsageOnlyOnce(WEBKIT_GET_USER_MEDIA);
27 }
28 
TEST(PerSessionWebRTCAPIMetrics,CallOngoingGetUserMedia)29 TEST(PerSessionWebRTCAPIMetrics, CallOngoingGetUserMedia) {
30   MockPerSessionWebRTCAPIMetrics metrics;
31   metrics.IncrementStreamCounter();
32   EXPECT_CALL(metrics, LogUsage(WEBKIT_GET_USER_MEDIA)).Times(1);
33   metrics.LogUsageOnlyOnce(WEBKIT_GET_USER_MEDIA);
34 }
35 
TEST(PerSessionWebRTCAPIMetrics,NoCallOngoingGetMediaDevices)36 TEST(PerSessionWebRTCAPIMetrics, NoCallOngoingGetMediaDevices) {
37   MockPerSessionWebRTCAPIMetrics metrics;
38   EXPECT_CALL(metrics, LogUsage(_)).Times(1);
39   metrics.LogUsageOnlyOnce(WEBKIT_GET_MEDIA_DEVICES);
40 }
41 
TEST(PerSessionWebRTCAPIMetrics,CallOngoingGetMediaDevices)42 TEST(PerSessionWebRTCAPIMetrics, CallOngoingGetMediaDevices) {
43   MockPerSessionWebRTCAPIMetrics metrics;
44   metrics.IncrementStreamCounter();
45   EXPECT_CALL(metrics, LogUsage(WEBKIT_GET_MEDIA_DEVICES)).Times(1);
46   metrics.LogUsageOnlyOnce(WEBKIT_GET_MEDIA_DEVICES);
47 }
48 
TEST(PerSessionWebRTCAPIMetrics,NoCallOngoingRTCPeerConnection)49 TEST(PerSessionWebRTCAPIMetrics, NoCallOngoingRTCPeerConnection) {
50   MockPerSessionWebRTCAPIMetrics metrics;
51   EXPECT_CALL(metrics, LogUsage(WEBKIT_RTC_PEER_CONNECTION));
52   metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION);
53 }
54 
TEST(PerSessionWebRTCAPIMetrics,NoCallOngoingMultiplePC)55 TEST(PerSessionWebRTCAPIMetrics, NoCallOngoingMultiplePC) {
56   MockPerSessionWebRTCAPIMetrics metrics;
57   EXPECT_CALL(metrics, LogUsage(WEBKIT_RTC_PEER_CONNECTION)).Times(1);
58   metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION);
59   metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION);
60   metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION);
61 }
62 
TEST(PerSessionWebRTCAPIMetrics,BeforeAfterCallMultiplePC)63 TEST(PerSessionWebRTCAPIMetrics, BeforeAfterCallMultiplePC) {
64   MockPerSessionWebRTCAPIMetrics metrics;
65   EXPECT_CALL(metrics, LogUsage(WEBKIT_RTC_PEER_CONNECTION)).Times(1);
66   metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION);
67   metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION);
68   metrics.IncrementStreamCounter();
69   metrics.IncrementStreamCounter();
70   metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION);
71   metrics.DecrementStreamCounter();
72   metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION);
73   metrics.DecrementStreamCounter();
74   EXPECT_CALL(metrics, LogUsage(WEBKIT_RTC_PEER_CONNECTION)).Times(1);
75   metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION);
76   metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION);
77 }
78 
79 }  // namespace content
80