Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(87)

Side by Side Diff: third_party/WebKit/Source/core/html/HTMLMediaElement.cpp

Issue 2713613002: Convert HTMLMediaElement timers to MediaElementEvent per-frame. (Closed)
Patch Set: merge Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698