| 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 |