Bug 1430673 - Remove CDMProxy::GetSessionIdsForKeyId(). r?JamesCheng draft
authorChris Pearce <cpearce@mozilla.com>
Tue, 16 Jan 2018 11:38:27 +1300
changeset 720639 8c5688166a53c97c77d02c58766f8f3664127b1a
parent 720551 d1b820065830a3e44711ead07c0b47babdc53cf1
child 746115 08b06e952852224a6924913e1df50976e2ecceef
push id95597
push userbmo:cpearce@mozilla.com
push dateMon, 15 Jan 2018 22:42:49 +0000
reviewersJamesCheng
bugs1430673
milestone59.0a1
Bug 1430673 - Remove CDMProxy::GetSessionIdsForKeyId(). r?JamesCheng MozReview-Commit-ID: EMT8BaHE2Pf
dom/media/MediaData.h
dom/media/eme/CDMCaps.cpp
dom/media/eme/CDMCaps.h
dom/media/eme/CDMProxy.h
dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp
dom/media/eme/mediadrm/MediaDrmCDMProxy.h
dom/media/gmp/ChromiumCDMProxy.cpp
dom/media/gmp/ChromiumCDMProxy.h
dom/media/platforms/agnostic/eme/EMEDecoderModule.cpp
--- a/dom/media/MediaData.h
+++ b/dom/media/MediaData.h
@@ -585,17 +585,16 @@ public:
 };
 
 class CryptoSample : public CryptoTrack
 {
 public:
   nsTArray<uint16_t> mPlainSizes;
   nsTArray<uint32_t> mEncryptedSizes;
   nsTArray<uint8_t> mIV;
-  nsTArray<nsCString> mSessionIds;
   nsTArray<nsTArray<uint8_t>> mInitDatas;
   nsString mInitDataType;
 };
 
 // MediaRawData is a MediaData container used to store demuxed, still compressed
 // samples.
 // Use MediaRawData::CreateWriter() to obtain a MediaRawDataWriter object that
 // provides methods to modify and manipulate the data.
--- a/dom/media/eme/CDMCaps.cpp
+++ b/dom/media/eme/CDMCaps.cpp
@@ -108,27 +108,16 @@ CDMCaps::GetKeyStatusesForSession(const 
 {
   for (const KeyStatus& keyStatus : mKeyStatuses) {
     if (keyStatus.mSessionId.Equals(aSessionId)) {
       aOutKeyStatuses.AppendElement(keyStatus);
     }
   }
 }
 
-void
-CDMCaps::GetSessionIdsForKeyId(const CencKeyId& aKeyId,
-                               nsTArray<nsCString>& aOutSessionIds)
-{
-  for (const KeyStatus& keyStatus : mKeyStatuses) {
-    if (keyStatus.mId == aKeyId) {
-      aOutSessionIds.AppendElement(NS_ConvertUTF16toUTF8(keyStatus.mSessionId));
-    }
-  }
-}
-
 bool
 CDMCaps::RemoveKeysForSession(const nsString& aSessionId)
 {
   bool changed = false;
   nsTArray<KeyStatus> statuses;
   GetKeyStatusesForSession(aSessionId, statuses);
   for (const KeyStatus& status : statuses) {
     changed |= SetKeyStatus(status.mId,
--- a/dom/media/eme/CDMCaps.h
+++ b/dom/media/eme/CDMCaps.h
@@ -55,19 +55,16 @@ public:
   // i.e. the key status changed from usable to expired.
   bool SetKeyStatus(const CencKeyId& aKeyId,
                     const nsString& aSessionId,
                     const dom::Optional<dom::MediaKeyStatus>& aStatus);
 
   void GetKeyStatusesForSession(const nsAString& aSessionId,
                                 nsTArray<KeyStatus>& aOutKeyStatuses);
 
-  void GetSessionIdsForKeyId(const CencKeyId& aKeyId,
-                             nsTArray<nsCString>& aOutSessionIds);
-
   // Ensures all keys for a session are marked as 'unknown', i.e. removed.
   // Returns true if a key status was changed.
   bool RemoveKeysForSession(const nsString& aSessionId);
 
   // Notifies the SamplesWaitingForKey when key become usable.
   void NotifyWhenKeyIdUsable(const CencKeyId& aKey,
                              SamplesWaitingForKey* aSamplesWaiting);
 
--- a/dom/media/eme/CDMProxy.h
+++ b/dom/media/eme/CDMProxy.h
@@ -219,19 +219,16 @@ public:
   // Threadsafe.
   virtual const nsString& KeySystem() const = 0;
 
   virtual DataMutex<CDMCaps>& Capabilites() = 0;
 
   // Main thread only.
   virtual void OnKeyStatusesChange(const nsAString& aSessionId) = 0;
 
-  virtual void GetSessionIdsForKeyId(const nsTArray<uint8_t>& aKeyId,
-                                     nsTArray<nsCString>& aSessionIds) = 0;
-
   // Main thread only.
   // Calls MediaKeys->ResolvePromiseWithKeyStatus(aPromiseId, aKeyStatus) after
   // the CDM has processed the request.
   virtual void GetStatusForPolicy(PromiseId aPromiseId,
                                   const nsAString& aMinHdcpVersion) = 0;
 
 #ifdef DEBUG
   virtual bool IsOnOwnerThread() = 0;
--- a/dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp
+++ b/dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp
@@ -360,24 +360,16 @@ MediaDrmCDMProxy::OnKeyStatusesChange(co
   }
   RefPtr<dom::MediaKeySession> session(mKeys->GetSession(aSessionId));
   if (session) {
     session->DispatchKeyStatusesChange();
   }
 }
 
 void
-MediaDrmCDMProxy::GetSessionIdsForKeyId(const nsTArray<uint8_t>& aKeyId,
-                                      nsTArray<nsCString>& aSessionIds)
-{
-  auto caps = Capabilites().Lock();
-  caps->GetSessionIdsForKeyId(aKeyId, aSessionIds);
-}
-
-void
 MediaDrmCDMProxy::GetStatusForPolicy(PromiseId aPromiseId,
                                      const nsAString& aMinHdcpVersion)
 {
   // TODO: Implement GetStatusForPolicy.
   RejectPromise(aPromiseId, NS_ERROR_DOM_NOT_SUPPORTED_ERR,
                 NS_LITERAL_CSTRING("Currently Fennec does not support GetStatusForPolicy"));
 }
 
--- a/dom/media/eme/mediadrm/MediaDrmCDMProxy.h
+++ b/dom/media/eme/mediadrm/MediaDrmCDMProxy.h
@@ -107,19 +107,16 @@ public:
 
   // Threadsafe.
   const nsString& KeySystem() const override;
 
   DataMutex<CDMCaps>& Capabilites() override;
 
   void OnKeyStatusesChange(const nsAString& aSessionId) override;
 
-  void GetSessionIdsForKeyId(const nsTArray<uint8_t>& aKeyId,
-                             nsTArray<nsCString>& aSessionIds) override;
-
   void GetStatusForPolicy(PromiseId aPromiseId,
                           const nsAString& aMinHdcpVersion) override;
 
 #ifdef DEBUG
   bool IsOnOwnerThread() override;
 #endif
 
   const nsString& GetMediaDrmStubId() const;
--- a/dom/media/gmp/ChromiumCDMProxy.cpp
+++ b/dom/media/gmp/ChromiumCDMProxy.cpp
@@ -597,24 +597,16 @@ ChromiumCDMProxy::Decrypt(MediaRawData* 
                                            __func__);
   }
   RefPtr<MediaRawData> sample = aSample;
   return InvokeAsync(
     mGMPThread, __func__, [cdm, sample]() { return cdm->Decrypt(sample); });
 }
 
 void
-ChromiumCDMProxy::GetSessionIdsForKeyId(const nsTArray<uint8_t>& aKeyId,
-                                        nsTArray<nsCString>& aSessionIds)
-{
-  auto caps = Capabilites().Lock();
-  caps->GetSessionIdsForKeyId(aKeyId, aSessionIds);
-}
-
-void
 ChromiumCDMProxy::GetStatusForPolicy(PromiseId aPromiseId,
                                      const nsAString& aMinHdcpVersion)
 {
   MOZ_ASSERT(NS_IsMainThread());
   EME_LOG("ChromiumCDMProxy::GetStatusForPolicy(pid=%u) minHdcpVersion=%s",
           aPromiseId,
           NS_ConvertUTF16toUTF8(aMinHdcpVersion).get());
 
--- a/dom/media/gmp/ChromiumCDMProxy.h
+++ b/dom/media/gmp/ChromiumCDMProxy.h
@@ -97,19 +97,16 @@ public:
   void ResolvePromise(PromiseId aId) override;
 
   const nsString& KeySystem() const override;
 
   DataMutex<CDMCaps>& Capabilites() override;
 
   void OnKeyStatusesChange(const nsAString& aSessionId) override;
 
-  void GetSessionIdsForKeyId(const nsTArray<uint8_t>& aKeyId,
-                             nsTArray<nsCString>& aSessionIds) override;
-
   void GetStatusForPolicy(PromiseId aPromiseId,
                           const nsAString& aMinHdcpVersion) override;
 
 #ifdef DEBUG
   bool IsOnOwnerThread() override;
 #endif
 
   ChromiumCDMProxy* AsChromiumCDMProxy() override { return this; }
--- a/dom/media/platforms/agnostic/eme/EMEDecoderModule.cpp
+++ b/dom/media/platforms/agnostic/eme/EMEDecoderModule.cpp
@@ -93,20 +93,16 @@ public:
   {
     MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn());
     if (mIsShutdown) {
       NS_WARNING("EME encrypted sample arrived after shutdown");
       mDecodePromise.RejectIfExists(NS_ERROR_DOM_MEDIA_CANCELED, __func__);
       return;
     }
 
-    nsAutoPtr<MediaRawDataWriter> writer(aSample->CreateWriter());
-    mProxy->GetSessionIdsForKeyId(aSample->mCrypto.mKeyId,
-                                  writer->mCrypto.mSessionIds);
-
     mDecrypts.Put(aSample, new DecryptPromiseRequestHolder());
     mProxy->Decrypt(aSample)
       ->Then(mTaskQueue, __func__, this,
             &EMEDecryptor::Decrypted,
             &EMEDecryptor::Decrypted)
       ->Track(*mDecrypts.Get(aSample));
   }
 
@@ -271,19 +267,16 @@ EMEMediaDataDecoderProxy::Decode(MediaRa
   RefPtr<DecodePromise> p = mDecodePromise.Ensure(__func__);
 
   RefPtr<EMEMediaDataDecoderProxy> self = this;
   mSamplesWaitingForKey->WaitIfKeyNotUsable(aSample)
     ->Then(mTaskQueue, __func__,
            [self, this](RefPtr<MediaRawData> aSample) {
              mKeyRequest.Complete();
 
-             nsAutoPtr<MediaRawDataWriter> writer(aSample->CreateWriter());
-             mProxy->GetSessionIdsForKeyId(aSample->mCrypto.mKeyId,
-                                           writer->mCrypto.mSessionIds);
              MediaDataDecoderProxy::Decode(aSample)
                ->Then(mTaskQueue, __func__,
                       [self, this](const DecodedData& aResults) {
                         mDecodeRequest.Complete();
                         mDecodePromise.Resolve(aResults, __func__);
                       },
                       [self, this](const MediaResult& aError) {
                         mDecodeRequest.Complete();