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 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 HTMLElement::parseAttribute(name, value); | 457 HTMLElement::parseAttribute(name, value); |
458 } | 458 } |
459 | 459 |
460 void HTMLMediaElement::finishParsingChildren() | 460 void HTMLMediaElement::finishParsingChildren() |
461 { | 461 { |
462 HTMLElement::finishParsingChildren(); | 462 HTMLElement::finishParsingChildren(); |
463 | 463 |
464 if (!RuntimeEnabledFeatures::videoTrackEnabled()) | 464 if (!RuntimeEnabledFeatures::videoTrackEnabled()) |
465 return; | 465 return; |
466 | 466 |
467 for (Node* node = firstChild(); node; node = node->nextSibling()) { | 467 for (Element* child = ElementTraversal::firstWithin(*this); child; child = E
lementTraversal::nextSibling(*child)) { |
468 if (node->hasTagName(trackTag)) { | 468 if (child->hasTagName(trackTag)) { |
469 scheduleDelayedAction(LoadTextTrackResource); | 469 scheduleDelayedAction(LoadTextTrackResource); |
470 break; | 470 break; |
471 } | 471 } |
472 } | 472 } |
473 } | 473 } |
474 | 474 |
475 bool HTMLMediaElement::rendererIsNeeded(const RenderStyle& style) | 475 bool HTMLMediaElement::rendererIsNeeded(const RenderStyle& style) |
476 { | 476 { |
477 return controls() ? HTMLElement::rendererIsNeeded(style) : false; | 477 return controls() ? HTMLElement::rendererIsNeeded(style) : false; |
478 } | 478 } |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
733 | 733 |
734 void HTMLMediaElement::selectMediaResource() | 734 void HTMLMediaElement::selectMediaResource() |
735 { | 735 { |
736 WTF_LOG(Media, "HTMLMediaElement::selectMediaResource"); | 736 WTF_LOG(Media, "HTMLMediaElement::selectMediaResource"); |
737 | 737 |
738 enum Mode { attribute, children }; | 738 enum Mode { attribute, children }; |
739 | 739 |
740 // 3 - If the media element has a src attribute, then let mode be attribute. | 740 // 3 - If the media element has a src attribute, then let mode be attribute. |
741 Mode mode = attribute; | 741 Mode mode = attribute; |
742 if (!fastHasAttribute(srcAttr)) { | 742 if (!fastHasAttribute(srcAttr)) { |
743 Node* node; | 743 Element* element; |
744 for (node = firstChild(); node; node = node->nextSibling()) { | 744 for (element = ElementTraversal::firstWithin(*this); element; element =
ElementTraversal::nextSibling(*element)) { |
745 if (node->hasTagName(sourceTag)) | 745 if (element->hasTagName(sourceTag)) |
746 break; | 746 break; |
747 } | 747 } |
748 | 748 |
749 // Otherwise, if the media element does not have a src attribute but has
a source | 749 // Otherwise, if the media element does not have a src attribute but has
a source |
750 // element child, then let mode be children and let candidate be the fir
st such | 750 // element child, then let mode be children and let candidate be the fir
st such |
751 // source element child in tree order. | 751 // source element child in tree order. |
752 if (node) { | 752 if (element) { |
753 mode = children; | 753 mode = children; |
754 m_nextChildNodeToConsider = node; | 754 m_nextChildNodeToConsider = element; |
755 m_currentSourceNode = 0; | 755 m_currentSourceNode = 0; |
756 } else { | 756 } else { |
757 // Otherwise the media element has neither a src attribute nor a sou
rce element | 757 // Otherwise the media element has neither a src attribute nor a sou
rce element |
758 // child: set the networkState to NETWORK_EMPTY, and abort these ste
ps; the | 758 // child: set the networkState to NETWORK_EMPTY, and abort these ste
ps; the |
759 // synchronous section ends. | 759 // synchronous section ends. |
760 m_loadState = WaitingForSource; | 760 m_loadState = WaitingForSource; |
761 setShouldDelayLoadEvent(false); | 761 setShouldDelayLoadEvent(false); |
762 m_networkState = NETWORK_EMPTY; | 762 m_networkState = NETWORK_EMPTY; |
763 | 763 |
764 WTF_LOG(Media, "HTMLMediaElement::selectMediaResource, nothing to lo
ad"); | 764 WTF_LOG(Media, "HTMLMediaElement::selectMediaResource, nothing to lo
ad"); |
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1183 | 1183 |
1184 void HTMLMediaElement::textTrackModeChanged(TextTrack* track) | 1184 void HTMLMediaElement::textTrackModeChanged(TextTrack* track) |
1185 { | 1185 { |
1186 if (track->trackType() == TextTrack::TrackElement) { | 1186 if (track->trackType() == TextTrack::TrackElement) { |
1187 // 4.8.10.12.3 Sourcing out-of-band text tracks | 1187 // 4.8.10.12.3 Sourcing out-of-band text tracks |
1188 // ... when a text track corresponding to a track element is created wit
h text track | 1188 // ... when a text track corresponding to a track element is created wit
h text track |
1189 // mode set to disabled and subsequently changes its text track mode to
hidden, showing, | 1189 // mode set to disabled and subsequently changes its text track mode to
hidden, showing, |
1190 // or showing by default for the first time, the user agent must immedia
tely and synchronously | 1190 // or showing by default for the first time, the user agent must immedia
tely and synchronously |
1191 // run the following algorithm ... | 1191 // run the following algorithm ... |
1192 | 1192 |
1193 for (Node* node = firstChild(); node; node = node->nextSibling()) { | 1193 for (Element* child = ElementTraversal::firstWithin(*this); child; child
= ElementTraversal::nextSibling(*child)) { |
1194 if (!node->hasTagName(trackTag)) | 1194 if (!child->hasTagName(trackTag)) |
1195 continue; | 1195 continue; |
1196 HTMLTrackElement* trackElement = toHTMLTrackElement(node); | 1196 HTMLTrackElement* trackElement = toHTMLTrackElement(child); |
1197 if (trackElement->track() != track) | 1197 if (trackElement->track() != track) |
1198 continue; | 1198 continue; |
1199 | 1199 |
1200 // Mark this track as "configured" so configureTextTracks won't chan
ge the mode again. | 1200 // Mark this track as "configured" so configureTextTracks won't chan
ge the mode again. |
1201 track->setHasBeenConfigured(true); | 1201 track->setHasBeenConfigured(true); |
1202 if (track->mode() != TextTrack::disabledKeyword()) { | 1202 if (track->mode() != TextTrack::disabledKeyword()) { |
1203 if (trackElement->readyState() == HTMLTrackElement::LOADED) | 1203 if (trackElement->readyState() == HTMLTrackElement::LOADED) |
1204 textTrackAddCues(track, track->cues()); | 1204 textTrackAddCues(track, track->cues()); |
1205 | 1205 |
1206 // If this is the first added track, create the list of text tra
cks. | 1206 // If this is the first added track, create the list of text tra
cks. |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1415 | 1415 |
1416 // 6 - Abort the overall resource selection algorithm. | 1416 // 6 - Abort the overall resource selection algorithm. |
1417 m_currentSourceNode = 0; | 1417 m_currentSourceNode = 0; |
1418 } | 1418 } |
1419 | 1419 |
1420 void HTMLMediaElement::cancelPendingEventsAndCallbacks() | 1420 void HTMLMediaElement::cancelPendingEventsAndCallbacks() |
1421 { | 1421 { |
1422 WTF_LOG(Media, "HTMLMediaElement::cancelPendingEventsAndCallbacks"); | 1422 WTF_LOG(Media, "HTMLMediaElement::cancelPendingEventsAndCallbacks"); |
1423 m_asyncEventQueue->cancelAllEvents(); | 1423 m_asyncEventQueue->cancelAllEvents(); |
1424 | 1424 |
1425 for (Node* node = firstChild(); node; node = node->nextSibling()) { | 1425 for (Element* child = ElementTraversal::firstWithin(*this); child; child = E
lementTraversal::nextSibling(*child)) { |
1426 if (node->hasTagName(sourceTag)) | 1426 if (child->hasTagName(sourceTag)) |
1427 toHTMLSourceElement(node)->cancelPendingErrorEvent(); | 1427 toHTMLSourceElement(child)->cancelPendingErrorEvent(); |
1428 } | 1428 } |
1429 } | 1429 } |
1430 | 1430 |
1431 void HTMLMediaElement::mediaPlayerNetworkStateChanged() | 1431 void HTMLMediaElement::mediaPlayerNetworkStateChanged() |
1432 { | 1432 { |
1433 setNetworkState(m_player->networkState()); | 1433 setNetworkState(m_player->networkState()); |
1434 } | 1434 } |
1435 | 1435 |
1436 void HTMLMediaElement::mediaLoadingFailed(MediaPlayer::NetworkState error) | 1436 void HTMLMediaElement::mediaLoadingFailed(MediaPlayer::NetworkState error) |
1437 { | 1437 { |
(...skipping 2482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3920 { | 3920 { |
3921 m_mediaSource->setWebMediaSourceAndOpen(adoptPtr(webMediaSource)); | 3921 m_mediaSource->setWebMediaSourceAndOpen(adoptPtr(webMediaSource)); |
3922 } | 3922 } |
3923 | 3923 |
3924 bool HTMLMediaElement::isInteractiveContent() const | 3924 bool HTMLMediaElement::isInteractiveContent() const |
3925 { | 3925 { |
3926 return fastHasAttribute(controlsAttr); | 3926 return fastHasAttribute(controlsAttr); |
3927 } | 3927 } |
3928 | 3928 |
3929 } | 3929 } |
OLD | NEW |