Title: [222270] trunk
Revision
222270
Author
[email protected]
Date
2017-09-20 10:38:28 -0700 (Wed, 20 Sep 2017)

Log Message

Video errors should be instances of Error
https://bugs.webkit.org/show_bug.cgi?id=174573
<rdar://problem/34445494>

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

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:

Source/WebCore:

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:

LayoutTests:

* 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.

Modified Paths

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();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to