зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1404230 - Part2 - Add a web api to support HDCP policy check on MediaKeys. r=cpearce,smaug
MozReview-Commit-ID: HW7DtQ6GuOa --HG-- extra : rebase_source : 27c4fe3845068d979cac1868d0a7cf9262a3e153
This commit is contained in:
Родитель
0a1ba37059
Коммит
0df3d7fa98
|
@ -597,5 +597,37 @@ MediaKeys::GetSessionsInfo(nsString& sessionsInfo)
|
|||
}
|
||||
}
|
||||
|
||||
already_AddRefed<Promise>
|
||||
MediaKeys::GetStatusForPolicy(const MediaKeysPolicy& aPolicy,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
RefPtr<DetailedPromise> promise(MakePromise(aRv,
|
||||
NS_LITERAL_CSTRING("MediaKeys::GetStatusForPolicy()")));
|
||||
if (aRv.Failed()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Currently, only widevine CDM supports for this API.
|
||||
if (!IsWidevineKeySystem(mKeySystem)) {
|
||||
EME_LOG("MediaKeys[%p]::GetStatusForPolicy() HDCP policy check on unsupported keysystem ", this);
|
||||
NS_WARNING("Tried to query without a CDM");
|
||||
promise->MaybeReject(NS_ERROR_DOM_NOT_SUPPORTED_ERR,
|
||||
NS_LITERAL_CSTRING("HDCP policy check on unsupported keysystem"));
|
||||
return promise.forget();
|
||||
}
|
||||
|
||||
if (!mProxy) {
|
||||
NS_WARNING("Tried to use a MediaKeys without a CDM");
|
||||
promise->MaybeReject(NS_ERROR_DOM_INVALID_STATE_ERR,
|
||||
NS_LITERAL_CSTRING("Null CDM in MediaKeys.GetStatusForPolicy()"));
|
||||
return promise.forget();
|
||||
}
|
||||
|
||||
EME_LOG("GetStatusForPolicy minHdcpVersion = %s.", NS_ConvertUTF16toUTF8(aPolicy.mMinHdcpVersion).get());
|
||||
// TODO: Ask CDM to get the real policy.
|
||||
promise->MaybeResolve(MediaKeyStatus::Usable);
|
||||
return promise.forget();
|
||||
}
|
||||
|
||||
} // namespace dom
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -29,6 +29,7 @@ namespace dom {
|
|||
|
||||
class ArrayBufferViewOrArrayBuffer;
|
||||
class MediaKeySession;
|
||||
struct MediaKeysPolicy;
|
||||
class HTMLMediaElement;
|
||||
|
||||
typedef nsRefPtrHashtable<nsStringHashKey, MediaKeySession> KeySessionHashMap;
|
||||
|
@ -130,6 +131,10 @@ public:
|
|||
|
||||
void GetSessionsInfo(nsString& sessionsInfo);
|
||||
|
||||
// JavaScript: MediaKeys.GetStatusForPolicy()
|
||||
already_AddRefed<Promise> GetStatusForPolicy(const MediaKeysPolicy& aPolicy,
|
||||
ErrorResult& aR);
|
||||
|
||||
private:
|
||||
|
||||
// Instantiate CDMProxy instance.
|
||||
|
|
|
@ -18,6 +18,11 @@ enum MediaKeySessionType {
|
|||
// persistent-usage-record,
|
||||
};
|
||||
|
||||
// https://github.com/WICG/media-capabilities/blob/master/eme-extension-policy-check.md
|
||||
dictionary MediaKeysPolicy {
|
||||
DOMString minHdcpVersion = "";
|
||||
};
|
||||
|
||||
interface MediaKeys {
|
||||
readonly attribute DOMString keySystem;
|
||||
|
||||
|
@ -26,4 +31,7 @@ interface MediaKeys {
|
|||
|
||||
[NewObject]
|
||||
Promise<void> setServerCertificate(BufferSource serverCertificate);
|
||||
|
||||
[Pref="media.eme.hdcp-policy-check.enabled", NewObject]
|
||||
Promise<MediaKeyStatus> getStatusForPolicy(optional MediaKeysPolicy policy);
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче