[EMSS] Don't require decryptor for DRM with OMX 25/320925/3
authorPiotr Bałut <p.balut@samsung.com>
Fri, 16 Aug 2024 14:18:00 +0000 (16:18 +0200)
committerBot Blink <blinkbot@samsung.com>
Mon, 25 Nov 2024 18:09:51 +0000 (18:09 +0000)
When using TTvd Decryptor is not used. Decryptor-related code is removed
from EMSS as TTvd is the only backend for WASM Player on Tizen 9.0.

Signed-off-by: Piotr Bałut <p.balut@samsung.com>
Signed-off-by: Krystian Plata <k.plata@samsung.com>
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1487
Change-Id: Ia0928596345893d356f9c78aa36e7d49a8a816a6

tizen_src/chromium_impl/content/renderer/media/tizen/elementary_media_stream_source/any_thread/track_dispatcher.cc
tizen_src/chromium_impl/content/renderer/media/tizen/elementary_media_stream_source/any_thread/track_dispatcher.h
tizen_src/chromium_impl/content/renderer/media/tizen/elementary_media_stream_source/any_thread/track_impl.cc
tizen_src/chromium_impl/content/renderer/media/tizen/elementary_media_stream_source/any_thread/track_impl.h
tizen_src/chromium_impl/content/renderer/media/tizen/elementary_media_stream_source/worker_thread/track_dispatcher_client.h
tizen_src/chromium_impl/content/renderer/media/tizen/elementary_media_stream_source/worker_thread/track_impl.cc
tizen_src/chromium_impl/content/renderer/media/tizen/elementary_media_stream_source/worker_thread/track_impl.h
tizen_src/chromium_impl/third_party/blink/renderer/modules/elementary_media_stream_source/elementary_media_track.cc
tizen_src/chromium_impl/third_party/blink/renderer/platform/elementary_media_stream_source/web_elementary_media_track_operations.h

index 213e3b445331bd97c048331e6e4ade3b86b5e466..84dc0d590fa52c6d23931795826c0e267a4304cc 100644 (file)
@@ -16,34 +16,6 @@ TrackDispatcher::~TrackDispatcher() {
   EMSS_DEBUG_TYPED() << "Destructing object";
 }
 
-void TrackDispatcher::DispatchAppendPacket(
-    base::OnceCallback<void(media::Decryptor::DecryptCBTizen decrypt_cb)>&&
-        decrypt_cb,
-    DecryptDoneCB&& decrypt_done_cb_no_track) {
-  EMSS_VERBOSE_TYPED();
-
-  auto worker_track =
-      std::get<std::shared_ptr<worker_thread::TrackDispatcherClient>>(clients_);
-  auto any_track =
-      std::get<std::shared_ptr<any_thread::TrackDispatcherClient>>(clients_);
-
-  auto decrypt_done_cb = base::BindRepeating(
-      [](DecryptDoneCB&& decrypt_done_cb_no_track,
-         std::shared_ptr<worker_thread::TrackDispatcherClient> worker_track,
-         std::shared_ptr<any_thread::TrackDispatcherClient> any_track,
-         media::Decryptor::Status status,
-         scoped_refptr<media::DecoderBuffer> buffer) {
-        decrypt_done_cb_no_track.Run(worker_track.get(), any_track.get(),
-                                     status, std::move(buffer));
-      },
-      base::Passed(std::move(decrypt_done_cb_no_track)), worker_track,
-      any_track);
-
-  worker_thread_task_runner_->PostTask(
-      FROM_HERE,
-      base::BindOnce(std::move(decrypt_cb), std::move(decrypt_done_cb)));
-}
-
 //////////////////// protected ////////////////////
 
 TrackDispatcher::TrackDispatcher(
index 261fcd51cadfae9d5f170bc6651ea99e731431d4..de8648acd721d82e5f02a4c40a876f89ceb94ab5 100644 (file)
@@ -70,10 +70,6 @@ class TrackDispatcher : public Dispatcher<TrackDispatcher> {
                                    media::Decryptor::Status,
                                    scoped_refptr<media::DecoderBuffer>)>;
 
-  void DispatchAppendPacket(
-      base::OnceCallback<void(media::Decryptor::DecryptCBTizen decrypt_cb)>&&,
-      DecryptDoneCB&& buffer);
-
  protected:
   TrackDispatcher(
       TrackMode,
index 96df299ecc0f7cc60efd5af1a4d99fc85784eb39..e6661892655c9874976a946c2425ff673904f360 100644 (file)
@@ -6,6 +6,7 @@
 
 #include <algorithm>
 #include <memory>
+#include <tuple>
 #include <utility>
 #include <vector>
 
@@ -21,7 +22,6 @@
 #include "content/renderer/media/tizen/elementary_media_stream_source/control_thread/track_dispatcher_client.h"
 #include "content/renderer/media/tizen/elementary_media_stream_source/worker_thread/track_dispatcher_client.h"
 #include "media/base/decoder_buffer.h"
-#include "media/base/decryptor.h"
 
 #include "tizen/system_info.h"
 
@@ -99,7 +99,6 @@ uint32_t TrackImpl::GetShmDataTransferThreshold() {
 
 TrackImpl::TrackImpl(TrackParams params)
     : operations_client_(nullptr),
-      decryptor_(nullptr),
       dispatcher_(std::move(params.dispatcher)),
       state_(std::move(params.state)),
       track_mode_(params.track_mode) {
@@ -350,12 +349,6 @@ void TrackImpl::RegisterClient(
   operations_client_.store(client);
 }
 
-void TrackImpl::SetDecryptor(media::Decryptor* decryptor) {
-  EMSS_DEBUG_TYPED();
-
-  decryptor_ = decryptor;
-}
-
 //////////////////// SourceClient ////////////////////
 
 void TrackImpl::RegisterSessionIdChangeListener(
@@ -380,7 +373,6 @@ void TrackImpl::OnSessionIdChanged(uint32_t session_id) {
 void TrackImpl::OnAppendPacketDone(
     std::weak_ptr<TrackImpl> track_weak,
     size_t data_size,
-    bool is_encrypted,
     base::OnceCallback<void(OperationResult)> append_cb,
     OperationResult result) {
   EMSS_VERBOSE_NO_INSTANCE();
@@ -420,24 +412,6 @@ void TrackImpl::OnAppendPacketDone(
   std::move(append_cb).Run(result);
 }
 
-// static
-void TrackImpl::OnDecryptDone(
-    media::DemuxerStream::Type type,
-    blink::WebElementaryMediaPacketMetadata&& packet_metadata,
-    uint32_t session_id,
-    base::OnceCallback<void(OperationResult)> append_cb,
-    mojo::ScopedSharedBufferHandle&& shared_memory,
-    size_t data_size,
-    worker_thread::TrackDispatcherClient* worker_track,
-    any_thread::TrackDispatcherClient* any_track,
-    media::Decryptor::Status status,
-    scoped_refptr<media::DecoderBuffer> buffer) {
-  EMSS_VERBOSE_NO_INSTANCE();
-
-  worker_track->OnPrepareDemuxedFrameDataDone(
-      std::move(append_cb), status, Packet{std::move(buffer), session_id});
-}
-
 OperationResult TrackImpl::PrepareDemuxedFrameData(
     blink::WebElementaryMediaPacketMetadata&& packet_metadata,
     base::span<const uint8_t>&& packet_data,
@@ -446,56 +420,15 @@ OperationResult TrackImpl::PrepareDemuxedFrameData(
   EMSS_VERBOSE_TYPED() << " pts = " << packet_metadata.pts
                        << ", dts = " << packet_metadata.dts;
 
-  auto [packet, result] = ([&]() {
-    const auto duration = base::Seconds(packet_metadata.duration)
-                              .RoundToMultiple(base::Milliseconds(1));
-    const auto dts = base::Seconds(packet_metadata.dts)
-                         .RoundToMultiple(base::Milliseconds(1));
-    const auto pts = base::Seconds(packet_metadata.pts)
-                         .RoundToMultiple(base::Milliseconds(1));
-    const auto is_key_frame = packet_metadata.is_key_frame.value_or(false);
-
-    auto buffer =
-        media::DecoderBuffer::CopyFrom(packet_data.data(), packet_data.size());
-
-    buffer->set_is_key_frame(is_key_frame);
-    buffer->set_duration(duration);
-    buffer->set_timestamp(pts);
-    buffer->set_dts(dts);
-
-    return std::make_tuple(Packet{std::move(buffer), session_id},
-                           OperationResult::kOk);
-  })();
+  auto [packet, result] =
+      PreparePacket(packet_metadata, std::move(packet_data), session_id);
 
   if (result != OperationResult::kOk) {
     EMSS_VERBOSE_TYPED() << result;
     return result;
   }
 
-  append_cb = UpdateAppendCallback(packet_metadata, packet_data.size(),
-                                   std::move(append_cb));
-
-  if (auto dispatcher = dispatcher_.lock()) {
-    if (dispatcher->DispatchTask(
-            &worker_thread::TrackDispatcherClient::
-                OnPrepareDemuxedFrameDataDone,
-            AutoAbortedCallbackWrapper::WrapCallback(std::move(append_cb)),
-            media::Decryptor::Status::kSuccess,
-            std::move(packet)) == DispatchResult::kOk) {
-      return OperationResult::kOk;
-    }
-  }
-
-  EMSS_DEBUG();
-
-  // If dispatch didn't happen after internal data was already updated with
-  // packet stats, the update must be reverted. We cannot run append_cb
-  // directly, because it might have been  moved - however calling
-  // OnAppendPacketDone() will revert the state for us.
-  TrackImpl::OnAppendPacketDone(shared_from_this(), packet_data.size(),
-                                packet_metadata.is_encrypted, base::DoNothing(),
-                                OperationResult::kAborted);
-  return OperationResult::kAborted;
+  return TransferPacketToWorkerThread(std::move(packet), std::move(append_cb));
 }
 
 OperationResult TrackImpl::PrepareDecryptionConfig(
@@ -557,28 +490,6 @@ OperationResult TrackImpl::PrepareEncryptedDemuxedFrameData(
     return OperationResult::kVideoCodecParametersUnsupported;
   }
 
-  if (!decryptor_) {
-    EMSS_LOG_TYPED(ERROR) << "No media key session registered!";
-    return OperationResult::kNoMediaKeySession;
-  }
-
-  // FIXME(p.balut): Implement DRM support on Tizen 9.0
-  return OperationResult::kBufferCreationFailed;
-  /*
-  media::Decryptor::StreamType decryptor_stream_type;
-
-  switch (Type()) {
-    case TrackType::kAudio:
-      decryptor_stream_type = media::Decryptor::kAudio;
-      break;
-    case TrackType::kVideo:
-      decryptor_stream_type = media::Decryptor::kVideo;
-      break;
-    default:
-      EMSS_LOG_ASSERT(false) << "Unsupported stream type: " << Type();
-      return OperationResult::kInvalidTrackState;
-  }
-
   std::unique_ptr<media::DecryptConfig> decrypt_config;
   auto decryption_result =
       PrepareDecryptionConfig(packet_metadata, &decrypt_config);
@@ -589,66 +500,99 @@ OperationResult TrackImpl::PrepareEncryptedDemuxedFrameData(
   }
 
   EMSS_VERBOSE_TYPED() << "Prepared decrypt config: " << *decrypt_config;
-  using AccessMode = mojo::SharedBufferHandle::AccessMode;
 
-  auto buffer = media::DecoderBuffer::FromSharedMemoryRegion(
-      mojo::UnwrapUnsafeSharedMemoryRegion(
-          shared_memory->Clone(AccessMode::READ_WRITE)),
-      0, packet_data.size());
+  auto [packet, result] = PreparePacket(packet_metadata, std::move(packet_data),
+                                        session_id, std::move(decrypt_config));
+  if (result != OperationResult::kOk) {
+    EMSS_VERBOSE_TYPED() << result;
+    return result;
+  }
+
+  return TransferPacketToWorkerThread(std::move(packet), std::move(append_cb));
+}
 
+std::tuple<Packet, OperationResult> TrackImpl::PreparePacket(
+    const blink::WebElementaryMediaPacketMetadata& packet_metadata,
+    base::span<const uint8_t>&& packet_data,
+    uint32_t session_id,
+    std::unique_ptr<media::DecryptConfig> maybe_decrypt_config) {
+  EMSS_VERBOSE();
+
+  const auto duration = base::Seconds(packet_metadata.duration)
+                            .RoundToMultiple(base::Milliseconds(1));
+  const auto dts =
+      base::Seconds(packet_metadata.dts).RoundToMultiple(base::Milliseconds(1));
+  const auto pts =
+      base::Seconds(packet_metadata.pts).RoundToMultiple(base::Milliseconds(1));
+  const auto is_key_frame = packet_metadata.is_key_frame.value_or(false);
+
+  auto buffer =
+      media::DecoderBuffer::CopyFrom(packet_data.data(), packet_data.size());
   if (!buffer) {
-    EMSS_LOG_TYPED(ERROR) << "DecoderBuffer creation failed.";
-    return OperationResult::kBufferCreationFailed;
+    EMSS_LOG_TYPED(ERROR) << "DecoderBuffer creation failed";
+    return {Packet{}, OperationResult::kBufferCreationFailed};
+  }
+
+  buffer->set_is_key_frame(is_key_frame);
+  buffer->set_duration(duration);
+  buffer->set_timestamp(pts);
+  buffer->set_dts(dts);
+
+  if (maybe_decrypt_config) {
+    buffer->set_decrypt_config(std::move(maybe_decrypt_config));
   }
 
-  buffer->set_decrypt_config(std::move(decrypt_config));
+  return {Packet{std::move(buffer), session_id}, OperationResult::kOk};
+}
+
+OperationResult TrackImpl::TransferPacketToWorkerThread(
+    Packet packet,
+    base::OnceCallback<void(OperationResult)> append_cb) {
+  EMSS_DEBUG() << packet;
+
+  append_cb = UpdateAppendCallback(packet, std::move(append_cb));
 
-  append_cb = UpdateAppendCallback(packet_metadata, packet_data.size(),
-                                   std::move(append_cb));
+  const auto data_size = packet.data_size();
 
   if (auto dispatcher = dispatcher_.lock()) {
-    auto decrypt_cb = base::BindOnce(
-        &media::Decryptor::DecryptTizen, base::Unretained(decryptor_),
-        decryptor_stream_type, std::move(std::move(buffer)));
-
-    auto decrypt_done_cb = base::BindRepeating(
-        OnDecryptDone,
-        ToDemuxerStreamType(Type()), base::Passed(std::move(packet_metadata)),
-        session_id,
-        base::Passed(
-            AutoAbortedCallbackWrapper::WrapCallback(std::move(append_cb))),
-        base::Passed(std::move(shared_memory)), packet_data.size());
-
-    dispatcher->DispatchAppendPacket(std::move(decrypt_cb),
-                                     std::move(decrypt_done_cb));
-  } else {
-    return OperationResult::kAborted;
+    if (dispatcher->DispatchTask(
+            &worker_thread::TrackDispatcherClient::
+                OnPrepareDemuxedFrameDataDone,
+            AutoAbortedCallbackWrapper::WrapCallback(std::move(append_cb)),
+            std::move(packet)) == DispatchResult::kOk) {
+      return OperationResult::kOk;
+    }
   }
 
-  return OperationResult::kOk;
-  */
+  EMSS_DEBUG();
+
+  // If dispatch didn't happen after internal data was already updated with
+  // packet stats, the update must be reverted. We cannot run append_cb
+  // directly, because it might have been  moved - however calling
+  // OnAppendPacketDone() will revert the state for us.
+  TrackImpl::OnAppendPacketDone(shared_from_this(), data_size,
+                                base::DoNothing(), OperationResult::kAborted);
+  return OperationResult::kAborted;
 }
 
 base::OnceCallback<void(OperationResult)> TrackImpl::UpdateAppendCallback(
-    const blink::WebElementaryMediaPacketMetadata& packet_metadata,
-    size_t packet_size,
+    const Packet& packet,
     base::OnceCallback<void(OperationResult)>&& append_cb) {
   {
     auto shared_state = state_->GetLockedState();
     shared_state->is_keyframe_required = false;
     ++shared_state->any_thread_data.pending_appends;
-    shared_state->OnPacketAddedToBuffer(packet_size);
+    shared_state->OnPacketAddedToBuffer(packet.data_size());
 
     // If append will fail, OnAppendPacketDone will free reserved
     // buffer space and packets count.
     shared_state->any_thread_data.last_packet_timestamp =
         std::max(shared_state->any_thread_data.last_packet_timestamp,
-                 packet_metadata.pts);
+                 packet.timestamp().InSecondsF());
   }
 
   return base::BindOnce(TrackImpl::OnAppendPacketDone, shared_from_this(),
-                        packet_size, packet_metadata.is_encrypted,
-                        std::move(append_cb));
+                        packet.data_size(), std::move(append_cb));
 }
 
 OperationResult TrackImpl::VerifyAppendPreconditionsWhileLocked(
index 5ccf285048ec1d9cd8ae59cde291a85361dfb05a..9f7725180fbd9a6492bc50059b3ccfa2bbadb68f 100644 (file)
@@ -6,6 +6,7 @@
 #define TIZEN_SRC_CHROMIUM_IMPL_CONTENT_RENDERER_MEDIA_TIZEN_ELEMENTARY_MEDIA_STREAM_SOURCE_ANY_THREAD_TRACK_IMPL_H_
 
 #include <memory>
+#include <tuple>
 #include <vector>
 
 #include "base/functional/callback.h"
@@ -14,6 +15,7 @@
 #include "content/renderer/media/tizen/elementary_media_stream_source/any_thread/track_dispatcher_client.h"
 #include "content/renderer/media/tizen/elementary_media_stream_source/any_thread/track_params.h"
 #include "content/renderer/media/tizen/elementary_media_stream_source/common/common.h"
+#include "content/renderer/media/tizen/elementary_media_stream_source/common/packet.h"
 #include "media/base/decrypt_config.h"
 #include "media/base/demuxer_stream.h"
 #include "third_party/blink/renderer/platform/elementary_media_stream_source/web_elementary_media_track_operations.h"
@@ -51,7 +53,6 @@ class TrackImpl : public blink::WebElementaryMediaTrackOperations,
   PlayerMode GetPlayerMode() const override;
   uint32_t GetSessionId() const override;
   void RegisterClient(WebElementaryMediaTrackOperationsClient*) override;
-  void SetDecryptor(media::Decryptor*) override;
 
   // SourceClient
   void RegisterSessionIdChangeListener(
@@ -72,22 +73,9 @@ class TrackImpl : public blink::WebElementaryMediaTrackOperations,
   static void OnAppendPacketDone(
       std::weak_ptr<TrackImpl>,
       size_t data_size,
-      bool is_encrypted,
       base::OnceCallback<void(OperationResult)> append_cb,
       OperationResult result);
 
-  static void OnDecryptDone(
-      media::DemuxerStream::Type type,
-      blink::WebElementaryMediaPacketMetadata&& packet_metadata,
-      uint32_t session_id,
-      base::OnceCallback<void(OperationResult)> append_cb,
-      mojo::ScopedSharedBufferHandle&& shared_memory,
-      size_t data_size,
-      worker_thread::TrackDispatcherClient* worker_track,
-      any_thread::TrackDispatcherClient* any_track,
-      media::Decryptor::Status status,
-      scoped_refptr<media::DecoderBuffer> buffer);
-
   OperationResult PrepareDemuxedFrameData(
       blink::WebElementaryMediaPacketMetadata&& packet_metadata,
       base::span<const uint8_t>&& packet_data,
@@ -104,9 +92,18 @@ class TrackImpl : public blink::WebElementaryMediaTrackOperations,
       uint32_t session_id,
       base::OnceCallback<void(OperationResult)> append_cb);
 
-  base::OnceCallback<void(OperationResult)> UpdateAppendCallback(
+  std::tuple<Packet, OperationResult> PreparePacket(
       const blink::WebElementaryMediaPacketMetadata& packet_metadata,
-      size_t packet_size,
+      base::span<const uint8_t>&& packet_data,
+      uint32_t session_id,
+      std::unique_ptr<media::DecryptConfig> maybe_decrypt_config = {});
+
+  OperationResult TransferPacketToWorkerThread(
+      Packet packet,
+      base::OnceCallback<void(OperationResult)> append_cb);
+
+  base::OnceCallback<void(OperationResult)> UpdateAppendCallback(
+      const Packet& packet,
       base::OnceCallback<void(OperationResult)>&& append_cb);
 
   OperationResult VerifyAppendPreconditionsWhileLocked(
@@ -114,7 +111,6 @@ class TrackImpl : public blink::WebElementaryMediaTrackOperations,
       const blink::WebElementaryMediaPacketMetadata& packet_metadata,
       const base::span<const uint8_t>& packet_data);
 
-  media::Decryptor* decryptor_;
   std::weak_ptr<TrackDispatcher> dispatcher_;
   std::weak_ptr<SessionIdChangeListener> session_id_change_listener_;
   std::shared_ptr<LockableTrackState> state_;
index c5e77635caf34980023015aaf5465cd4b549a50b..68038a7c92d69615ae3b8e69006ba3038373a81d 100644 (file)
@@ -33,7 +33,6 @@ class TrackDispatcherClient : public EnableDispatcher {
   virtual void AppendEndOfTrack(uint32_t session_id) = 0;
   virtual void OnPrepareDemuxedFrameDataDone(
       base::OnceCallback<void(OperationResult)> append_cb,
-      media::Decryptor::Status status,
       Packet packet) = 0;
 
  protected:
index b119535d17e90d9788e8086a97f4163985b8eaeb..01f2ddd9006b9c032e4e0bec41b282c29581e960 100644 (file)
@@ -27,36 +27,6 @@ namespace {
 //       Player 2.0 implementation phase two, when we move to Mojo IPC.
 constexpr uint32_t kMaxFramesToRead = 7;
 
-OperationResult VerifyPrepareDecodeBufferResult(
-    media::Decryptor::Status status) {
-  EMSS_VERBOSE_NO_INSTANCE();
-
-  switch (status) {
-    case media::Decryptor::kSuccess:
-      return OperationResult::kOk;
-    case media::Decryptor::kNoKey:
-      EMSS_LOG_NO_INSTANCE(ERROR)
-          << "Packet decrypt error: no available decrypt key";
-      return OperationResult::kNoKeyId;
-    case media::Decryptor::kNeedMoreData:
-      EMSS_LOG_NO_INSTANCE(ERROR)
-          << "Packet decrypt error: more data needed to decrypt frame";
-      return OperationResult::kDecryptorNeedsMoreData;
-    case media::Decryptor::kBufferFull:
-      EMSS_LOG_NO_INSTANCE(ERROR)
-          << "Packet decrypt error: trustzone buffer is full";
-      return OperationResult::kBufferFull;
-    case media::Decryptor::kError:
-      EMSS_LOG_NO_INSTANCE(ERROR)
-          << "Packet decrypt error: error occured during decryption";
-      return OperationResult::kDecryptionError;
-    default:
-      EMSS_LOG_NO_INSTANCE(ERROR)
-          << "Packet decrypt error: unexpected error occurred";
-      return OperationResult::kUnexpectedError;
-  }
-}
-
 constexpr const base::TimeDelta kDataDurationResolution = base::Milliseconds(2);
 
 }  // namespace
@@ -169,18 +139,11 @@ void TrackImpl::AppendEndOfTrack(uint32_t session_id) {
 
 void TrackImpl::OnPrepareDemuxedFrameDataDone(
     base::OnceCallback<void(OperationResult)> append_cb,
-    media::Decryptor::Status status,
     Packet packet) {
   EMSS_VERBOSE_TYPED() << "Processing packet: " << packet;
   EMSS_LOG_ASSERT(packet);
 
   const auto append_verification_result = [&]() {
-    auto prepare_result = VerifyPrepareDecodeBufferResult(status);
-
-    if (prepare_result != OperationResult::kOk) {
-      return prepare_result;
-    }
-
     auto session_id = packet.session_id();
     uint32_t current_session_id = state_->GetLockedState()->session_id;
 
index 159b762479c7f131a30f40120904de9234b94190..4ffcc59a38317e2f2ae765c1a17bbede07457cf1 100644 (file)
@@ -51,7 +51,6 @@ class TrackImpl : public AppendClient,
   void AppendEndOfTrack(uint32_t session_id) override;
   void OnPrepareDemuxedFrameDataDone(
       base::OnceCallback<void(OperationResult)> append_cb,
-      media::Decryptor::Status status,
       Packet packet) override;
 
  protected:
index f556b68bc2d09f940d37c5a4d3fe18850833c078..ee90e560ed6637c6287280ea232e18ffe4c2ca26 100644 (file)
@@ -912,29 +912,10 @@ bool ElementaryMediaTrack::isOpen() const {
 
 void ElementaryMediaTrack::setMediaKeySession(MediaKeySession* session,
                                               ExceptionState& exception_state) {
-  EMSS_DEBUG_TYPED();
-
-  if (IsAlreadyDestroyed()) {
-    EMSS_LOG_TYPED(WARNING) << "Dispatcher already destroyed";
-    LOG_AND_THROW_DOM_EXCEPTION(exception_state,
-                                DOMExceptionCode::kAlreadyDestroyedError);
-    return;
-  }
-
-  if (!session) {
-    EMSS_LOG_TYPED(WARNING) << "Session is null";
-    LOG_AND_THROW_DOM_EXCEPTION(exception_state,
-                                DOMExceptionCode::kInvalidArgumentError);
-    return;
-  }
-
-  /*
-  FIXME(p.balut): add DRM support
-  web_elementary_media_track_dispatcher_->RunTask(
-      &WebElementaryMediaTrackOperations::SetDecryptor,
-      session->GetDecryptor());
-  */
-  EMSS_LOG(ERROR) << "DRMs not implemented";
+  EMSS_LOG(ERROR)
+      << "MediaKeys should be attached directly to HTMLMediaElement.";
+  LOG_AND_THROW_DOM_EXCEPTION(exception_state,
+                              DOMExceptionCode::kNotSupportedError);
 }
 
 void ElementaryMediaTrack::setWebGLRenderingContext(
index 49b2a96921713325593e125ce4c455fe56c754a3..20f3a1c66aa638a27c23c08c1e2e13318e4158de 100644 (file)
@@ -47,7 +47,6 @@ class WebElementaryMediaTrackOperations
   virtual PlayerMode GetPlayerMode() const = 0;
   virtual uint32_t GetSessionId() const = 0;
   virtual void RegisterClient(WebElementaryMediaTrackOperationsClient*) = 0;
-  virtual void SetDecryptor(media::Decryptor*) = 0;
 
  protected:
   WebElementaryMediaTrackOperations() = default;