OLD | NEW |
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 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 , m_sentStalledEvent(false) | 295 , m_sentStalledEvent(false) |
296 , m_sentEndEvent(false) | 296 , m_sentEndEvent(false) |
297 , m_pausedInternal(false) | 297 , m_pausedInternal(false) |
298 , m_closedCaptionsVisible(false) | 298 , m_closedCaptionsVisible(false) |
299 , m_completelyLoaded(false) | 299 , m_completelyLoaded(false) |
300 , m_havePreparedToPlay(false) | 300 , m_havePreparedToPlay(false) |
301 , m_tracksAreReady(true) | 301 , m_tracksAreReady(true) |
302 , m_haveVisibleTextTrack(false) | 302 , m_haveVisibleTextTrack(false) |
303 , m_processingPreferenceChange(false) | 303 , m_processingPreferenceChange(false) |
304 , m_lastTextTrackUpdateTime(-1) | 304 , m_lastTextTrackUpdateTime(-1) |
305 , m_textTracks(0) | 305 , m_textTracks(nullptr) |
306 , m_ignoreTrackDisplayUpdate(0) | 306 , m_ignoreTrackDisplayUpdate(0) |
307 #if ENABLE(WEB_AUDIO) | 307 #if ENABLE(WEB_AUDIO) |
308 , m_audioSourceNode(0) | 308 , m_audioSourceNode(0) |
309 #endif | 309 #endif |
310 , m_emeMode(EmeModeNotSelected) | 310 , m_emeMode(EmeModeNotSelected) |
311 { | 311 { |
312 ASSERT(RuntimeEnabledFeatures::mediaEnabled()); | 312 ASSERT(RuntimeEnabledFeatures::mediaEnabled()); |
313 | 313 |
314 WTF_LOG(Media, "HTMLMediaElement::HTMLMediaElement"); | 314 WTF_LOG(Media, "HTMLMediaElement::HTMLMediaElement"); |
315 ScriptWrappable::init(this); | 315 ScriptWrappable::init(this); |
(...skipping 21 matching lines...) Expand all Loading... |
337 setShouldDelayLoadEvent(false); | 337 setShouldDelayLoadEvent(false); |
338 if (m_textTracks) | 338 if (m_textTracks) |
339 m_textTracks->clearOwner(); | 339 m_textTracks->clearOwner(); |
340 if (m_textTracks) { | 340 if (m_textTracks) { |
341 for (unsigned i = 0; i < m_textTracks->length(); ++i) | 341 for (unsigned i = 0; i < m_textTracks->length(); ++i) |
342 m_textTracks->item(i)->clearClient(); | 342 m_textTracks->item(i)->clearClient(); |
343 } | 343 } |
344 | 344 |
345 if (m_mediaController) { | 345 if (m_mediaController) { |
346 m_mediaController->removeMediaElement(this); | 346 m_mediaController->removeMediaElement(this); |
347 m_mediaController = 0; | 347 m_mediaController = nullptr; |
348 } | 348 } |
349 | 349 |
350 closeMediaSource(); | 350 closeMediaSource(); |
351 | 351 |
352 setMediaKeysInternal(0); | 352 setMediaKeysInternal(0); |
353 | 353 |
354 removeElementFromDocumentMap(this, &document()); | 354 removeElementFromDocumentMap(this, &document()); |
355 | 355 |
356 // Destroying the player may cause a resource load to be canceled, | 356 // Destroying the player may cause a resource load to be canceled, |
357 // which could result in userCancelledLoad() being called back. | 357 // which could result in userCancelledLoad() being called back. |
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
639 m_loadTimer.stop(); | 639 m_loadTimer.stop(); |
640 m_sentEndEvent = false; | 640 m_sentEndEvent = false; |
641 m_sentStalledEvent = false; | 641 m_sentStalledEvent = false; |
642 m_haveFiredLoadedData = false; | 642 m_haveFiredLoadedData = false; |
643 m_completelyLoaded = false; | 643 m_completelyLoaded = false; |
644 m_havePreparedToPlay = false; | 644 m_havePreparedToPlay = false; |
645 m_displayMode = Unknown; | 645 m_displayMode = Unknown; |
646 | 646 |
647 // 1 - Abort any already-running instance of the resource selection algorith
m for this element. | 647 // 1 - Abort any already-running instance of the resource selection algorith
m for this element. |
648 m_loadState = WaitingForSource; | 648 m_loadState = WaitingForSource; |
649 m_currentSourceNode = 0; | 649 m_currentSourceNode = nullptr; |
650 | 650 |
651 // 2 - If there are any tasks from the media element's media element event t
ask source in | 651 // 2 - If there are any tasks from the media element's media element event t
ask source in |
652 // one of the task queues, then remove those tasks. | 652 // one of the task queues, then remove those tasks. |
653 cancelPendingEventsAndCallbacks(); | 653 cancelPendingEventsAndCallbacks(); |
654 | 654 |
655 // 3 - If the media element's networkState is set to NETWORK_LOADING or NETW
ORK_IDLE, queue | 655 // 3 - If the media element's networkState is set to NETWORK_LOADING or NETW
ORK_IDLE, queue |
656 // a task to fire a simple event named abort at the media element. | 656 // a task to fire a simple event named abort at the media element. |
657 if (m_networkState == NETWORK_LOADING || m_networkState == NETWORK_IDLE) | 657 if (m_networkState == NETWORK_LOADING || m_networkState == NETWORK_IDLE) |
658 scheduleEvent(EventTypeNames::abort); | 658 scheduleEvent(EventTypeNames::abort); |
659 | 659 |
(...skipping 13 matching lines...) Expand all Loading... |
673 scheduleEvent(EventTypeNames::emptied); | 673 scheduleEvent(EventTypeNames::emptied); |
674 updateMediaController(); | 674 updateMediaController(); |
675 if (RuntimeEnabledFeatures::videoTrackEnabled()) | 675 if (RuntimeEnabledFeatures::videoTrackEnabled()) |
676 updateActiveTextTrackCues(0); | 676 updateActiveTextTrackCues(0); |
677 } | 677 } |
678 | 678 |
679 // 5 - Set the playbackRate attribute to the value of the defaultPlaybackRat
e attribute. | 679 // 5 - Set the playbackRate attribute to the value of the defaultPlaybackRat
e attribute. |
680 setPlaybackRate(defaultPlaybackRate()); | 680 setPlaybackRate(defaultPlaybackRate()); |
681 | 681 |
682 // 6 - Set the error attribute to null and the autoplaying flag to true. | 682 // 6 - Set the error attribute to null and the autoplaying flag to true. |
683 m_error = 0; | 683 m_error = nullptr; |
684 m_autoplaying = true; | 684 m_autoplaying = true; |
685 | 685 |
686 // 7 - Invoke the media element's resource selection algorithm. | 686 // 7 - Invoke the media element's resource selection algorithm. |
687 | 687 |
688 // 8 - Note: Playback of any previously playing media resource for this elem
ent stops. | 688 // 8 - Note: Playback of any previously playing media resource for this elem
ent stops. |
689 | 689 |
690 // The resource selection algorithm | 690 // The resource selection algorithm |
691 // 1 - Set the networkState to NETWORK_NO_SOURCE | 691 // 1 - Set the networkState to NETWORK_NO_SOURCE |
692 m_networkState = NETWORK_NO_SOURCE; | 692 m_networkState = NETWORK_NO_SOURCE; |
693 | 693 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
742 if (element->hasTagName(sourceTag)) | 742 if (element->hasTagName(sourceTag)) |
743 break; | 743 break; |
744 } | 744 } |
745 | 745 |
746 // Otherwise, if the media element does not have a src attribute but has
a source | 746 // Otherwise, if the media element does not have a src attribute but has
a source |
747 // element child, then let mode be children and let candidate be the fir
st such | 747 // element child, then let mode be children and let candidate be the fir
st such |
748 // source element child in tree order. | 748 // source element child in tree order. |
749 if (element) { | 749 if (element) { |
750 mode = children; | 750 mode = children; |
751 m_nextChildNodeToConsider = element; | 751 m_nextChildNodeToConsider = element; |
752 m_currentSourceNode = 0; | 752 m_currentSourceNode = nullptr; |
753 } else { | 753 } else { |
754 // Otherwise the media element has neither a src attribute nor a sou
rce element | 754 // Otherwise the media element has neither a src attribute nor a sou
rce element |
755 // child: set the networkState to NETWORK_EMPTY, and abort these ste
ps; the | 755 // child: set the networkState to NETWORK_EMPTY, and abort these ste
ps; the |
756 // synchronous section ends. | 756 // synchronous section ends. |
757 m_loadState = WaitingForSource; | 757 m_loadState = WaitingForSource; |
758 setShouldDelayLoadEvent(false); | 758 setShouldDelayLoadEvent(false); |
759 m_networkState = NETWORK_EMPTY; | 759 m_networkState = NETWORK_EMPTY; |
760 | 760 |
761 WTF_LOG(Media, "HTMLMediaElement::selectMediaResource, nothing to lo
ad"); | 761 WTF_LOG(Media, "HTMLMediaElement::selectMediaResource, nothing to lo
ad"); |
762 return; | 762 return; |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
863 removeBehaviorRestriction(RequireUserGestureForPlayRestriction); | 863 removeBehaviorRestriction(RequireUserGestureForPlayRestriction); |
864 } else { | 864 } else { |
865 m_mediaSource = HTMLMediaSource::lookup(url.string()); | 865 m_mediaSource = HTMLMediaSource::lookup(url.string()); |
866 | 866 |
867 if (m_mediaSource) { | 867 if (m_mediaSource) { |
868 loadType = blink::WebMediaPlayer::LoadTypeMediaSource; | 868 loadType = blink::WebMediaPlayer::LoadTypeMediaSource; |
869 | 869 |
870 if (!m_mediaSource->attachToElement(this)) { | 870 if (!m_mediaSource->attachToElement(this)) { |
871 // Forget our reference to the MediaSource, so we leave it a
lone | 871 // Forget our reference to the MediaSource, so we leave it a
lone |
872 // while processing remainder of load failure. | 872 // while processing remainder of load failure. |
873 m_mediaSource = 0; | 873 m_mediaSource = nullptr; |
874 attemptLoad = false; | 874 attemptLoad = false; |
875 } | 875 } |
876 } | 876 } |
877 } | 877 } |
878 } | 878 } |
879 | 879 |
880 if (attemptLoad && canLoadURL(url, contentType, keySystem)) { | 880 if (attemptLoad && canLoadURL(url, contentType, keySystem)) { |
881 m_player->load(loadType, url); | 881 m_player->load(loadType, url); |
882 } else { | 882 } else { |
883 mediaLoadingFailed(MediaPlayer::FormatError); | 883 mediaLoadingFailed(MediaPlayer::FormatError); |
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1346 if (renderer()) | 1346 if (renderer()) |
1347 renderer()->updateFromElement(); | 1347 renderer()->updateFromElement(); |
1348 } | 1348 } |
1349 | 1349 |
1350 void HTMLMediaElement::noneSupported() | 1350 void HTMLMediaElement::noneSupported() |
1351 { | 1351 { |
1352 WTF_LOG(Media, "HTMLMediaElement::noneSupported"); | 1352 WTF_LOG(Media, "HTMLMediaElement::noneSupported"); |
1353 | 1353 |
1354 stopPeriodicTimers(); | 1354 stopPeriodicTimers(); |
1355 m_loadState = WaitingForSource; | 1355 m_loadState = WaitingForSource; |
1356 m_currentSourceNode = 0; | 1356 m_currentSourceNode = nullptr; |
1357 | 1357 |
1358 // 4.8.10.5 | 1358 // 4.8.10.5 |
1359 // 6 - Reaching this step indicates that the media resource failed to load o
r that the given | 1359 // 6 - Reaching this step indicates that the media resource failed to load o
r that the given |
1360 // URL could not be resolved. In one atomic operation, run the following ste
ps: | 1360 // URL could not be resolved. In one atomic operation, run the following ste
ps: |
1361 | 1361 |
1362 // 6.1 - Set the error attribute to a new MediaError object whose code attri
bute is set to | 1362 // 6.1 - Set the error attribute to a new MediaError object whose code attri
bute is set to |
1363 // MEDIA_ERR_SRC_NOT_SUPPORTED. | 1363 // MEDIA_ERR_SRC_NOT_SUPPORTED. |
1364 m_error = MediaError::create(MediaError::MEDIA_ERR_SRC_NOT_SUPPORTED); | 1364 m_error = MediaError::create(MediaError::MEDIA_ERR_SRC_NOT_SUPPORTED); |
1365 | 1365 |
1366 // 6.2 - Forget the media element's media-resource-specific text tracks. | 1366 // 6.2 - Forget the media element's media-resource-specific text tracks. |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1404 | 1404 |
1405 // 4 - Set the element's networkState attribute to the NETWORK_EMPTY value a
nd queue a | 1405 // 4 - Set the element's networkState attribute to the NETWORK_EMPTY value a
nd queue a |
1406 // task to fire a simple event called emptied at the element. | 1406 // task to fire a simple event called emptied at the element. |
1407 m_networkState = NETWORK_EMPTY; | 1407 m_networkState = NETWORK_EMPTY; |
1408 scheduleEvent(EventTypeNames::emptied); | 1408 scheduleEvent(EventTypeNames::emptied); |
1409 | 1409 |
1410 // 5 - Set the element's delaying-the-load-event flag to false. This stops d
elaying the load event. | 1410 // 5 - Set the element's delaying-the-load-event flag to false. This stops d
elaying the load event. |
1411 setShouldDelayLoadEvent(false); | 1411 setShouldDelayLoadEvent(false); |
1412 | 1412 |
1413 // 6 - Abort the overall resource selection algorithm. | 1413 // 6 - Abort the overall resource selection algorithm. |
1414 m_currentSourceNode = 0; | 1414 m_currentSourceNode = nullptr; |
1415 } | 1415 } |
1416 | 1416 |
1417 void HTMLMediaElement::cancelPendingEventsAndCallbacks() | 1417 void HTMLMediaElement::cancelPendingEventsAndCallbacks() |
1418 { | 1418 { |
1419 WTF_LOG(Media, "HTMLMediaElement::cancelPendingEventsAndCallbacks"); | 1419 WTF_LOG(Media, "HTMLMediaElement::cancelPendingEventsAndCallbacks"); |
1420 m_asyncEventQueue->cancelAllEvents(); | 1420 m_asyncEventQueue->cancelAllEvents(); |
1421 | 1421 |
1422 for (Element* child = ElementTraversal::firstWithin(*this); child; child = E
lementTraversal::nextSibling(*child)) { | 1422 for (Element* child = ElementTraversal::firstWithin(*this); child; child = E
lementTraversal::nextSibling(*child)) { |
1423 if (child->hasTagName(sourceTag)) | 1423 if (child->hasTagName(sourceTag)) |
1424 toHTMLSourceElement(child)->cancelPendingErrorEvent(); | 1424 toHTMLSourceElement(child)->cancelPendingErrorEvent(); |
(...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2183 | 2183 |
2184 updatePlayState(); | 2184 updatePlayState(); |
2185 } | 2185 } |
2186 | 2186 |
2187 void HTMLMediaElement::closeMediaSource() | 2187 void HTMLMediaElement::closeMediaSource() |
2188 { | 2188 { |
2189 if (!m_mediaSource) | 2189 if (!m_mediaSource) |
2190 return; | 2190 return; |
2191 | 2191 |
2192 m_mediaSource->close(); | 2192 m_mediaSource->close(); |
2193 m_mediaSource = 0; | 2193 m_mediaSource = nullptr; |
2194 } | 2194 } |
2195 | 2195 |
2196 void HTMLMediaElement::webkitGenerateKeyRequest(const String& keySystem, PassRef
Ptr<Uint8Array> initData, ExceptionState& exceptionState) | 2196 void HTMLMediaElement::webkitGenerateKeyRequest(const String& keySystem, PassRef
Ptr<Uint8Array> initData, ExceptionState& exceptionState) |
2197 { | 2197 { |
2198 WTF_LOG(Media, "HTMLMediaElement::webkitGenerateKeyRequest"); | 2198 WTF_LOG(Media, "HTMLMediaElement::webkitGenerateKeyRequest"); |
2199 | 2199 |
2200 if (!setEmeMode(EmeModePrefixed, exceptionState)) | 2200 if (!setEmeMode(EmeModePrefixed, exceptionState)) |
2201 return; | 2201 return; |
2202 | 2202 |
2203 if (keySystem.isEmpty()) { | 2203 if (keySystem.isEmpty()) { |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2545 PassRefPtr<TextTrack> HTMLMediaElement::addTextTrack(const AtomicString& kind, c
onst AtomicString& label, const AtomicString& language, ExceptionState& exceptio
nState) | 2545 PassRefPtr<TextTrack> HTMLMediaElement::addTextTrack(const AtomicString& kind, c
onst AtomicString& label, const AtomicString& language, ExceptionState& exceptio
nState) |
2546 { | 2546 { |
2547 ASSERT(RuntimeEnabledFeatures::videoTrackEnabled()); | 2547 ASSERT(RuntimeEnabledFeatures::videoTrackEnabled()); |
2548 | 2548 |
2549 // 4.8.10.12.4 Text track API | 2549 // 4.8.10.12.4 Text track API |
2550 // The addTextTrack(kind, label, language) method of media elements, when in
voked, must run the following steps: | 2550 // The addTextTrack(kind, label, language) method of media elements, when in
voked, must run the following steps: |
2551 | 2551 |
2552 // 1. If kind is not one of the following strings, then throw a SyntaxError
exception and abort these steps | 2552 // 1. If kind is not one of the following strings, then throw a SyntaxError
exception and abort these steps |
2553 if (!TextTrack::isValidKindKeyword(kind)) { | 2553 if (!TextTrack::isValidKindKeyword(kind)) { |
2554 exceptionState.throwDOMException(SyntaxError, "The 'kind' provided ('" +
kind + "') is invalid."); | 2554 exceptionState.throwDOMException(SyntaxError, "The 'kind' provided ('" +
kind + "') is invalid."); |
2555 return 0; | 2555 return nullptr; |
2556 } | 2556 } |
2557 | 2557 |
2558 // 2. If the label argument was omitted, let label be the empty string. | 2558 // 2. If the label argument was omitted, let label be the empty string. |
2559 // 3. If the language argument was omitted, let language be the empty string
. | 2559 // 3. If the language argument was omitted, let language be the empty string
. |
2560 // 4. Create a new TextTrack object. | 2560 // 4. Create a new TextTrack object. |
2561 | 2561 |
2562 // 5. Create a new text track corresponding to the new object, and set its t
ext track kind to kind, its text | 2562 // 5. Create a new text track corresponding to the new object, and set its t
ext track kind to kind, its text |
2563 // track label to label, its text track language to language... | 2563 // track label to label, its text track language to language... |
2564 RefPtr<TextTrack> textTrack = TextTrack::create(document(), this, kind, labe
l, language); | 2564 RefPtr<TextTrack> textTrack = TextTrack::create(document(), this, kind, labe
l, language); |
2565 | 2565 |
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2916 } | 2916 } |
2917 | 2917 |
2918 if (canUseSourceElement) { | 2918 if (canUseSourceElement) { |
2919 if (contentType) | 2919 if (contentType) |
2920 *contentType = ContentType(type); | 2920 *contentType = ContentType(type); |
2921 if (keySystem) | 2921 if (keySystem) |
2922 *keySystem = system; | 2922 *keySystem = system; |
2923 m_currentSourceNode = source; | 2923 m_currentSourceNode = source; |
2924 m_nextChildNodeToConsider = source->nextSibling(); | 2924 m_nextChildNodeToConsider = source->nextSibling(); |
2925 } else { | 2925 } else { |
2926 m_currentSourceNode = 0; | 2926 m_currentSourceNode = nullptr; |
2927 m_nextChildNodeToConsider = 0; | 2927 m_nextChildNodeToConsider = nullptr; |
2928 } | 2928 } |
2929 | 2929 |
2930 #if !LOG_DISABLED | 2930 #if !LOG_DISABLED |
2931 if (shouldLog) | 2931 if (shouldLog) |
2932 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild -> %p, %s", m_cu
rrentSourceNode.get(), canUseSourceElement ? urlForLoggingMedia(mediaURL).utf8()
.data() : ""); | 2932 WTF_LOG(Media, "HTMLMediaElement::selectNextSourceChild -> %p, %s", m_cu
rrentSourceNode.get(), canUseSourceElement ? urlForLoggingMedia(mediaURL).utf8()
.data() : ""); |
2933 #endif | 2933 #endif |
2934 return canUseSourceElement ? mediaURL : KURL(); | 2934 return canUseSourceElement ? mediaURL : KURL(); |
2935 } | 2935 } |
2936 | 2936 |
2937 void HTMLMediaElement::sourceWasAdded(HTMLSourceElement* source) | 2937 void HTMLMediaElement::sourceWasAdded(HTMLSourceElement* source) |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2997 return; | 2997 return; |
2998 | 2998 |
2999 if (source == m_nextChildNodeToConsider) { | 2999 if (source == m_nextChildNodeToConsider) { |
3000 if (m_currentSourceNode) | 3000 if (m_currentSourceNode) |
3001 m_nextChildNodeToConsider = m_currentSourceNode->nextSibling(); | 3001 m_nextChildNodeToConsider = m_currentSourceNode->nextSibling(); |
3002 WTF_LOG(Media, "HTMLMediaElement::sourceRemoved - m_nextChildNodeToConsi
der set to %p", m_nextChildNodeToConsider.get()); | 3002 WTF_LOG(Media, "HTMLMediaElement::sourceRemoved - m_nextChildNodeToConsi
der set to %p", m_nextChildNodeToConsider.get()); |
3003 } else if (source == m_currentSourceNode) { | 3003 } else if (source == m_currentSourceNode) { |
3004 // Clear the current source node pointer, but don't change the movie as
the spec says: | 3004 // Clear the current source node pointer, but don't change the movie as
the spec says: |
3005 // 4.8.8 - Dynamically modifying a source element and its attribute when
the element is already | 3005 // 4.8.8 - Dynamically modifying a source element and its attribute when
the element is already |
3006 // inserted in a video or audio element will have no effect. | 3006 // inserted in a video or audio element will have no effect. |
3007 m_currentSourceNode = 0; | 3007 m_currentSourceNode = nullptr; |
3008 WTF_LOG(Media, "HTMLMediaElement::sourceRemoved - m_currentSourceNode se
t to 0"); | 3008 WTF_LOG(Media, "HTMLMediaElement::sourceRemoved - m_currentSourceNode se
t to 0"); |
3009 } | 3009 } |
3010 } | 3010 } |
3011 | 3011 |
3012 void HTMLMediaElement::mediaPlayerTimeChanged() | 3012 void HTMLMediaElement::mediaPlayerTimeChanged() |
3013 { | 3013 { |
3014 WTF_LOG(Media, "HTMLMediaElement::mediaPlayerTimeChanged"); | 3014 WTF_LOG(Media, "HTMLMediaElement::mediaPlayerTimeChanged"); |
3015 | 3015 |
3016 if (RuntimeEnabledFeatures::videoTrackEnabled()) | 3016 if (RuntimeEnabledFeatures::videoTrackEnabled()) |
3017 updateActiveTextTrackCues(currentTime()); | 3017 updateActiveTextTrackCues(currentTime()); |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3358 m_networkState = NETWORK_EMPTY; | 3358 m_networkState = NETWORK_EMPTY; |
3359 scheduleEvent(EventTypeNames::emptied); | 3359 scheduleEvent(EventTypeNames::emptied); |
3360 } | 3360 } |
3361 else | 3361 else |
3362 m_networkState = NETWORK_IDLE; | 3362 m_networkState = NETWORK_IDLE; |
3363 | 3363 |
3364 // 5 - Set the element's delaying-the-load-event flag to false. This stops d
elaying the load event. | 3364 // 5 - Set the element's delaying-the-load-event flag to false. This stops d
elaying the load event. |
3365 setShouldDelayLoadEvent(false); | 3365 setShouldDelayLoadEvent(false); |
3366 | 3366 |
3367 // 6 - Abort the overall resource selection algorithm. | 3367 // 6 - Abort the overall resource selection algorithm. |
3368 m_currentSourceNode = 0; | 3368 m_currentSourceNode = nullptr; |
3369 | 3369 |
3370 // Reset m_readyState since m_player is gone. | 3370 // Reset m_readyState since m_player is gone. |
3371 m_readyState = HAVE_NOTHING; | 3371 m_readyState = HAVE_NOTHING; |
3372 updateMediaController(); | 3372 updateMediaController(); |
3373 if (RuntimeEnabledFeatures::videoTrackEnabled()) | 3373 if (RuntimeEnabledFeatures::videoTrackEnabled()) |
3374 updateActiveTextTrackCues(0); | 3374 updateActiveTextTrackCues(0); |
3375 } | 3375 } |
3376 | 3376 |
3377 void HTMLMediaElement::clearMediaPlayerAndAudioSourceProviderClient() | 3377 void HTMLMediaElement::clearMediaPlayerAndAudioSourceProviderClient() |
3378 { | 3378 { |
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3740 { | 3740 { |
3741 return fastGetAttribute(mediagroupAttr); | 3741 return fastGetAttribute(mediagroupAttr); |
3742 } | 3742 } |
3743 | 3743 |
3744 void HTMLMediaElement::setMediaGroup(const AtomicString& group) | 3744 void HTMLMediaElement::setMediaGroup(const AtomicString& group) |
3745 { | 3745 { |
3746 // When a media element is created with a mediagroup attribute, and when a m
edia element's mediagroup | 3746 // When a media element is created with a mediagroup attribute, and when a m
edia element's mediagroup |
3747 // attribute is set, changed, or removed, the user agent must run the follow
ing steps: | 3747 // attribute is set, changed, or removed, the user agent must run the follow
ing steps: |
3748 // 1. Let m [this] be the media element in question. | 3748 // 1. Let m [this] be the media element in question. |
3749 // 2. Let m have no current media controller, if it currently has one. | 3749 // 2. Let m have no current media controller, if it currently has one. |
3750 setControllerInternal(0); | 3750 setControllerInternal(nullptr); |
3751 | 3751 |
3752 // 3. If m's mediagroup attribute is being removed, then abort these steps. | 3752 // 3. If m's mediagroup attribute is being removed, then abort these steps. |
3753 if (group.isNull() || group.isEmpty()) | 3753 if (group.isNull() || group.isEmpty()) |
3754 return; | 3754 return; |
3755 | 3755 |
3756 // 4. If there is another media element whose Document is the same as m's Do
cument (even if one or both | 3756 // 4. If there is another media element whose Document is the same as m's Do
cument (even if one or both |
3757 // of these elements are not actually in the Document), | 3757 // of these elements are not actually in the Document), |
3758 HashSet<HTMLMediaElement*> elements = documentToElementSetMap().get(&documen
t()); | 3758 HashSet<HTMLMediaElement*> elements = documentToElementSetMap().get(&documen
t()); |
3759 for (HashSet<HTMLMediaElement*>::iterator i = elements.begin(); i != element
s.end(); ++i) { | 3759 for (HashSet<HTMLMediaElement*>::iterator i = elements.begin(); i != element
s.end(); ++i) { |
3760 if (*i == this) | 3760 if (*i == this) |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3917 { | 3917 { |
3918 m_mediaSource->setWebMediaSourceAndOpen(adoptPtr(webMediaSource)); | 3918 m_mediaSource->setWebMediaSourceAndOpen(adoptPtr(webMediaSource)); |
3919 } | 3919 } |
3920 | 3920 |
3921 bool HTMLMediaElement::isInteractiveContent() const | 3921 bool HTMLMediaElement::isInteractiveContent() const |
3922 { | 3922 { |
3923 return fastHasAttribute(controlsAttr); | 3923 return fastHasAttribute(controlsAttr); |
3924 } | 3924 } |
3925 | 3925 |
3926 } | 3926 } |
OLD | NEW |