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 f11d53c995df455a5240b45d56fc9d09fd9bc82a..fcb793a42d47f87d14ffdc9e037f740a2f19ddbf 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(); |
| @@ -98,7 +93,15 @@ void ContentDecryptionModuleResultPromise::reject(ExceptionCode code, |
| const String& errorMessage) { |
| DCHECK(isValidToFulfillPromise()); |
| - m_resolver->reject(DOMException::create(code, errorMessage)); |
| + if (code == V8TypeError) { |
|
haraken
2016/10/15 01:30:46
Can you just use V8ThrowException::createDOMExcept
jrummell
2016/10/17 18:57:24
Done.
|
| + ScriptState::Scope scope(m_resolver->getScriptState()); |
|
jrummell
2016/10/14 20:43:47
Without this line I get a crash in v8::internal::H
haraken
2016/10/15 01:30:46
Yes, this is needed.
|
| + v8::Isolate* isolate = m_resolver->getScriptState()->isolate(); |
| + m_resolver->reject( |
| + V8ThrowException::createTypeError(isolate, errorMessage)); |
| + } else { |
| + m_resolver->reject(DOMException::create(code, errorMessage)); |
| + } |
| + |
| m_resolver.clear(); |
| } |