ChromiumCDMCallbackProxy.h (2059B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #ifndef ChromiumCDMCallbackProxy_h_ 7 #define ChromiumCDMCallbackProxy_h_ 8 9 #include "ChromiumCDMCallback.h" 10 #include "ChromiumCDMProxy.h" 11 #include "nsThreadUtils.h" 12 13 namespace mozilla { 14 15 class ChromiumCDMCallbackProxy : public ChromiumCDMCallback { 16 public: 17 ChromiumCDMCallbackProxy(ChromiumCDMProxy* aProxy, 18 nsIEventTarget* aMainThread) 19 : mProxy(aProxy), mMainThread(aMainThread) {} 20 21 void SetSessionId(uint32_t aPromiseId, const nsCString& aSessionId) override; 22 23 void ResolveLoadSessionPromise(uint32_t aPromiseId, 24 bool aSuccessful) override; 25 26 void ResolvePromiseWithKeyStatus(uint32_t aPromiseId, 27 uint32_t aKeyStatus) override; 28 29 void ResolvePromise(uint32_t aPromiseId) override; 30 31 void RejectPromise(uint32_t aPromiseId, ErrorResult&& aException, 32 const nsCString& aErrorMessage) override; 33 34 void SessionMessage(const nsACString& aSessionId, uint32_t aMessageType, 35 nsTArray<uint8_t>&& aMessage) override; 36 37 void SessionKeysChange( 38 const nsCString& aSessionId, 39 nsTArray<mozilla::gmp::CDMKeyInformation>&& aKeysInfo) override; 40 41 void ExpirationChange(const nsCString& aSessionId, 42 double aSecondsSinceEpoch) override; 43 44 void SessionClosed(const nsCString& aSessionId) override; 45 46 void QueryOutputProtectionStatus() override; 47 48 void Terminated() override; 49 50 void Shutdown() override; 51 52 private: 53 template <class Func, class... Args> 54 void DispatchToMainThread(const char* const aLabel, Func aFunc, 55 Args&&... aArgs); 56 // Warning: Weak ref. 57 ChromiumCDMProxy* mProxy; 58 const nsCOMPtr<nsIEventTarget> mMainThread; 59 }; 60 61 } // namespace mozilla 62 #endif