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