// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_ENCRYPTEDMEDIA_CONTENT_DECRYPTION_MODULE_RESULT_PROMISE_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_ENCRYPTEDMEDIA_CONTENT_DECRYPTION_MODULE_RESULT_PROMISE_H_ #include "third_party/blink/public/platform/web_encrypted_media_key_information.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" #include "third_party/blink/renderer/modules/encryptedmedia/encrypted_media_utils.h" #include "third_party/blink/renderer/platform/bindings/exception_code.h" #include "third_party/blink/renderer/platform/content_decryption_module_result.h" namespace blink { void WebCdmExceptionToPromiseRejection(ScriptPromiseResolverBase*, WebContentDecryptionModuleException, const String& message); // 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. // // Subclasses need to keep a Member<> to the object that created them so // that the creator remains around as long as this promise is pending. This // promise is not referenced by the object that created it (e.g MediaKeys, // MediaKeySession, Navigator.requestMediaKeySystemAccess), so this promise // may be cleaned up before or after it's creator once both become unreachable. // If it is after, the destruction of the creator may trigger this promise, // so use isValidToFulfillPromise() to verify that it is safe to fulfill // the promise. class ContentDecryptionModuleResultPromise : public ContentDecryptionModuleResult { … }; } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_MODULES_ENCRYPTEDMEDIA_CONTENT_DECRYPTION_MODULE_RESULT_PROMISE_H_