// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "content/renderer/media/webrtc_uma_histograms.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" using ::testing::_; namespace content { class MockPerSessionWebRTCAPIMetrics : public PerSessionWebRTCAPIMetrics { public: MockPerSessionWebRTCAPIMetrics() {} using PerSessionWebRTCAPIMetrics::LogUsageOnlyOnce; MOCK_METHOD1(LogUsage, void(JavaScriptAPIName)); }; TEST(PerSessionWebRTCAPIMetrics, NoCallOngoingGetUserMedia) { MockPerSessionWebRTCAPIMetrics metrics; EXPECT_CALL(metrics, LogUsage(_)).Times(1); metrics.LogUsageOnlyOnce(WEBKIT_GET_USER_MEDIA); } TEST(PerSessionWebRTCAPIMetrics, CallOngoingGetUserMedia) { MockPerSessionWebRTCAPIMetrics metrics; metrics.IncrementStreamCounter(); EXPECT_CALL(metrics, LogUsage(WEBKIT_GET_USER_MEDIA)).Times(1); metrics.LogUsageOnlyOnce(WEBKIT_GET_USER_MEDIA); } TEST(PerSessionWebRTCAPIMetrics, NoCallOngoingGetMediaDevices) { MockPerSessionWebRTCAPIMetrics metrics; EXPECT_CALL(metrics, LogUsage(_)).Times(1); metrics.LogUsageOnlyOnce(WEBKIT_GET_MEDIA_DEVICES); } TEST(PerSessionWebRTCAPIMetrics, CallOngoingGetMediaDevices) { MockPerSessionWebRTCAPIMetrics metrics; metrics.IncrementStreamCounter(); EXPECT_CALL(metrics, LogUsage(WEBKIT_GET_MEDIA_DEVICES)).Times(1); metrics.LogUsageOnlyOnce(WEBKIT_GET_MEDIA_DEVICES); } TEST(PerSessionWebRTCAPIMetrics, NoCallOngoingRTCPeerConnection) { MockPerSessionWebRTCAPIMetrics metrics; EXPECT_CALL(metrics, LogUsage(WEBKIT_RTC_PEER_CONNECTION)); metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION); } TEST(PerSessionWebRTCAPIMetrics, NoCallOngoingMultiplePC) { MockPerSessionWebRTCAPIMetrics metrics; EXPECT_CALL(metrics, LogUsage(WEBKIT_RTC_PEER_CONNECTION)).Times(1); metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION); metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION); metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION); } TEST(PerSessionWebRTCAPIMetrics, BeforeAfterCallMultiplePC) { MockPerSessionWebRTCAPIMetrics metrics; EXPECT_CALL(metrics, LogUsage(WEBKIT_RTC_PEER_CONNECTION)).Times(1); metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION); metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION); metrics.IncrementStreamCounter(); metrics.IncrementStreamCounter(); metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION); metrics.DecrementStreamCounter(); metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION); metrics.DecrementStreamCounter(); EXPECT_CALL(metrics, LogUsage(WEBKIT_RTC_PEER_CONNECTION)).Times(1); metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION); metrics.LogUsageOnlyOnce(WEBKIT_RTC_PEER_CONNECTION); } } // namespace content