diff options
author | xhwang <xhwang@chromium.org> | 2016-02-12 21:48:02 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-13 05:49:28 +0000 |
commit | 9e7fb9413f358a2bad6158437b56fa63e50b6f8a (patch) | |
tree | 5600b89442428424ed6971e7f5e70fb62c26fc73 /chromecast | |
parent | bd9d4e75848588ead5097da5717c7f7c0e547fca (diff) | |
download | chromium_src-9e7fb9413f358a2bad6158437b56fa63e50b6f8a.zip chromium_src-9e7fb9413f358a2bad6158437b56fa63e50b6f8a.tar.gz chromium_src-9e7fb9413f358a2bad6158437b56fa63e50b6f8a.tar.bz2 |
Reland "media: Refactor MojoMediaClient" with fix.
This reverts commit 29775799918ebeb0f2aedd554722e3db0c6211c2.
Instead of specifying a platform based MojoMediaClient at compile time,
provide the capability of setting one at run time. This improves the flexibility
of using MojoMediaApplication in different cases. For example, on desktop, we
may want to run the MojoMediaApplication in the utility process (for the CDM
service) and in the GPU process (for hardware decoding). In those two cases,
we'll want to specify two different MojoMediaClients even though we are on the
same platform.
TBR=alokp@chromium.org
BUG=570357,571155
Review URL: https://codereview.chromium.org/1690213002
Cr-Commit-Position: refs/heads/master@{#375352}
Diffstat (limited to 'chromecast')
-rw-r--r-- | chromecast/browser/cast_content_browser_client.cc | 8 | ||||
-rw-r--r-- | chromecast/media/mojo/BUILD.gn | 1 | ||||
-rw-r--r-- | chromecast/media/mojo/cast_mojo_media_client.cc | 37 | ||||
-rw-r--r-- | chromecast/media/mojo/cast_mojo_media_client.h | 32 |
4 files changed, 54 insertions, 24 deletions
diff --git a/chromecast/browser/cast_content_browser_client.cc b/chromecast/browser/cast_content_browser_client.cc index aea55a6..12a4754 100644 --- a/chromecast/browser/cast_content_browser_client.cc +++ b/chromecast/browser/cast_content_browser_client.cc @@ -52,6 +52,7 @@ #include "ui/gl/gl_switches.h" #if defined(ENABLE_MOJO_MEDIA_IN_BROWSER_PROCESS) +#include "chromecast/media/mojo/cast_mojo_media_client.h" // nogncheck because of conditional dependency. #include "media/mojo/services/mojo_media_application.h" // nogncheck #endif // ENABLE_MOJO_MEDIA_IN_BROWSER_PROCESS @@ -357,9 +358,10 @@ bool CastContentBrowserClient::CanCreateWindow( void CastContentBrowserClient::RegisterInProcessMojoApplications( StaticMojoApplicationMap* apps) { #if defined(ENABLE_MOJO_MEDIA_IN_BROWSER_PROCESS) - apps->insert( - std::make_pair(GURL("mojo:media"), - base::Bind(::media::MojoMediaApplication::CreateApp))); + apps->insert(std::make_pair( + GURL("mojo:media"), + base::Bind(::media::MojoMediaApplication::CreateAppWithClient, + base::Bind(&media::CastMojoMediaClient::Create)))); #endif } diff --git a/chromecast/media/mojo/BUILD.gn b/chromecast/media/mojo/BUILD.gn index f197973..f8e8ec1 100644 --- a/chromecast/media/mojo/BUILD.gn +++ b/chromecast/media/mojo/BUILD.gn @@ -10,6 +10,7 @@ assert(enable_mojo_media == "browser") source_set("mojo") { sources = [ "cast_mojo_media_client.cc", + "cast_mojo_media_client.h", ] public_deps = [ diff --git a/chromecast/media/mojo/cast_mojo_media_client.cc b/chromecast/media/mojo/cast_mojo_media_client.cc index e239269..3a16021 100644 --- a/chromecast/media/mojo/cast_mojo_media_client.cc +++ b/chromecast/media/mojo/cast_mojo_media_client.cc @@ -2,31 +2,26 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "media/mojo/services/mojo_media_application.h" +#include "chromecast/media/mojo/cast_mojo_media_client.h" -#include "media/mojo/services/mojo_media_client.h" - -namespace { -class CastMojoMediaClient : public ::media::MojoMediaClient { - public: - CastMojoMediaClient() {} - ~CastMojoMediaClient() override {} +namespace chromecast { +namespace media { - // MojoMediaClient overrides. - void Initialize() override {} - scoped_ptr<::media::RendererFactory> CreateRendererFactory( - const scoped_refptr<::media::MediaLog>& media_log) override { - return scoped_ptr<::media::RendererFactory>(); - } +CastMojoMediaClient::CastMojoMediaClient() {} - private: - DISALLOW_COPY_AND_ASSIGN(CastMojoMediaClient); -}; -} // namespace +CastMojoMediaClient::~CastMojoMediaClient() {} -namespace media { // static -scoped_ptr<MojoMediaClient> MojoMediaClient::Create() { - return make_scoped_ptr(new CastMojoMediaClient()); +scoped_ptr<::media::MojoMediaClient> CastMojoMediaClient::Create() { + return scoped_ptr<::media::MojoMediaClient>(new CastMojoMediaClient()); } + +void CastMojoMediaClient::Initialize() {} + +scoped_ptr<::media::RendererFactory> CastMojoMediaClient::CreateRendererFactory( + const scoped_refptr<::media::MediaLog>& /* media_log */) { + return scoped_ptr<::media::RendererFactory>(); +} + } // namespace media +} // namespace chromecast diff --git a/chromecast/media/mojo/cast_mojo_media_client.h b/chromecast/media/mojo/cast_mojo_media_client.h new file mode 100644 index 0000000..1f7fcde --- /dev/null +++ b/chromecast/media/mojo/cast_mojo_media_client.h @@ -0,0 +1,32 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMECAST_MEDIA_MOJO_CAST_MOJO_MEDIA_CLIENT_H_ +#define CHROMECAST_MEDIA_MOJO_CAST_MOJO_MEDIA_CLIENT_H_ + +#include "media/mojo/services/mojo_media_client.h" + +namespace chromecast { +namespace media { + +class CastMojoMediaClient : public ::media::MojoMediaClient { + public: + CastMojoMediaClient(); + ~CastMojoMediaClient() override; + + static scoped_ptr<::media::MojoMediaClient> Create(); + + // MojoMediaClient overrides. + void Initialize() override; + scoped_ptr<::media::RendererFactory> CreateRendererFactory( + const scoped_refptr<::media::MediaLog>& media_log) override; + + private: + DISALLOW_COPY_AND_ASSIGN(CastMojoMediaClient); +}; + +} // namespace media +} // namespace chromecast + +#endif // CHROMECAST_MEDIA_MOJO_CAST_MOJO_MEDIA_CLIENT_H_ |