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

Unified Diff: Source/modules/mediasource/SourceBuffer.cpp

Issue 453473002: Change SourceBuffer.remove() end parameter to unrestricted double. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: Source/modules/mediasource/SourceBuffer.cpp
diff --git a/Source/modules/mediasource/SourceBuffer.cpp b/Source/modules/mediasource/SourceBuffer.cpp
index e5787788affad763f8accced72c5f5278cec0db8..b96ae089ced46efedc12fce4dde6d8cac5e3b674 100644
--- a/Source/modules/mediasource/SourceBuffer.cpp
+++ b/Source/modules/mediasource/SourceBuffer.cpp
@@ -324,38 +324,41 @@ void SourceBuffer::abort(ExceptionState& exceptionState)
void SourceBuffer::remove(double start, double end, ExceptionState& exceptionState)
{
// Section 3.2 remove() method steps.
- // 1. If start is negative or greater than duration, then throw an InvalidAccessError exception and abort these steps.
- // 2. If end is less than or equal to start, then throw an InvalidAccessError exception and abort these steps.
+ // 1. If duration equals NaN, then throw an InvalidAccessError exception and abort these steps.
+ // 2. If start is negative or greater than duration, then throw an InvalidAccessError exception and abort these steps.
if (start < 0 || (m_source && (std::isnan(m_source->duration()) || start > m_source->duration()))) {
exceptionState.throwDOMException(InvalidAccessError, ExceptionMessages::indexOutsideRange("start", start, 0.0, ExceptionMessages::ExclusiveBound, !m_source || std::isnan(m_source->duration()) ? 0 : m_source->duration(), ExceptionMessages::ExclusiveBound));
return;
}
- if (end <= start) {
+
+ // 3. If end is less than or equal to start or end equals NaN, then throw an InvalidAccessError exception and abort these steps.
+ if (end <= start || std::isnan(end)) {
exceptionState.throwDOMException(InvalidAccessError, "The end value provided (" + String::number(end) + ") must be greater than the start value provided (" + String::number(start) + ").");
return;
}
- // 3. If this object has been removed from the sourceBuffers attribute of the parent media source then throw an
+ // 4. If this object has been removed from the sourceBuffers attribute of the parent media source then throw an
// InvalidStateError exception and abort these steps.
- // 4. If the updating attribute equals true, then throw an InvalidStateError exception and abort these steps.
+ // 5. If the updating attribute equals true, then throw an InvalidStateError exception and abort these steps.
if (throwExceptionIfRemovedOrUpdating(isRemoved(), m_updating, exceptionState))
return;
TRACE_EVENT_ASYNC_BEGIN0("media", "SourceBuffer::remove", this);
- // 5. If the readyState attribute of the parent media source is in the "ended" state then run the following steps:
- // 5.1. Set the readyState attribute of the parent media source to "open"
- // 5.2. Queue a task to fire a simple event named sourceopen at the parent media source .
+ // 6. If the readyState attribute of the parent media source is in the "ended" state then run the following steps:
+ // 6.1. Set the readyState attribute of the parent media source to "open"
+ // 6.2. Queue a task to fire a simple event named sourceopen at the parent media source .
m_source->openIfInEndedState();
- // 6. Set the updating attribute to true.
+ // 7. Run the range removal algorithm with start and end as the start and end of the removal range.
philipj_slow 2014/08/11 07:53:55 Looks equivalent, but it would be nice to factor o
acolwell GONE FROM CHROMIUM 2014/08/11 16:21:34 Yes. The range removal algorithm was added in one
+ // 7.3. Set the updating attribute to true.
m_updating = true;
- // 7. Queue a task to fire a simple event named updatestart at this SourceBuffer object.
+ // 7.4. Queue a task to fire a simple event named updatestart at this SourceBuffer object.
scheduleEvent(EventTypeNames::updatestart);
- // 8. Return control to the caller and run the rest of the steps asynchronously.
+ // 7.5. Return control to the caller and run the rest of the steps asynchronously.
m_pendingRemoveStart = start;
m_pendingRemoveEnd = end;
m_removeAsyncPartRunner.runAsync();
« no previous file with comments | « LayoutTests/http/tests/media/media-source/mediasource-remove-expected.txt ('k') | Source/modules/mediasource/SourceBuffer.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698