| Index: third_party/WebKit/Source/modules/encryptedmedia/ContentDecryptionModuleResultPromise.cpp
|
| diff --git a/third_party/WebKit/Source/modules/encryptedmedia/ContentDecryptionModuleResultPromise.cpp b/third_party/WebKit/Source/modules/encryptedmedia/ContentDecryptionModuleResultPromise.cpp
|
| index c65194b436d3af6e2f5e610de4ec11bc95a8db51..5f92f9de2542f695199fc7407b931e57ae83f713 100644
|
| --- a/third_party/WebKit/Source/modules/encryptedmedia/ContentDecryptionModuleResultPromise.cpp
|
| +++ b/third_party/WebKit/Source/modules/encryptedmedia/ContentDecryptionModuleResultPromise.cpp
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "bindings/core/v8/ScriptPromise.h"
|
| #include "bindings/core/v8/ScriptState.h"
|
| +#include "bindings/core/v8/V8ThrowException.h"
|
| #include "core/dom/DOMException.h"
|
| #include "core/dom/ExecutionContext.h"
|
| #include "core/dom/ExecutionContextTask.h"
|
| @@ -17,22 +18,16 @@ namespace blink {
|
| ExceptionCode WebCdmExceptionToExceptionCode(WebContentDecryptionModuleException cdmException)
|
| {
|
| switch (cdmException) {
|
| + case WebContentDecryptionModuleExceptionTypeError:
|
| + return V8TypeError;
|
| case WebContentDecryptionModuleExceptionNotSupportedError:
|
| return NotSupportedError;
|
| case WebContentDecryptionModuleExceptionInvalidStateError:
|
| return InvalidStateError;
|
| - case WebContentDecryptionModuleExceptionInvalidAccessError:
|
| - return InvalidAccessError;
|
| case WebContentDecryptionModuleExceptionQuotaExceededError:
|
| return QuotaExceededError;
|
| case WebContentDecryptionModuleExceptionUnknownError:
|
| return UnknownError;
|
| - case WebContentDecryptionModuleExceptionClientError:
|
| - case WebContentDecryptionModuleExceptionOutputError:
|
| - // Currently no matching DOMException for these 2 errors.
|
| - // FIXME: Update DOMException to handle these if actually added to
|
| - // the EME spec.
|
| - return UnknownError;
|
| }
|
|
|
| NOTREACHED();
|
| @@ -103,7 +98,14 @@ void ContentDecryptionModuleResultPromise::reject(ExceptionCode code, const Stri
|
|
|
| void ContentDecryptionModuleResultPromise::rejectInternal(ExceptionCode code, const String& errorMessage)
|
| {
|
| - m_resolver->reject(DOMException::create(code, errorMessage));
|
| + // Reject promise with an appropriate error. Since |code| may represent
|
| + // a TypeError, use V8ThrowException::createDOMException() to handle it.
|
| + if (m_resolver->getScriptState()->contextIsValid()) {
|
| + ScriptState::Scope scope(m_resolver->getScriptState());
|
| + v8::Isolate* isolate = m_resolver->getScriptState()->isolate();
|
| + m_resolver->reject(V8ThrowException::createDOMException(isolate, code, errorMessage));
|
| + }
|
| +
|
| m_resolver.clear();
|
| }
|
|
|
|
|