AudioContext resume/close/suspend should reject promises with a DOM exception in lieu of throwing exceptions
https://bugs.webkit.org/show_bug.cgi?id=145064
Reviewed by Darin Adler.
Source/JavaScriptCore:
Added default message for TypeError.
* runtime/Error.cpp:
(JSC::throwTypeError):
* runtime/Error.h:
Source/WebCore:
Rejecting resume/suspend/close promises with InvalidStateError values in case context is offline.
Removed unneeded calls to postTask for resolving/rejecting promises.
Adding promise rejection of DOM Exception values, 0 being equivalent of no error passed to reject callback.
Test: webaudio/audiocontext-promise-throwing.html
* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::suspendContext): Rejecting promise in lieu of throwing exception.
(WebCore::AudioContext::resumeContext): Ditto.
(WebCore::AudioContext::closeContext): Ditto.
* Modules/webaudio/AudioContext.h:
* bindings/js/JSAudioContextCustom.cpp:
(WebCore::JSAudioContext::suspend): Removing ExceptionCode handling.
(WebCore::JSAudioContext::resume): Ditto.
(WebCore::JSAudioContext::close): Ditto.
* bindings/js/JSDOMBinding.cpp:
(WebCore::createDOMException): Splitting DOM exception creation from throwing.
(WebCore::setDOMException): Ditto.
* bindings/js/JSDOMBinding.h: Adding createDOMException prototype.
* bindings/js/JSDOMPromise.h:
(WebCore::DeferredWrapper::reject<ExceptionCode>):
LayoutTests:
Adding test to cover resume/close/suspend rejecting with InvalidStateError.
Updating existing test to cover resume and suspend rejection with no error.
* webaudio/audiocontext-promise-throwing-expected.txt: Added.
* webaudio/audiocontext-promise-throwing.html: Added.
* webaudio/audiocontext-state-expected.txt:
* webaudio/audiocontext-state.html:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@184651
268f45cc-cd09-0410-ab3c-
d52691b4dbfc