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

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

Issue 2315113002: MSE: Throw TypeError instead of InvalidAccessError per spec update (Closed)
Patch Set: addSourceBuffer(null) is really addSourceBuffer("null") in at least Blink Created 4 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/mediasource/SourceBuffer.cpp
diff --git a/third_party/WebKit/Source/modules/mediasource/SourceBuffer.cpp b/third_party/WebKit/Source/modules/mediasource/SourceBuffer.cpp
index 1e3286b94922987c3fcb4f253a1d4816d78683e2..3b386903cd188723f1c12914faf8d44163027d20 100644
--- a/third_party/WebKit/Source/modules/mediasource/SourceBuffer.cpp
+++ b/third_party/WebKit/Source/modules/mediasource/SourceBuffer.cpp
@@ -262,17 +262,17 @@ void SourceBuffer::setAppendWindowStart(double start, ExceptionState& exceptionS
{
BLINK_SBLOG << __func__ << " this=" << this << " start=" << start;
// Section 3.1 appendWindowStart attribute setter steps.
- // https://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html#widl-SourceBuffer-appendWindowStart
+ // https://www.w3.org/TR/media-source/#widl-SourceBuffer-appendWindowStart
// 1. If this object has been removed from the sourceBuffers attribute of the parent media source then throw an
// InvalidStateError exception and abort these steps.
// 2. If the updating attribute equals true, then throw an InvalidStateError exception and abort these steps.
if (throwExceptionIfRemovedOrUpdating(isRemoved(), m_updating, exceptionState))
return;
- // 3. If the new value is less than 0 or greater than or equal to appendWindowEnd then throw an InvalidAccessError
+ // 3. If the new value is less than 0 or greater than or equal to appendWindowEnd then throw a TypeError
// exception and abort these steps.
if (start < 0 || start >= m_appendWindowEnd) {
chcunningham 2016/09/07 18:36:05 Weird that we don't check NaN for start like we do
wolenetz 2016/09/07 21:09:27 We do and spec does. That's enforced by IDL bindin
- MediaSource::logAndThrowDOMException(exceptionState, InvalidAccessError, ExceptionMessages::indexOutsideRange("value", start, 0.0, ExceptionMessages::ExclusiveBound, m_appendWindowEnd, ExceptionMessages::InclusiveBound));
+ MediaSource::logAndThrowTypeError(exceptionState, ExceptionMessages::indexOutsideRange("value", start, 0.0, ExceptionMessages::ExclusiveBound, m_appendWindowEnd, ExceptionMessages::InclusiveBound));
return;
}
@@ -291,22 +291,22 @@ void SourceBuffer::setAppendWindowEnd(double end, ExceptionState& exceptionState
{
BLINK_SBLOG << __func__ << " this=" << this << " end=" << end;
// Section 3.1 appendWindowEnd attribute setter steps.
- // https://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html#widl-SourceBuffer-appendWindowEnd
+ // https://www.w3.org/TR/media-source/#widl-SourceBuffer-appendWindowEnd
// 1. If this object has been removed from the sourceBuffers attribute of the parent media source then throw an
// InvalidStateError exception and abort these steps.
// 2. If the updating attribute equals true, then throw an InvalidStateError exception and abort these steps.
if (throwExceptionIfRemovedOrUpdating(isRemoved(), m_updating, exceptionState))
return;
- // 3. If the new value equals NaN, then throw an InvalidAccessError and abort these steps.
+ // 3. If the new value equals NaN, then throw a TypeError and abort these steps.
if (std::isnan(end)) {
- MediaSource::logAndThrowDOMException(exceptionState, InvalidAccessError, ExceptionMessages::notAFiniteNumber(end));
+ MediaSource::logAndThrowTypeError(exceptionState, ExceptionMessages::notAFiniteNumber(end));
return;
}
- // 4. If the new value is less than or equal to appendWindowStart then throw an InvalidAccessError
+ // 4. If the new value is less than or equal to appendWindowStart then throw a TypeError
// exception and abort these steps.
if (end <= m_appendWindowStart) {
- MediaSource::logAndThrowDOMException(exceptionState, InvalidAccessError, ExceptionMessages::indexExceedsMinimumBound("value", end, m_appendWindowStart));
+ MediaSource::logAndThrowTypeError(exceptionState, ExceptionMessages::indexExceedsMinimumBound("value", end, m_appendWindowStart));
return;
}
@@ -398,26 +398,26 @@ void SourceBuffer::remove(double start, double end, ExceptionState& exceptionSta
BLINK_SBLOG << __func__ << " this=" << this << " start=" << start << " end=" << end;
// Section 3.2 remove() method 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.
+ // https://www.w3.org/TR/media-source/#widl-SourceBuffer-remove-void-double-start-unrestricted-double-end
+ // 1. If this object has been removed from the sourceBuffers attribute of the parent media source then throw an
+ // InvalidStateError exception and abort these steps.
+ // 2. If the updating attribute equals true, then throw an InvalidStateError exception and abort these steps.
+ if (throwExceptionIfRemovedOrUpdating(isRemoved(), m_updating, exceptionState))
+ return;
- if (start < 0 || (m_source && (std::isnan(m_source->duration()) || start > m_source->duration()))) {
- MediaSource::logAndThrowDOMException(exceptionState, InvalidAccessError, ExceptionMessages::indexOutsideRange("start", start, 0.0, ExceptionMessages::ExclusiveBound, !m_source || std::isnan(m_source->duration()) ? 0 : m_source->duration(), ExceptionMessages::ExclusiveBound));
+ // 3. If duration equals NaN, then throw a TypeError exception and abort these steps.
+ // 4. If start is negative or greater than duration, then throw a TypeError exception and abort these steps.
+ if (start < 0 || std::isnan(m_source->duration()) || start > m_source->duration()) {
+ MediaSource::logAndThrowTypeError(exceptionState, ExceptionMessages::indexOutsideRange("start", start, 0.0, ExceptionMessages::ExclusiveBound, std::isnan(m_source->duration()) ? 0 : m_source->duration(), ExceptionMessages::ExclusiveBound));
return;
}
- // 3. If end is less than or equal to start or end equals NaN, then throw an InvalidAccessError exception and abort these steps.
+ // 5. If end is less than or equal to start or end equals NaN, then throw a TypeError exception and abort these steps.
if (end <= start || std::isnan(end)) {
- MediaSource::logAndThrowDOMException(exceptionState, InvalidAccessError, "The end value provided (" + String::number(end) + ") must be greater than the start value provided (" + String::number(start) + ").");
+ MediaSource::logAndThrowTypeError(exceptionState, "The end value provided (" + String::number(end) + ") must be greater than the start value provided (" + String::number(start) + ").");
return;
}
- // 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.
- // 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);
// 6. If the readyState attribute of the parent media source is in the "ended" state then run the following steps:

Powered by Google App Engine
This is Rietveld 408576698