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

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

Issue 1417683004: Media controls refer to less magic state. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ...because NeedsRebaseline is not a platform type. Created 5 years, 1 month 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 736 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 scheduleEvent(EventTypeNames::abort); 747 scheduleEvent(EventTypeNames::abort);
748 748
749 resetMediaPlayerAndMediaSource(); 749 resetMediaPlayerAndMediaSource();
750 750
751 // 4 - If the media element's networkState is not set to NETWORK_EMPTY, then run these substeps 751 // 4 - If the media element's networkState is not set to NETWORK_EMPTY, then run these substeps
752 if (m_networkState != NETWORK_EMPTY) { 752 if (m_networkState != NETWORK_EMPTY) {
753 // 4.1 - Queue a task to fire a simple event named emptied at the media element. 753 // 4.1 - Queue a task to fire a simple event named emptied at the media element.
754 scheduleEvent(EventTypeNames::emptied); 754 scheduleEvent(EventTypeNames::emptied);
755 755
756 // 4.2 - If a fetching process is in progress for the media element, the user agent should stop it. 756 // 4.2 - If a fetching process is in progress for the media element, the user agent should stop it.
757 m_networkState = NETWORK_EMPTY; 757 setNetworkState(NETWORK_EMPTY);
758 758
759 // 4.3 - Forget the media element's media-resource-specific tracks. 759 // 4.3 - Forget the media element's media-resource-specific tracks.
760 forgetResourceSpecificTracks(); 760 forgetResourceSpecificTracks();
761 761
762 // 4.4 - If readyState is not set to HAVE_NOTHING, then set it to that s tate. 762 // 4.4 - If readyState is not set to HAVE_NOTHING, then set it to that s tate.
763 m_readyState = HAVE_NOTHING; 763 m_readyState = HAVE_NOTHING;
764 m_readyStateMaximum = HAVE_NOTHING; 764 m_readyStateMaximum = HAVE_NOTHING;
765 765
766 // 4.5 - If the paused attribute is false, then set it to true. 766 // 4.5 - If the paused attribute is false, then set it to true.
767 m_paused = true; 767 m_paused = true;
(...skipping 22 matching lines...) Expand all
790 // 6 - Set the error attribute to null and the autoplaying flag to true. 790 // 6 - Set the error attribute to null and the autoplaying flag to true.
791 m_error = nullptr; 791 m_error = nullptr;
792 m_autoplaying = true; 792 m_autoplaying = true;
793 793
794 // 7 - Invoke the media element's resource selection algorithm. 794 // 7 - Invoke the media element's resource selection algorithm.
795 795
796 // 8 - Note: Playback of any previously playing media resource for this elem ent stops. 796 // 8 - Note: Playback of any previously playing media resource for this elem ent stops.
797 797
798 // The resource selection algorithm 798 // The resource selection algorithm
799 // 1 - Set the networkState to NETWORK_NO_SOURCE 799 // 1 - Set the networkState to NETWORK_NO_SOURCE
800 m_networkState = NETWORK_NO_SOURCE; 800 setNetworkState(NETWORK_NO_SOURCE);
801 801
802 // 2 - Asynchronously await a stable state. 802 // 2 - Asynchronously await a stable state.
803 803
804 m_playedTimeRanges = TimeRanges::create(); 804 m_playedTimeRanges = TimeRanges::create();
805 805
806 // FIXME: Investigate whether these can be moved into m_networkState != NETW ORK_EMPTY block above 806 // FIXME: Investigate whether these can be moved into m_networkState != NETW ORK_EMPTY block above
807 // so they are closer to the relevant spec steps. 807 // so they are closer to the relevant spec steps.
808 m_lastSeekTime = 0; 808 m_lastSeekTime = 0;
809 m_duration = std::numeric_limits<double>::quiet_NaN(); 809 m_duration = std::numeric_limits<double>::quiet_NaN();
810 810
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 if (HTMLSourceElement* element = Traversal<HTMLSourceElement>::firstChil d(*this)) { 847 if (HTMLSourceElement* element = Traversal<HTMLSourceElement>::firstChil d(*this)) {
848 mode = children; 848 mode = children;
849 m_nextChildNodeToConsider = element; 849 m_nextChildNodeToConsider = element;
850 m_currentSourceNode = nullptr; 850 m_currentSourceNode = nullptr;
851 } else { 851 } else {
852 // Otherwise the media element has neither a src attribute nor a sou rce element 852 // Otherwise the media element has neither a src attribute nor a sou rce element
853 // child: set the networkState to NETWORK_EMPTY, and abort these ste ps; the 853 // child: set the networkState to NETWORK_EMPTY, and abort these ste ps; the
854 // synchronous section ends. 854 // synchronous section ends.
855 m_loadState = WaitingForSource; 855 m_loadState = WaitingForSource;
856 setShouldDelayLoadEvent(false); 856 setShouldDelayLoadEvent(false);
857 m_networkState = NETWORK_EMPTY; 857 setNetworkState(NETWORK_EMPTY);
858 updateDisplayState(); 858 updateDisplayState();
859 859
860 WTF_LOG(Media, "HTMLMediaElement::selectMediaResource(%p), nothing t o load", this); 860 WTF_LOG(Media, "HTMLMediaElement::selectMediaResource(%p), nothing t o load", this);
861 return; 861 return;
862 } 862 }
863 } 863 }
864 864
865 // 4 - Set the media element's delaying-the-load-event flag to true (this de lays the load event), 865 // 4 - Set the media element's delaying-the-load-event flag to true (this de lays the load event),
866 // and set its networkState to NETWORK_LOADING. 866 // and set its networkState to NETWORK_LOADING.
867 setShouldDelayLoadEvent(true); 867 setShouldDelayLoadEvent(true);
868 m_networkState = NETWORK_LOADING; 868 setNetworkState(NETWORK_LOADING);
869 869
870 // 5 - Queue a task to fire a simple event named loadstart at the media elem ent. 870 // 5 - Queue a task to fire a simple event named loadstart at the media elem ent.
871 scheduleEvent(EventTypeNames::loadstart); 871 scheduleEvent(EventTypeNames::loadstart);
872 872
873 // 6 - If mode is attribute, then run these substeps 873 // 6 - If mode is attribute, then run these substeps
874 if (mode == attribute) { 874 if (mode == attribute) {
875 m_loadState = LoadingFromSrcAttr; 875 m_loadState = LoadingFromSrcAttr;
876 876
877 // If the src attribute's value is the empty string ... jump down to the failed step below 877 // If the src attribute's value is the empty string ... jump down to the failed step below
878 KURL mediaURL = getNonEmptyURLAttribute(srcAttr); 878 KURL mediaURL = getNonEmptyURLAttribute(srcAttr);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
924 924
925 WTF_LOG(Media, "HTMLMediaElement::loadResource(%p, %s, %s, %s)", this, urlFo rLoggingMedia(url).utf8().data(), contentType.raw().utf8().data(), keySystem.utf 8().data()); 925 WTF_LOG(Media, "HTMLMediaElement::loadResource(%p, %s, %s, %s)", this, urlFo rLoggingMedia(url).utf8().data(), contentType.raw().utf8().data(), keySystem.utf 8().data());
926 926
927 LocalFrame* frame = document().frame(); 927 LocalFrame* frame = document().frame();
928 if (!frame) { 928 if (!frame) {
929 mediaLoadingFailed(WebMediaPlayer::NetworkStateFormatError); 929 mediaLoadingFailed(WebMediaPlayer::NetworkStateFormatError);
930 return; 930 return;
931 } 931 }
932 932
933 // The resource fetch algorithm 933 // The resource fetch algorithm
934 m_networkState = NETWORK_LOADING; 934 setNetworkState(NETWORK_LOADING);
935 935
936 // Set m_currentSrc *before* changing to the cache url, the fact that we are loading from the app 936 // Set m_currentSrc *before* changing to the cache url, the fact that we are loading from the app
937 // cache is an internal detail not exposed through the media element API. 937 // cache is an internal detail not exposed through the media element API.
938 m_currentSrc = url; 938 m_currentSrc = url;
939 939
940 #if ENABLE(WEB_AUDIO) 940 #if ENABLE(WEB_AUDIO)
941 if (m_audioSourceNode) 941 if (m_audioSourceNode)
942 m_audioSourceNode->onCurrentSrcChanged(m_currentSrc); 942 m_audioSourceNode->onCurrentSrcChanged(m_currentSrc);
943 #endif 943 #endif
944 944
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 1096
1097 // resource fetch algorithm step 3 - continued from deferLoad(). 1097 // resource fetch algorithm step 3 - continued from deferLoad().
1098 1098
1099 // 5. Wait for an implementation-defined event (e.g. the user requesting tha t the media element begin playback). 1099 // 5. Wait for an implementation-defined event (e.g. the user requesting tha t the media element begin playback).
1100 // This is assumed to be whatever 'event' ended up calling this method. 1100 // This is assumed to be whatever 'event' ended up calling this method.
1101 cancelDeferredLoad(); 1101 cancelDeferredLoad();
1102 // 6. Set the element's delaying-the-load-event flag back to true (this 1102 // 6. Set the element's delaying-the-load-event flag back to true (this
1103 // delays the load event again, in case it hasn't been fired yet). 1103 // delays the load event again, in case it hasn't been fired yet).
1104 setShouldDelayLoadEvent(true); 1104 setShouldDelayLoadEvent(true);
1105 // 7. Set the networkState to NETWORK_LOADING. 1105 // 7. Set the networkState to NETWORK_LOADING.
1106 m_networkState = NETWORK_LOADING; 1106 setNetworkState(NETWORK_LOADING);
1107 1107
1108 startProgressEventTimer(); 1108 startProgressEventTimer();
1109 1109
1110 startPlayerLoad(); 1110 startPlayerLoad();
1111 } 1111 }
1112 1112
1113 void HTMLMediaElement::startDeferredLoad() 1113 void HTMLMediaElement::startDeferredLoad()
1114 { 1114 {
1115 if (m_deferredLoadState == WaitingForTrigger) { 1115 if (m_deferredLoadState == WaitingForTrigger) {
1116 executeDeferredLoad(); 1116 executeDeferredLoad();
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
1231 } 1231 }
1232 1232
1233 void HTMLMediaElement::waitForSourceChange() 1233 void HTMLMediaElement::waitForSourceChange()
1234 { 1234 {
1235 WTF_LOG(Media, "HTMLMediaElement::waitForSourceChange(%p)", this); 1235 WTF_LOG(Media, "HTMLMediaElement::waitForSourceChange(%p)", this);
1236 1236
1237 stopPeriodicTimers(); 1237 stopPeriodicTimers();
1238 m_loadState = WaitingForSource; 1238 m_loadState = WaitingForSource;
1239 1239
1240 // 6.17 - Waiting: Set the element's networkState attribute to the NETWORK_N O_SOURCE value 1240 // 6.17 - Waiting: Set the element's networkState attribute to the NETWORK_N O_SOURCE value
1241 m_networkState = NETWORK_NO_SOURCE; 1241 setNetworkState(NETWORK_NO_SOURCE);
1242 1242
1243 // 6.18 - Set the element's delaying-the-load-event flag to false. This stop s delaying the load event. 1243 // 6.18 - Set the element's delaying-the-load-event flag to false. This stop s delaying the load event.
1244 setShouldDelayLoadEvent(false); 1244 setShouldDelayLoadEvent(false);
1245 1245
1246 updateDisplayState(); 1246 updateDisplayState();
1247 1247
1248 if (layoutObject()) 1248 if (layoutObject())
1249 layoutObject()->updateFromElement(); 1249 layoutObject()->updateFromElement();
1250 } 1250 }
1251 1251
(...skipping 10 matching lines...) Expand all
1262 // URL could not be resolved. In one atomic operation, run the following ste ps: 1262 // URL could not be resolved. In one atomic operation, run the following ste ps:
1263 1263
1264 // 6.1 - Set the error attribute to a new MediaError object whose code attri bute is set to 1264 // 6.1 - Set the error attribute to a new MediaError object whose code attri bute is set to
1265 // MEDIA_ERR_SRC_NOT_SUPPORTED. 1265 // MEDIA_ERR_SRC_NOT_SUPPORTED.
1266 m_error = MediaError::create(MediaError::MEDIA_ERR_SRC_NOT_SUPPORTED); 1266 m_error = MediaError::create(MediaError::MEDIA_ERR_SRC_NOT_SUPPORTED);
1267 1267
1268 // 6.2 - Forget the media element's media-resource-specific text tracks. 1268 // 6.2 - Forget the media element's media-resource-specific text tracks.
1269 forgetResourceSpecificTracks(); 1269 forgetResourceSpecificTracks();
1270 1270
1271 // 6.3 - Set the element's networkState attribute to the NETWORK_NO_SOURCE v alue. 1271 // 6.3 - Set the element's networkState attribute to the NETWORK_NO_SOURCE v alue.
1272 m_networkState = NETWORK_NO_SOURCE; 1272 setNetworkState(NETWORK_NO_SOURCE);
1273 1273
1274 // 7 - Queue a task to fire a simple event named error at the media element. 1274 // 7 - Queue a task to fire a simple event named error at the media element.
1275 scheduleEvent(EventTypeNames::error); 1275 scheduleEvent(EventTypeNames::error);
1276 1276
1277 closeMediaSource(); 1277 closeMediaSource();
1278 1278
1279 // 8 - Set the element's delaying-the-load-event flag to false. This stops d elaying the load event. 1279 // 8 - Set the element's delaying-the-load-event flag to false. This stops d elaying the load event.
1280 setShouldDelayLoadEvent(false); 1280 setShouldDelayLoadEvent(false);
1281 1281
1282 // 9 - Abort these steps. Until the load() method is invoked or the src attr ibute is changed, 1282 // 9 - Abort these steps. Until the load() method is invoked or the src attr ibute is changed,
(...skipping 15 matching lines...) Expand all
1298 m_loadState = WaitingForSource; 1298 m_loadState = WaitingForSource;
1299 1299
1300 // 2 - Set the error attribute to a new MediaError object whose code attribu te is 1300 // 2 - Set the error attribute to a new MediaError object whose code attribu te is
1301 // set to MEDIA_ERR_NETWORK/MEDIA_ERR_DECODE. 1301 // set to MEDIA_ERR_NETWORK/MEDIA_ERR_DECODE.
1302 m_error = err; 1302 m_error = err;
1303 1303
1304 // 3 - Queue a task to fire a simple event named error at the media element. 1304 // 3 - Queue a task to fire a simple event named error at the media element.
1305 scheduleEvent(EventTypeNames::error); 1305 scheduleEvent(EventTypeNames::error);
1306 1306
1307 // 4 - Set the element's networkState attribute to the NETWORK_IDLE value. 1307 // 4 - Set the element's networkState attribute to the NETWORK_IDLE value.
1308 m_networkState = NETWORK_IDLE; 1308 setNetworkState(NETWORK_IDLE);
1309 1309
1310 // 5 - Set the element's delaying-the-load-event flag to false. This stops d elaying the load event. 1310 // 5 - Set the element's delaying-the-load-event flag to false. This stops d elaying the load event.
1311 setShouldDelayLoadEvent(false); 1311 setShouldDelayLoadEvent(false);
1312 1312
1313 // 6 - Abort the overall resource selection algorithm. 1313 // 6 - Abort the overall resource selection algorithm.
1314 m_currentSourceNode = nullptr; 1314 m_currentSourceNode = nullptr;
1315 } 1315 }
1316 1316
1317 void HTMLMediaElement::cancelPendingEventsAndCallbacks() 1317 void HTMLMediaElement::cancelPendingEventsAndCallbacks()
1318 { 1318 {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1372 if (mediaControls()) 1372 if (mediaControls())
1373 mediaControls()->reset(); 1373 mediaControls()->reset();
1374 } 1374 }
1375 1375
1376 void HTMLMediaElement::setNetworkState(WebMediaPlayer::NetworkState state) 1376 void HTMLMediaElement::setNetworkState(WebMediaPlayer::NetworkState state)
1377 { 1377 {
1378 WTF_LOG(Media, "HTMLMediaElement::setNetworkState(%p, %d) - current state is %d", this, static_cast<int>(state), static_cast<int>(m_networkState)); 1378 WTF_LOG(Media, "HTMLMediaElement::setNetworkState(%p, %d) - current state is %d", this, static_cast<int>(state), static_cast<int>(m_networkState));
1379 1379
1380 if (state == WebMediaPlayer::NetworkStateEmpty) { 1380 if (state == WebMediaPlayer::NetworkStateEmpty) {
1381 // Just update the cached state and leave, we can't do anything. 1381 // Just update the cached state and leave, we can't do anything.
1382 m_networkState = NETWORK_EMPTY; 1382 setNetworkState(NETWORK_EMPTY);
1383 return; 1383 return;
1384 } 1384 }
1385 1385
1386 if (state == WebMediaPlayer::NetworkStateFormatError 1386 if (state == WebMediaPlayer::NetworkStateFormatError
1387 || state == WebMediaPlayer::NetworkStateNetworkError 1387 || state == WebMediaPlayer::NetworkStateNetworkError
1388 || state == WebMediaPlayer::NetworkStateDecodeError) { 1388 || state == WebMediaPlayer::NetworkStateDecodeError) {
1389 mediaLoadingFailed(state); 1389 mediaLoadingFailed(state);
1390 return; 1390 return;
1391 } 1391 }
1392 1392
1393 if (state == WebMediaPlayer::NetworkStateIdle) { 1393 if (state == WebMediaPlayer::NetworkStateIdle) {
1394 if (m_networkState > NETWORK_IDLE) { 1394 if (m_networkState > NETWORK_IDLE) {
1395 changeNetworkStateFromLoadingToIdle(); 1395 changeNetworkStateFromLoadingToIdle();
1396 setShouldDelayLoadEvent(false); 1396 setShouldDelayLoadEvent(false);
1397 } else { 1397 } else {
1398 m_networkState = NETWORK_IDLE; 1398 setNetworkState(NETWORK_IDLE);
1399 } 1399 }
1400 } 1400 }
1401 1401
1402 if (state == WebMediaPlayer::NetworkStateLoading) { 1402 if (state == WebMediaPlayer::NetworkStateLoading) {
1403 if (m_networkState < NETWORK_LOADING || m_networkState == NETWORK_NO_SOU RCE) 1403 if (m_networkState < NETWORK_LOADING || m_networkState == NETWORK_NO_SOU RCE)
1404 startProgressEventTimer(); 1404 startProgressEventTimer();
1405 m_networkState = NETWORK_LOADING; 1405 setNetworkState(NETWORK_LOADING);
1406 m_completelyLoaded = false; 1406 m_completelyLoaded = false;
1407 } 1407 }
1408 1408
1409 if (state == WebMediaPlayer::NetworkStateLoaded) { 1409 if (state == WebMediaPlayer::NetworkStateLoaded) {
1410 if (m_networkState != NETWORK_IDLE) 1410 if (m_networkState != NETWORK_IDLE)
1411 changeNetworkStateFromLoadingToIdle(); 1411 changeNetworkStateFromLoadingToIdle();
1412 m_completelyLoaded = true; 1412 m_completelyLoaded = true;
1413 } 1413 }
1414 } 1414 }
1415 1415
1416 void HTMLMediaElement::changeNetworkStateFromLoadingToIdle() 1416 void HTMLMediaElement::changeNetworkStateFromLoadingToIdle()
1417 { 1417 {
1418 m_progressEventTimer.stop(); 1418 m_progressEventTimer.stop();
1419 1419
1420 // Schedule one last progress event so we guarantee that at least one is fir ed 1420 // Schedule one last progress event so we guarantee that at least one is fir ed
1421 // for files that load very quickly. 1421 // for files that load very quickly.
1422 if (webMediaPlayer() && webMediaPlayer()->didLoadingProgress()) 1422 if (webMediaPlayer() && webMediaPlayer()->didLoadingProgress())
1423 scheduleEvent(EventTypeNames::progress); 1423 scheduleEvent(EventTypeNames::progress);
1424 scheduleEvent(EventTypeNames::suspend); 1424 scheduleEvent(EventTypeNames::suspend);
1425 m_networkState = NETWORK_IDLE; 1425 setNetworkState(NETWORK_IDLE);
1426 } 1426 }
1427 1427
1428 void HTMLMediaElement::readyStateChanged() 1428 void HTMLMediaElement::readyStateChanged()
1429 { 1429 {
1430 setReadyState(static_cast<ReadyState>(webMediaPlayer()->readyState())); 1430 setReadyState(static_cast<ReadyState>(webMediaPlayer()->readyState()));
1431 } 1431 }
1432 1432
1433 void HTMLMediaElement::setReadyState(ReadyState state) 1433 void HTMLMediaElement::setReadyState(ReadyState state)
1434 { 1434 {
1435 WTF_LOG(Media, "HTMLMediaElement::setReadyState(%p, %d) - current state is % d,", this, static_cast<int>(state), static_cast<int>(m_readyState)); 1435 WTF_LOG(Media, "HTMLMediaElement::setReadyState(%p, %d) - current state is % d,", this, static_cast<int>(state), static_cast<int>(m_readyState));
(...skipping 1216 matching lines...) Expand 10 before | Expand all | Expand 10 after
2652 return; 2652 return;
2653 2653
2654 // 4.8.9.5, resource selection algorithm, source elements section: 2654 // 4.8.9.5, resource selection algorithm, source elements section:
2655 // 21. Wait until the node after pointer is a node other than the end of the list. (This step might wait forever.) 2655 // 21. Wait until the node after pointer is a node other than the end of the list. (This step might wait forever.)
2656 // 22. Asynchronously await a stable state... 2656 // 22. Asynchronously await a stable state...
2657 // 23. Set the element's delaying-the-load-event flag back to true (this del ays the load event again, in case 2657 // 23. Set the element's delaying-the-load-event flag back to true (this del ays the load event again, in case
2658 // it hasn't been fired yet). 2658 // it hasn't been fired yet).
2659 setShouldDelayLoadEvent(true); 2659 setShouldDelayLoadEvent(true);
2660 2660
2661 // 24. Set the networkState back to NETWORK_LOADING. 2661 // 24. Set the networkState back to NETWORK_LOADING.
2662 m_networkState = NETWORK_LOADING; 2662 setNetworkState(NETWORK_LOADING);
2663 2663
2664 // 25. Jump back to the find next candidate step above. 2664 // 25. Jump back to the find next candidate step above.
2665 m_nextChildNodeToConsider = source; 2665 m_nextChildNodeToConsider = source;
2666 scheduleNextSourceChild(); 2666 scheduleNextSourceChild();
2667 } 2667 }
2668 2668
2669 void HTMLMediaElement::sourceWasRemoved(HTMLSourceElement* source) 2669 void HTMLMediaElement::sourceWasRemoved(HTMLSourceElement* source)
2670 { 2670 {
2671 WTF_LOG(Media, "HTMLMediaElement::sourceWasRemoved(%p, %p)", this, source); 2671 WTF_LOG(Media, "HTMLMediaElement::sourceWasRemoved(%p, %p)", this, source);
2672 2672
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
2996 m_error = MediaError::create(MediaError::MEDIA_ERR_ABORTED); 2996 m_error = MediaError::create(MediaError::MEDIA_ERR_ABORTED);
2997 2997
2998 // 3 - Queue a task to fire a simple event named error at the media element. 2998 // 3 - Queue a task to fire a simple event named error at the media element.
2999 scheduleEvent(EventTypeNames::abort); 2999 scheduleEvent(EventTypeNames::abort);
3000 3000
3001 // 4 - If the media element's readyState attribute has a value equal to HAVE _NOTHING, set the 3001 // 4 - If the media element's readyState attribute has a value equal to HAVE _NOTHING, set the
3002 // element's networkState attribute to the NETWORK_EMPTY value and queue a t ask to fire a 3002 // element's networkState attribute to the NETWORK_EMPTY value and queue a t ask to fire a
3003 // simple event named emptied at the element. Otherwise, set the element's n etworkState 3003 // simple event named emptied at the element. Otherwise, set the element's n etworkState
3004 // attribute to the NETWORK_IDLE value. 3004 // attribute to the NETWORK_IDLE value.
3005 if (readyState == HAVE_NOTHING) { 3005 if (readyState == HAVE_NOTHING) {
3006 m_networkState = NETWORK_EMPTY; 3006 setNetworkState(NETWORK_EMPTY);
3007 scheduleEvent(EventTypeNames::emptied); 3007 scheduleEvent(EventTypeNames::emptied);
3008 } else { 3008 } else {
3009 m_networkState = NETWORK_IDLE; 3009 setNetworkState(NETWORK_IDLE);
3010 } 3010 }
3011 3011
3012 // 5 - Set the element's delaying-the-load-event flag to false. This stops d elaying the load event. 3012 // 5 - Set the element's delaying-the-load-event flag to false. This stops d elaying the load event.
3013 setShouldDelayLoadEvent(false); 3013 setShouldDelayLoadEvent(false);
3014 3014
3015 // 6 - Abort the overall resource selection algorithm. 3015 // 6 - Abort the overall resource selection algorithm.
3016 m_currentSourceNode = nullptr; 3016 m_currentSourceNode = nullptr;
3017 3017
3018 invalidateCachedTime(); 3018 invalidateCachedTime();
3019 cueTimeline().updateActiveCues(0); 3019 cueTimeline().updateActiveCues(0);
(...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after
3576 void HTMLMediaElement::removeUserGestureRequirement() 3576 void HTMLMediaElement::removeUserGestureRequirement()
3577 { 3577 {
3578 m_userGestureRequiredForPlay = false; 3578 m_userGestureRequiredForPlay = false;
3579 } 3579 }
3580 3580
3581 void HTMLMediaElement::setInitialPlayWithoutUserGestures(bool value) 3581 void HTMLMediaElement::setInitialPlayWithoutUserGestures(bool value)
3582 { 3582 {
3583 m_initialPlayWithoutUserGesture = value; 3583 m_initialPlayWithoutUserGesture = value;
3584 } 3584 }
3585 3585
3586 void HTMLMediaElement::setNetworkState(NetworkState state)
3587 {
3588 m_networkState = state;
3589 if (MediaControls* controls = mediaControls())
philipj_slow 2015/10/28 15:14:02 I haven't investigated, but I wouldn't be too surp
liberato (no reviews please) 2015/10/29 16:10:26 Done.
3590 controls->networkStateChanged();
3591 }
3592
3586 #if ENABLE(WEB_AUDIO) 3593 #if ENABLE(WEB_AUDIO)
3587 void HTMLMediaElement::clearWeakMembers(Visitor* visitor) 3594 void HTMLMediaElement::clearWeakMembers(Visitor* visitor)
3588 { 3595 {
3589 if (!Heap::isHeapObjectAlive(m_audioSourceNode)) 3596 if (!Heap::isHeapObjectAlive(m_audioSourceNode))
3590 audioSourceProvider().setClient(nullptr); 3597 audioSourceProvider().setClient(nullptr);
3591 } 3598 }
3592 3599
3593 void HTMLMediaElement::AudioSourceProviderImpl::wrap(WebAudioSourceProvider* pro vider) 3600 void HTMLMediaElement::AudioSourceProviderImpl::wrap(WebAudioSourceProvider* pro vider)
3594 { 3601 {
3595 MutexLocker locker(provideInputLock); 3602 MutexLocker locker(provideInputLock);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
3645 visitor->trace(m_client); 3652 visitor->trace(m_client);
3646 } 3653 }
3647 3654
3648 DEFINE_TRACE(HTMLMediaElement::AudioSourceProviderImpl) 3655 DEFINE_TRACE(HTMLMediaElement::AudioSourceProviderImpl)
3649 { 3656 {
3650 visitor->trace(m_client); 3657 visitor->trace(m_client);
3651 } 3658 }
3652 #endif 3659 #endif
3653 3660
3654 } 3661 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698