summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/renderer/media/android/webmediaplayer_android.cc23
-rw-r--r--content/renderer/media/android/webmediaplayer_android.h3
-rw-r--r--content/renderer/media/crypto/encrypted_media_player_support_impl.cc16
-rw-r--r--content/renderer/media/crypto/encrypted_media_player_support_impl.h5
-rw-r--r--content/renderer/render_frame_impl.cc19
-rw-r--r--content/renderer/render_frame_impl.h9
-rw-r--r--media/blink/encrypted_media_player_support.h4
-rw-r--r--media/blink/null_encrypted_media_player_support.cc8
-rw-r--r--media/blink/null_encrypted_media_player_support.h4
-rw-r--r--media/blink/webmediaplayer_impl.cc7
-rw-r--r--media/blink/webmediaplayer_impl.h4
-rw-r--r--media/blink/webmediaplayer_params.cc20
-rw-r--r--media/blink/webmediaplayer_params.h10
-rw-r--r--mojo/services/html_viewer/webmediaplayer_factory.cc3
14 files changed, 71 insertions, 64 deletions
diff --git a/content/renderer/media/android/webmediaplayer_android.cc b/content/renderer/media/android/webmediaplayer_android.cc
index 53accf2..ea6ba1f 100644
--- a/content/renderer/media/android/webmediaplayer_android.cc
+++ b/content/renderer/media/android/webmediaplayer_android.cc
@@ -115,6 +115,7 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid(
base::WeakPtr<media::WebMediaPlayerDelegate> delegate,
RendererMediaPlayerManager* player_manager,
RendererCdmManager* cdm_manager,
+ blink::WebContentDecryptionModule* initial_cdm,
scoped_refptr<StreamTextureFactory> factory,
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
media::MediaLog* media_log)
@@ -173,6 +174,13 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid(
#endif // defined(VIDEO_HOLE)
TryCreateStreamTextureProxyIfNeeded();
interpolator_.SetUpperBound(base::TimeDelta());
+
+ // Set the initial CDM, if specified.
+ if (initial_cdm) {
+ web_cdm_ = ToWebContentDecryptionModuleImpl(initial_cdm);
+ if (web_cdm_->GetCdmId() != RendererCdmManager::kInvalidCdmId)
+ player_manager_->SetCdm(player_id_, web_cdm_->GetCdmId());
+ }
}
WebMediaPlayerAndroid::~WebMediaPlayerAndroid() {
@@ -1674,21 +1682,6 @@ void WebMediaPlayerAndroid::setContentDecryptionModule(
player_manager_->SetCdm(player_id_, web_cdm_->GetCdmId());
}
-void WebMediaPlayerAndroid::setContentDecryptionModuleSync(
- blink::WebContentDecryptionModule* cdm) {
- DCHECK(main_thread_checker_.CalledOnValidThread());
-
- // TODO(xhwang): Support setMediaKeys(0) if necessary: http://crbug.com/330324
- if (!cdm)
- return;
-
- DCHECK(decryptor_ready_cb_.is_null());
-
- web_cdm_ = ToWebContentDecryptionModuleImpl(cdm);
- if (web_cdm_->GetCdmId() != RendererCdmManager::kInvalidCdmId)
- player_manager_->SetCdm(player_id_, web_cdm_->GetCdmId());
-}
-
void WebMediaPlayerAndroid::ContentDecryptionModuleAttached(
blink::WebContentDecryptionModuleResult result,
bool success) {
diff --git a/content/renderer/media/android/webmediaplayer_android.h b/content/renderer/media/android/webmediaplayer_android.h
index 8ed1ad6..1a27977 100644
--- a/content/renderer/media/android/webmediaplayer_android.h
+++ b/content/renderer/media/android/webmediaplayer_android.h
@@ -87,6 +87,7 @@ class WebMediaPlayerAndroid : public blink::WebMediaPlayer,
base::WeakPtr<media::WebMediaPlayerDelegate> delegate,
RendererMediaPlayerManager* player_manager,
RendererCdmManager* cdm_manager,
+ blink::WebContentDecryptionModule* initial_cdm,
scoped_refptr<StreamTextureFactory> factory,
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
media::MediaLog* media_log);
@@ -247,8 +248,6 @@ class WebMediaPlayerAndroid : public blink::WebMediaPlayer,
virtual void setContentDecryptionModule(
blink::WebContentDecryptionModule* cdm,
blink::WebContentDecryptionModuleResult result);
- virtual void setContentDecryptionModuleSync(
- blink::WebContentDecryptionModule* cdm);
void OnKeyAdded(const std::string& session_id);
void OnKeyError(const std::string& session_id,
diff --git a/content/renderer/media/crypto/encrypted_media_player_support_impl.cc b/content/renderer/media/crypto/encrypted_media_player_support_impl.cc
index c884cd6..42f86b6 100644
--- a/content/renderer/media/crypto/encrypted_media_player_support_impl.cc
+++ b/content/renderer/media/crypto/encrypted_media_player_support_impl.cc
@@ -296,6 +296,14 @@ EncryptedMediaPlayerSupportImpl::CancelKeyRequestInternal(
return WebMediaPlayer::MediaKeyExceptionNoError;
}
+void EncryptedMediaPlayerSupportImpl::SetInitialContentDecryptionModule(
+ blink::WebContentDecryptionModule* initial_cdm) {
+ // Used when loading media and no pipeline/decoder attached yet.
+ DCHECK(decryptor_ready_cb_.is_null());
+
+ web_cdm_ = ToWebContentDecryptionModuleImpl(initial_cdm);
+}
+
void EncryptedMediaPlayerSupportImpl::SetContentDecryptionModule(
blink::WebContentDecryptionModule* cdm) {
// TODO(xhwang): Support setMediaKeys(0) if necessary: http://crbug.com/330324
@@ -335,14 +343,6 @@ void EncryptedMediaPlayerSupportImpl::SetContentDecryptionModule(
}
}
-void EncryptedMediaPlayerSupportImpl::SetContentDecryptionModuleSync(
- blink::WebContentDecryptionModule* cdm) {
- // Used when loading media and no pipeline/decoder attached yet.
- DCHECK(decryptor_ready_cb_.is_null());
-
- web_cdm_ = ToWebContentDecryptionModuleImpl(cdm);
-}
-
void EncryptedMediaPlayerSupportImpl::ContentDecryptionModuleAttached(
blink::WebContentDecryptionModuleResult result,
bool success) {
diff --git a/content/renderer/media/crypto/encrypted_media_player_support_impl.h b/content/renderer/media/crypto/encrypted_media_player_support_impl.h
index f0299d8..788747f4 100644
--- a/content/renderer/media/crypto/encrypted_media_player_support_impl.h
+++ b/content/renderer/media/crypto/encrypted_media_player_support_impl.h
@@ -48,13 +48,14 @@ class EncryptedMediaPlayerSupportImpl
const blink::WebString& key_system,
const blink::WebString& session_id) OVERRIDE;
+ virtual void SetInitialContentDecryptionModule(
+ blink::WebContentDecryptionModule* initial_cdm) OVERRIDE;
+
virtual void SetContentDecryptionModule(
blink::WebContentDecryptionModule* cdm) OVERRIDE;
virtual void SetContentDecryptionModule(
blink::WebContentDecryptionModule* cdm,
blink::WebContentDecryptionModuleResult result) OVERRIDE;
- virtual void SetContentDecryptionModuleSync(
- blink::WebContentDecryptionModule* cdm) OVERRIDE;
virtual media::SetDecryptorReadyCB CreateSetDecryptorReadyCB() OVERRIDE;
virtual media::Demuxer::NeedKeyCB CreateNeedKeyCB() OVERRIDE;
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 7d8e11e..65b9a78 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -1603,6 +1603,14 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
blink::WebLocalFrame* frame,
const blink::WebURL& url,
blink::WebMediaPlayerClient* client) {
+ return createMediaPlayer(frame, url, client, NULL);
+}
+
+blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
+ blink::WebLocalFrame* frame,
+ const blink::WebURL& url,
+ blink::WebMediaPlayerClient* client,
+ blink::WebContentDecryptionModule* initial_cdm) {
#if defined(VIDEO_HOLE)
if (!contains_media_player_) {
render_view_->RegisterVideoHoleFrame(this);
@@ -1616,7 +1624,7 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
return CreateWebMediaPlayerForMediaStream(url, client);
#if defined(OS_ANDROID)
- return CreateAndroidWebMediaPlayer(url, client);
+ return CreateAndroidWebMediaPlayer(url, client, initial_cdm);
#else
RenderThreadImpl* render_thread = RenderThreadImpl::current();
media::WebMediaPlayerParams params(
@@ -1630,7 +1638,8 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
render_thread->GetGpuFactories(),
render_thread->GetMediaThreadTaskRunner(),
render_thread->compositor_message_loop_proxy(),
- base::Bind(&EncryptedMediaPlayerSupportImpl::Create));
+ base::Bind(&EncryptedMediaPlayerSupportImpl::Create),
+ initial_cdm);
return new media::WebMediaPlayerImpl(frame,
client,
weak_factory_.GetWeakPtr(),
@@ -3857,8 +3866,9 @@ GURL RenderFrameImpl::GetLoadingUrl() const {
#if defined(OS_ANDROID)
WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer(
- const blink::WebURL& url,
- WebMediaPlayerClient* client) {
+ const blink::WebURL& url,
+ WebMediaPlayerClient* client,
+ blink::WebContentDecryptionModule* initial_cdm) {
GpuChannelHost* gpu_channel_host =
RenderThreadImpl::current()->EstablishGpuChannelSync(
CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE);
@@ -3890,6 +3900,7 @@ WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer(
weak_factory_.GetWeakPtr(),
GetMediaPlayerManager(),
GetCdmManager(),
+ initial_cdm,
stream_texture_factory,
RenderThreadImpl::current()->GetMediaThreadTaskRunner(),
new RenderMediaLog());
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index be85ce9..e80c4af 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -272,10 +272,16 @@ class CONTENT_EXPORT RenderFrameImpl
// blink::WebFrameClient implementation:
virtual blink::WebPlugin* createPlugin(blink::WebLocalFrame* frame,
const blink::WebPluginParams& params);
+ // TODO(jrummell): Remove this method once blink updated.
virtual blink::WebMediaPlayer* createMediaPlayer(
blink::WebLocalFrame* frame,
const blink::WebURL& url,
blink::WebMediaPlayerClient* client);
+ virtual blink::WebMediaPlayer* createMediaPlayer(
+ blink::WebLocalFrame* frame,
+ const blink::WebURL& url,
+ blink::WebMediaPlayerClient* client,
+ blink::WebContentDecryptionModule* initial_cdm);
virtual blink::WebContentDecryptionModule* createContentDecryptionModule(
blink::WebLocalFrame* frame,
const blink::WebSecurityOrigin& security_origin,
@@ -617,7 +623,8 @@ class CONTENT_EXPORT RenderFrameImpl
#if defined(OS_ANDROID)
blink::WebMediaPlayer* CreateAndroidWebMediaPlayer(
const blink::WebURL& url,
- blink::WebMediaPlayerClient* client);
+ blink::WebMediaPlayerClient* client,
+ blink::WebContentDecryptionModule* initial_cdm);
RendererMediaPlayerManager* GetMediaPlayerManager();
#endif
diff --git a/media/blink/encrypted_media_player_support.h b/media/blink/encrypted_media_player_support.h
index b387686..737720d 100644
--- a/media/blink/encrypted_media_player_support.h
+++ b/media/blink/encrypted_media_player_support.h
@@ -46,13 +46,13 @@ class MEDIA_EXPORT EncryptedMediaPlayerSupport {
// Unprefixed API methods.
+ virtual void SetInitialContentDecryptionModule(
+ blink::WebContentDecryptionModule* initial_cdm) = 0;
virtual void SetContentDecryptionModule(
blink::WebContentDecryptionModule* cdm) = 0;
virtual void SetContentDecryptionModule(
blink::WebContentDecryptionModule* cdm,
blink::WebContentDecryptionModuleResult result) = 0;
- virtual void SetContentDecryptionModuleSync(
- blink::WebContentDecryptionModule* cdm) = 0;
// Callback factory and notification methods used by WebMediaPlayerImpl.
diff --git a/media/blink/null_encrypted_media_player_support.cc b/media/blink/null_encrypted_media_player_support.cc
index 035785b..a67893b 100644
--- a/media/blink/null_encrypted_media_player_support.cc
+++ b/media/blink/null_encrypted_media_player_support.cc
@@ -48,6 +48,10 @@ NullEncryptedMediaPlayerSupport::CancelKeyRequest(
return blink::WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported;
}
+void NullEncryptedMediaPlayerSupport::SetInitialContentDecryptionModule(
+ blink::WebContentDecryptionModule* initial_cdm) {
+}
+
void NullEncryptedMediaPlayerSupport::SetContentDecryptionModule(
blink::WebContentDecryptionModule* cdm) {
}
@@ -61,10 +65,6 @@ void NullEncryptedMediaPlayerSupport::SetContentDecryptionModule(
"Null MediaKeys object is not supported.");
}
-void NullEncryptedMediaPlayerSupport::SetContentDecryptionModuleSync(
- blink::WebContentDecryptionModule* cdm) {
-}
-
Demuxer::NeedKeyCB NullEncryptedMediaPlayerSupport::CreateNeedKeyCB() {
return Demuxer::NeedKeyCB();
}
diff --git a/media/blink/null_encrypted_media_player_support.h b/media/blink/null_encrypted_media_player_support.h
index 140bef1..615b893 100644
--- a/media/blink/null_encrypted_media_player_support.h
+++ b/media/blink/null_encrypted_media_player_support.h
@@ -42,13 +42,13 @@ class MEDIA_EXPORT NullEncryptedMediaPlayerSupport
// Unprefixed API methods.
+ virtual void SetInitialContentDecryptionModule(
+ blink::WebContentDecryptionModule* initial_cdm) OVERRIDE;
virtual void SetContentDecryptionModule(
blink::WebContentDecryptionModule* cdm) OVERRIDE;
virtual void SetContentDecryptionModule(
blink::WebContentDecryptionModule* cdm,
blink::WebContentDecryptionModuleResult result) OVERRIDE;
- virtual void SetContentDecryptionModuleSync(
- blink::WebContentDecryptionModule* cdm) OVERRIDE;
// Callback factory and notification methods used by WebMediaPlayerImpl.
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
index 0fd74e8..c79ee7a 100644
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -679,13 +679,6 @@ void WebMediaPlayerImpl::setContentDecryptionModule(
encrypted_media_support_->SetContentDecryptionModule(cdm, result);
}
-void WebMediaPlayerImpl::setContentDecryptionModuleSync(
- blink::WebContentDecryptionModule* cdm) {
- DCHECK(main_task_runner_->BelongsToCurrentThread());
-
- encrypted_media_support_->SetContentDecryptionModuleSync(cdm);
-}
-
void WebMediaPlayerImpl::OnPipelineSeeked(bool time_changed,
PipelineStatus status) {
DVLOG(1) << __FUNCTION__ << "(" << time_changed << ", " << status << ")";
diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h
index bbdf080..3dc778f 100644
--- a/media/blink/webmediaplayer_impl.h
+++ b/media/blink/webmediaplayer_impl.h
@@ -155,14 +155,12 @@ class MEDIA_EXPORT WebMediaPlayerImpl
const blink::WebString& session_id);
// TODO(jrummell): Remove this method once Blink updated to use the other
- // two methods.
+ // method.
virtual void setContentDecryptionModule(
blink::WebContentDecryptionModule* cdm);
virtual void setContentDecryptionModule(
blink::WebContentDecryptionModule* cdm,
blink::WebContentDecryptionModuleResult result);
- virtual void setContentDecryptionModuleSync(
- blink::WebContentDecryptionModule* cdm);
void OnPipelineSeeked(bool time_changed, PipelineStatus status);
void OnPipelineEnded();
diff --git a/media/blink/webmediaplayer_params.cc b/media/blink/webmediaplayer_params.cc
index c157e34..1fd2b8a 100644
--- a/media/blink/webmediaplayer_params.cc
+++ b/media/blink/webmediaplayer_params.cc
@@ -17,12 +17,11 @@ WebMediaPlayerParams::WebMediaPlayerParams(
const AudioHardwareConfig& audio_hardware_config,
const scoped_refptr<MediaLog>& media_log,
const scoped_refptr<GpuVideoAcceleratorFactories>& gpu_factories,
- const scoped_refptr<base::SingleThreadTaskRunner>&
- media_task_runner,
- const scoped_refptr<base::SingleThreadTaskRunner>&
- compositor_task_runner,
- const EncryptedMediaPlayerSupportCreateCB&
- encrypted_media_player_support_cb)
+ const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner,
+ const EncryptedMediaPlayerSupportCreateCB&
+ encrypted_media_player_support_cb,
+ blink::WebContentDecryptionModule* initial_cdm)
: defer_load_cb_(defer_load_cb),
audio_renderer_sink_(audio_renderer_sink),
audio_hardware_config_(audio_hardware_config),
@@ -30,7 +29,8 @@ WebMediaPlayerParams::WebMediaPlayerParams(
gpu_factories_(gpu_factories),
media_task_runner_(media_task_runner),
compositor_task_runner_(compositor_task_runner),
- encrypted_media_player_support_cb_(encrypted_media_player_support_cb) {
+ encrypted_media_player_support_cb_(encrypted_media_player_support_cb),
+ initial_cdm_(initial_cdm) {
}
WebMediaPlayerParams::~WebMediaPlayerParams() {}
@@ -38,7 +38,11 @@ WebMediaPlayerParams::~WebMediaPlayerParams() {}
scoped_ptr<EncryptedMediaPlayerSupport>
WebMediaPlayerParams::CreateEncryptedMediaPlayerSupport(
blink::WebMediaPlayerClient* client) const {
- return encrypted_media_player_support_cb_.Run(client);
+ scoped_ptr<EncryptedMediaPlayerSupport> encrypted_media_support =
+ encrypted_media_player_support_cb_.Run(client);
+ if (encrypted_media_support)
+ encrypted_media_support->SetInitialContentDecryptionModule(initial_cdm_);
+ return encrypted_media_support.Pass();
}
} // namespace media
diff --git a/media/blink/webmediaplayer_params.h b/media/blink/webmediaplayer_params.h
index 7bd3ddb..c765548 100644
--- a/media/blink/webmediaplayer_params.h
+++ b/media/blink/webmediaplayer_params.h
@@ -42,12 +42,11 @@ class MEDIA_EXPORT WebMediaPlayerParams {
const AudioHardwareConfig& audio_hardware_config,
const scoped_refptr<MediaLog>& media_log,
const scoped_refptr<GpuVideoAcceleratorFactories>& gpu_factories,
- const scoped_refptr<base::SingleThreadTaskRunner>&
- media_task_runner,
- const scoped_refptr<base::SingleThreadTaskRunner>&
- compositor_task_runner,
+ const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner,
+ const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner,
const EncryptedMediaPlayerSupportCreateCB&
- encrypted_media_player_support_cb);
+ encrypted_media_player_support_cb,
+ blink::WebContentDecryptionModule* initial_cdm);
~WebMediaPlayerParams();
@@ -94,6 +93,7 @@ class MEDIA_EXPORT WebMediaPlayerParams {
scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_;
scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_;
EncryptedMediaPlayerSupportCreateCB encrypted_media_player_support_cb_;
+ blink::WebContentDecryptionModule* initial_cdm_;
DISALLOW_IMPLICIT_CONSTRUCTORS(WebMediaPlayerParams);
};
diff --git a/mojo/services/html_viewer/webmediaplayer_factory.cc b/mojo/services/html_viewer/webmediaplayer_factory.cc
index e5309a9..bbf8c81 100644
--- a/mojo/services/html_viewer/webmediaplayer_factory.cc
+++ b/mojo/services/html_viewer/webmediaplayer_factory.cc
@@ -56,7 +56,8 @@ blink::WebMediaPlayer* WebMediaPlayerFactory::CreateMediaPlayer(
scoped_refptr<media::GpuVideoAcceleratorFactories>(),
GetMediaThreadTaskRunner(),
compositor_task_runner_,
- base::Bind(&media::NullEncryptedMediaPlayerSupport::Create));
+ base::Bind(&media::NullEncryptedMediaPlayerSupport::Create),
+ NULL);
base::WeakPtr<media::WebMediaPlayerDelegate> delegate;
return new media::WebMediaPlayerImpl(frame, client, delegate, params);