Diff
Modified: trunk/LayoutTests/ChangeLog (222269 => 222270)
--- trunk/LayoutTests/ChangeLog 2017-09-20 17:31:06 UTC (rev 222269)
+++ trunk/LayoutTests/ChangeLog 2017-09-20 17:38:28 UTC (rev 222270)
@@ -1,3 +1,18 @@
+2017-09-20 Chris Dumez <[email protected]>
+
+ Video errors should be instances of Error
+ https://bugs.webkit.org/show_bug.cgi?id=174573
+ <rdar://problem/34445494>
+
+ Reviewed by Youenn Fablet.
+
+ * http/tests/security/video-cross-origin-caching-expected.txt:
+ Rebaseline test now that output has changed slightly.
+
+ * media/media-play-promise-reject-load-abort-expected.txt:
+ * media/media-play-promise-reject-load-abort.html:
+ Extend test coverage.
+
2017-09-20 Ryan Haddad <[email protected]>
Skip inspector tests that crash after r222259.
Modified: trunk/LayoutTests/fast/mediastream/MediaStream-MediaElement-setObject-null-expected.txt (222269 => 222270)
--- trunk/LayoutTests/fast/mediastream/MediaStream-MediaElement-setObject-null-expected.txt 2017-09-20 17:31:06 UTC (rev 222269)
+++ trunk/LayoutTests/fast/mediastream/MediaStream-MediaElement-setObject-null-expected.txt 2017-09-20 17:38:28 UTC (rev 222270)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: Unhandled Promise Rejection: [object DOMError]
+CONSOLE MESSAGE: Unhandled Promise Rejection: AbortError: The operation was aborted.
PASS video.srcObject = stream did not throw exception.
PASS video.duration is Number.POSITIVE_INFINITY
PASS video.srcObject = null did not throw exception.
Modified: trunk/LayoutTests/http/tests/security/video-cross-origin-caching-expected.txt (222269 => 222270)
--- trunk/LayoutTests/http/tests/security/video-cross-origin-caching-expected.txt 2017-09-20 17:31:06 UTC (rev 222269)
+++ trunk/LayoutTests/http/tests/security/video-cross-origin-caching-expected.txt 2017-09-20 17:38:28 UTC (rev 222270)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: Unhandled Promise Rejection: [object DOMError]
+CONSOLE MESSAGE: Unhandled Promise Rejection: AbortError: The operation was aborted.
This test passes if you do not see a CORS error.
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (222269 => 222270)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2017-09-20 17:31:06 UTC (rev 222269)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2017-09-20 17:38:28 UTC (rev 222270)
@@ -1,3 +1,17 @@
+2017-09-20 Chris Dumez <[email protected]>
+
+ Video errors should be instances of Error
+ https://bugs.webkit.org/show_bug.cgi?id=174573
+ <rdar://problem/34445494>
+
+ Reviewed by Youenn Fablet.
+
+ Rebaseline tests now that output has changed slightly.
+
+ * web-platform-tests/html/semantics/embedded-content/media-elements/event_pause_noautoplay-expected.txt:
+ * web-platform-tests/html/semantics/embedded-content/media-elements/event_play_noautoplay-expected.txt:
+ * web-platform-tests/html/semantics/embedded-content/media-elements/paused_true_during_pause-expected.txt:
+
2017-09-19 Chris Dumez <[email protected]>
IDBRequest and IDBTransaction error properties should be DOMExceptions
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/event_pause_noautoplay-expected.txt (222269 => 222270)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/event_pause_noautoplay-expected.txt 2017-09-20 17:31:06 UTC (rev 222269)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/event_pause_noautoplay-expected.txt 2017-09-20 17:38:28 UTC (rev 222270)
@@ -1,5 +1,5 @@
-CONSOLE MESSAGE: Unhandled Promise Rejection: [object DOMError]
-CONSOLE MESSAGE: Unhandled Promise Rejection: [object DOMError]
+CONSOLE MESSAGE: Unhandled Promise Rejection: AbortError: The operation was aborted.
+CONSOLE MESSAGE: Unhandled Promise Rejection: AbortError: The operation was aborted.
spec reference
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/event_play_noautoplay-expected.txt (222269 => 222270)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/event_play_noautoplay-expected.txt 2017-09-20 17:31:06 UTC (rev 222269)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/event_play_noautoplay-expected.txt 2017-09-20 17:38:28 UTC (rev 222270)
@@ -1,5 +1,5 @@
-CONSOLE MESSAGE: Unhandled Promise Rejection: [object DOMError]
-CONSOLE MESSAGE: Unhandled Promise Rejection: [object DOMError]
+CONSOLE MESSAGE: Unhandled Promise Rejection: AbortError: The operation was aborted.
+CONSOLE MESSAGE: Unhandled Promise Rejection: AbortError: The operation was aborted.
spec reference
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/paused_true_during_pause-expected.txt (222269 => 222270)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/paused_true_during_pause-expected.txt 2017-09-20 17:31:06 UTC (rev 222269)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/paused_true_during_pause-expected.txt 2017-09-20 17:38:28 UTC (rev 222270)
@@ -1,5 +1,5 @@
-CONSOLE MESSAGE: Unhandled Promise Rejection: [object DOMError]
-CONSOLE MESSAGE: Unhandled Promise Rejection: [object DOMError]
+CONSOLE MESSAGE: Unhandled Promise Rejection: AbortError: The operation was aborted.
+CONSOLE MESSAGE: Unhandled Promise Rejection: AbortError: The operation was aborted.
spec reference
Modified: trunk/LayoutTests/media/media-play-promise-reject-load-abort-expected.txt (222269 => 222270)
--- trunk/LayoutTests/media/media-play-promise-reject-load-abort-expected.txt 2017-09-20 17:31:06 UTC (rev 222269)
+++ trunk/LayoutTests/media/media-play-promise-reject-load-abort-expected.txt 2017-09-20 17:38:28 UTC (rev 222270)
@@ -3,5 +3,7 @@
RUN(mediaElement.src = "" "content/test"))
Promise rejected. OK
EXPECTED (error.name == 'AbortError') OK
+EXPECTED (error instanceof DOMException == 'true') OK
+EXPECTED (error instanceof Error == 'true') OK
END OF TEST
Modified: trunk/LayoutTests/media/media-play-promise-reject-load-abort.html (222269 => 222270)
--- trunk/LayoutTests/media/media-play-promise-reject-load-abort.html 2017-09-20 17:31:06 UTC (rev 222269)
+++ trunk/LayoutTests/media/media-play-promise-reject-load-abort.html 2017-09-20 17:38:28 UTC (rev 222270)
@@ -18,6 +18,8 @@
error = e;
logResult(true, "Promise rejected.");
testExpected('error.name', 'AbortError');
+ testExpected('error instanceof DOMException', true);
+ testExpected('error instanceof Error', true);
endTest();
}
</script>
Modified: trunk/Source/WebCore/ChangeLog (222269 => 222270)
--- trunk/Source/WebCore/ChangeLog 2017-09-20 17:31:06 UTC (rev 222269)
+++ trunk/Source/WebCore/ChangeLog 2017-09-20 17:38:28 UTC (rev 222270)
@@ -1,3 +1,27 @@
+2017-09-20 Chris Dumez <[email protected]>
+
+ Video errors should be instances of Error
+ https://bugs.webkit.org/show_bug.cgi?id=174573
+ <rdar://problem/34445494>
+
+ Reviewed by Youenn Fablet.
+
+ Video errors should be instances of DOMException and Error as per:
+ - https://html.spec.whatwg.org/multipage/media.html#reject-pending-play-promises
+ - https://html.spec.whatwg.org/multipage/media.html#loading-the-media-resource:reject-pending-play-promises-2
+ - https://html.spec.whatwg.org/multipage/media.html#loading-the-media-resource:reject-pending-play-promises-3
+ - https://html.spec.whatwg.org/multipage/media.html#playing-the-media-resource:reject-pending-play-promises-3
+ - https://html.spec.whatwg.org/multipage/media.html#playing-the-media-resource:reject-pending-play-promises
+
+ No new tests, extended existing test.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::rejectPendingPlayPromises):
+ (WebCore::HTMLMediaElement::noneSupported):
+ (WebCore::HTMLMediaElement::cancelPendingEventsAndCallbacks):
+ (WebCore::HTMLMediaElement::pauseInternal):
+ * html/HTMLMediaElement.h:
+
2017-09-20 Basuke Suzuki <[email protected]>
[Curl] improve the implementation of FormDataStream
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (222269 => 222270)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2017-09-20 17:31:06 UTC (rev 222269)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2017-09-20 17:38:28 UTC (rev 222270)
@@ -51,7 +51,7 @@
#include "HTMLParserIdioms.h"
#include "HTMLSourceElement.h"
#include "HTMLVideoElement.h"
-#include "JSDOMError.h"
+#include "JSDOMException.h"
#include "JSDOMPromiseDeferred.h"
#include "JSHTMLMediaElement.h"
#include "Logging.h"
@@ -1037,12 +1037,12 @@
m_promiseTaskQueue.enqueueTask(std::bind(&HTMLMediaElement::resolvePendingPlayPromises, this));
}
-void HTMLMediaElement::rejectPendingPlayPromises(DOMError& error)
+void HTMLMediaElement::rejectPendingPlayPromises(DOMException& error)
{
Vector<DOMPromiseDeferred<void>> pendingPlayPromises = WTFMove(m_pendingPlayPromises);
for (auto& promise : pendingPlayPromises)
- promise.rejectType<IDLInterface<DOMError>>(error);
+ promise.rejectType<IDLInterface<DOMException>>(error);
}
void HTMLMediaElement::resolvePendingPlayPromises()
@@ -2130,7 +2130,7 @@
// 7 - Queue a task to fire a simple event named error at the media element.
scheduleEvent(eventNames().errorEvent);
- rejectPendingPlayPromises(DOMError::create("NotSupportedError", "The operation is not supported."));
+ rejectPendingPlayPromises(DOMException::create(NotSupportedError));
#if ENABLE(MEDIA_SOURCE)
detachMediaSource();
@@ -2193,7 +2193,7 @@
for (auto& source : childrenOfType<HTMLSourceElement>(*this))
source.cancelPendingErrorEvent();
- rejectPendingPlayPromises(DOMError::create("AbortError", "The operation was aborted."));
+ rejectPendingPlayPromises(DOMException::create(AbortError));
}
void HTMLMediaElement::mediaPlayerNetworkStateChanged(MediaPlayer*)
@@ -3502,7 +3502,7 @@
scheduleTimeupdateEvent(false);
scheduleEvent(eventNames().pauseEvent);
m_promiseTaskQueue.enqueueTask([this]() {
- rejectPendingPlayPromises(DOMError::create("AbortError", "The operation was aborted."));
+ rejectPendingPlayPromises(DOMException::create(AbortError));
});
if (MemoryPressureHandler::singleton().isUnderMemoryPressure())
purgeBufferedDataIfPossible();
Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (222269 => 222270)
--- trunk/Source/WebCore/html/HTMLMediaElement.h 2017-09-20 17:31:06 UTC (rev 222269)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h 2017-09-20 17:38:28 UTC (rev 222270)
@@ -76,7 +76,7 @@
class AudioTrackList;
class AudioTrackPrivate;
class Blob;
-class DOMError;
+class DOMException;
class DeferredPromise;
class Event;
class HTMLSourceElement;
@@ -184,7 +184,7 @@
using HTMLMediaElementEnums::DelayedActionType;
void scheduleDelayedAction(DelayedActionType);
void scheduleResolvePendingPlayPromises();
- void rejectPendingPlayPromises(DOMError&);
+ void rejectPendingPlayPromises(DOMException&);
void resolvePendingPlayPromises();
void scheduleNotifyAboutPlaying();
void notifyAboutPlaying();