| 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 1023 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1034 if (!currentCues.contains(previousCues[i]) && previousCues[i].data()->is
Active()) | 1034 if (!currentCues.contains(previousCues[i]) && previousCues[i].data()->is
Active()) |
| 1035 activeSetChanged = true; | 1035 activeSetChanged = true; |
| 1036 | 1036 |
| 1037 for (size_t i = 0; i < currentCuesSize; ++i) { | 1037 for (size_t i = 0; i < currentCuesSize; ++i) { |
| 1038 currentCues[i].data()->updateDisplayTree(movieTime); | 1038 currentCues[i].data()->updateDisplayTree(movieTime); |
| 1039 | 1039 |
| 1040 if (!currentCues[i].data()->isActive()) | 1040 if (!currentCues[i].data()->isActive()) |
| 1041 activeSetChanged = true; | 1041 activeSetChanged = true; |
| 1042 } | 1042 } |
| 1043 | 1043 |
| 1044 if (!activeSetChanged) { | 1044 if (!activeSetChanged) |
| 1045 // Even though the active set has not changed, it is possible that the | |
| 1046 // the mode of a track has changed from 'hidden' to 'showing' and the | |
| 1047 // cues have not yet been rendered. | |
| 1048 // Note: don't call updateTextTrackDisplay() unless we have controls bec
ause it will | |
| 1049 // create them. | |
| 1050 if (hasMediaControls()) | |
| 1051 updateTextTrackDisplay(); | |
| 1052 return; | 1045 return; |
| 1053 } | |
| 1054 | 1046 |
| 1055 // 7 - If the time was reached through the usual monotonic increase of the | 1047 // 7 - If the time was reached through the usual monotonic increase of the |
| 1056 // current playback position during normal playback, and there are cues in | 1048 // current playback position during normal playback, and there are cues in |
| 1057 // other cues that have their text track cue pause-on-exi flag set and that | 1049 // other cues that have their text track cue pause-on-exi flag set and that |
| 1058 // either have their text track cue active flag set or are also in missed | 1050 // either have their text track cue active flag set or are also in missed |
| 1059 // cues, then immediately pause the media element. | 1051 // cues, then immediately pause the media element. |
| 1060 for (size_t i = 0; !m_paused && i < previousCuesSize; ++i) { | 1052 for (size_t i = 0; !m_paused && i < previousCuesSize; ++i) { |
| 1061 if (previousCues[i].data()->pauseOnExit() | 1053 if (previousCues[i].data()->pauseOnExit() |
| 1062 && previousCues[i].data()->isActive() | 1054 && previousCues[i].data()->isActive() |
| 1063 && !currentCues.contains(previousCues[i])) | 1055 && !currentCues.contains(previousCues[i])) |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1244 | 1236 |
| 1245 // If this is the first added track, create the list of text tra
cks. | 1237 // If this is the first added track, create the list of text tra
cks. |
| 1246 if (!m_textTracks) | 1238 if (!m_textTracks) |
| 1247 m_textTracks = TextTrackList::create(this, ActiveDOMObject::sc
riptExecutionContext()); | 1239 m_textTracks = TextTrackList::create(this, ActiveDOMObject::sc
riptExecutionContext()); |
| 1248 } | 1240 } |
| 1249 break; | 1241 break; |
| 1250 } | 1242 } |
| 1251 } else if (track->trackType() == TextTrack::AddTrack && track->mode() != Tex
tTrack::disabledKeyword()) | 1243 } else if (track->trackType() == TextTrack::AddTrack && track->mode() != Tex
tTrack::disabledKeyword()) |
| 1252 textTrackAddCues(track, track->cues()); | 1244 textTrackAddCues(track, track->cues()); |
| 1253 | 1245 |
| 1254 configureTextTrackDisplay(); | 1246 configureTextTrackDisplay(AssumeVisibleChange); |
| 1255 updateActiveTextTrackCues(currentTime()); | |
| 1256 } | 1247 } |
| 1257 | 1248 |
| 1258 void HTMLMediaElement::textTrackKindChanged(TextTrack* track) | 1249 void HTMLMediaElement::textTrackKindChanged(TextTrack* track) |
| 1259 { | 1250 { |
| 1260 if (track->kind() != TextTrack::captionsKeyword() && track->kind() != TextTr
ack::subtitlesKeyword() && track->mode() == TextTrack::showingKeyword()) | 1251 if (track->kind() != TextTrack::captionsKeyword() && track->kind() != TextTr
ack::subtitlesKeyword() && track->mode() == TextTrack::showingKeyword()) |
| 1261 track->setMode(TextTrack::hiddenKeyword()); | 1252 track->setMode(TextTrack::hiddenKeyword()); |
| 1262 } | 1253 } |
| 1263 | 1254 |
| 1264 void HTMLMediaElement::beginIgnoringTrackDisplayUpdateRequests() | 1255 void HTMLMediaElement::beginIgnoringTrackDisplayUpdateRequests() |
| 1265 { | 1256 { |
| (...skipping 2204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3470 if (audioSourceProvider()) | 3461 if (audioSourceProvider()) |
| 3471 audioSourceProvider()->setClient(0); | 3462 audioSourceProvider()->setClient(0); |
| 3472 #endif | 3463 #endif |
| 3473 stopPeriodicTimers(); | 3464 stopPeriodicTimers(); |
| 3474 m_loadTimer.stop(); | 3465 m_loadTimer.stop(); |
| 3475 | 3466 |
| 3476 m_pendingActionFlags &= ~flags; | 3467 m_pendingActionFlags &= ~flags; |
| 3477 m_loadState = WaitingForSource; | 3468 m_loadState = WaitingForSource; |
| 3478 | 3469 |
| 3479 if (m_textTracks) | 3470 if (m_textTracks) |
| 3480 configureTextTrackDisplay(); | 3471 configureTextTrackDisplay(AssumeNoVisibleChange); |
| 3481 } | 3472 } |
| 3482 | 3473 |
| 3483 bool HTMLMediaElement::canSuspend() const | 3474 bool HTMLMediaElement::canSuspend() const |
| 3484 { | 3475 { |
| 3485 return true; | 3476 return true; |
| 3486 } | 3477 } |
| 3487 | 3478 |
| 3488 void HTMLMediaElement::stop() | 3479 void HTMLMediaElement::stop() |
| 3489 { | 3480 { |
| 3490 LOG(Media, "HTMLMediaElement::stop"); | 3481 LOG(Media, "HTMLMediaElement::stop"); |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3731 mediaControls()->hide(); | 3722 mediaControls()->hide(); |
| 3732 return; | 3723 return; |
| 3733 } | 3724 } |
| 3734 | 3725 |
| 3735 if (!hasMediaControls() && !createMediaControls()) | 3726 if (!hasMediaControls() && !createMediaControls()) |
| 3736 return; | 3727 return; |
| 3737 | 3728 |
| 3738 mediaControls()->show(); | 3729 mediaControls()->show(); |
| 3739 } | 3730 } |
| 3740 | 3731 |
| 3741 void HTMLMediaElement::configureTextTrackDisplay() | 3732 void HTMLMediaElement::configureTextTrackDisplay(VisibilityChangeAssumption assu
mption) |
| 3742 { | 3733 { |
| 3743 ASSERT(m_textTracks); | 3734 ASSERT(m_textTracks); |
| 3744 LOG(Media, "HTMLMediaElement::configureTextTrackDisplay"); | 3735 LOG(Media, "HTMLMediaElement::configureTextTrackDisplay"); |
| 3745 | 3736 |
| 3746 if (m_processingPreferenceChange) | 3737 if (m_processingPreferenceChange) |
| 3747 return; | 3738 return; |
| 3748 | 3739 |
| 3749 bool haveVisibleTextTrack = false; | 3740 bool haveVisibleTextTrack = false; |
| 3750 for (unsigned i = 0; i < m_textTracks->length(); ++i) { | 3741 for (unsigned i = 0; i < m_textTracks->length(); ++i) { |
| 3751 if (m_textTracks->item(i)->mode() == TextTrack::showingKeyword()) { | 3742 if (m_textTracks->item(i)->mode() == TextTrack::showingKeyword()) { |
| 3752 haveVisibleTextTrack = true; | 3743 haveVisibleTextTrack = true; |
| 3753 break; | 3744 break; |
| 3754 } | 3745 } |
| 3755 } | 3746 } |
| 3756 | 3747 |
| 3757 if (m_haveVisibleTextTrack == haveVisibleTextTrack) | 3748 if (assumption == AssumeNoVisibleChange |
| 3749 && m_haveVisibleTextTrack == haveVisibleTextTrack) { |
| 3750 updateActiveTextTrackCues(currentTime()); |
| 3758 return; | 3751 return; |
| 3752 } |
| 3759 m_haveVisibleTextTrack = haveVisibleTextTrack; | 3753 m_haveVisibleTextTrack = haveVisibleTextTrack; |
| 3760 m_closedCaptionsVisible = m_haveVisibleTextTrack; | 3754 m_closedCaptionsVisible = m_haveVisibleTextTrack; |
| 3761 | 3755 |
| 3762 if (!m_haveVisibleTextTrack && !hasMediaControls()) | 3756 if (!m_haveVisibleTextTrack && !hasMediaControls()) |
| 3763 return; | 3757 return; |
| 3764 if (!hasMediaControls() && !createMediaControls()) | 3758 if (!hasMediaControls() && !createMediaControls()) |
| 3765 return; | 3759 return; |
| 3766 | 3760 |
| 3767 mediaControls()->changedClosedCaptionsVisibility(); | 3761 mediaControls()->changedClosedCaptionsVisibility(); |
| 3768 | 3762 |
| 3769 if (RuntimeEnabledFeatures::videoTrackEnabled()) | 3763 if (RuntimeEnabledFeatures::videoTrackEnabled()) { |
| 3764 updateActiveTextTrackCues(currentTime()); |
| 3770 updateTextTrackDisplay(); | 3765 updateTextTrackDisplay(); |
| 3766 } |
| 3771 } | 3767 } |
| 3772 | 3768 |
| 3773 void HTMLMediaElement::markCaptionAndSubtitleTracksAsUnconfigured() | 3769 void HTMLMediaElement::markCaptionAndSubtitleTracksAsUnconfigured() |
| 3774 { | 3770 { |
| 3775 if (!m_textTracks) | 3771 if (!m_textTracks) |
| 3776 return; | 3772 return; |
| 3777 | 3773 |
| 3778 // Mark all tracks as not "configured" so that configureTextTracks() | 3774 // Mark all tracks as not "configured" so that configureTextTracks() |
| 3779 // will reconsider which tracks to display in light of new user preferences | 3775 // will reconsider which tracks to display in light of new user preferences |
| 3780 // (e.g. default tracks should not be displayed if the user has turned off | 3776 // (e.g. default tracks should not be displayed if the user has turned off |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4001 { | 3997 { |
| 4002 m_restrictions = NoRestrictions; | 3998 m_restrictions = NoRestrictions; |
| 4003 } | 3999 } |
| 4004 | 4000 |
| 4005 void HTMLMediaElement::mediaPlayerScheduleLayerUpdate() | 4001 void HTMLMediaElement::mediaPlayerScheduleLayerUpdate() |
| 4006 { | 4002 { |
| 4007 scheduleLayerUpdate(); | 4003 scheduleLayerUpdate(); |
| 4008 } | 4004 } |
| 4009 | 4005 |
| 4010 } | 4006 } |
| OLD | NEW |