summaryrefslogtreecommitdiffstats
path: root/mojo
diff options
context:
space:
mode:
authorxhwang <xhwang@chromium.org>2015-04-02 22:38:15 -0700
committerCommit bot <commit-bot@chromium.org>2015-04-03 05:38:52 +0000
commitd7180836244cfbc01e551ee9f482df798503a142 (patch)
treeae9f74c5fa0d9705016928ea2dd7d680ad9e2167 /mojo
parent68924b69bdf1a943162467cc1cd1de37c0beec7c (diff)
downloadchromium_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.cc24
-rw-r--r--mojo/services/html_viewer/html_document.h6
-rw-r--r--mojo/services/html_viewer/webmediaplayer_factory.cc5
-rw-r--r--mojo/services/html_viewer/webmediaplayer_factory.h2
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);