• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef SimpleContentDecryptionModuleResult_h
6 #define SimpleContentDecryptionModuleResult_h
7 
8 #include "core/dom/ExceptionCode.h"
9 #include "platform/ContentDecryptionModuleResult.h"
10 #include "wtf/Forward.h"
11 
12 namespace blink {
13 
14 class ScriptPromise;
15 class ScriptPromiseResolver;
16 class ScriptState;
17 class WebString;
18 
19 ExceptionCode WebCdmExceptionToExceptionCode(WebContentDecryptionModuleException);
20 
21 // This class wraps the promise resolver and is passed (indirectly) to Chromium
22 // to fullfill the promise. This implementation of complete() will resolve the
23 // promise with undefined, while completeWithError() reject the promise with an
24 // exception. completeWithSession() is not expected to be called, and will
25 // reject the promise.
26 class SimpleContentDecryptionModuleResult : public ContentDecryptionModuleResult {
27 public:
28     explicit SimpleContentDecryptionModuleResult(ScriptState*);
29     virtual ~SimpleContentDecryptionModuleResult();
30 
31     // ContentDecryptionModuleResult implementation.
32     virtual void complete() OVERRIDE;
33     virtual void completeWithSession(WebContentDecryptionModuleResult::SessionStatus) OVERRIDE;
34     virtual void completeWithError(WebContentDecryptionModuleException, unsigned long systemCode, const WebString&) OVERRIDE;
35 
36     // It is only valid to call this before completion.
37     ScriptPromise promise();
38 
39 private:
40     // Reject the promise with a DOMException.
41     void completeWithDOMException(ExceptionCode, const String& errorMessage);
42 
43     RefPtr<ScriptPromiseResolver> m_resolver;
44 };
45 
46 } // namespace blink
47 
48 #endif // SimpleContentDecryptionModuleResult_h
49