| 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
|
|
|