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