diff options
author | xhwang <xhwang@chromium.org> | 2015-04-02 22:38:15 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-03 05:38:52 +0000 |
commit | d7180836244cfbc01e551ee9f482df798503a142 (patch) | |
tree | ae9f74c5fa0d9705016928ea2dd7d680ad9e2167 /mojo | |
parent | 68924b69bdf1a943162467cc1cd1de37c0beec7c (diff) | |
download | chromium_src-d7180836244cfbc01e551ee9f482df798503a142.zip chromium_src-d7180836244cfbc01e551ee9f482df798503a142.tar.gz chromium_src-d7180836244cfbc01e551ee9f482df798503a142.tar.bz2 |
media: Make RenderCdmFactory a RenderFrameObserver.
This makes ownership cleaner and simplifies a lot of code. Also it's consistent
with other code in RenderFrameImpl.
Since RenderCdmFactory is owned by RenderFrameImpl, pass raw pointer of
CdmFactory around instead of a scopted pointer.
Review URL: https://codereview.chromium.org/1054873002
Cr-Commit-Position: refs/heads/master@{#323644}
Diffstat (limited to 'mojo')
-rw-r--r-- | mojo/services/html_viewer/html_document.cc | 24 | ||||
-rw-r--r-- | mojo/services/html_viewer/html_document.h | 6 | ||||
-rw-r--r-- | mojo/services/html_viewer/webmediaplayer_factory.cc | 5 | ||||
-rw-r--r-- | mojo/services/html_viewer/webmediaplayer_factory.h | 2 |
4 files changed, 25 insertions, 12 deletions
diff --git a/mojo/services/html_viewer/html_document.cc b/mojo/services/html_viewer/html_document.cc index dddf3b8..16d7e51 100644 --- a/mojo/services/html_viewer/html_document.cc +++ b/mojo/services/html_viewer/html_document.cc @@ -230,14 +230,11 @@ blink::WebMediaPlayer* HTMLDocument::createMediaPlayer( const blink::WebURL& url, blink::WebMediaPlayerClient* client, blink::WebContentDecryptionModule* initial_cdm) { - if (!media_permission_) - media_permission_.reset(new media::DefaultMediaPermission(true)); - blink::WebMediaPlayer* player = web_media_player_factory_ ? web_media_player_factory_->CreateMediaPlayer( - frame, url, client, media_permission_.get(), initial_cdm, - shell_) + frame, url, client, GetMediaPermission(), GetCdmFactory(), + initial_cdm, shell_) : nullptr; return player; } @@ -303,11 +300,8 @@ void HTMLDocument::didNavigateWithinPage( blink::WebEncryptedMediaClient* HTMLDocument::encryptedMediaClient() { if (!web_encrypted_media_client_) { - if (!media_permission_) - media_permission_.reset(new media::DefaultMediaPermission(true)); web_encrypted_media_client_.reset(new media::WebEncryptedMediaClientImpl( - make_scoped_ptr(new media::DefaultCdmFactory()), - media_permission_.get())); + GetCdmFactory(), GetMediaPermission())); } return web_encrypted_media_client_.get(); } @@ -347,4 +341,16 @@ void HTMLDocument::OnViewInputEvent(View* view, const mojo::EventPtr& event) { web_view_->handleInputEvent(*web_event); } +media::MediaPermission* HTMLDocument::GetMediaPermission() { + if (!media_permission_) + media_permission_.reset(new media::DefaultMediaPermission(true)); + return media_permission_.get(); +} + +media::CdmFactory* HTMLDocument::GetCdmFactory() { + if (!cdm_factory_) + cdm_factory_.reset(new media::DefaultCdmFactory()); + return cdm_factory_.get(); +} + } // namespace html_viewer diff --git a/mojo/services/html_viewer/html_document.h b/mojo/services/html_viewer/html_document.h index f4820da..acaaf43 100644 --- a/mojo/services/html_viewer/html_document.h +++ b/mojo/services/html_viewer/html_document.h @@ -31,6 +31,7 @@ class MessageLoopProxy; } namespace media { +class CdmFactory; class MediaPermission; class WebEncryptedMediaClientImpl; } @@ -132,6 +133,9 @@ class HTMLDocument : public blink::WebViewClient, void Load(mojo::URLResponsePtr response); + media::MediaPermission* GetMediaPermission(); + media::CdmFactory* GetCdmFactory(); + mojo::URLResponsePtr response_; mojo::ServiceProviderImpl exported_services_; mojo::ServiceProviderPtr embedder_service_provider_; @@ -146,7 +150,9 @@ class HTMLDocument : public blink::WebViewClient, // EncryptedMediaClient attached to this frame; lazily initialized. scoped_ptr<media::WebEncryptedMediaClientImpl> web_encrypted_media_client_; + scoped_ptr<media::MediaPermission> media_permission_; + scoped_ptr<media::CdmFactory> cdm_factory_; // HTMLDocument owns these pointers. std::set<AxProviderImpl*> ax_provider_impls_; diff --git a/mojo/services/html_viewer/webmediaplayer_factory.cc b/mojo/services/html_viewer/webmediaplayer_factory.cc index 0b73a98..e7cec99 100644 --- a/mojo/services/html_viewer/webmediaplayer_factory.cc +++ b/mojo/services/html_viewer/webmediaplayer_factory.cc @@ -79,6 +79,7 @@ blink::WebMediaPlayer* WebMediaPlayerFactory::CreateMediaPlayer( const blink::WebURL& url, blink::WebMediaPlayerClient* client, media::MediaPermission* media_permission, + media::CdmFactory* cdm_factory, blink::WebContentDecryptionModule* initial_cdm, mojo::Shell* shell) { #if defined(OS_ANDROID) @@ -107,11 +108,9 @@ blink::WebMediaPlayer* WebMediaPlayerFactory::CreateMediaPlayer( initial_cdm); base::WeakPtr<media::WebMediaPlayerDelegate> delegate; - scoped_ptr<media::CdmFactory> cdm_factory(new media::DefaultCdmFactory()); - return new media::WebMediaPlayerImpl(frame, client, delegate, media_renderer_factory.Pass(), - cdm_factory.Pass(), params); + cdm_factory, params); #endif } diff --git a/mojo/services/html_viewer/webmediaplayer_factory.h b/mojo/services/html_viewer/webmediaplayer_factory.h index 3c60736..723b54f 100644 --- a/mojo/services/html_viewer/webmediaplayer_factory.h +++ b/mojo/services/html_viewer/webmediaplayer_factory.h @@ -27,6 +27,7 @@ class WebMediaPlayerClient; namespace media { class AudioManager; class AudioRendererSink; +class CdmFactory; class MediaPermission; } @@ -51,6 +52,7 @@ class WebMediaPlayerFactory { const blink::WebURL& url, blink::WebMediaPlayerClient* client, media::MediaPermission* media_permission, + media::CdmFactory* cdm_factory, blink::WebContentDecryptionModule* initial_cdm, mojo::Shell* shell); |