Commit 58586698 authored by Becca Hughes's avatar Becca Hughes Committed by Commit Bot

[Media Session] Notify mojo observer from content

Notifies the mojo observer from content::MediaSessionImpl
when the supported actions change.

BUG=892771

Change-Id: Iea1edf130b415d44ab9f32f7b6506d53f4558280
Reviewed-on: https://chromium-review.googlesource.com/c/1379917Reviewed-by: default avatarMounir Lamouri <mlamouri@chromium.org>
Commit-Queue: Becca Hughes <beccahughes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#619737}
parent 9de47627
......@@ -224,6 +224,13 @@ void MediaSessionImpl::NotifyMediaSessionActionsChange(
const std::set<media_session::mojom::MediaSessionAction>& actions) {
for (auto& observer : observers_)
observer.MediaSessionActionsChanged(actions);
std::vector<media_session::mojom::MediaSessionAction> actions_vec(
actions.begin(), actions.end());
mojo_observers_.ForAllPtrs(
[&actions_vec](media_session::mojom::MediaSessionObserver* observer) {
observer->MediaSessionActionsChanged(actions_vec);
});
}
bool MediaSessionImpl::AddPlayer(MediaSessionPlayerObserver* observer,
......@@ -754,6 +761,15 @@ void MediaSessionImpl::AddObserver(
observer->MediaSessionMetadataChanged(
routed_service_ ? routed_service_->metadata() : base::nullopt);
if (routed_service_) {
std::vector<media_session::mojom::MediaSessionAction> actions(
routed_service_->actions().begin(), routed_service_->actions().end());
observer->MediaSessionActionsChanged(actions);
} else {
observer->MediaSessionActionsChanged(
std::vector<media_session::mojom::MediaSessionAction>());
}
mojo_observers_.AddPtr(std::move(observer));
}
......
......@@ -605,4 +605,27 @@ TEST_F(MediaSessionImplServiceRoutingTest,
}
}
TEST_F(MediaSessionImplServiceRoutingTest,
NotifyMojoObserverWhenActionsChange) {
CreateServiceForFrame(main_frame_);
StartPlayerForFrame(main_frame_);
services_[main_frame_]->EnableAction(
media_session::mojom::MediaSessionAction::kPlay);
media_session::test::MockMediaSessionMojoObserver observer(
*GetMediaSession());
observer.WaitForActions();
EXPECT_EQ(1u, observer.actions().size());
EXPECT_EQ(media_session::mojom::MediaSessionAction::kPlay,
observer.actions()[0]);
services_[main_frame_]->DisableAction(
media_session::mojom::MediaSessionAction::kPlay);
observer.WaitForActions();
EXPECT_TRUE(observer.actions().empty());
}
} // namespace content
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