Commit e206bc1a authored by Jeffrey Kardatzke's avatar Jeffrey Kardatzke Committed by Commit Bot

Revert "Reland "[Media Session] Convert interface from mojo to CPP""

This reverts commit a656f852.

Reason for revert: Broke build, media_notification_controller_impl includes media_session_service_mojom.h which was deleted in this CL

Original change's description:
> Reland "[Media Session] Convert interface from mojo to CPP"
>
> This is a reland of 530c8fd2
>
> The fix is to remove the include for media_session_service.mojom
> that has been deleted.
>
> Original change's description:
> > [Media Session] Convert interface from mojo to CPP
> >
> > Context: https://crrev.com/c/2485850
> >
> > This converts the MSS interface to CPP since it does
> > not need to be mojo.
> >
> > BUG=1140215
> >
> > Change-Id: I595bef21cddf755bc0fb423f87db9e620227d3e6
> > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2503393
> > Commit-Queue: Becca Hughes <beccahughes@chromium.org>
> > Reviewed-by: Avi Drissman <avi@chromium.org>
> > Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
> > Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#823358}
>
> Bug: 1140215
> Change-Id: I23a4043529e236174f44377402a8e1fbc5a23600
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2518085
> Commit-Queue: Becca Hughes <beccahughes@chromium.org>
> Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
> Reviewed-by: Avi Drissman <avi@chromium.org>
> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#823718}

TBR=avi@chromium.org,xiyuan@chromium.org,dcheng@chromium.org,beccahughes@chromium.org

Change-Id: Ia9a84fa6efc4aae2e83d96c6f16ccfa282e5eef9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 1140215
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2518781Reviewed-by: default avatarJeffrey Kardatzke <jkardatzke@google.com>
Commit-Queue: Jeffrey Kardatzke <jkardatzke@google.com>
Cr-Commit-Position: refs/heads/master@{#823761}
parent 08536bd9
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "components/prefs/pref_service.h" #include "components/prefs/pref_service.h"
#include "services/media_session/public/cpp/media_session_service.h"
#include "services/media_session/public/mojom/media_session.mojom.h" #include "services/media_session/public/mojom/media_session.mojom.h"
#include "services/media_session/public/mojom/media_session_service.mojom.h"
#include "third_party/skia/include/core/SkColor.h" #include "third_party/skia/include/core/SkColor.h"
#include "ui/compositor/layer.h" #include "ui/compositor/layer.h"
#include "ui/compositor/paint_recorder.h" #include "ui/compositor/paint_recorder.h"
...@@ -242,7 +242,7 @@ void MediaStringView::InitLayout() { ...@@ -242,7 +242,7 @@ void MediaStringView::InitLayout() {
} }
void MediaStringView::BindMediaControllerObserver() { void MediaStringView::BindMediaControllerObserver() {
media_session::MediaSessionService* service = media_session::mojom::MediaSessionService* service =
Shell::Get()->shell_delegate()->GetMediaSessionService(); Shell::Get()->shell_delegate()->GetMediaSessionService();
// Service might be unavailable under some test environments. // Service might be unavailable under some test environments.
if (!service) if (!service)
......
...@@ -396,7 +396,7 @@ LockScreenMediaControlsView::LockScreenMediaControlsView( ...@@ -396,7 +396,7 @@ LockScreenMediaControlsView::LockScreenMediaControlsView(
SetArtwork(base::nullopt); SetArtwork(base::nullopt);
// |service| can be null in tests. // |service| can be null in tests.
media_session::MediaSessionService* service = media_session::mojom::MediaSessionService* service =
Shell::Get()->shell_delegate()->GetMediaSessionService(); Shell::Get()->shell_delegate()->GetMediaSessionService();
if (!service) if (!service)
return; return;
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "media/base/media_switches.h" #include "media/base/media_switches.h"
#include "services/media_session/public/mojom/constants.mojom.h" #include "services/media_session/public/mojom/constants.mojom.h"
#include "services/media_session/public/mojom/media_session.mojom.h" #include "services/media_session/public/mojom/media_session.mojom.h"
#include "services/media_session/public/mojom/media_session_service.mojom.h"
#include "ui/base/accelerators/media_keys_util.h" #include "ui/base/accelerators/media_keys_util.h"
namespace ash { namespace ash {
...@@ -360,7 +361,7 @@ MediaControllerImpl::GetMediaSessionController() { ...@@ -360,7 +361,7 @@ MediaControllerImpl::GetMediaSessionController() {
if (!Shell::HasInstance()) if (!Shell::HasInstance())
return nullptr; return nullptr;
media_session::MediaSessionService* service = media_session::mojom::MediaSessionService* service =
Shell::Get()->shell_delegate()->GetMediaSessionService(); Shell::Get()->shell_delegate()->GetMediaSessionService();
if (!service) if (!service)
return nullptr; return nullptr;
......
...@@ -108,7 +108,7 @@ MediaNotificationControllerImpl::MediaNotificationControllerImpl() ...@@ -108,7 +108,7 @@ MediaNotificationControllerImpl::MediaNotificationControllerImpl()
} }
// May be null in tests. // May be null in tests.
media_session::MediaSessionService* service = media_session::mojom::MediaSessionService* service =
Shell::Get()->shell_delegate()->GetMediaSessionService(); Shell::Get()->shell_delegate()->GetMediaSessionService();
if (!service) if (!service)
return; return;
......
...@@ -24,7 +24,8 @@ aura::Window* ShellDelegate::CreateBrowserForTabDrop( ...@@ -24,7 +24,8 @@ aura::Window* ShellDelegate::CreateBrowserForTabDrop(
return nullptr; return nullptr;
} }
media_session::MediaSessionService* ShellDelegate::GetMediaSessionService() { media_session::mojom::MediaSessionService*
ShellDelegate::GetMediaSessionService() {
return nullptr; return nullptr;
} }
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "services/device/public/mojom/bluetooth_system.mojom-forward.h" #include "services/device/public/mojom/bluetooth_system.mojom-forward.h"
#include "services/device/public/mojom/fingerprint.mojom-forward.h" #include "services/device/public/mojom/fingerprint.mojom-forward.h"
#include "services/media_session/public/cpp/media_session_service.h" #include "services/media_session/public/mojom/media_session_service.mojom-forward.h"
#include "ui/gfx/native_widget_types.h" #include "ui/gfx/native_widget_types.h"
namespace aura { namespace aura {
...@@ -104,7 +104,7 @@ class ASH_EXPORT ShellDelegate { ...@@ -104,7 +104,7 @@ class ASH_EXPORT ShellDelegate {
// Returns an interface to the Media Session service, or null if not // Returns an interface to the Media Session service, or null if not
// available. // available.
virtual media_session::MediaSessionService* GetMediaSessionService(); virtual media_session::mojom::MediaSessionService* GetMediaSessionService();
virtual void OpenKeyboardShortcutHelpPage() const {} virtual void OpenKeyboardShortcutHelpPage() const {}
}; };
......
...@@ -34,7 +34,7 @@ constexpr base::TimeDelta kHideArtworkDelay = ...@@ -34,7 +34,7 @@ constexpr base::TimeDelta kHideArtworkDelay =
UnifiedMediaControlsController::UnifiedMediaControlsController( UnifiedMediaControlsController::UnifiedMediaControlsController(
Delegate* delegate) Delegate* delegate)
: delegate_(delegate) { : delegate_(delegate) {
media_session::MediaSessionService* service = media_session::mojom::MediaSessionService* service =
Shell::Get()->shell_delegate()->GetMediaSessionService(); Shell::Get()->shell_delegate()->GetMediaSessionService();
// Happens in test. // Happens in test.
if (!service) if (!service)
......
...@@ -180,7 +180,7 @@ void ChromeShellDelegate::BindMultiDeviceSetup( ...@@ -180,7 +180,7 @@ void ChromeShellDelegate::BindMultiDeviceSetup(
service->BindMultiDeviceSetup(std::move(receiver)); service->BindMultiDeviceSetup(std::move(receiver));
} }
media_session::MediaSessionService* media_session::mojom::MediaSessionService*
ChromeShellDelegate::GetMediaSessionService() { ChromeShellDelegate::GetMediaSessionService() {
return &content::GetMediaSessionService(); return &content::GetMediaSessionService();
} }
......
...@@ -42,7 +42,7 @@ class ChromeShellDelegate : public ash::ShellDelegate { ...@@ -42,7 +42,7 @@ class ChromeShellDelegate : public ash::ShellDelegate {
mojo::PendingReceiver< mojo::PendingReceiver<
chromeos::multidevice_setup::mojom::MultiDeviceSetup> receiver) chromeos::multidevice_setup::mojom::MultiDeviceSetup> receiver)
override; override;
media_session::MediaSessionService* GetMediaSessionService() override; media_session::mojom::MediaSessionService* GetMediaSessionService() override;
std::unique_ptr<ash::NearbyShareDelegate> CreateNearbyShareDelegate( std::unique_ptr<ash::NearbyShareDelegate> CreateNearbyShareDelegate(
ash::NearbyShareController* controller) const override; ash::NearbyShareController* controller) const override;
......
...@@ -203,6 +203,9 @@ TEST_F(MediaSessionImplTest, SessionInfoState) { ...@@ -203,6 +203,9 @@ TEST_F(MediaSessionImplTest, SessionInfoState) {
MockMediaSessionMojoObserver observer(*GetMediaSession()); MockMediaSessionMojoObserver observer(*GetMediaSession());
GetMediaSession()->StartDucking(); GetMediaSession()->StartDucking();
observer.WaitForState(MediaSessionInfo::SessionState::kDucking); observer.WaitForState(MediaSessionInfo::SessionState::kDucking);
EXPECT_TRUE(observer.session_info().Equals(
media_session::test::GetMediaSessionInfoSync(GetMediaSession())));
} }
{ {
......
...@@ -9,16 +9,36 @@ ...@@ -9,16 +9,36 @@
#include "base/threading/sequence_local_storage_slot.h" #include "base/threading/sequence_local_storage_slot.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/remote.h"
#include "services/media_session/media_session_service_impl.h" #include "services/media_session/media_session_service.h"
#include "services/media_session/public/cpp/features.h" #include "services/media_session/public/cpp/features.h"
namespace content { namespace content {
media_session::MediaSessionService& GetMediaSessionService() { media_session::mojom::MediaSessionService& GetMediaSessionService() {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
static base::NoDestructor<media_session::MediaSessionServiceImpl> service; // NOTE: We use sequence-local storage here strictly to limit the lifetime of
return *service; // this Remote to that of the UI-thread sequence. This ensures that it doesn't
// persist when the task environment is torn down and reinitialized e.g.
// between unit tests.
static base::NoDestructor<base::SequenceLocalStorageSlot<
mojo::Remote<media_session::mojom::MediaSessionService>>>
remote_slot;
auto& remote = remote_slot->GetOrCreateValue();
if (!remote) {
if (base::FeatureList::IsEnabled(
media_session::features::kMediaSessionService)) {
static base::NoDestructor<
std::unique_ptr<media_session::MediaSessionService>>
service;
*service = std::make_unique<media_session::MediaSessionService>(
remote.BindNewPipeAndPassReceiver());
} else {
// If the service is not enabled, bind to a disconnected pipe.
ignore_result(remote.BindNewPipeAndPassReceiver());
}
}
return *remote.get();
} }
} // namespace content } // namespace content
...@@ -6,13 +6,14 @@ ...@@ -6,13 +6,14 @@
#define CONTENT_PUBLIC_BROWSER_MEDIA_SESSION_SERVICE_H_ #define CONTENT_PUBLIC_BROWSER_MEDIA_SESSION_SERVICE_H_
#include "content/common/content_export.h" #include "content/common/content_export.h"
#include "services/media_session/public/cpp/media_session_service.h" #include "services/media_session/public/mojom/media_session_service.mojom.h"
namespace content { namespace content {
// Returns the main control interface into the Media Session Service which runs // Returns the main control interface into the Media Session Service which runs
// in the browser process. // in the browser process.
CONTENT_EXPORT media_session::MediaSessionService& GetMediaSessionService(); CONTENT_EXPORT media_session::mojom::MediaSessionService&
GetMediaSessionService();
} // namespace content } // namespace content
......
...@@ -15,8 +15,8 @@ source_set("lib") { ...@@ -15,8 +15,8 @@ source_set("lib") {
"audio_focus_request.h", "audio_focus_request.h",
"media_controller.cc", "media_controller.cc",
"media_controller.h", "media_controller.h",
"media_session_service_impl.cc", "media_session_service.cc",
"media_session_service_impl.h", "media_session_service.h",
] ]
configs += [ "//build/config/compiler:wexit_time_destructors" ] configs += [ "//build/config/compiler:wexit_time_destructors" ]
...@@ -36,7 +36,7 @@ source_set("tests") { ...@@ -36,7 +36,7 @@ source_set("tests") {
sources = [ sources = [
"audio_focus_manager_unittest.cc", "audio_focus_manager_unittest.cc",
"media_controller_unittest.cc", "media_controller_unittest.cc",
"media_session_service_impl_unittest.cc", "media_session_service_unittest.cc",
] ]
deps = [ deps = [
......
...@@ -17,11 +17,12 @@ ...@@ -17,11 +17,12 @@
#include "build/chromeos_buildflags.h" #include "build/chromeos_buildflags.h"
#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/remote.h"
#include "services/media_session/audio_focus_request.h" #include "services/media_session/audio_focus_request.h"
#include "services/media_session/media_session_service_impl.h" #include "services/media_session/media_session_service.h"
#include "services/media_session/public/cpp/test/audio_focus_test_util.h" #include "services/media_session/public/cpp/test/audio_focus_test_util.h"
#include "services/media_session/public/cpp/test/mock_media_session.h" #include "services/media_session/public/cpp/test/mock_media_session.h"
#include "services/media_session/public/mojom/audio_focus.mojom.h" #include "services/media_session/public/mojom/audio_focus.mojom.h"
#include "services/media_session/public/mojom/media_session.mojom.h" #include "services/media_session/public/mojom/media_session.mojom.h"
#include "services/media_session/public/mojom/media_session_service.mojom.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
namespace media_session { namespace media_session {
...@@ -47,12 +48,13 @@ class AudioFocusManagerTest ...@@ -47,12 +48,13 @@ class AudioFocusManagerTest
base::PowerMonitor::Initialize(std::move(power_source)); base::PowerMonitor::Initialize(std::move(power_source));
// Create an instance of the MediaSessionService. // Create an instance of the MediaSessionService.
service_ = std::make_unique<MediaSessionServiceImpl>(); service_ = std::make_unique<MediaSessionService>(
service_->BindAudioFocusManager( service_remote_.BindNewPipeAndPassReceiver());
service_remote_->BindAudioFocusManager(
audio_focus_remote_.BindNewPipeAndPassReceiver()); audio_focus_remote_.BindNewPipeAndPassReceiver());
service_->BindAudioFocusManagerDebug( service_remote_->BindAudioFocusManagerDebug(
audio_focus_debug_remote_.BindNewPipeAndPassReceiver()); audio_focus_debug_remote_.BindNewPipeAndPassReceiver());
service_->BindMediaControllerManager( service_remote_->BindMediaControllerManager(
controller_manager_remote_.BindNewPipeAndPassReceiver()); controller_manager_remote_.BindNewPipeAndPassReceiver());
audio_focus_remote_->SetEnforcementMode(GetParam()); audio_focus_remote_->SetEnforcementMode(GetParam());
...@@ -64,6 +66,7 @@ class AudioFocusManagerTest ...@@ -64,6 +66,7 @@ class AudioFocusManagerTest
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
service_.reset(); service_.reset();
service_remote_.reset();
base::PowerMonitor::ShutdownForTesting(); base::PowerMonitor::ShutdownForTesting();
} }
...@@ -181,7 +184,7 @@ class AudioFocusManagerTest ...@@ -181,7 +184,7 @@ class AudioFocusManagerTest
mojo::Remote<mojom::AudioFocusManager> CreateAudioFocusManagerRemote() { mojo::Remote<mojom::AudioFocusManager> CreateAudioFocusManagerRemote() {
mojo::Remote<mojom::AudioFocusManager> remote; mojo::Remote<mojom::AudioFocusManager> remote;
service_->BindAudioFocusManager(remote.BindNewPipeAndPassReceiver()); service_remote_->BindAudioFocusManager(remote.BindNewPipeAndPassReceiver());
return remote; return remote;
} }
...@@ -279,7 +282,8 @@ class AudioFocusManagerTest ...@@ -279,7 +282,8 @@ class AudioFocusManagerTest
base::test::TaskEnvironment task_environment_; base::test::TaskEnvironment task_environment_;
std::unique_ptr<MediaSessionServiceImpl> service_; std::unique_ptr<MediaSessionService> service_;
mojo::Remote<mojom::MediaSessionService> service_remote_;
mojo::Remote<mojom::AudioFocusManager> audio_focus_remote_; mojo::Remote<mojom::AudioFocusManager> audio_focus_remote_;
mojo::Remote<mojom::AudioFocusManagerDebug> audio_focus_debug_remote_; mojo::Remote<mojom::AudioFocusManagerDebug> audio_focus_debug_remote_;
......
...@@ -14,12 +14,13 @@ ...@@ -14,12 +14,13 @@
#include "base/time/time.h" #include "base/time/time.h"
#include "base/unguessable_token.h" #include "base/unguessable_token.h"
#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/remote.h"
#include "services/media_session/media_session_service_impl.h" #include "services/media_session/media_session_service.h"
#include "services/media_session/public/cpp/media_metadata.h" #include "services/media_session/public/cpp/media_metadata.h"
#include "services/media_session/public/cpp/test/mock_media_session.h" #include "services/media_session/public/cpp/test/mock_media_session.h"
#include "services/media_session/public/cpp/test/test_media_controller.h" #include "services/media_session/public/cpp/test/test_media_controller.h"
#include "services/media_session/public/mojom/constants.mojom.h" #include "services/media_session/public/mojom/constants.mojom.h"
#include "services/media_session/public/mojom/media_session.mojom.h" #include "services/media_session/public/mojom/media_session.mojom.h"
#include "services/media_session/public/mojom/media_session_service.mojom.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
namespace media_session { namespace media_session {
...@@ -30,10 +31,11 @@ class MediaControllerTest : public testing::Test { ...@@ -30,10 +31,11 @@ class MediaControllerTest : public testing::Test {
void SetUp() override { void SetUp() override {
// Create an instance of the MediaSessionService and bind some interfaces. // Create an instance of the MediaSessionService and bind some interfaces.
service_ = std::make_unique<MediaSessionServiceImpl>(); service_ = std::make_unique<MediaSessionService>(
service_->BindAudioFocusManager( service_remote_.BindNewPipeAndPassReceiver());
service_remote_->BindAudioFocusManager(
audio_focus_remote_.BindNewPipeAndPassReceiver()); audio_focus_remote_.BindNewPipeAndPassReceiver());
service_->BindMediaControllerManager( service_remote_->BindMediaControllerManager(
controller_manager_remote_.BindNewPipeAndPassReceiver()); controller_manager_remote_.BindNewPipeAndPassReceiver());
controller_manager_remote_->CreateActiveMediaController( controller_manager_remote_->CreateActiveMediaController(
...@@ -70,6 +72,7 @@ class MediaControllerTest : public testing::Test { ...@@ -70,6 +72,7 @@ class MediaControllerTest : public testing::Test {
private: private:
base::test::TaskEnvironment task_environment_; base::test::TaskEnvironment task_environment_;
std::unique_ptr<MediaSessionService> service_; std::unique_ptr<MediaSessionService> service_;
mojo::Remote<mojom::MediaSessionService> service_remote_;
mojo::Remote<mojom::AudioFocusManager> audio_focus_remote_; mojo::Remote<mojom::AudioFocusManager> audio_focus_remote_;
mojo::Remote<mojom::MediaController> media_controller_remote_; mojo::Remote<mojom::MediaController> media_controller_remote_;
mojo::Remote<mojom::MediaControllerManager> controller_manager_remote_; mojo::Remote<mojom::MediaControllerManager> controller_manager_remote_;
......
...@@ -2,29 +2,31 @@ ...@@ -2,29 +2,31 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "services/media_session/media_session_service_impl.h" #include "services/media_session/media_session_service.h"
#include "base/bind.h" #include "base/bind.h"
#include "services/media_session/audio_focus_manager.h" #include "services/media_session/audio_focus_manager.h"
namespace media_session { namespace media_session {
MediaSessionServiceImpl::MediaSessionServiceImpl() MediaSessionService::MediaSessionService(
: audio_focus_manager_(std::make_unique<AudioFocusManager>()) {} mojo::PendingReceiver<mojom::MediaSessionService> receiver)
: receiver_(this, std::move(receiver)),
audio_focus_manager_(std::make_unique<AudioFocusManager>()) {}
MediaSessionServiceImpl::~MediaSessionServiceImpl() = default; MediaSessionService::~MediaSessionService() = default;
void MediaSessionServiceImpl::BindAudioFocusManager( void MediaSessionService::BindAudioFocusManager(
mojo::PendingReceiver<mojom::AudioFocusManager> receiver) { mojo::PendingReceiver<mojom::AudioFocusManager> receiver) {
audio_focus_manager_->BindToInterface(std::move(receiver)); audio_focus_manager_->BindToInterface(std::move(receiver));
} }
void MediaSessionServiceImpl::BindAudioFocusManagerDebug( void MediaSessionService::BindAudioFocusManagerDebug(
mojo::PendingReceiver<mojom::AudioFocusManagerDebug> receiver) { mojo::PendingReceiver<mojom::AudioFocusManagerDebug> receiver) {
audio_focus_manager_->BindToDebugInterface(std::move(receiver)); audio_focus_manager_->BindToDebugInterface(std::move(receiver));
} }
void MediaSessionServiceImpl::BindMediaControllerManager( void MediaSessionService::BindMediaControllerManager(
mojo::PendingReceiver<mojom::MediaControllerManager> receiver) { mojo::PendingReceiver<mojom::MediaControllerManager> receiver) {
audio_focus_manager_->BindToControllerManagerInterface(std::move(receiver)); audio_focus_manager_->BindToControllerManagerInterface(std::move(receiver));
} }
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef SERVICES_MEDIA_SESSION_MEDIA_SESSION_SERVICE_IMPL_H_ #ifndef SERVICES_MEDIA_SESSION_MEDIA_SESSION_SERVICE_H_
#define SERVICES_MEDIA_SESSION_MEDIA_SESSION_SERVICE_IMPL_H_ #define SERVICES_MEDIA_SESSION_MEDIA_SESSION_SERVICE_H_
#include <memory> #include <memory>
#include <string> #include <string>
...@@ -11,20 +11,24 @@ ...@@ -11,20 +11,24 @@
#include "base/macros.h" #include "base/macros.h"
#include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/receiver.h"
#include "services/media_session/public/cpp/media_session_service.h" #include "services/media_session/public/mojom/media_session_service.mojom.h"
namespace media_session { namespace media_session {
class AudioFocusManager; class AudioFocusManager;
class MediaSessionServiceImpl : public MediaSessionService { class MediaSessionService : public mojom::MediaSessionService {
public: public:
MediaSessionServiceImpl(); explicit MediaSessionService(
~MediaSessionServiceImpl() override; mojo::PendingReceiver<mojom::MediaSessionService> receiver);
MediaSessionServiceImpl(const MediaSessionServiceImpl&) = delete; ~MediaSessionService() override;
MediaSessionServiceImpl& operator=(const MediaSessionServiceImpl&) = delete;
// MediaSessionService implementation: const AudioFocusManager& audio_focus_manager_for_testing() const {
return *audio_focus_manager_.get();
}
private:
// mojom::MediaSessionService implementation:
void BindAudioFocusManager( void BindAudioFocusManager(
mojo::PendingReceiver<mojom::AudioFocusManager> receiver) override; mojo::PendingReceiver<mojom::AudioFocusManager> receiver) override;
void BindAudioFocusManagerDebug( void BindAudioFocusManagerDebug(
...@@ -32,14 +36,12 @@ class MediaSessionServiceImpl : public MediaSessionService { ...@@ -32,14 +36,12 @@ class MediaSessionServiceImpl : public MediaSessionService {
void BindMediaControllerManager( void BindMediaControllerManager(
mojo::PendingReceiver<mojom::MediaControllerManager> receiver) override; mojo::PendingReceiver<mojom::MediaControllerManager> receiver) override;
const AudioFocusManager& audio_focus_manager_for_testing() const { mojo::Receiver<mojom::MediaSessionService> receiver_;
return *audio_focus_manager_.get();
}
private:
std::unique_ptr<AudioFocusManager> audio_focus_manager_; std::unique_ptr<AudioFocusManager> audio_focus_manager_;
DISALLOW_COPY_AND_ASSIGN(MediaSessionService);
}; };
} // namespace media_session } // namespace media_session
#endif // SERVICES_MEDIA_SESSION_MEDIA_SESSION_SERVICE_IMPL_H_ #endif // SERVICES_MEDIA_SESSION_MEDIA_SESSION_SERVICE_H_
...@@ -2,27 +2,28 @@ ...@@ -2,27 +2,28 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "services/media_session/media_session_service_impl.h" #include "services/media_session/media_session_service.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/test/task_environment.h" #include "base/test/task_environment.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
namespace media_session { namespace media_session {
class MediaSessionImplTest : public testing::Test { class MediaSessionTest : public testing::Test {
public: public:
MediaSessionImplTest() = default; MediaSessionTest() = default;
~MediaSessionImplTest() override = default; ~MediaSessionTest() override = default;
private: private:
base::test::TaskEnvironment task_environment_; base::test::TaskEnvironment task_environment_;
DISALLOW_COPY_AND_ASSIGN(MediaSessionImplTest); DISALLOW_COPY_AND_ASSIGN(MediaSessionTest);
}; };
TEST_F(MediaSessionImplTest, InstantiateService) { TEST_F(MediaSessionTest, InstantiateService) {
MediaSessionServiceImpl service; MediaSessionService service{mojo::NullReceiver()};
} }
} // namespace media_session } // namespace media_session
...@@ -44,7 +44,6 @@ component("cpp") { ...@@ -44,7 +44,6 @@ component("cpp") {
"features.h", "features.h",
"media_image_manager.cc", "media_image_manager.cc",
"media_image_manager.h", "media_image_manager.h",
"media_session_service.h",
"util.cc", "util.cc",
"util.h", "util.h",
] ]
......
// Copyright 2020 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 SERVICES_MEDIA_SESSION_PUBLIC_CPP_MEDIA_SESSION_SERVICE_H_
#define SERVICES_MEDIA_SESSION_PUBLIC_CPP_MEDIA_SESSION_SERVICE_H_
#include <memory>
#include "base/component_export.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "services/media_session/public/mojom/audio_focus.mojom.h"
#include "services/media_session/public/mojom/media_controller.mojom.h"
namespace media_session {
class AudioFocusManager;
class COMPONENT_EXPORT(MEDIA_SESSION_CPP) MediaSessionService {
public:
virtual ~MediaSessionService() = default;
virtual void BindAudioFocusManager(
mojo::PendingReceiver<mojom::AudioFocusManager> receiver) = 0;
virtual void BindAudioFocusManagerDebug(
mojo::PendingReceiver<mojom::AudioFocusManagerDebug> receiver) = 0;
virtual void BindMediaControllerManager(
mojo::PendingReceiver<mojom::MediaControllerManager> receiver) = 0;
protected:
MediaSessionService() = default;
};
} // namespace media_session
#endif // SERVICES_MEDIA_SESSION_PUBLIC_CPP_MEDIA_SESSION_SERVICE_H_
...@@ -11,6 +11,7 @@ mojom("mojom") { ...@@ -11,6 +11,7 @@ mojom("mojom") {
"constants.mojom", "constants.mojom",
"media_controller.mojom", "media_controller.mojom",
"media_session.mojom", "media_session.mojom",
"media_session_service.mojom",
] ]
public_deps = [ public_deps = [
......
// Copyright 2018 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.
module media_session.mojom;
import "services/media_session/public/mojom/audio_focus.mojom";
import "services/media_session/public/mojom/media_controller.mojom";
// The main interface to the Media Session service. Privileged and bound only by
// the browser process.
interface MediaSessionService {
// Binds an AudioFocusManager endpoint in the service.
BindAudioFocusManager(pending_receiver<AudioFocusManager> receiver);
// Binds an endpoint for debugging the AudioFocusManager.
BindAudioFocusManagerDebug(pending_receiver<AudioFocusManagerDebug> receiver);
// Binds a MediaControllerManager endpoint in the service.
BindMediaControllerManager(pending_receiver<MediaControllerManager> receiver);
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment