Index: Source/modules/encryptedmedia/ContentDecryptionModuleResultPromise.h |
diff --git a/Source/modules/encryptedmedia/ContentDecryptionModuleResultPromise.h b/Source/modules/encryptedmedia/ContentDecryptionModuleResultPromise.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..56f1b9632781352d4165993a73f370aa2b66c5b4 |
--- /dev/null |
+++ b/Source/modules/encryptedmedia/ContentDecryptionModuleResultPromise.h |
@@ -0,0 +1,58 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef ContentDecryptionModuleResultPromise_h |
+#define ContentDecryptionModuleResultPromise_h |
+ |
+#include "bindings/core/v8/ScriptPromiseResolver.h" |
+#include "core/dom/ExceptionCode.h" |
+#include "platform/ContentDecryptionModuleResult.h" |
+ |
+namespace blink { |
+ |
+ExceptionCode WebCdmExceptionToExceptionCode(WebContentDecryptionModuleException); |
+ |
+// This class wraps the promise resolver to simplify creation of |
+// ContentDecryptionModuleResult objects. The default implementations of the |
+// complete(), completeWithSession(), etc. methods will reject the promise |
+// with an error. It needs to be subclassed and the appropriate complete() |
+// method overridden to resolve the promise as needed. |
+class ContentDecryptionModuleResultPromise : public ContentDecryptionModuleResult { |
+public: |
+ virtual ~ContentDecryptionModuleResultPromise(); |
+ |
+ // ContentDecryptionModuleResult implementation. |
+ virtual void complete() override; |
+ virtual void completeWithSession(WebContentDecryptionModuleResult::SessionStatus) override; |
+ virtual void completeWithError(WebContentDecryptionModuleException, unsigned long systemCode, const WebString&) final; |
+ |
+ // It is only valid to call this before completion. |
+ ScriptPromise promise(); |
+ |
+ virtual void trace(Visitor*); |
+ |
+protected: |
+ explicit ContentDecryptionModuleResultPromise(ScriptState*); |
+ |
+ // Resolves the promise with |value|. Used by subclasses to resolve the |
+ // promise. |
+ template <typename... T> |
+ void resolve(T... value) |
+ { |
+ m_resolver->resolve(value...); |
+ m_resolver.clear(); |
+ } |
+ |
+ // Rejects the promise with a DOMException. |
+ void reject(ExceptionCode, const String& errorMessage); |
+ |
+ ExecutionContext* executionContext() const; |
+ |
+private: |
+ RefPtr<ScriptPromiseResolver> m_resolver; |
+}; |
+ |
+} // namespace blink |
+ |
+#endif // ContentDecryptionModuleResultPromise_h |