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

Side by Side Diff: Source/WebCore/html/HTMLMediaElement.cpp

Issue 13454026: Update all float attributes in HTMLMediaElement and related objects to double (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Removed GTK change since the file is gone now. Created 7 years, 8 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
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 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 , m_playbackRate(1.0f) 245 , m_playbackRate(1.0f)
246 , m_defaultPlaybackRate(1.0f) 246 , m_defaultPlaybackRate(1.0f)
247 , m_webkitPreservesPitch(true) 247 , m_webkitPreservesPitch(true)
248 , m_networkState(NETWORK_EMPTY) 248 , m_networkState(NETWORK_EMPTY)
249 , m_readyState(HAVE_NOTHING) 249 , m_readyState(HAVE_NOTHING)
250 , m_readyStateMaximum(HAVE_NOTHING) 250 , m_readyStateMaximum(HAVE_NOTHING)
251 , m_volume(1.0f) 251 , m_volume(1.0f)
252 , m_lastSeekTime(0) 252 , m_lastSeekTime(0)
253 , m_previousProgressTime(numeric_limits<double>::max()) 253 , m_previousProgressTime(numeric_limits<double>::max())
254 , m_lastTimeUpdateEventWallTime(0) 254 , m_lastTimeUpdateEventWallTime(0)
255 , m_lastTimeUpdateEventMovieTime(numeric_limits<float>::max()) 255 , m_lastTimeUpdateEventMovieTime(numeric_limits<double>::max())
256 , m_loadState(WaitingForSource) 256 , m_loadState(WaitingForSource)
257 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO) 257 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
258 , m_proxyWidget(0) 258 , m_proxyWidget(0)
259 #endif 259 #endif
260 , m_restrictions(RequireUserGestureForFullscreenRestriction | RequirePageCon sentToLoadMediaRestriction) 260 , m_restrictions(RequireUserGestureForFullscreenRestriction | RequirePageCon sentToLoadMediaRestriction)
261 , m_preload(MediaPlayer::Auto) 261 , m_preload(MediaPlayer::Auto)
262 , m_displayMode(Unknown) 262 , m_displayMode(Unknown)
263 , m_processingMediaPlayerCallback(0) 263 , m_processingMediaPlayerCallback(0)
264 , m_cachedTime(MediaPlayer::invalidTime()) 264 , m_cachedTime(MediaPlayer::invalidTime())
265 , m_cachedTimeWallClockUpdateTime(0) 265 , m_cachedTimeWallClockUpdateTime(0)
(...skipping 812 matching lines...) Expand 10 before | Expand all | Expand 10 after
1078 if (a.second->track() != b.second->track()) 1078 if (a.second->track() != b.second->track())
1079 return trackIndexCompare(a.second->track(), b.second->track()); 1079 return trackIndexCompare(a.second->track(), b.second->track());
1080 1080
1081 // 12 - Further sort tasks in events that have the same time by the 1081 // 12 - Further sort tasks in events that have the same time by the
1082 // relative text track cue order of the text track cues associated 1082 // relative text track cue order of the text track cues associated
1083 // with these tasks. 1083 // with these tasks.
1084 return a.second->cueIndex() - b.second->cueIndex() < 0; 1084 return a.second->cueIndex() - b.second->cueIndex() < 0;
1085 } 1085 }
1086 1086
1087 1087
1088 void HTMLMediaElement::updateActiveTextTrackCues(float movieTime) 1088 void HTMLMediaElement::updateActiveTextTrackCues(double movieTime)
1089 { 1089 {
1090 LOG(Media, "HTMLMediaElement::updateActiveTextTracks"); 1090 LOG(Media, "HTMLMediaElement::updateActiveTextTracks");
1091 1091
1092 // 4.8.10.8 Playing the media resource 1092 // 4.8.10.8 Playing the media resource
1093 1093
1094 // If the current playback position changes while the steps are running, 1094 // If the current playback position changes while the steps are running,
1095 // then the user agent must wait for the steps to complete, and then must 1095 // then the user agent must wait for the steps to complete, and then must
1096 // immediately rerun the steps. 1096 // immediately rerun the steps.
1097 if (ignoreTrackDisplayUpdateRequests()) 1097 if (ignoreTrackDisplayUpdateRequests())
1098 return; 1098 return;
(...skipping 14 matching lines...) Expand all
1113 CueList missedCues; 1113 CueList missedCues;
1114 1114
1115 // 2 - Let other cues be a list of cues, initialized to contain all the cues 1115 // 2 - Let other cues be a list of cues, initialized to contain all the cues
1116 // of hidden, showing, and showing by default text tracks of the media 1116 // of hidden, showing, and showing by default text tracks of the media
1117 // element that are not present in current cues. 1117 // element that are not present in current cues.
1118 previousCues = m_currentlyActiveCues; 1118 previousCues = m_currentlyActiveCues;
1119 1119
1120 // 3 - Let last time be the current playback position at the time this 1120 // 3 - Let last time be the current playback position at the time this
1121 // algorithm was last run for this media element, if this is not the first 1121 // algorithm was last run for this media element, if this is not the first
1122 // time it has run. 1122 // time it has run.
1123 float lastTime = m_lastTextTrackUpdateTime; 1123 double lastTime = m_lastTextTrackUpdateTime;
1124 1124
1125 // 4 - If the current playback position has, since the last time this 1125 // 4 - If the current playback position has, since the last time this
1126 // algorithm was run, only changed through its usual monotonic increase 1126 // algorithm was run, only changed through its usual monotonic increase
1127 // during normal playback, then let missed cues be the list of cues in other 1127 // during normal playback, then let missed cues be the list of cues in other
1128 // cues whose start times are greater than or equal to last time and whose 1128 // cues whose start times are greater than or equal to last time and whose
1129 // end times are less than or equal to the current playback position. 1129 // end times are less than or equal to the current playback position.
1130 // Otherwise, let missed cues be an empty list. 1130 // Otherwise, let missed cues be an empty list.
1131 if (lastTime >= 0 && m_lastSeekTime < movieTime) { 1131 if (lastTime >= 0 && m_lastSeekTime < movieTime) {
1132 CueList potentiallySkippedCues = 1132 CueList potentiallySkippedCues =
1133 m_cueTree.allOverlaps(m_cueTree.createInterval(lastTime, movieTime)) ; 1133 m_cueTree.allOverlaps(m_cueTree.createInterval(lastTime, movieTime)) ;
1134 1134
1135 for (size_t i = 0; i < potentiallySkippedCues.size(); ++i) { 1135 for (size_t i = 0; i < potentiallySkippedCues.size(); ++i) {
1136 float cueStartTime = potentiallySkippedCues[i].low(); 1136 double cueStartTime = potentiallySkippedCues[i].low();
1137 float cueEndTime = potentiallySkippedCues[i].high(); 1137 double cueEndTime = potentiallySkippedCues[i].high();
1138 1138
1139 // Consider cues that may have been missed since the last seek time. 1139 // Consider cues that may have been missed since the last seek time.
1140 if (cueStartTime > max(m_lastSeekTime, lastTime) && cueEndTime < mov ieTime) 1140 if (cueStartTime > max(m_lastSeekTime, lastTime) && cueEndTime < mov ieTime)
1141 missedCues.append(potentiallySkippedCues[i]); 1141 missedCues.append(potentiallySkippedCues[i]);
1142 } 1142 }
1143 } 1143 }
1144 1144
1145 m_lastTextTrackUpdateTime = movieTime; 1145 m_lastTextTrackUpdateTime = movieTime;
1146 1146
1147 // 5 - If the time was reached through the usual monotonic increase of the 1147 // 5 - If the time was reached through the usual monotonic increase of the
(...skipping 819 matching lines...) Expand 10 before | Expand all | Expand 10 after
1967 renderer()->updateFromElement(); 1967 renderer()->updateFromElement();
1968 if (hasMediaControls()) 1968 if (hasMediaControls())
1969 mediaControls()->bufferingProgressed(); 1969 mediaControls()->bufferingProgressed();
1970 } else if (timedelta > 3.0 && !m_sentStalledEvent) { 1970 } else if (timedelta > 3.0 && !m_sentStalledEvent) {
1971 scheduleEvent(eventNames().stalledEvent); 1971 scheduleEvent(eventNames().stalledEvent);
1972 m_sentStalledEvent = true; 1972 m_sentStalledEvent = true;
1973 setShouldDelayLoadEvent(false); 1973 setShouldDelayLoadEvent(false);
1974 } 1974 }
1975 } 1975 }
1976 1976
1977 void HTMLMediaElement::rewind(float timeDelta) 1977 void HTMLMediaElement::rewind(double timeDelta)
1978 { 1978 {
1979 LOG(Media, "HTMLMediaElement::rewind(%f)", timeDelta); 1979 LOG(Media, "HTMLMediaElement::rewind(%f)", timeDelta);
1980 setCurrentTime(max(currentTime() - timeDelta, minTimeSeekable()), IGNORE_EXC EPTION); 1980 setCurrentTime(max(currentTime() - timeDelta, minTimeSeekable()), IGNORE_EXC EPTION);
1981 } 1981 }
1982 1982
1983 void HTMLMediaElement::returnToRealtime() 1983 void HTMLMediaElement::returnToRealtime()
1984 { 1984 {
1985 LOG(Media, "HTMLMediaElement::returnToRealtime"); 1985 LOG(Media, "HTMLMediaElement::returnToRealtime");
1986 setCurrentTime(maxTimeSeekable(), IGNORE_EXCEPTION); 1986 setCurrentTime(maxTimeSeekable(), IGNORE_EXCEPTION);
1987 } 1987 }
1988 1988
1989 void HTMLMediaElement::addPlayedRange(float start, float end) 1989 void HTMLMediaElement::addPlayedRange(double start, double end)
1990 { 1990 {
1991 LOG(Media, "HTMLMediaElement::addPlayedRange(%f, %f)", start, end); 1991 LOG(Media, "HTMLMediaElement::addPlayedRange(%f, %f)", start, end);
1992 if (!m_playedTimeRanges) 1992 if (!m_playedTimeRanges)
1993 m_playedTimeRanges = TimeRanges::create(); 1993 m_playedTimeRanges = TimeRanges::create();
1994 m_playedTimeRanges->add(start, end); 1994 m_playedTimeRanges->add(start, end);
1995 } 1995 }
1996 1996
1997 bool HTMLMediaElement::supportsSave() const 1997 bool HTMLMediaElement::supportsSave() const
1998 { 1998 {
1999 return m_player ? m_player->supportsSave() : false; 1999 return m_player ? m_player->supportsSave() : false;
2000 } 2000 }
2001 2001
2002 bool HTMLMediaElement::supportsScanning() const 2002 bool HTMLMediaElement::supportsScanning() const
2003 { 2003 {
2004 return m_player ? m_player->supportsScanning() : false; 2004 return m_player ? m_player->supportsScanning() : false;
2005 } 2005 }
2006 2006
2007 void HTMLMediaElement::prepareToPlay() 2007 void HTMLMediaElement::prepareToPlay()
2008 { 2008 {
2009 LOG(Media, "HTMLMediaElement::prepareToPlay(%p)", this); 2009 LOG(Media, "HTMLMediaElement::prepareToPlay(%p)", this);
2010 if (m_havePreparedToPlay) 2010 if (m_havePreparedToPlay)
2011 return; 2011 return;
2012 m_havePreparedToPlay = true; 2012 m_havePreparedToPlay = true;
2013 m_player->prepareToPlay(); 2013 m_player->prepareToPlay();
2014 } 2014 }
2015 2015
2016 void HTMLMediaElement::seek(float time, ExceptionCode& ec) 2016 void HTMLMediaElement::seek(double time, ExceptionCode& ec)
2017 { 2017 {
2018 LOG(Media, "HTMLMediaElement::seek(%f)", time); 2018 LOG(Media, "HTMLMediaElement::seek(%f)", time);
2019 2019
2020 // 4.8.9.9 Seeking 2020 // 4.8.9.9 Seeking
2021 2021
2022 // 1 - If the media element's readyState is HAVE_NOTHING, then raise an INVA LID_STATE_ERR exception. 2022 // 1 - If the media element's readyState is HAVE_NOTHING, then raise an INVA LID_STATE_ERR exception.
2023 if (m_readyState == HAVE_NOTHING || !m_player) { 2023 if (m_readyState == HAVE_NOTHING || !m_player) {
2024 ec = INVALID_STATE_ERR; 2024 ec = INVALID_STATE_ERR;
2025 return; 2025 return;
2026 } 2026 }
2027 2027
2028 // If the media engine has been told to postpone loading data, let it go ahe ad now. 2028 // If the media engine has been told to postpone loading data, let it go ahe ad now.
2029 if (m_preload < MediaPlayer::Auto && m_readyState < HAVE_FUTURE_DATA) 2029 if (m_preload < MediaPlayer::Auto && m_readyState < HAVE_FUTURE_DATA)
2030 prepareToPlay(); 2030 prepareToPlay();
2031 2031
2032 // Get the current time before setting m_seeking, m_lastSeekTime is returned once it is set. 2032 // Get the current time before setting m_seeking, m_lastSeekTime is returned once it is set.
2033 refreshCachedTime(); 2033 refreshCachedTime();
2034 float now = currentTime(); 2034 double now = currentTime();
2035 2035
2036 // 2 - If the element's seeking IDL attribute is true, then another instance of this algorithm is 2036 // 2 - If the element's seeking IDL attribute is true, then another instance of this algorithm is
2037 // already running. Abort that other instance of the algorithm without waiti ng for the step that 2037 // already running. Abort that other instance of the algorithm without waiti ng for the step that
2038 // it is running to complete. 2038 // it is running to complete.
2039 // Nothing specific to be done here. 2039 // Nothing specific to be done here.
2040 2040
2041 // 3 - Set the seeking IDL attribute to true. 2041 // 3 - Set the seeking IDL attribute to true.
2042 // The flag will be cleared when the engine tells us the time has actually c hanged. 2042 // The flag will be cleared when the engine tells us the time has actually c hanged.
2043 m_seeking = true; 2043 m_seeking = true;
2044 2044
2045 // 5 - If the new playback position is later than the end of the media resou rce, then let it be the end 2045 // 5 - If the new playback position is later than the end of the media resou rce, then let it be the end
2046 // of the media resource instead. 2046 // of the media resource instead.
2047 time = min(time, duration()); 2047 time = min(time, duration());
2048 2048
2049 // 6 - If the new playback position is less than the earliest possible posit ion, let it be that position instead. 2049 // 6 - If the new playback position is less than the earliest possible posit ion, let it be that position instead.
2050 float earliestTime = m_player->startTime(); 2050 double earliestTime = m_player->startTime();
2051 time = max(time, earliestTime); 2051 time = max(time, earliestTime);
2052 2052
2053 // Ask the media engine for the time value in the movie's time scale before comparing with current time. This 2053 // Ask the media engine for the time value in the movie's time scale before comparing with current time. This
2054 // is necessary because if the seek time is not equal to currentTime but the delta is less than the movie's 2054 // is necessary because if the seek time is not equal to currentTime but the delta is less than the movie's
2055 // time scale, we will ask the media engine to "seek" to the current movie t ime, which may be a noop and 2055 // time scale, we will ask the media engine to "seek" to the current movie t ime, which may be a noop and
2056 // not generate a timechanged callback. This means m_seeking will never be c leared and we will never 2056 // not generate a timechanged callback. This means m_seeking will never be c leared and we will never
2057 // fire a 'seeked' event. 2057 // fire a 'seeked' event.
2058 #if !LOG_DISABLED 2058 #if !LOG_DISABLED
2059 float mediaTime = m_player->mediaTimeForTimeValue(time); 2059 double mediaTime = m_player->mediaTimeForTimeValue(time);
2060 if (time != mediaTime) 2060 if (time != mediaTime)
2061 LOG(Media, "HTMLMediaElement::seek(%f) - media timeline equivalent is %f ", time, mediaTime); 2061 LOG(Media, "HTMLMediaElement::seek(%f) - media timeline equivalent is %f ", time, mediaTime);
2062 #endif 2062 #endif
2063 time = m_player->mediaTimeForTimeValue(time); 2063 time = m_player->mediaTimeForTimeValue(time);
2064 2064
2065 // 7 - If the (possibly now changed) new playback position is not in one of the ranges given in the 2065 // 7 - If the (possibly now changed) new playback position is not in one of the ranges given in the
2066 // seekable attribute, then let it be the position in one of the ranges give n in the seekable attribute 2066 // seekable attribute, then let it be the position in one of the ranges give n in the seekable attribute
2067 // that is the nearest to the new playback position. ... If there are no ran ges given in the seekable 2067 // that is the nearest to the new playback position. ... If there are no ran ges given in the seekable
2068 // attribute then set the seeking IDL attribute to false and abort these ste ps. 2068 // attribute then set the seeking IDL attribute to false and abort these ste ps.
2069 RefPtr<TimeRanges> seekableRanges = seekable(); 2069 RefPtr<TimeRanges> seekableRanges = seekable();
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
2156 // Don't try to cache movie time when playback first starts as the time repo rted by the engine 2156 // Don't try to cache movie time when playback first starts as the time repo rted by the engine
2157 // sometimes fluctuates for a short amount of time, so the cached time will be off if we take it 2157 // sometimes fluctuates for a short amount of time, so the cached time will be off if we take it
2158 // too early. 2158 // too early.
2159 static const double minimumTimePlayingBeforeCacheSnapshot = 0.5; 2159 static const double minimumTimePlayingBeforeCacheSnapshot = 0.5;
2160 2160
2161 m_minimumWallClockTimeToCacheMediaTime = WTF::currentTime() + minimumTimePla yingBeforeCacheSnapshot; 2161 m_minimumWallClockTimeToCacheMediaTime = WTF::currentTime() + minimumTimePla yingBeforeCacheSnapshot;
2162 m_cachedTime = MediaPlayer::invalidTime(); 2162 m_cachedTime = MediaPlayer::invalidTime();
2163 } 2163 }
2164 2164
2165 // playback state 2165 // playback state
2166 float HTMLMediaElement::currentTime() const 2166 double HTMLMediaElement::currentTime() const
2167 { 2167 {
2168 #if LOG_CACHED_TIME_WARNINGS 2168 #if LOG_CACHED_TIME_WARNINGS
2169 static const double minCachedDeltaForWarning = 0.01; 2169 static const double minCachedDeltaForWarning = 0.01;
2170 #endif 2170 #endif
2171 2171
2172 if (!m_player) 2172 if (!m_player)
2173 return 0; 2173 return 0;
2174 2174
2175 if (m_seeking) { 2175 if (m_seeking) {
2176 LOG(Media, "HTMLMediaElement::currentTime - seeking, returning %f", m_la stSeekTime); 2176 LOG(Media, "HTMLMediaElement::currentTime - seeking, returning %f", m_la stSeekTime);
2177 return m_lastSeekTime; 2177 return m_lastSeekTime;
2178 } 2178 }
2179 2179
2180 if (m_cachedTime != MediaPlayer::invalidTime() && m_paused) { 2180 if (m_cachedTime != MediaPlayer::invalidTime() && m_paused) {
2181 #if LOG_CACHED_TIME_WARNINGS 2181 #if LOG_CACHED_TIME_WARNINGS
2182 float delta = m_cachedTime - m_player->currentTime(); 2182 double delta = m_cachedTime - m_player->currentTime();
2183 if (delta > minCachedDeltaForWarning) 2183 if (delta > minCachedDeltaForWarning)
2184 LOG(Media, "HTMLMediaElement::currentTime - WARNING, cached time is %f seconds off of media time when paused", delta); 2184 LOG(Media, "HTMLMediaElement::currentTime - WARNING, cached time is %f seconds off of media time when paused", delta);
2185 #endif 2185 #endif
2186 return m_cachedTime; 2186 return m_cachedTime;
2187 } 2187 }
2188 2188
2189 // Is it too soon use a cached time? 2189 // Is it too soon use a cached time?
2190 double now = WTF::currentTime(); 2190 double now = WTF::currentTime();
2191 double maximumDurationToCacheMediaTime = m_player->maximumDurationToCacheMed iaTime(); 2191 double maximumDurationToCacheMediaTime = m_player->maximumDurationToCacheMed iaTime();
2192 2192
2193 if (maximumDurationToCacheMediaTime && m_cachedTime != MediaPlayer::invalidT ime() && !m_paused && now > m_minimumWallClockTimeToCacheMediaTime) { 2193 if (maximumDurationToCacheMediaTime && m_cachedTime != MediaPlayer::invalidT ime() && !m_paused && now > m_minimumWallClockTimeToCacheMediaTime) {
2194 double wallClockDelta = now - m_cachedTimeWallClockUpdateTime; 2194 double wallClockDelta = now - m_cachedTimeWallClockUpdateTime;
2195 2195
2196 // Not too soon, use the cached time only if it hasn't expired. 2196 // Not too soon, use the cached time only if it hasn't expired.
2197 if (wallClockDelta < maximumDurationToCacheMediaTime) { 2197 if (wallClockDelta < maximumDurationToCacheMediaTime) {
2198 float adjustedCacheTime = static_cast<float>(m_cachedTime + (m_playb ackRate * wallClockDelta)); 2198 double adjustedCacheTime = m_cachedTime + (m_playbackRate * wallCloc kDelta);
2199 2199
2200 #if LOG_CACHED_TIME_WARNINGS 2200 #if LOG_CACHED_TIME_WARNINGS
2201 float delta = adjustedCacheTime - m_player->currentTime(); 2201 double delta = adjustedCacheTime - m_player->currentTime();
2202 if (delta > minCachedDeltaForWarning) 2202 if (delta > minCachedDeltaForWarning)
2203 LOG(Media, "HTMLMediaElement::currentTime - WARNING, cached time is %f seconds off of media time when playing", delta); 2203 LOG(Media, "HTMLMediaElement::currentTime - WARNING, cached time is %f seconds off of media time when playing", delta);
2204 #endif 2204 #endif
2205 return adjustedCacheTime; 2205 return adjustedCacheTime;
2206 } 2206 }
2207 } 2207 }
2208 2208
2209 #if LOG_CACHED_TIME_WARNINGS 2209 #if LOG_CACHED_TIME_WARNINGS
2210 if (maximumDurationToCacheMediaTime && now > m_minimumWallClockTimeToCacheMe diaTime && m_cachedTime != MediaPlayer::invalidTime()) { 2210 if (maximumDurationToCacheMediaTime && now > m_minimumWallClockTimeToCacheMe diaTime && m_cachedTime != MediaPlayer::invalidTime()) {
2211 double wallClockDelta = now - m_cachedTimeWallClockUpdateTime; 2211 double wallClockDelta = now - m_cachedTimeWallClockUpdateTime;
2212 float delta = m_cachedTime + (m_playbackRate * wallClockDelta) - m_playe r->currentTime(); 2212 double delta = m_cachedTime + (m_playbackRate * wallClockDelta) - m_play er->currentTime();
2213 LOG(Media, "HTMLMediaElement::currentTime - cached time was %f seconds o ff of media time when it expired", delta); 2213 LOG(Media, "HTMLMediaElement::currentTime - cached time was %f seconds o ff of media time when it expired", delta);
2214 } 2214 }
2215 #endif 2215 #endif
2216 2216
2217 refreshCachedTime(); 2217 refreshCachedTime();
2218 2218
2219 return m_cachedTime; 2219 return m_cachedTime;
2220 } 2220 }
2221 2221
2222 void HTMLMediaElement::setCurrentTime(float time, ExceptionCode& ec) 2222 void HTMLMediaElement::setCurrentTime(double time, ExceptionCode& ec)
2223 { 2223 {
2224 if (m_mediaController) { 2224 if (m_mediaController) {
2225 ec = INVALID_STATE_ERR; 2225 ec = INVALID_STATE_ERR;
2226 return; 2226 return;
2227 } 2227 }
2228 seek(time, ec); 2228 seek(time, ec);
2229 } 2229 }
2230 2230
2231 float HTMLMediaElement::startTime() const 2231 double HTMLMediaElement::startTime() const
2232 { 2232 {
2233 if (!m_player) 2233 if (!m_player)
2234 return 0; 2234 return 0;
2235 return m_player->startTime(); 2235 return m_player->startTime();
2236 } 2236 }
2237 2237
2238 double HTMLMediaElement::initialTime() const 2238 double HTMLMediaElement::initialTime() const
2239 { 2239 {
2240 if (m_fragmentStartTime != MediaPlayer::invalidTime()) 2240 if (m_fragmentStartTime != MediaPlayer::invalidTime())
2241 return m_fragmentStartTime; 2241 return m_fragmentStartTime;
2242 2242
2243 if (!m_player) 2243 if (!m_player)
2244 return 0; 2244 return 0;
2245 2245
2246 return m_player->initialTime(); 2246 return m_player->initialTime();
2247 } 2247 }
2248 2248
2249 float HTMLMediaElement::duration() const 2249 double HTMLMediaElement::duration() const
2250 { 2250 {
2251 if (m_player && m_readyState >= HAVE_METADATA) 2251 if (m_player && m_readyState >= HAVE_METADATA)
2252 return m_player->duration(); 2252 return m_player->duration();
2253 2253
2254 return numeric_limits<float>::quiet_NaN(); 2254 return numeric_limits<double>::quiet_NaN();
2255 } 2255 }
2256 2256
2257 bool HTMLMediaElement::paused() const 2257 bool HTMLMediaElement::paused() const
2258 { 2258 {
2259 return m_paused; 2259 return m_paused;
2260 } 2260 }
2261 2261
2262 float HTMLMediaElement::defaultPlaybackRate() const 2262 double HTMLMediaElement::defaultPlaybackRate() const
2263 { 2263 {
2264 return m_defaultPlaybackRate; 2264 return m_defaultPlaybackRate;
2265 } 2265 }
2266 2266
2267 void HTMLMediaElement::setDefaultPlaybackRate(float rate) 2267 void HTMLMediaElement::setDefaultPlaybackRate(double rate)
2268 { 2268 {
2269 if (m_defaultPlaybackRate != rate) { 2269 if (m_defaultPlaybackRate != rate) {
2270 m_defaultPlaybackRate = rate; 2270 m_defaultPlaybackRate = rate;
2271 scheduleEvent(eventNames().ratechangeEvent); 2271 scheduleEvent(eventNames().ratechangeEvent);
2272 } 2272 }
2273 } 2273 }
2274 2274
2275 float HTMLMediaElement::playbackRate() const 2275 double HTMLMediaElement::playbackRate() const
2276 { 2276 {
2277 return m_playbackRate; 2277 return m_playbackRate;
2278 } 2278 }
2279 2279
2280 void HTMLMediaElement::setPlaybackRate(float rate) 2280 void HTMLMediaElement::setPlaybackRate(double rate)
2281 { 2281 {
2282 LOG(Media, "HTMLMediaElement::setPlaybackRate(%f)", rate); 2282 LOG(Media, "HTMLMediaElement::setPlaybackRate(%f)", rate);
2283 2283
2284 if (m_playbackRate != rate) { 2284 if (m_playbackRate != rate) {
2285 m_playbackRate = rate; 2285 m_playbackRate = rate;
2286 invalidateCachedTime(); 2286 invalidateCachedTime();
2287 scheduleEvent(eventNames().ratechangeEvent); 2287 scheduleEvent(eventNames().ratechangeEvent);
2288 } 2288 }
2289 2289
2290 if (m_player && potentiallyPlaying() && m_player->rate() != rate && !m_media Controller) 2290 if (m_player && potentiallyPlaying() && m_player->rate() != rate && !m_media Controller)
2291 m_player->setRate(rate); 2291 m_player->setRate(rate);
2292 } 2292 }
2293 2293
2294 void HTMLMediaElement::updatePlaybackRate() 2294 void HTMLMediaElement::updatePlaybackRate()
2295 { 2295 {
2296 float effectiveRate = m_mediaController ? m_mediaController->playbackRate() : m_playbackRate; 2296 double effectiveRate = m_mediaController ? m_mediaController->playbackRate() : m_playbackRate;
2297 if (m_player && potentiallyPlaying() && m_player->rate() != effectiveRate) 2297 if (m_player && potentiallyPlaying() && m_player->rate() != effectiveRate)
2298 m_player->setRate(effectiveRate); 2298 m_player->setRate(effectiveRate);
2299 } 2299 }
2300 2300
2301 bool HTMLMediaElement::webkitPreservesPitch() const 2301 bool HTMLMediaElement::webkitPreservesPitch() const
2302 { 2302 {
2303 return m_webkitPreservesPitch; 2303 return m_webkitPreservesPitch;
2304 } 2304 }
2305 2305
2306 void HTMLMediaElement::setWebkitPreservesPitch(bool preservesPitch) 2306 void HTMLMediaElement::setWebkitPreservesPitch(bool preservesPitch)
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
2582 2582
2583 return fastHasAttribute(controlsAttr); 2583 return fastHasAttribute(controlsAttr);
2584 } 2584 }
2585 2585
2586 void HTMLMediaElement::setControls(bool b) 2586 void HTMLMediaElement::setControls(bool b)
2587 { 2587 {
2588 LOG(Media, "HTMLMediaElement::setControls(%s)", boolString(b)); 2588 LOG(Media, "HTMLMediaElement::setControls(%s)", boolString(b));
2589 setBooleanAttribute(controlsAttr, b); 2589 setBooleanAttribute(controlsAttr, b);
2590 } 2590 }
2591 2591
2592 float HTMLMediaElement::volume() const 2592 double HTMLMediaElement::volume() const
2593 { 2593 {
2594 return m_volume; 2594 return m_volume;
2595 } 2595 }
2596 2596
2597 void HTMLMediaElement::setVolume(float vol, ExceptionCode& ec) 2597 void HTMLMediaElement::setVolume(double vol, ExceptionCode& ec)
2598 { 2598 {
2599 LOG(Media, "HTMLMediaElement::setVolume(%f)", vol); 2599 LOG(Media, "HTMLMediaElement::setVolume(%f)", vol);
2600 2600
2601 if (vol < 0.0f || vol > 1.0f) { 2601 if (vol < 0.0f || vol > 1.0f) {
2602 ec = INDEX_SIZE_ERR; 2602 ec = INDEX_SIZE_ERR;
2603 return; 2603 return;
2604 } 2604 }
2605 2605
2606 if (m_volume != vol) { 2606 if (m_volume != vol) {
2607 m_volume = vol; 2607 m_volume = vol;
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
2716 { 2716 {
2717 double now = WTF::currentTime(); 2717 double now = WTF::currentTime();
2718 double timedelta = now - m_lastTimeUpdateEventWallTime; 2718 double timedelta = now - m_lastTimeUpdateEventWallTime;
2719 2719
2720 // throttle the periodic events 2720 // throttle the periodic events
2721 if (periodicEvent && timedelta < maxTimeupdateEventFrequency) 2721 if (periodicEvent && timedelta < maxTimeupdateEventFrequency)
2722 return; 2722 return;
2723 2723
2724 // Some media engines make multiple "time changed" callbacks at the same tim e, but we only want one 2724 // Some media engines make multiple "time changed" callbacks at the same tim e, but we only want one
2725 // event at a given time so filter here 2725 // event at a given time so filter here
2726 float movieTime = currentTime(); 2726 double movieTime = currentTime();
2727 if (movieTime != m_lastTimeUpdateEventMovieTime) { 2727 if (movieTime != m_lastTimeUpdateEventMovieTime) {
2728 scheduleEvent(eventNames().timeupdateEvent); 2728 scheduleEvent(eventNames().timeupdateEvent);
2729 m_lastTimeUpdateEventWallTime = now; 2729 m_lastTimeUpdateEventWallTime = now;
2730 m_lastTimeUpdateEventMovieTime = movieTime; 2730 m_lastTimeUpdateEventMovieTime = movieTime;
2731 } 2731 }
2732 } 2732 }
2733 2733
2734 bool HTMLMediaElement::canPlay() const 2734 bool HTMLMediaElement::canPlay() const
2735 { 2735 {
2736 return paused() || ended() || m_readyState < HAVE_METADATA; 2736 return paused() || ended() || m_readyState < HAVE_METADATA;
2737 } 2737 }
2738 2738
2739 float HTMLMediaElement::percentLoaded() const 2739 double HTMLMediaElement::percentLoaded() const
2740 { 2740 {
2741 if (!m_player) 2741 if (!m_player)
2742 return 0; 2742 return 0;
2743 float duration = m_player->duration(); 2743 double duration = m_player->duration();
2744 2744
2745 if (!duration || std::isinf(duration)) 2745 if (!duration || std::isinf(duration))
2746 return 0; 2746 return 0;
2747 2747
2748 float buffered = 0; 2748 double buffered = 0;
2749 RefPtr<TimeRanges> timeRanges = m_player->buffered(); 2749 RefPtr<TimeRanges> timeRanges = m_player->buffered();
2750 for (unsigned i = 0; i < timeRanges->length(); ++i) { 2750 for (unsigned i = 0; i < timeRanges->length(); ++i) {
2751 float start = timeRanges->start(i, IGNORE_EXCEPTION); 2751 double start = timeRanges->start(i, IGNORE_EXCEPTION);
2752 float end = timeRanges->end(i, IGNORE_EXCEPTION); 2752 double end = timeRanges->end(i, IGNORE_EXCEPTION);
2753 buffered += end - start; 2753 buffered += end - start;
2754 } 2754 }
2755 return buffered / duration; 2755 return buffered / duration;
2756 } 2756 }
2757 2757
2758 #if ENABLE(VIDEO_TRACK) 2758 #if ENABLE(VIDEO_TRACK)
2759 2759
2760 void HTMLMediaElement::mediaPlayerDidAddTrack(PassRefPtr<InbandTextTrackPrivate> prpTrack) 2760 void HTMLMediaElement::mediaPlayerDidAddTrack(PassRefPtr<InbandTextTrackPrivate> prpTrack)
2761 { 2761 {
2762 if (!RuntimeEnabledFeatures::webkitVideoTrackEnabled()) 2762 if (!RuntimeEnabledFeatures::webkitVideoTrackEnabled())
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after
3412 3412
3413 // 4.8.10.9 step 14 & 15. Needed if no ReadyState change is associated with the seek. 3413 // 4.8.10.9 step 14 & 15. Needed if no ReadyState change is associated with the seek.
3414 if (m_seeking && m_readyState >= HAVE_CURRENT_DATA && !m_player->seeking()) 3414 if (m_seeking && m_readyState >= HAVE_CURRENT_DATA && !m_player->seeking())
3415 finishSeek(); 3415 finishSeek();
3416 3416
3417 // Always call scheduleTimeupdateEvent when the media engine reports a time discontinuity, 3417 // Always call scheduleTimeupdateEvent when the media engine reports a time discontinuity,
3418 // it will only queue a 'timeupdate' event if we haven't already posted one at the current 3418 // it will only queue a 'timeupdate' event if we haven't already posted one at the current
3419 // movie time. 3419 // movie time.
3420 scheduleTimeupdateEvent(false); 3420 scheduleTimeupdateEvent(false);
3421 3421
3422 float now = currentTime(); 3422 double now = currentTime();
3423 float dur = duration(); 3423 double dur = duration();
3424 3424
3425 // When the current playback position reaches the end of the media resource when the direction of 3425 // When the current playback position reaches the end of the media resource when the direction of
3426 // playback is forwards, then the user agent must follow these steps: 3426 // playback is forwards, then the user agent must follow these steps:
3427 if (!std::isnan(dur) && dur && now >= dur && m_playbackRate > 0) { 3427 if (!std::isnan(dur) && dur && now >= dur && m_playbackRate > 0) {
3428 // If the media element has a loop attribute specified and does not have a current media controller, 3428 // If the media element has a loop attribute specified and does not have a current media controller,
3429 if (loop() && !m_mediaController) { 3429 if (loop() && !m_mediaController) {
3430 m_sentEndEvent = false; 3430 m_sentEndEvent = false;
3431 // then seek to the earliest possible position of the media resourc e and abort these steps. 3431 // then seek to the earliest possible position of the media resourc e and abort these steps.
3432 seek(startTime(), IGNORE_EXCEPTION); 3432 seek(startTime(), IGNORE_EXCEPTION);
3433 } else { 3433 } else {
(...skipping 21 matching lines...) Expand all
3455 updatePlayState(); 3455 updatePlayState();
3456 endProcessingMediaPlayerCallback(); 3456 endProcessingMediaPlayerCallback();
3457 } 3457 }
3458 3458
3459 void HTMLMediaElement::mediaPlayerVolumeChanged(MediaPlayer*) 3459 void HTMLMediaElement::mediaPlayerVolumeChanged(MediaPlayer*)
3460 { 3460 {
3461 LOG(Media, "HTMLMediaElement::mediaPlayerVolumeChanged"); 3461 LOG(Media, "HTMLMediaElement::mediaPlayerVolumeChanged");
3462 3462
3463 beginProcessingMediaPlayerCallback(); 3463 beginProcessingMediaPlayerCallback();
3464 if (m_player) { 3464 if (m_player) {
3465 float vol = m_player->volume(); 3465 double vol = m_player->volume();
3466 if (vol != m_volume) { 3466 if (vol != m_volume) {
3467 m_volume = vol; 3467 m_volume = vol;
3468 updateVolume(); 3468 updateVolume();
3469 scheduleEvent(eventNames().volumechangeEvent); 3469 scheduleEvent(eventNames().volumechangeEvent);
3470 } 3470 }
3471 } 3471 }
3472 endProcessingMediaPlayerCallback(); 3472 endProcessingMediaPlayerCallback();
3473 } 3473 }
3474 3474
3475 void HTMLMediaElement::mediaPlayerMuteChanged(MediaPlayer*) 3475 void HTMLMediaElement::mediaPlayerMuteChanged(MediaPlayer*)
3476 { 3476 {
3477 LOG(Media, "HTMLMediaElement::mediaPlayerMuteChanged"); 3477 LOG(Media, "HTMLMediaElement::mediaPlayerMuteChanged");
3478 3478
3479 beginProcessingMediaPlayerCallback(); 3479 beginProcessingMediaPlayerCallback();
3480 if (m_player) 3480 if (m_player)
3481 setMuted(m_player->muted()); 3481 setMuted(m_player->muted());
3482 endProcessingMediaPlayerCallback(); 3482 endProcessingMediaPlayerCallback();
3483 } 3483 }
3484 3484
3485 void HTMLMediaElement::mediaPlayerDurationChanged(MediaPlayer* player) 3485 void HTMLMediaElement::mediaPlayerDurationChanged(MediaPlayer* player)
3486 { 3486 {
3487 LOG(Media, "HTMLMediaElement::mediaPlayerDurationChanged"); 3487 LOG(Media, "HTMLMediaElement::mediaPlayerDurationChanged");
3488 3488
3489 beginProcessingMediaPlayerCallback(); 3489 beginProcessingMediaPlayerCallback();
3490 3490
3491 scheduleEvent(eventNames().durationchangeEvent); 3491 scheduleEvent(eventNames().durationchangeEvent);
3492 mediaPlayerCharacteristicChanged(player); 3492 mediaPlayerCharacteristicChanged(player);
3493 3493
3494 float now = currentTime(); 3494 double now = currentTime();
3495 float dur = duration(); 3495 double dur = duration();
3496 if (now > dur) 3496 if (now > dur)
3497 seek(dur, IGNORE_EXCEPTION); 3497 seek(dur, IGNORE_EXCEPTION);
3498 3498
3499 endProcessingMediaPlayerCallback(); 3499 endProcessingMediaPlayerCallback();
3500 } 3500 }
3501 3501
3502 void HTMLMediaElement::mediaPlayerRateChanged(MediaPlayer*) 3502 void HTMLMediaElement::mediaPlayerRateChanged(MediaPlayer*)
3503 { 3503 {
3504 LOG(Media, "HTMLMediaElement::mediaPlayerRateChanged"); 3504 LOG(Media, "HTMLMediaElement::mediaPlayerRateChanged");
3505 3505
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
3640 PassRefPtr<TimeRanges> HTMLMediaElement::buffered() const 3640 PassRefPtr<TimeRanges> HTMLMediaElement::buffered() const
3641 { 3641 {
3642 if (!m_player) 3642 if (!m_player)
3643 return TimeRanges::create(); 3643 return TimeRanges::create();
3644 return m_player->buffered(); 3644 return m_player->buffered();
3645 } 3645 }
3646 3646
3647 PassRefPtr<TimeRanges> HTMLMediaElement::played() 3647 PassRefPtr<TimeRanges> HTMLMediaElement::played()
3648 { 3648 {
3649 if (m_playing) { 3649 if (m_playing) {
3650 float time = currentTime(); 3650 double time = currentTime();
3651 if (time > m_lastSeekTime) 3651 if (time > m_lastSeekTime)
3652 addPlayedRange(m_lastSeekTime, time); 3652 addPlayedRange(m_lastSeekTime, time);
3653 } 3653 }
3654 3654
3655 if (!m_playedTimeRanges) 3655 if (!m_playedTimeRanges)
3656 m_playedTimeRanges = TimeRanges::create(); 3656 m_playedTimeRanges = TimeRanges::create();
3657 3657
3658 return m_playedTimeRanges->copy(); 3658 return m_playedTimeRanges->copy();
3659 } 3659 }
3660 3660
(...skipping 11 matching lines...) Expand all
3672 return (pausedToBuffer || m_readyState >= HAVE_FUTURE_DATA) && couldPlayIfEn oughData() && !isBlockedOnMediaController(); 3672 return (pausedToBuffer || m_readyState >= HAVE_FUTURE_DATA) && couldPlayIfEn oughData() && !isBlockedOnMediaController();
3673 } 3673 }
3674 3674
3675 bool HTMLMediaElement::couldPlayIfEnoughData() const 3675 bool HTMLMediaElement::couldPlayIfEnoughData() const
3676 { 3676 {
3677 return !paused() && !endedPlayback() && !stoppedDueToErrors() && !pausedForU serInteraction(); 3677 return !paused() && !endedPlayback() && !stoppedDueToErrors() && !pausedForU serInteraction();
3678 } 3678 }
3679 3679
3680 bool HTMLMediaElement::endedPlayback() const 3680 bool HTMLMediaElement::endedPlayback() const
3681 { 3681 {
3682 float dur = duration(); 3682 double dur = duration();
3683 if (!m_player || std::isnan(dur)) 3683 if (!m_player || std::isnan(dur))
3684 return false; 3684 return false;
3685 3685
3686 // 4.8.10.8 Playing the media resource 3686 // 4.8.10.8 Playing the media resource
3687 3687
3688 // A media element is said to have ended playback when the element's 3688 // A media element is said to have ended playback when the element's
3689 // readyState attribute is HAVE_METADATA or greater, 3689 // readyState attribute is HAVE_METADATA or greater,
3690 if (m_readyState < HAVE_METADATA) 3690 if (m_readyState < HAVE_METADATA)
3691 return false; 3691 return false;
3692 3692
3693 // and the current playback position is the end of the media resource and th e direction 3693 // and the current playback position is the end of the media resource and th e direction
3694 // of playback is forwards, Either the media element does not have a loop at tribute specified, 3694 // of playback is forwards, Either the media element does not have a loop at tribute specified,
3695 // or the media element has a current media controller. 3695 // or the media element has a current media controller.
3696 float now = currentTime(); 3696 double now = currentTime();
3697 if (m_playbackRate > 0) 3697 if (m_playbackRate > 0)
3698 return dur > 0 && now >= dur && (!loop() || m_mediaController); 3698 return dur > 0 && now >= dur && (!loop() || m_mediaController);
3699 3699
3700 // or the current playback position is the earliest possible position and th e direction 3700 // or the current playback position is the earliest possible position and th e direction
3701 // of playback is backwards 3701 // of playback is backwards
3702 if (m_playbackRate < 0) 3702 if (m_playbackRate < 0)
3703 return now <= 0; 3703 return now <= 0;
3704 3704
3705 return false; 3705 return false;
3706 } 3706 }
3707 3707
3708 bool HTMLMediaElement::stoppedDueToErrors() const 3708 bool HTMLMediaElement::stoppedDueToErrors() const
3709 { 3709 {
3710 if (m_readyState >= HAVE_METADATA && m_error) { 3710 if (m_readyState >= HAVE_METADATA && m_error) {
3711 RefPtr<TimeRanges> seekableRanges = seekable(); 3711 RefPtr<TimeRanges> seekableRanges = seekable();
3712 if (!seekableRanges->contain(currentTime())) 3712 if (!seekableRanges->contain(currentTime()))
3713 return true; 3713 return true;
3714 } 3714 }
3715 3715
3716 return false; 3716 return false;
3717 } 3717 }
3718 3718
3719 bool HTMLMediaElement::pausedForUserInteraction() const 3719 bool HTMLMediaElement::pausedForUserInteraction() const
3720 { 3720 {
3721 // return !paused() && m_readyState >= HAVE_FUTURE_DATA && [UA requires a dec itions from the user] 3721 // return !paused() && m_readyState >= HAVE_FUTURE_DATA && [UA requires a dec itions from the user]
3722 return false; 3722 return false;
3723 } 3723 }
3724 3724
3725 float HTMLMediaElement::minTimeSeekable() const 3725 double HTMLMediaElement::minTimeSeekable() const
3726 { 3726 {
3727 return 0; 3727 return 0;
3728 } 3728 }
3729 3729
3730 float HTMLMediaElement::maxTimeSeekable() const 3730 double HTMLMediaElement::maxTimeSeekable() const
3731 { 3731 {
3732 return m_player ? m_player->maxTimeSeekable() : 0; 3732 return m_player ? m_player->maxTimeSeekable() : 0;
3733 } 3733 }
3734 3734
3735 void HTMLMediaElement::updateVolume() 3735 void HTMLMediaElement::updateVolume()
3736 { 3736 {
3737 if (!m_player) 3737 if (!m_player)
3738 return; 3738 return;
3739 3739
3740 // Avoid recursion when the player reports volume changes. 3740 // Avoid recursion when the player reports volume changes.
3741 if (!processingMediaPlayerCallback()) { 3741 if (!processingMediaPlayerCallback()) {
3742 Page* page = document()->page(); 3742 Page* page = document()->page();
3743 float volumeMultiplier = page ? page->mediaVolume() : 1; 3743 double volumeMultiplier = page ? page->mediaVolume() : 1;
3744 bool shouldMute = m_muted; 3744 bool shouldMute = m_muted;
3745 3745
3746 if (m_mediaController) { 3746 if (m_mediaController) {
3747 volumeMultiplier *= m_mediaController->volume(); 3747 volumeMultiplier *= m_mediaController->volume();
3748 shouldMute = m_mediaController->muted(); 3748 shouldMute = m_mediaController->muted();
3749 } 3749 }
3750 3750
3751 m_player->setMuted(shouldMute); 3751 m_player->setMuted(shouldMute);
3752 m_player->setVolume(m_volume * volumeMultiplier); 3752 m_player->setVolume(m_volume * volumeMultiplier);
3753 } 3753 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
3798 startPlaybackProgressTimer(); 3798 startPlaybackProgressTimer();
3799 m_playing = true; 3799 m_playing = true;
3800 3800
3801 } else { // Should not be playing right now 3801 } else { // Should not be playing right now
3802 if (!playerPaused) 3802 if (!playerPaused)
3803 m_player->pause(); 3803 m_player->pause();
3804 refreshCachedTime(); 3804 refreshCachedTime();
3805 3805
3806 m_playbackProgressTimer.stop(); 3806 m_playbackProgressTimer.stop();
3807 m_playing = false; 3807 m_playing = false;
3808 float time = currentTime(); 3808 double time = currentTime();
3809 if (time > m_lastSeekTime) 3809 if (time > m_lastSeekTime)
3810 addPlayedRange(m_lastSeekTime, time); 3810 addPlayedRange(m_lastSeekTime, time);
3811 3811
3812 if (couldPlayIfEnoughData()) 3812 if (couldPlayIfEnoughData())
3813 prepareToPlay(); 3813 prepareToPlay();
3814 3814
3815 if (hasMediaControls()) 3815 if (hasMediaControls())
3816 mediaControls()->playbackStopped(); 3816 mediaControls()->playbackStopped();
3817 } 3817 }
3818 3818
(...skipping 819 matching lines...) Expand 10 before | Expand all | Expand 10 after
4638 return false; 4638 return false;
4639 4639
4640 // A media element is blocked on its media controller if the MediaController is a blocked 4640 // A media element is blocked on its media controller if the MediaController is a blocked
4641 // media controller, 4641 // media controller,
4642 if (m_mediaController->isBlocked()) 4642 if (m_mediaController->isBlocked())
4643 return true; 4643 return true;
4644 4644
4645 // or if its media controller position is either before the media resource's earliest possible 4645 // or if its media controller position is either before the media resource's earliest possible
4646 // position relative to the MediaController's timeline or after the end of t he media resource 4646 // position relative to the MediaController's timeline or after the end of t he media resource
4647 // relative to the MediaController's timeline. 4647 // relative to the MediaController's timeline.
4648 float mediaControllerPosition = m_mediaController->currentTime(); 4648 double mediaControllerPosition = m_mediaController->currentTime();
4649 if (mediaControllerPosition < startTime() || mediaControllerPosition > start Time() + duration()) 4649 if (mediaControllerPosition < startTime() || mediaControllerPosition > start Time() + duration())
4650 return true; 4650 return true;
4651 4651
4652 return false; 4652 return false;
4653 } 4653 }
4654 4654
4655 void HTMLMediaElement::prepareMediaFragmentURI() 4655 void HTMLMediaElement::prepareMediaFragmentURI()
4656 { 4656 {
4657 MediaFragmentURIParser fragmentParser(m_currentSrc); 4657 MediaFragmentURIParser fragmentParser(m_currentSrc);
4658 float dur = duration(); 4658 double dur = duration();
4659 4659
4660 double start = fragmentParser.startTime(); 4660 double start = fragmentParser.startTime();
4661 if (start != MediaFragmentURIParser::invalidTimeValue() && start > 0) { 4661 if (start != MediaFragmentURIParser::invalidTimeValue() && start > 0) {
4662 m_fragmentStartTime = start; 4662 m_fragmentStartTime = start;
4663 if (m_fragmentStartTime > dur) 4663 if (m_fragmentStartTime > dur)
4664 m_fragmentStartTime = dur; 4664 m_fragmentStartTime = dur;
4665 } else 4665 } else
4666 m_fragmentStartTime = MediaPlayer::invalidTime(); 4666 m_fragmentStartTime = MediaPlayer::invalidTime();
4667 4667
4668 double end = fragmentParser.endTime(); 4668 double end = fragmentParser.endTime();
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
4851 info.addMember(m_sleepDisabler, "sleepDisabler"); 4851 info.addMember(m_sleepDisabler, "sleepDisabler");
4852 #endif 4852 #endif
4853 #if ENABLE(WEB_AUDIO) 4853 #if ENABLE(WEB_AUDIO)
4854 info.addMember(m_audioSourceNode, "audioSourceNode"); 4854 info.addMember(m_audioSourceNode, "audioSourceNode");
4855 #endif 4855 #endif
4856 4856
4857 } 4857 }
4858 4858
4859 } 4859 }
4860 #endif 4860 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698