Home | History | Annotate | Download | only in encryptedmedia
      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