mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-27 20:25:44 +00:00
46a1552995
Now that GMPParent detects whether gmp-clearkey can decode using AAC/H.264 using WMF before reporting gmp-clearkey's GMPParent can decode AAC/H.264, we don't need the GMPDecryptorCallback::SetCapabilities() callback from the GMP to signal to the PDMFactory that the GMP can decode. We can now trust what the GMPService tells us. So we can remove the "waiting for CDM caps" step in the state machine's startup sequence. And all the plumbing. :) If we need more caps, like for an decode-and-render path, we can declare those as API strings in the info file. MozReview-Commit-ID: E0QhU4cYhjo --HG-- extra : rebase_source : 7d15ab6a45bac88c15c053f416d941b5fe0807b0
94 lines
3.3 KiB
C++
94 lines
3.3 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef GMPDecryptorProxy_h_
|
|
#define GMPDecryptorProxy_h_
|
|
|
|
#include "GMPCallbackBase.h"
|
|
#include "gmp-decryption.h"
|
|
#include "nsString.h"
|
|
|
|
namespace mozilla {
|
|
class CryptoSample;
|
|
} // namespace mozilla
|
|
|
|
class GMPDecryptorProxyCallback : public GMPCallbackBase {
|
|
public:
|
|
~GMPDecryptorProxyCallback() {}
|
|
|
|
virtual void SetSessionId(uint32_t aCreateSessionId,
|
|
const nsCString& aSessionId) = 0;
|
|
|
|
virtual void ResolveLoadSessionPromise(uint32_t aPromiseId,
|
|
bool aSuccess) = 0;
|
|
|
|
virtual void ResolvePromise(uint32_t aPromiseId) = 0;
|
|
|
|
virtual void RejectPromise(uint32_t aPromiseId,
|
|
nsresult aException,
|
|
const nsCString& aSessionId) = 0;
|
|
|
|
virtual void SessionMessage(const nsCString& aSessionId,
|
|
GMPSessionMessageType aMessageType,
|
|
const nsTArray<uint8_t>& aMessage) = 0;
|
|
|
|
virtual void ExpirationChange(const nsCString& aSessionId,
|
|
GMPTimestamp aExpiryTime) = 0;
|
|
|
|
virtual void SessionClosed(const nsCString& aSessionId) = 0;
|
|
|
|
virtual void SessionError(const nsCString& aSessionId,
|
|
nsresult aException,
|
|
uint32_t aSystemCode,
|
|
const nsCString& aMessage) = 0;
|
|
|
|
virtual void KeyStatusChanged(const nsCString& aSessionId,
|
|
const nsTArray<uint8_t>& aKeyId,
|
|
GMPMediaKeyStatus aStatus) = 0;
|
|
|
|
virtual void Decrypted(uint32_t aId,
|
|
GMPErr aResult,
|
|
const nsTArray<uint8_t>& aDecryptedData) = 0;
|
|
};
|
|
|
|
class GMPDecryptorProxy {
|
|
public:
|
|
~GMPDecryptorProxy() {}
|
|
|
|
virtual uint32_t GetPluginId() const = 0;
|
|
|
|
virtual nsresult Init(GMPDecryptorProxyCallback* aCallback) = 0;
|
|
|
|
virtual void CreateSession(uint32_t aCreateSessionToken,
|
|
uint32_t aPromiseId,
|
|
const nsCString& aInitDataType,
|
|
const nsTArray<uint8_t>& aInitData,
|
|
GMPSessionType aSessionType) = 0;
|
|
|
|
virtual void LoadSession(uint32_t aPromiseId,
|
|
const nsCString& aSessionId) = 0;
|
|
|
|
virtual void UpdateSession(uint32_t aPromiseId,
|
|
const nsCString& aSessionId,
|
|
const nsTArray<uint8_t>& aResponse) = 0;
|
|
|
|
virtual void CloseSession(uint32_t aPromiseId,
|
|
const nsCString& aSessionId) = 0;
|
|
|
|
virtual void RemoveSession(uint32_t aPromiseId,
|
|
const nsCString& aSessionId) = 0;
|
|
|
|
virtual void SetServerCertificate(uint32_t aPromiseId,
|
|
const nsTArray<uint8_t>& aServerCert) = 0;
|
|
|
|
virtual void Decrypt(uint32_t aId,
|
|
const mozilla::CryptoSample& aCrypto,
|
|
const nsTArray<uint8_t>& aBuffer) = 0;
|
|
|
|
virtual void Close() = 0;
|
|
};
|
|
|
|
#endif // GMPDecryptorProxy_h_
|