OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "modules/webaudio/BaseAudioContext.h" | 5 #include "modules/webaudio/BaseAudioContext.h" |
6 | 6 |
7 #include "core/dom/Document.h" | 7 #include "core/dom/Document.h" |
| 8 #include "core/dom/DocumentUserGestureToken.h" |
8 #include "core/frame/FrameOwner.h" | 9 #include "core/frame/FrameOwner.h" |
9 #include "core/frame/FrameView.h" | 10 #include "core/frame/FrameView.h" |
10 #include "core/frame/Settings.h" | 11 #include "core/frame/Settings.h" |
11 #include "core/loader/DocumentLoader.h" | 12 #include "core/loader/DocumentLoader.h" |
12 #include "core/loader/EmptyClients.h" | 13 #include "core/loader/EmptyClients.h" |
13 #include "core/testing/DummyPageHolder.h" | 14 #include "core/testing/DummyPageHolder.h" |
14 #include "platform/UserGestureIndicator.h" | 15 #include "platform/UserGestureIndicator.h" |
15 #include "platform/testing/HistogramTester.h" | 16 #include "platform/testing/HistogramTester.h" |
16 #include "platform/testing/TestingPlatformSupport.h" | 17 #include "platform/testing/TestingPlatformSupport.h" |
17 #include "public/platform/WebAudioDevice.h" | 18 #include "public/platform/WebAudioDevice.h" |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 histogramTester.expectBucketCount(kCrossOriginMetric, | 174 histogramTester.expectBucketCount(kCrossOriginMetric, |
174 AutoplayStatus::AutoplayStatusFailed, 1); | 175 AutoplayStatus::AutoplayStatusFailed, 1); |
175 histogramTester.expectTotalCount(kCrossOriginMetric, 1); | 176 histogramTester.expectTotalCount(kCrossOriginMetric, 1); |
176 } | 177 } |
177 | 178 |
178 TEST_F(BaseAudioContextTest, AutoplayMetrics_CreateGesture) { | 179 TEST_F(BaseAudioContextTest, AutoplayMetrics_CreateGesture) { |
179 HistogramTester histogramTester; | 180 HistogramTester histogramTester; |
180 createChildFrame(); | 181 createChildFrame(); |
181 childDocument().settings()->setMediaPlaybackRequiresUserGesture(true); | 182 childDocument().settings()->setMediaPlaybackRequiresUserGesture(true); |
182 | 183 |
183 UserGestureIndicator userGestureScope( | 184 UserGestureIndicator userGestureScope(DocumentUserGestureToken::create( |
184 UserGestureToken::create(UserGestureToken::NewGesture)); | 185 &childDocument(), UserGestureToken::NewGesture)); |
185 | 186 |
186 BaseAudioContext* audioContext = | 187 BaseAudioContext* audioContext = |
187 BaseAudioContext::create(childDocument(), ASSERT_NO_EXCEPTION); | 188 BaseAudioContext::create(childDocument(), ASSERT_NO_EXCEPTION); |
188 recordAutoplayStatus(audioContext); | 189 recordAutoplayStatus(audioContext); |
189 | 190 |
190 histogramTester.expectBucketCount(kCrossOriginMetric, | 191 histogramTester.expectBucketCount(kCrossOriginMetric, |
191 AutoplayStatus::AutoplayStatusSucceeded, 1); | 192 AutoplayStatus::AutoplayStatusSucceeded, 1); |
192 histogramTester.expectTotalCount(kCrossOriginMetric, 1); | 193 histogramTester.expectTotalCount(kCrossOriginMetric, 1); |
193 } | 194 } |
194 | 195 |
195 TEST_F(BaseAudioContextTest, AutoplayMetrics_CallResumeGesture) { | 196 TEST_F(BaseAudioContextTest, AutoplayMetrics_CallResumeGesture) { |
196 HistogramTester histogramTester; | 197 HistogramTester histogramTester; |
197 createChildFrame(); | 198 createChildFrame(); |
198 childDocument().settings()->setMediaPlaybackRequiresUserGesture(true); | 199 childDocument().settings()->setMediaPlaybackRequiresUserGesture(true); |
199 | 200 |
200 ScriptState::Scope scope(getScriptStateFrom(childDocument())); | 201 ScriptState::Scope scope(getScriptStateFrom(childDocument())); |
201 | 202 |
202 BaseAudioContext* audioContext = | 203 BaseAudioContext* audioContext = |
203 BaseAudioContext::create(childDocument(), ASSERT_NO_EXCEPTION); | 204 BaseAudioContext::create(childDocument(), ASSERT_NO_EXCEPTION); |
204 | 205 |
205 UserGestureIndicator userGestureScope( | 206 UserGestureIndicator userGestureScope(DocumentUserGestureToken::create( |
206 UserGestureToken::create(UserGestureToken::NewGesture)); | 207 &childDocument(), UserGestureToken::NewGesture)); |
207 | 208 |
208 audioContext->resumeContext(getScriptStateFrom(childDocument())); | 209 audioContext->resumeContext(getScriptStateFrom(childDocument())); |
209 rejectPendingResolvers(audioContext); | 210 rejectPendingResolvers(audioContext); |
210 recordAutoplayStatus(audioContext); | 211 recordAutoplayStatus(audioContext); |
211 | 212 |
212 histogramTester.expectBucketCount(kCrossOriginMetric, | 213 histogramTester.expectBucketCount(kCrossOriginMetric, |
213 AutoplayStatus::AutoplayStatusSucceeded, 1); | 214 AutoplayStatus::AutoplayStatusSucceeded, 1); |
214 histogramTester.expectTotalCount(kCrossOriginMetric, 1); | 215 histogramTester.expectTotalCount(kCrossOriginMetric, 1); |
215 } | 216 } |
216 | 217 |
(...skipping 13 matching lines...) Expand all Loading... |
230 } | 231 } |
231 | 232 |
232 TEST_F(BaseAudioContextTest, AutoplayMetrics_NodeStartGesture) { | 233 TEST_F(BaseAudioContextTest, AutoplayMetrics_NodeStartGesture) { |
233 HistogramTester histogramTester; | 234 HistogramTester histogramTester; |
234 createChildFrame(); | 235 createChildFrame(); |
235 childDocument().settings()->setMediaPlaybackRequiresUserGesture(true); | 236 childDocument().settings()->setMediaPlaybackRequiresUserGesture(true); |
236 | 237 |
237 BaseAudioContext* audioContext = | 238 BaseAudioContext* audioContext = |
238 BaseAudioContext::create(childDocument(), ASSERT_NO_EXCEPTION); | 239 BaseAudioContext::create(childDocument(), ASSERT_NO_EXCEPTION); |
239 | 240 |
240 UserGestureIndicator userGestureScope( | 241 UserGestureIndicator userGestureScope(DocumentUserGestureToken::create( |
241 UserGestureToken::create(UserGestureToken::NewGesture)); | 242 &childDocument(), UserGestureToken::NewGesture)); |
242 audioContext->maybeRecordStartAttempt(); | 243 audioContext->maybeRecordStartAttempt(); |
243 recordAutoplayStatus(audioContext); | 244 recordAutoplayStatus(audioContext); |
244 | 245 |
245 histogramTester.expectBucketCount( | 246 histogramTester.expectBucketCount( |
246 kCrossOriginMetric, AutoplayStatus::AutoplayStatusFailedWithStart, 1); | 247 kCrossOriginMetric, AutoplayStatus::AutoplayStatusFailedWithStart, 1); |
247 histogramTester.expectTotalCount(kCrossOriginMetric, 1); | 248 histogramTester.expectTotalCount(kCrossOriginMetric, 1); |
248 } | 249 } |
249 | 250 |
250 TEST_F(BaseAudioContextTest, AutoplayMetrics_NodeStartNoGestureThenSuccess) { | 251 TEST_F(BaseAudioContextTest, AutoplayMetrics_NodeStartNoGestureThenSuccess) { |
251 HistogramTester histogramTester; | 252 HistogramTester histogramTester; |
252 createChildFrame(); | 253 createChildFrame(); |
253 childDocument().settings()->setMediaPlaybackRequiresUserGesture(true); | 254 childDocument().settings()->setMediaPlaybackRequiresUserGesture(true); |
254 | 255 |
255 ScriptState::Scope scope(getScriptStateFrom(childDocument())); | 256 ScriptState::Scope scope(getScriptStateFrom(childDocument())); |
256 | 257 |
257 BaseAudioContext* audioContext = | 258 BaseAudioContext* audioContext = |
258 BaseAudioContext::create(childDocument(), ASSERT_NO_EXCEPTION); | 259 BaseAudioContext::create(childDocument(), ASSERT_NO_EXCEPTION); |
259 audioContext->maybeRecordStartAttempt(); | 260 audioContext->maybeRecordStartAttempt(); |
260 | 261 |
261 UserGestureIndicator userGestureScope( | 262 UserGestureIndicator userGestureScope(DocumentUserGestureToken::create( |
262 UserGestureToken::create(UserGestureToken::NewGesture)); | 263 &childDocument(), UserGestureToken::NewGesture)); |
263 audioContext->resumeContext(getScriptStateFrom(childDocument())); | 264 audioContext->resumeContext(getScriptStateFrom(childDocument())); |
264 rejectPendingResolvers(audioContext); | 265 rejectPendingResolvers(audioContext); |
265 recordAutoplayStatus(audioContext); | 266 recordAutoplayStatus(audioContext); |
266 | 267 |
267 histogramTester.expectBucketCount(kCrossOriginMetric, | 268 histogramTester.expectBucketCount(kCrossOriginMetric, |
268 AutoplayStatus::AutoplayStatusSucceeded, 1); | 269 AutoplayStatus::AutoplayStatusSucceeded, 1); |
269 histogramTester.expectTotalCount(kCrossOriginMetric, 1); | 270 histogramTester.expectTotalCount(kCrossOriginMetric, 1); |
270 } | 271 } |
271 | 272 |
272 TEST_F(BaseAudioContextTest, AutoplayMetrics_NodeStartGestureThenSucces) { | 273 TEST_F(BaseAudioContextTest, AutoplayMetrics_NodeStartGestureThenSucces) { |
273 HistogramTester histogramTester; | 274 HistogramTester histogramTester; |
274 createChildFrame(); | 275 createChildFrame(); |
275 childDocument().settings()->setMediaPlaybackRequiresUserGesture(true); | 276 childDocument().settings()->setMediaPlaybackRequiresUserGesture(true); |
276 | 277 |
277 ScriptState::Scope scope(getScriptStateFrom(childDocument())); | 278 ScriptState::Scope scope(getScriptStateFrom(childDocument())); |
278 | 279 |
279 BaseAudioContext* audioContext = | 280 BaseAudioContext* audioContext = |
280 BaseAudioContext::create(childDocument(), ASSERT_NO_EXCEPTION); | 281 BaseAudioContext::create(childDocument(), ASSERT_NO_EXCEPTION); |
281 | 282 |
282 UserGestureIndicator userGestureScope( | 283 UserGestureIndicator userGestureScope(DocumentUserGestureToken::create( |
283 UserGestureToken::create(UserGestureToken::NewGesture)); | 284 &childDocument(), UserGestureToken::NewGesture)); |
284 audioContext->maybeRecordStartAttempt(); | 285 audioContext->maybeRecordStartAttempt(); |
285 audioContext->resumeContext(getScriptStateFrom(childDocument())); | 286 audioContext->resumeContext(getScriptStateFrom(childDocument())); |
286 rejectPendingResolvers(audioContext); | 287 rejectPendingResolvers(audioContext); |
287 recordAutoplayStatus(audioContext); | 288 recordAutoplayStatus(audioContext); |
288 | 289 |
289 histogramTester.expectBucketCount(kCrossOriginMetric, | 290 histogramTester.expectBucketCount(kCrossOriginMetric, |
290 AutoplayStatus::AutoplayStatusSucceeded, 1); | 291 AutoplayStatus::AutoplayStatusSucceeded, 1); |
291 histogramTester.expectTotalCount(kCrossOriginMetric, 1); | 292 histogramTester.expectTotalCount(kCrossOriginMetric, 1); |
292 } | 293 } |
293 | 294 |
294 } // namespace blink | 295 } // namespace blink |
OLD | NEW |