Chromium Code Reviews| 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..a393f7c5fcc460d13e7b64d97553ce7521a8f2e3 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, |
| @@ -131,11 +137,14 @@ class MediaRouterMojoImpl : public MediaRouter, |
| class MediaRouterMediaRoutesObserver : |
| public media_router::MediaRoutesObserver { |
| public: |
| - explicit MediaRouterMediaRoutesObserver(MediaRouterMojoImpl* router); |
| + explicit MediaRouterMediaRoutesObserver(MediaRouterMojoImpl* router, |
| + const MediaSource::Id source_id = std::string("")); |
|
imcheng
2015/11/19 18:55:08
|source_id| is not needed?
matt.boetger
2015/11/24 19:45:23
Done.
|
| ~MediaRouterMediaRoutesObserver() override; |
| // media_router::MediaRoutesObserver: |
| - void OnRoutesUpdated(const std::vector<media_router::MediaRoute>& routes) |
| + void OnRoutesUpdated(const MediaSource::Id source_id, |
| + const std::vector<media_router::MediaRoute>& routes, |
| + const std::vector<media_router::MediaRoute>& joinable_routes) |
| override; |
| private: |
| @@ -158,6 +167,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 +244,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 +267,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<interfaces::MediaRoutePtr> joinable_routes) override; |
| void OnSinkAvailabilityUpdated( |
| interfaces::MediaRouter::SinkAvailability availability) override; |
| @@ -283,9 +306,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>; |