Commit 0694de54 authored by btolsch's avatar btolsch Committed by Commit Bot

Add termination event for local screen receivers

Although most presentation connection state change and communication is
handled directly between the two renderers involved, termination (and
sometimes closing) is handled by the provider updating Media Router
directly.  In the case of local screens, the presentation ending always
means it's terminating, so we should send that notification to Media
Router.

Bug: 839623
Change-Id: I11145bfd1bf165e8816c0b7431c909d59f78d2af
Reviewed-on: https://chromium-review.googlesource.com/1054258Reviewed-by: default avatarDerek Cheng <imcheng@chromium.org>
Commit-Queue: Brandon Tolsch <btolsch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#558014}
parent 9a25178d
...@@ -427,7 +427,13 @@ void WiredDisplayMediaRouteProvider::ReportSinkAvailability( ...@@ -427,7 +427,13 @@ void WiredDisplayMediaRouteProvider::ReportSinkAvailability(
void WiredDisplayMediaRouteProvider::RemovePresentationById( void WiredDisplayMediaRouteProvider::RemovePresentationById(
const std::string& presentation_id) { const std::string& presentation_id) {
presentations_.erase(presentation_id); auto entry = presentations_.find(presentation_id);
if (entry == presentations_.end())
return;
media_router_->OnPresentationConnectionStateChanged(
entry->second.route().media_route_id(),
mojom::MediaRouter::PresentationConnectionState::TERMINATED);
presentations_.erase(entry);
NotifyRouteObservers(); NotifyRouteObservers();
} }
......
...@@ -335,6 +335,10 @@ TEST_F(WiredDisplayMediaRouteProviderTest, CreateAndTerminateRoute) { ...@@ -335,6 +335,10 @@ TEST_F(WiredDisplayMediaRouteProviderTest, CreateAndTerminateRoute) {
EXPECT_CALL(callback, TerminateRoute(base::Optional<std::string>(), EXPECT_CALL(callback, TerminateRoute(base::Optional<std::string>(),
RouteRequestResult::OK)); RouteRequestResult::OK));
EXPECT_CALL(*receiver_creator_.receiver(), TerminateInternal()); EXPECT_CALL(*receiver_creator_.receiver(), TerminateInternal());
EXPECT_CALL(router_,
OnPresentationConnectionStateChanged(
presentation_id,
mojom::MediaRouter::PresentationConnectionState::TERMINATED));
provider_pointer_->TerminateRoute( provider_pointer_->TerminateRoute(
presentation_id, base::BindOnce(&MockCallback::TerminateRoute, presentation_id, base::BindOnce(&MockCallback::TerminateRoute,
base::Unretained(&callback))); base::Unretained(&callback)));
......
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