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 167b8e37c0cdffd9264c8f2db1a135b80282ea44..9fe0bdf44fdff2b6427fc576b56abbc8b6fb80a3 100644 |
| --- a/chrome/browser/media/router/media_router_mojo_impl.h |
| +++ b/chrome/browser/media/router/media_router_mojo_impl.h |
| @@ -72,16 +72,7 @@ class MediaRouterMojoImpl : public MediaRouter, |
| void SendRouteMessage(const MediaRoute::Id& route_id, |
| const std::string& message, |
| const SendRouteMessageCallback& callback) override; |
| - void ListenForRouteMessages( |
| - const std::vector<MediaRoute::Id>& route_ids, |
| - const PresentationSessionMessageCallback& message_cb) override; |
| void ClearIssue(const Issue::Id& issue_id) override; |
| - void RegisterMediaSinksObserver(MediaSinksObserver* observer) override; |
| - void UnregisterMediaSinksObserver(MediaSinksObserver* observer) override; |
| - void RegisterMediaRoutesObserver(MediaRoutesObserver* observer) override; |
| - void UnregisterMediaRoutesObserver(MediaRoutesObserver* observer) override; |
| - void RegisterIssuesObserver(IssuesObserver* observer) override; |
| - void UnregisterIssuesObserver(IssuesObserver* observer) override; |
| const std::string& media_route_provider_extension_id() const { |
| return media_route_provider_extension_id_; |
| @@ -95,6 +86,10 @@ class MediaRouterMojoImpl : public MediaRouter, |
| friend class MediaRouterFactory; |
| friend class MediaRouterMojoTest; |
| + FRIEND_TEST_ALL_PREFIXES(MediaRouterMojoImplTest, |
| + RegisterAndUnregisterMediaSinksObserver); |
| + FRIEND_TEST_ALL_PREFIXES(MediaRouterMojoImplTest, |
| + RegisterAndUnregisterMediaRoutesObserver); |
| FRIEND_TEST_ALL_PREFIXES(MediaRouterMojoExtensionTest, |
| DeferredBindingAndSuspension); |
| @@ -120,6 +115,18 @@ class MediaRouterMojoImpl : public MediaRouter, |
| // Dispatches the Mojo requests queued in |pending_requests_|. |
| void ExecutePendingRequests(); |
| + // MediaRouter implementation. |
| + void RegisterMediaSinksObserver(MediaSinksObserver* observer) override; |
| + void UnregisterMediaSinksObserver(MediaSinksObserver* observer) override; |
| + void RegisterMediaRoutesObserver(MediaRoutesObserver* observer) override; |
| + void UnregisterMediaRoutesObserver(MediaRoutesObserver* observer) override; |
| + void RegisterIssuesObserver(IssuesObserver* observer) override; |
| + void UnregisterIssuesObserver(IssuesObserver* observer) override; |
| + void RegisterPresentationSessionMessagesObserver( |
| + PresentationSessionMessagesObserver* observer) override; |
| + void UnregisterPresentationSessionMessagesObserver( |
| + PresentationSessionMessagesObserver* observer) override; |
| + |
| // These calls invoke methods in the component extension via Mojo. |
| void DoCreateRoute(const MediaSource::Id& source_id, |
| const MediaSink::Id& sink_id, |
| @@ -135,9 +142,7 @@ class MediaRouterMojoImpl : public MediaRouter, |
| void DoSendSessionMessage(const MediaRoute::Id& route_id, |
| const std::string& message, |
| const SendRouteMessageCallback& callback); |
| - void DoListenForRouteMessages( |
| - const std::vector<MediaRoute::Id>& route_ids, |
| - const PresentationSessionMessageCallback& message_cb); |
| + void DoListenForRouteMessages(const MediaRoute::Id& route_id); |
| void DoClearIssue(const Issue::Id& issue_id); |
| void DoStartObservingMediaSinks(const MediaSource::Id& source_id); |
| void DoStopObservingMediaSinks(const MediaSource::Id& source_id); |
| @@ -147,10 +152,10 @@ class MediaRouterMojoImpl : public MediaRouter, |
| void DoStopObservingIssues(); |
| // Invoked when the next batch of messages arrives. |
| + // |route_id|: ID of route of the messages. |
| // |messages|: A list of messages received. |
| - // |message_cb|: The callback to invoke to pass on the messages received. |
| - void OnRouteMessageReceived( |
| - const PresentationSessionMessageCallback& message_cb, |
| + void OnRouteMessagesReceived( |
| + const MediaRoute::Id& route_id, |
| mojo::Array<interfaces::RouteMessagePtr> messages); |
| // Error handler callback for |binding_| and |media_route_provider_|. |
| @@ -176,6 +181,16 @@ class MediaRouterMojoImpl : public MediaRouter, |
| base::ObserverList<MediaRoutesObserver> routes_observers_; |
| + base::ScopedPtrHashMap< |
| + MediaRoute::Id, |
| + scoped_ptr<base::ObserverList<PresentationSessionMessagesObserver>>> |
| + messages_observers_; |
| + // IDs of MediaRoutes being listened for messages. Note that this is |
| + // different from |message_observers_| because we might be waiting for |
| + // |OnRouteMessagesReceived()| to be invoked after all observers for that |
|
haibinlu
2015/07/30 23:59:11
if all observers for the route message have been r
imcheng
2015/08/03 18:56:33
Currently we stop listening when we see there are
|
| + // route have been removed. |
| + base::hash_set<MediaRoute::Id> listening_messages_for_routes_; |
| + |
| // Binds |this| to a Mojo connection stub for interfaces::MediaRouter. |
| scoped_ptr<mojo::Binding<interfaces::MediaRouter>> binding_; |