| Index: chrome/browser/media/router/media_router_mojo_impl.h
|
| diff --git a/chrome/browser/media/router/media_router_mojo_impl.h b/chrome/browser/media/router/media_router_mojo_impl.h
|
| index 054223da4ddcf37223a19fb30ab4025eb6e959cb..72137e9115ef32ae0c4138dc6a4a9b1bd9e8c6e4 100644
|
| --- a/chrome/browser/media/router/media_router_mojo_impl.h
|
| +++ b/chrome/browser/media/router/media_router_mojo_impl.h
|
| @@ -74,6 +74,12 @@ class MediaRouterMojoImpl : public MediaRouter,
|
| const GURL& origin,
|
| content::WebContents* web_contents,
|
| const std::vector<MediaRouteResponseCallback>& callbacks) override;
|
| + void JoinRouteByRouteId(
|
| + const MediaSource::Id& source,
|
| + const MediaRoute::Id& route_id,
|
| + const GURL& origin,
|
| + content::WebContents* web_contents,
|
| + const std::vector<MediaRouteResponseCallback>& callbacks) override;
|
| void CloseRoute(const MediaRoute::Id& route_id) override;
|
| void SendRouteMessage(const MediaRoute::Id& route_id,
|
| const std::string& message,
|
| @@ -135,7 +141,9 @@ class MediaRouterMojoImpl : public MediaRouter,
|
| ~MediaRouterMediaRoutesObserver() override;
|
|
|
| // media_router::MediaRoutesObserver:
|
| - void OnRoutesUpdated(const std::vector<media_router::MediaRoute>& routes)
|
| + void OnRoutesUpdated(
|
| + const std::vector<media_router::MediaRoute>& routes,
|
| + const std::vector<media_router::MediaRoute::Id>& joinable_route_ids)
|
| override;
|
|
|
| private:
|
| @@ -158,6 +166,18 @@ class MediaRouterMojoImpl : public MediaRouter,
|
| DISALLOW_COPY_AND_ASSIGN(MediaSinksQuery);
|
| };
|
|
|
| + struct MediaRoutesQuery {
|
| + public:
|
| + MediaRoutesQuery();
|
| + ~MediaRoutesQuery();
|
| +
|
| + // True if the query has been sent to the MRPM. False otherwise.
|
| + bool is_active = false;
|
| + base::ObserverList<MediaRoutesObserver> observers;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MediaRoutesQuery);
|
| + };
|
| +
|
| // Standard constructor, used by
|
| // MediaRouterMojoImplFactory::GetApiForBrowserContext.
|
| explicit MediaRouterMojoImpl(
|
| @@ -223,8 +243,8 @@ class MediaRouterMojoImpl : public MediaRouter,
|
| void DoOnPresentationSessionDetached(const MediaRoute::Id& route_id);
|
| void DoStartObservingMediaSinks(const MediaSource::Id& source_id);
|
| void DoStopObservingMediaSinks(const MediaSource::Id& source_id);
|
| - void DoStartObservingMediaRoutes();
|
| - void DoStopObservingMediaRoutes();
|
| + void DoStartObservingMediaRoutes(const MediaSource::Id& source_id);
|
| + void DoStopObservingMediaRoutes(const MediaSource::Id& source_id);
|
|
|
| // Invoked when the next batch of messages arrives.
|
| // |route_id|: ID of route of the messages.
|
| @@ -246,7 +266,9 @@ class MediaRouterMojoImpl : public MediaRouter,
|
| void OnIssue(interfaces::IssuePtr issue) override;
|
| void OnSinksReceived(const mojo::String& media_source,
|
| mojo::Array<interfaces::MediaSinkPtr> sinks) override;
|
| - void OnRoutesUpdated(mojo::Array<interfaces::MediaRoutePtr> routes) override;
|
| + void OnRoutesUpdated(const mojo::String& media_source,
|
| + mojo::Array<interfaces::MediaRoutePtr> routes,
|
| + mojo::Array<mojo::String> joinable_route_ids) override;
|
| void OnSinkAvailabilityUpdated(
|
| interfaces::MediaRouter::SinkAvailability availability) override;
|
|
|
| @@ -283,9 +305,10 @@ class MediaRouterMojoImpl : public MediaRouter,
|
| base::ScopedPtrHashMap<MediaSource::Id, scoped_ptr<MediaSinksQuery>>
|
| sinks_queries_;
|
|
|
| - base::ObserverList<LocalMediaRoutesObserver> local_routes_observers_;
|
| + base::ScopedPtrHashMap<MediaSource::Id, scoped_ptr<MediaRoutesQuery>>
|
| + routes_queries_;
|
|
|
| - base::ObserverList<MediaRoutesObserver> routes_observers_;
|
| + base::ObserverList<LocalMediaRoutesObserver> local_routes_observers_;
|
|
|
| using PresentationSessionMessagesObserverList =
|
| base::ObserverList<PresentationSessionMessagesObserver>;
|
|
|