Chromium Code Reviews| 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()); |
|
haraken
2016/09/16 23:55:21
You don't need to enter ScriptState::Scope because
|
| + v8::Isolate* isolate = m_resolver->getScriptState()->isolate(); |
| + m_resolver->reject(V8ThrowException::createDOMException(isolate, code, errorMessage)); |
| + } |
| + |
| m_resolver.clear(); |
| } |