Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2748)

Unified Diff: chrome/browser/media/router/media_router_mojo_impl.h

Issue 1259073004: [Presentation API] Change ListenForSessionMessages API to client-style. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Compile fix Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_;

Powered by Google App Engine
This is Rietveld 408576698