OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights | 2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights |
3 * reserved. | 3 * reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
382 for (const auto& element : elements) { | 382 for (const auto& element : elements) { |
383 element->updateControlsVisibility(); | 383 element->updateControlsVisibility(); |
384 element->mediaControls()->onMediaControlsEnabledChange(); | 384 element->mediaControls()->onMediaControlsEnabledChange(); |
385 } | 385 } |
386 } | 386 } |
387 | 387 |
388 HTMLMediaElement::HTMLMediaElement(const QualifiedName& tagName, | 388 HTMLMediaElement::HTMLMediaElement(const QualifiedName& tagName, |
389 Document& document) | 389 Document& document) |
390 : HTMLElement(tagName, document), | 390 : HTMLElement(tagName, document), |
391 SuspendableObject(&document), | 391 SuspendableObject(&document), |
392 m_loadTimer(TaskRunnerHelper::get(TaskType::Unthrottled, &document), | 392 m_loadTimer(TaskRunnerHelper::get(TaskType::MediaElementEvent, &document), |
393 this, | 393 this, |
394 &HTMLMediaElement::loadTimerFired), | 394 &HTMLMediaElement::loadTimerFired), |
395 m_progressEventTimer( | 395 m_progressEventTimer( |
396 TaskRunnerHelper::get(TaskType::Unthrottled, &document), | 396 TaskRunnerHelper::get(TaskType::MediaElementEvent, &document), |
397 this, | 397 this, |
398 &HTMLMediaElement::progressEventTimerFired), | 398 &HTMLMediaElement::progressEventTimerFired), |
399 m_playbackProgressTimer( | 399 m_playbackProgressTimer( |
400 TaskRunnerHelper::get(TaskType::Unthrottled, &document), | 400 TaskRunnerHelper::get(TaskType::MediaElementEvent, &document), |
401 this, | 401 this, |
402 &HTMLMediaElement::playbackProgressTimerFired), | 402 &HTMLMediaElement::playbackProgressTimerFired), |
403 m_audioTracksTimer( | 403 m_audioTracksTimer( |
404 TaskRunnerHelper::get(TaskType::Unthrottled, &document), | 404 TaskRunnerHelper::get(TaskType::MediaElementEvent, &document), |
405 this, | 405 this, |
406 &HTMLMediaElement::audioTracksTimerFired), | 406 &HTMLMediaElement::audioTracksTimerFired), |
407 m_viewportFillDebouncerTimer( | 407 m_viewportFillDebouncerTimer( |
408 TaskRunnerHelper::get(TaskType::Unthrottled, &document), | 408 TaskRunnerHelper::get(TaskType::MediaElementEvent, &document), |
409 this, | 409 this, |
410 &HTMLMediaElement::viewportFillDebouncerTimerFired), | 410 &HTMLMediaElement::viewportFillDebouncerTimerFired), |
411 m_checkViewportIntersectionTimer( | 411 m_checkViewportIntersectionTimer( |
412 TaskRunnerHelper::get(TaskType::Unthrottled, &document), | 412 TaskRunnerHelper::get(TaskType::MediaElementEvent, &document), |
413 this, | 413 this, |
414 &HTMLMediaElement::checkViewportIntersectionTimerFired), | 414 &HTMLMediaElement::checkViewportIntersectionTimerFired), |
415 m_playedTimeRanges(), | 415 m_playedTimeRanges(), |
416 m_asyncEventQueue(GenericEventQueue::create(this)), | 416 m_asyncEventQueue(GenericEventQueue::create(this)), |
417 m_playbackRate(1.0f), | 417 m_playbackRate(1.0f), |
418 m_defaultPlaybackRate(1.0f), | 418 m_defaultPlaybackRate(1.0f), |
419 m_networkState(kNetworkEmpty), | 419 m_networkState(kNetworkEmpty), |
420 m_readyState(kHaveNothing), | 420 m_readyState(kHaveNothing), |
421 m_readyStateMaximum(kHaveNothing), | 421 m_readyStateMaximum(kHaveNothing), |
422 m_volume(1.0f), | 422 m_volume(1.0f), |
423 m_lastSeekTime(0), | 423 m_lastSeekTime(0), |
424 m_previousProgressTime(std::numeric_limits<double>::max()), | 424 m_previousProgressTime(std::numeric_limits<double>::max()), |
425 m_duration(std::numeric_limits<double>::quiet_NaN()), | 425 m_duration(std::numeric_limits<double>::quiet_NaN()), |
426 m_lastTimeUpdateEventWallTime(0), | 426 m_lastTimeUpdateEventWallTime(0), |
427 m_lastTimeUpdateEventMediaTime(std::numeric_limits<double>::quiet_NaN()), | 427 m_lastTimeUpdateEventMediaTime(std::numeric_limits<double>::quiet_NaN()), |
428 m_defaultPlaybackStartPosition(0), | 428 m_defaultPlaybackStartPosition(0), |
429 m_loadState(WaitingForSource), | 429 m_loadState(WaitingForSource), |
430 m_deferredLoadState(NotDeferred), | 430 m_deferredLoadState(NotDeferred), |
431 m_deferredLoadTimer( | 431 m_deferredLoadTimer( |
432 TaskRunnerHelper::get(TaskType::Unthrottled, &document), | 432 TaskRunnerHelper::get(TaskType::MediaElementEvent, &document), |
433 this, | 433 this, |
434 &HTMLMediaElement::deferredLoadTimerFired), | 434 &HTMLMediaElement::deferredLoadTimerFired), |
435 m_webLayer(nullptr), | 435 m_webLayer(nullptr), |
436 m_displayMode(Unknown), | 436 m_displayMode(Unknown), |
437 m_officialPlaybackPosition(0), | 437 m_officialPlaybackPosition(0), |
438 m_officialPlaybackPositionNeedsUpdate(true), | 438 m_officialPlaybackPositionNeedsUpdate(true), |
439 m_fragmentEndTime(std::numeric_limits<double>::quiet_NaN()), | 439 m_fragmentEndTime(std::numeric_limits<double>::quiet_NaN()), |
440 m_pendingActionFlags(0), | 440 m_pendingActionFlags(0), |
441 m_lockedPendingUserGesture(false), | 441 m_lockedPendingUserGesture(false), |
442 m_lockedPendingUserGestureIfCrossOriginExperimentEnabled(true), | 442 m_lockedPendingUserGestureIfCrossOriginExperimentEnabled(true), |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 // doesn't get dispatched during the object destruction. | 502 // doesn't get dispatched during the object destruction. |
503 // See Document::isDelayingLoadEvent(). | 503 // See Document::isDelayingLoadEvent(). |
504 // Also see http://crbug.com/275223 for more details. | 504 // Also see http://crbug.com/275223 for more details. |
505 clearMediaPlayerAndAudioSourceProviderClientWithoutLocking(); | 505 clearMediaPlayerAndAudioSourceProviderClientWithoutLocking(); |
506 } | 506 } |
507 | 507 |
508 void HTMLMediaElement::didMoveToNewDocument(Document& oldDocument) { | 508 void HTMLMediaElement::didMoveToNewDocument(Document& oldDocument) { |
509 BLINK_MEDIA_LOG << "didMoveToNewDocument(" << (void*)this << ")"; | 509 BLINK_MEDIA_LOG << "didMoveToNewDocument(" << (void*)this << ")"; |
510 | 510 |
511 m_loadTimer.moveToNewTaskRunner( | 511 m_loadTimer.moveToNewTaskRunner( |
512 TaskRunnerHelper::get(TaskType::Unthrottled, &document())); | 512 TaskRunnerHelper::get(TaskType::MediaElementEvent, &document())); |
513 m_progressEventTimer.moveToNewTaskRunner( | 513 m_progressEventTimer.moveToNewTaskRunner( |
514 TaskRunnerHelper::get(TaskType::Unthrottled, &document())); | 514 TaskRunnerHelper::get(TaskType::MediaElementEvent, &document())); |
515 m_playbackProgressTimer.moveToNewTaskRunner( | 515 m_playbackProgressTimer.moveToNewTaskRunner( |
516 TaskRunnerHelper::get(TaskType::Unthrottled, &document())); | 516 TaskRunnerHelper::get(TaskType::MediaElementEvent, &document())); |
517 m_audioTracksTimer.moveToNewTaskRunner( | 517 m_audioTracksTimer.moveToNewTaskRunner( |
518 TaskRunnerHelper::get(TaskType::Unthrottled, &document())); | 518 TaskRunnerHelper::get(TaskType::MediaElementEvent, &document())); |
519 m_viewportFillDebouncerTimer.moveToNewTaskRunner( | 519 m_viewportFillDebouncerTimer.moveToNewTaskRunner( |
520 TaskRunnerHelper::get(TaskType::Unthrottled, &document())); | 520 TaskRunnerHelper::get(TaskType::MediaElementEvent, &document())); |
521 m_checkViewportIntersectionTimer.moveToNewTaskRunner( | 521 m_checkViewportIntersectionTimer.moveToNewTaskRunner( |
522 TaskRunnerHelper::get(TaskType::Unthrottled, &document())); | 522 TaskRunnerHelper::get(TaskType::MediaElementEvent, &document())); |
523 m_deferredLoadTimer.moveToNewTaskRunner( | 523 m_deferredLoadTimer.moveToNewTaskRunner( |
524 TaskRunnerHelper::get(TaskType::Unthrottled, &document())); | 524 TaskRunnerHelper::get(TaskType::MediaElementEvent, &document())); |
525 | 525 |
526 m_autoplayUmaHelper->didMoveToNewDocument(oldDocument); | 526 m_autoplayUmaHelper->didMoveToNewDocument(oldDocument); |
527 // If any experiment is enabled, then we want to enable a user gesture by | 527 // If any experiment is enabled, then we want to enable a user gesture by |
528 // default, otherwise the experiment does nothing. | 528 // default, otherwise the experiment does nothing. |
529 bool oldDocumentRequiresUserGesture = | 529 bool oldDocumentRequiresUserGesture = |
530 computeLockedPendingUserGesture(oldDocument); | 530 computeLockedPendingUserGesture(oldDocument); |
531 bool newDocumentRequiresUserGesture = | 531 bool newDocumentRequiresUserGesture = |
532 computeLockedPendingUserGesture(document()); | 532 computeLockedPendingUserGesture(document()); |
533 if (newDocumentRequiresUserGesture && !oldDocumentRequiresUserGesture) | 533 if (newDocumentRequiresUserGesture && !oldDocumentRequiresUserGesture) |
534 m_lockedPendingUserGesture = true; | 534 m_lockedPendingUserGesture = true; |
(...skipping 3639 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4174 kMostlyFillViewportBecomeStableSeconds, BLINK_FROM_HERE); | 4174 kMostlyFillViewportBecomeStableSeconds, BLINK_FROM_HERE); |
4175 } | 4175 } |
4176 | 4176 |
4177 void HTMLMediaElement::viewportFillDebouncerTimerFired(TimerBase*) { | 4177 void HTMLMediaElement::viewportFillDebouncerTimerFired(TimerBase*) { |
4178 m_mostlyFillingViewport = true; | 4178 m_mostlyFillingViewport = true; |
4179 if (m_webMediaPlayer) | 4179 if (m_webMediaPlayer) |
4180 m_webMediaPlayer->becameDominantVisibleContent(m_mostlyFillingViewport); | 4180 m_webMediaPlayer->becameDominantVisibleContent(m_mostlyFillingViewport); |
4181 } | 4181 } |
4182 | 4182 |
4183 } // namespace blink | 4183 } // namespace blink |
OLD | NEW |