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

Side by Side Diff: Source/core/html/MediaController.cpp

Issue 517593003: Allow HTMLMediaElement.currentTime to be set before the transition to HAVE_METADATA (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Addressing Comments Created 6 years, 3 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) 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2011 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 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 151
152 if (m_position == MediaPlayer::invalidTime()) { 152 if (m_position == MediaPlayer::invalidTime()) {
153 // Some clocks may return times outside the range of [0..duration]. 153 // Some clocks may return times outside the range of [0..duration].
154 m_position = std::max(0.0, std::min(duration(), m_clock->currentTime())) ; 154 m_position = std::max(0.0, std::min(duration(), m_clock->currentTime())) ;
155 m_clearPositionTimer.startOneShot(0, FROM_HERE); 155 m_clearPositionTimer.startOneShot(0, FROM_HERE);
156 } 156 }
157 157
158 return m_position; 158 return m_position;
159 } 159 }
160 160
161 void MediaController::setCurrentTime(double time, ExceptionState& exceptionState ) 161 void MediaController::setCurrentTime(double time)
162 { 162 {
163 // When the user agent is to seek the media controller to a particular new p layback position, 163 // When the user agent is to seek the media controller to a particular new p layback position,
164 // it must follow these steps: 164 // it must follow these steps:
165 // If the new playback position is less than zero, then set it to zero. 165 // If the new playback position is less than zero, then set it to zero.
166 time = std::max(0.0, time); 166 time = std::max(0.0, time);
167 167
168 // If the new playback position is greater than the media controller duratio n, then set it 168 // If the new playback position is greater than the media controller duratio n, then set it
169 // to the media controller duration. 169 // to the media controller duration.
170 time = std::min(time, duration()); 170 time = std::min(time, duration());
171 171
172 // Set the media controller position to the new playback position. 172 // Set the media controller position to the new playback position.
173 m_position = time; 173 m_position = time;
174 m_clock->setCurrentTime(time); 174 m_clock->setCurrentTime(time);
175 175
176 // Seek each slaved media element to the new playback position relative to t he media element timeline. 176 // Seek each slaved media element to the new playback position relative to t he media element timeline.
177 for (MediaElementSequence::const_iterator it = m_mediaElements.begin(); it ! = m_mediaElements.end(); ++it) 177 for (MediaElementSequence::const_iterator it = m_mediaElements.begin(); it ! = m_mediaElements.end(); ++it)
178 (*it)->seek(time, exceptionState); 178 (*it)->seek(time);
179 179
180 scheduleTimeupdateEvent(); 180 scheduleTimeupdateEvent();
181 } 181 }
182 182
183 void MediaController::unpause() 183 void MediaController::unpause()
184 { 184 {
185 // When the unpause() method is invoked, if the MediaController is a paused media controller, 185 // When the unpause() method is invoked, if the MediaController is a paused media controller,
186 if (!m_paused) 186 if (!m_paused)
187 return; 187 return;
188 188
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 } 477 }
478 478
479 void MediaController::bringElementUpToSpeed(HTMLMediaElement* element) 479 void MediaController::bringElementUpToSpeed(HTMLMediaElement* element)
480 { 480 {
481 ASSERT(element); 481 ASSERT(element);
482 ASSERT(m_mediaElements.contains(element)); 482 ASSERT(m_mediaElements.contains(element));
483 483
484 // When the user agent is to bring a media element up to speed with its new media controller, 484 // When the user agent is to bring a media element up to speed with its new media controller,
485 // it must seek that media element to the MediaController's media controller position relative 485 // it must seek that media element to the MediaController's media controller position relative
486 // to the media element's timeline. 486 // to the media element's timeline.
487 element->seek(currentTime(), IGNORE_EXCEPTION); 487 element->seek(currentTime());
488 488
489 // Update volume to take controller volume and mute into account. 489 // Update volume to take controller volume and mute into account.
490 element->updateVolume(); 490 element->updateVolume();
491 } 491 }
492 492
493 bool MediaController::isRestrained() const 493 bool MediaController::isRestrained() const
494 { 494 {
495 ASSERT(!m_mediaElements.isEmpty()); 495 ASSERT(!m_mediaElements.isEmpty());
496 496
497 // A MediaController is a restrained media controller if the MediaController is a playing media 497 // A MediaController is a restrained media controller if the MediaController is a playing media
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 { 618 {
619 #if ENABLE(OILPAN) 619 #if ENABLE(OILPAN)
620 visitor->trace(m_mediaElements); 620 visitor->trace(m_mediaElements);
621 visitor->trace(m_pendingEventsQueue); 621 visitor->trace(m_pendingEventsQueue);
622 visitor->trace(m_executionContext); 622 visitor->trace(m_executionContext);
623 #endif 623 #endif
624 EventTargetWithInlineData::trace(visitor); 624 EventTargetWithInlineData::trace(visitor);
625 } 625 }
626 626
627 } 627 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698