| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "content/browser/media/session/media_session.h" | 5 #include "content/browser/media/session/media_session.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <list> | 9 #include <list> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/macros.h" | 12 #include "base/macros.h" |
| 13 #include "base/metrics/histogram_samples.h" | 13 #include "base/metrics/histogram_samples.h" |
| 14 #include "base/test/histogram_tester.h" | 14 #include "base/test/histogram_tester.h" |
| 15 #include "base/test/simple_test_clock.h" | 15 #include "base/test/simple_test_tick_clock.h" |
| 16 #include "content/browser/media/session/media_session_delegate.h" | 16 #include "content/browser/media/session/media_session_delegate.h" |
| 17 #include "content/browser/media/session/mock_media_session_observer.h" | 17 #include "content/browser/media/session/mock_media_session_observer.h" |
| 18 #include "content/public/browser/web_contents.h" | 18 #include "content/public/browser/web_contents.h" |
| 19 #include "content/public/browser/web_contents_observer.h" | 19 #include "content/public/browser/web_contents_observer.h" |
| 20 #include "content/public/test/content_browser_test.h" | 20 #include "content/public/test/content_browser_test.h" |
| 21 #include "content/shell/browser/shell.h" | 21 #include "content/shell/browser/shell.h" |
| 22 #include "testing/gmock/include/gmock/gmock.h" | 22 #include "testing/gmock/include/gmock/gmock.h" |
| 23 | 23 |
| 24 using content::WebContents; | 24 using content::WebContents; |
| 25 using content::WebContentsObserver; | 25 using content::WebContentsObserver; |
| (...skipping 1006 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1032 EXPECT_EQ(0, samples->TotalCount()); | 1032 EXPECT_EQ(0, samples->TotalCount()); |
| 1033 } | 1033 } |
| 1034 | 1034 |
| 1035 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 1035 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 1036 UMA_ActiveTime_SimpleActivation) { | 1036 UMA_ActiveTime_SimpleActivation) { |
| 1037 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 1037 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 1038 new MockMediaSessionObserver); | 1038 new MockMediaSessionObserver); |
| 1039 base::HistogramTester tester; | 1039 base::HistogramTester tester; |
| 1040 | 1040 |
| 1041 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1041 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1042 base::SimpleTestClock* clock = new base::SimpleTestClock(); | 1042 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); |
| 1043 clock->SetNow(base::Time::Now()); | 1043 clock->SetNowTicks(base::TimeTicks::Now()); |
| 1044 media_session_uma_helper->SetClockForTest( | 1044 media_session_uma_helper->SetClockForTest( |
| 1045 std::unique_ptr<base::SimpleTestClock>(clock)); | 1045 std::unique_ptr<base::SimpleTestTickClock>(clock)); |
| 1046 | 1046 |
| 1047 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1047 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1048 | 1048 |
| 1049 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1049 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1050 media_session_->Stop(MediaSession::SuspendType::UI); | 1050 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1051 | 1051 |
| 1052 std::unique_ptr<base::HistogramSamples> samples( | 1052 std::unique_ptr<base::HistogramSamples> samples( |
| 1053 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1053 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1054 EXPECT_EQ(1, samples->TotalCount()); | 1054 EXPECT_EQ(1, samples->TotalCount()); |
| 1055 EXPECT_EQ(1, samples->GetCount(1000)); | 1055 EXPECT_EQ(1, samples->GetCount(1000)); |
| 1056 } | 1056 } |
| 1057 | 1057 |
| 1058 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 1058 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 1059 UMA_ActiveTime_ActivationWithUISuspension) { | 1059 UMA_ActiveTime_ActivationWithUISuspension) { |
| 1060 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 1060 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 1061 new MockMediaSessionObserver); | 1061 new MockMediaSessionObserver); |
| 1062 base::HistogramTester tester; | 1062 base::HistogramTester tester; |
| 1063 | 1063 |
| 1064 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1064 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1065 base::SimpleTestClock* clock = new base::SimpleTestClock(); | 1065 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); |
| 1066 clock->SetNow(base::Time::Now()); | 1066 clock->SetNowTicks(base::TimeTicks::Now()); |
| 1067 media_session_uma_helper->SetClockForTest( | 1067 media_session_uma_helper->SetClockForTest( |
| 1068 std::unique_ptr<base::SimpleTestClock>(clock)); | 1068 std::unique_ptr<base::SimpleTestTickClock>(clock)); |
| 1069 | 1069 |
| 1070 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1070 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1071 | 1071 |
| 1072 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1072 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1073 UISuspend(); | 1073 UISuspend(); |
| 1074 | 1074 |
| 1075 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); | 1075 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); |
| 1076 UIResume(); | 1076 UIResume(); |
| 1077 | 1077 |
| 1078 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1078 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1079 media_session_->Stop(MediaSession::SuspendType::UI); | 1079 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1080 | 1080 |
| 1081 std::unique_ptr<base::HistogramSamples> samples( | 1081 std::unique_ptr<base::HistogramSamples> samples( |
| 1082 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1082 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1083 EXPECT_EQ(1, samples->TotalCount()); | 1083 EXPECT_EQ(1, samples->TotalCount()); |
| 1084 EXPECT_EQ(1, samples->GetCount(2000)); | 1084 EXPECT_EQ(1, samples->GetCount(2000)); |
| 1085 } | 1085 } |
| 1086 | 1086 |
| 1087 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 1087 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 1088 UMA_ActiveTime_ActivationWithSystemSuspension) { | 1088 UMA_ActiveTime_ActivationWithSystemSuspension) { |
| 1089 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 1089 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 1090 new MockMediaSessionObserver); | 1090 new MockMediaSessionObserver); |
| 1091 base::HistogramTester tester; | 1091 base::HistogramTester tester; |
| 1092 | 1092 |
| 1093 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1093 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1094 base::SimpleTestClock* clock = new base::SimpleTestClock(); | 1094 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); |
| 1095 clock->SetNow(base::Time::Now()); | 1095 clock->SetNowTicks(base::TimeTicks::Now()); |
| 1096 media_session_uma_helper->SetClockForTest( | 1096 media_session_uma_helper->SetClockForTest( |
| 1097 std::unique_ptr<base::SimpleTestClock>(clock)); | 1097 std::unique_ptr<base::SimpleTestTickClock>(clock)); |
| 1098 | 1098 |
| 1099 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1099 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1100 | 1100 |
| 1101 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1101 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1102 SystemSuspend(true); | 1102 SystemSuspend(true); |
| 1103 | 1103 |
| 1104 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); | 1104 clock->Advance(base::TimeDelta::FromMilliseconds(2000)); |
| 1105 SystemResume(); | 1105 SystemResume(); |
| 1106 | 1106 |
| 1107 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1107 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1108 media_session_->Stop(MediaSession::SuspendType::UI); | 1108 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1109 | 1109 |
| 1110 std::unique_ptr<base::HistogramSamples> samples( | 1110 std::unique_ptr<base::HistogramSamples> samples( |
| 1111 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1111 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1112 EXPECT_EQ(1, samples->TotalCount()); | 1112 EXPECT_EQ(1, samples->TotalCount()); |
| 1113 EXPECT_EQ(1, samples->GetCount(2000)); | 1113 EXPECT_EQ(1, samples->GetCount(2000)); |
| 1114 } | 1114 } |
| 1115 | 1115 |
| 1116 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 1116 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 1117 UMA_ActiveTime_ActivateSuspendedButNotStopped) { | 1117 UMA_ActiveTime_ActivateSuspendedButNotStopped) { |
| 1118 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 1118 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 1119 new MockMediaSessionObserver); | 1119 new MockMediaSessionObserver); |
| 1120 base::HistogramTester tester; | 1120 base::HistogramTester tester; |
| 1121 | 1121 |
| 1122 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1122 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1123 base::SimpleTestClock* clock = new base::SimpleTestClock(); | 1123 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); |
| 1124 clock->SetNow(base::Time::Now()); | 1124 clock->SetNowTicks(base::TimeTicks::Now()); |
| 1125 media_session_uma_helper->SetClockForTest( | 1125 media_session_uma_helper->SetClockForTest( |
| 1126 std::unique_ptr<base::SimpleTestClock>(clock)); | 1126 std::unique_ptr<base::SimpleTestTickClock>(clock)); |
| 1127 | 1127 |
| 1128 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1128 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1129 clock->Advance(base::TimeDelta::FromMilliseconds(500)); | 1129 clock->Advance(base::TimeDelta::FromMilliseconds(500)); |
| 1130 SystemSuspend(true); | 1130 SystemSuspend(true); |
| 1131 | 1131 |
| 1132 { | 1132 { |
| 1133 std::unique_ptr<base::HistogramSamples> samples( | 1133 std::unique_ptr<base::HistogramSamples> samples( |
| 1134 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1134 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1135 EXPECT_EQ(0, samples->TotalCount()); | 1135 EXPECT_EQ(0, samples->TotalCount()); |
| 1136 } | 1136 } |
| 1137 | 1137 |
| 1138 SystemResume(); | 1138 SystemResume(); |
| 1139 clock->Advance(base::TimeDelta::FromMilliseconds(5000)); | 1139 clock->Advance(base::TimeDelta::FromMilliseconds(5000)); |
| 1140 UISuspend(); | 1140 UISuspend(); |
| 1141 | 1141 |
| 1142 { | 1142 { |
| 1143 std::unique_ptr<base::HistogramSamples> samples( | 1143 std::unique_ptr<base::HistogramSamples> samples( |
| 1144 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1144 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1145 EXPECT_EQ(0, samples->TotalCount()); | 1145 EXPECT_EQ(0, samples->TotalCount()); |
| 1146 } | 1146 } |
| 1147 } | 1147 } |
| 1148 | 1148 |
| 1149 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 1149 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 1150 UMA_ActiveTime_ActivateSuspendStopTwice) { | 1150 UMA_ActiveTime_ActivateSuspendStopTwice) { |
| 1151 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 1151 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 1152 new MockMediaSessionObserver); | 1152 new MockMediaSessionObserver); |
| 1153 base::HistogramTester tester; | 1153 base::HistogramTester tester; |
| 1154 | 1154 |
| 1155 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1155 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1156 base::SimpleTestClock* clock = new base::SimpleTestClock(); | 1156 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); |
| 1157 clock->SetNow(base::Time::Now()); | 1157 clock->SetNowTicks(base::TimeTicks::Now()); |
| 1158 media_session_uma_helper->SetClockForTest( | 1158 media_session_uma_helper->SetClockForTest( |
| 1159 std::unique_ptr<base::SimpleTestClock>(clock)); | 1159 std::unique_ptr<base::SimpleTestTickClock>(clock)); |
| 1160 | 1160 |
| 1161 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1161 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1162 clock->Advance(base::TimeDelta::FromMilliseconds(500)); | 1162 clock->Advance(base::TimeDelta::FromMilliseconds(500)); |
| 1163 SystemSuspend(true); | 1163 SystemSuspend(true); |
| 1164 media_session_->Stop(MediaSession::SuspendType::UI); | 1164 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1165 | 1165 |
| 1166 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1166 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1167 clock->Advance(base::TimeDelta::FromMilliseconds(5000)); | 1167 clock->Advance(base::TimeDelta::FromMilliseconds(5000)); |
| 1168 SystemResume(); | 1168 SystemResume(); |
| 1169 media_session_->Stop(MediaSession::SuspendType::UI); | 1169 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1170 | 1170 |
| 1171 std::unique_ptr<base::HistogramSamples> samples( | 1171 std::unique_ptr<base::HistogramSamples> samples( |
| 1172 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1172 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1173 EXPECT_EQ(2, samples->TotalCount()); | 1173 EXPECT_EQ(2, samples->TotalCount()); |
| 1174 EXPECT_EQ(1, samples->GetCount(500)); | 1174 EXPECT_EQ(1, samples->GetCount(500)); |
| 1175 EXPECT_EQ(1, samples->GetCount(5000)); | 1175 EXPECT_EQ(1, samples->GetCount(5000)); |
| 1176 } | 1176 } |
| 1177 | 1177 |
| 1178 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, | 1178 IN_PROC_BROWSER_TEST_F(MediaSessionBrowserTest, |
| 1179 UMA_ActiveTime_MultipleActivations) { | 1179 UMA_ActiveTime_MultipleActivations) { |
| 1180 std::unique_ptr<MockMediaSessionObserver> media_session_observer( | 1180 std::unique_ptr<MockMediaSessionObserver> media_session_observer( |
| 1181 new MockMediaSessionObserver); | 1181 new MockMediaSessionObserver); |
| 1182 base::HistogramTester tester; | 1182 base::HistogramTester tester; |
| 1183 | 1183 |
| 1184 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); | 1184 MediaSessionUmaHelper* media_session_uma_helper = GetMediaSessionUMAHelper(); |
| 1185 base::SimpleTestClock* clock = new base::SimpleTestClock(); | 1185 base::SimpleTestTickClock* clock = new base::SimpleTestTickClock(); |
| 1186 clock->SetNow(base::Time::Now()); | 1186 clock->SetNowTicks(base::TimeTicks::Now()); |
| 1187 media_session_uma_helper->SetClockForTest( | 1187 media_session_uma_helper->SetClockForTest( |
| 1188 std::unique_ptr<base::SimpleTestClock>(clock)); | 1188 std::unique_ptr<base::SimpleTestTickClock>(clock)); |
| 1189 | 1189 |
| 1190 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1190 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1191 clock->Advance(base::TimeDelta::FromMilliseconds(10000)); | 1191 clock->Advance(base::TimeDelta::FromMilliseconds(10000)); |
| 1192 RemovePlayer(media_session_observer.get(), 0); | 1192 RemovePlayer(media_session_observer.get(), 0); |
| 1193 | 1193 |
| 1194 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); | 1194 StartNewPlayer(media_session_observer.get(), MediaSession::Type::Content); |
| 1195 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); | 1195 clock->Advance(base::TimeDelta::FromMilliseconds(1000)); |
| 1196 media_session_->Stop(MediaSession::SuspendType::UI); | 1196 media_session_->Stop(MediaSession::SuspendType::UI); |
| 1197 | 1197 |
| 1198 std::unique_ptr<base::HistogramSamples> samples( | 1198 std::unique_ptr<base::HistogramSamples> samples( |
| 1199 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); | 1199 tester.GetHistogramSamplesSinceCreation("Media.Session.ActiveTime")); |
| 1200 EXPECT_EQ(2, samples->TotalCount()); | 1200 EXPECT_EQ(2, samples->TotalCount()); |
| 1201 EXPECT_EQ(1, samples->GetCount(1000)); | 1201 EXPECT_EQ(1, samples->GetCount(1000)); |
| 1202 EXPECT_EQ(1, samples->GetCount(10000)); | 1202 EXPECT_EQ(1, samples->GetCount(10000)); |
| 1203 } | 1203 } |
| OLD | NEW |