| 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 bfe616a1a4e3e405755284d432c28f98cbdcab4f..54b684b70e763e7f9dd073410a795e197177dd3d 100644
|
| --- a/chrome/browser/media/router/media_router_mojo_impl.h
|
| +++ b/chrome/browser/media/router/media_router_mojo_impl.h
|
| @@ -160,6 +160,20 @@ class MediaRouterMojoImpl : public MediaRouterBase,
|
| DISALLOW_COPY_AND_ASSIGN(MediaSinksQuery);
|
| };
|
|
|
| + // Represents a query to the MRPM for media sinks with a certain sink ID and
|
| + // holds observers for the query. This struct owns the observers because after
|
| + // they are notified they need to be destroyed.
|
| + struct MediaSinksSearchQuery {
|
| + public:
|
| + MediaSinksSearchQuery();
|
| + ~MediaSinksSearchQuery();
|
| +
|
| + std::vector<scoped_ptr<MediaSinksSearchRequest>> observers;
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(MediaSinksSearchQuery);
|
| + };
|
| +
|
| struct MediaRoutesQuery {
|
| public:
|
| MediaRoutesQuery();
|
| @@ -202,6 +216,8 @@ class MediaRouterMojoImpl : public MediaRouterBase,
|
| // MediaRouter implementation.
|
| bool RegisterMediaSinksObserver(MediaSinksObserver* observer) override;
|
| void UnregisterMediaSinksObserver(MediaSinksObserver* observer) override;
|
| + bool RegisterMediaSinksSearchRequest(
|
| + scoped_ptr<MediaSinksSearchRequest> request) override;
|
| void RegisterMediaRoutesObserver(MediaRoutesObserver* observer) override;
|
| void UnregisterMediaRoutesObserver(MediaRoutesObserver* observer) override;
|
| void RegisterIssuesObserver(IssuesObserver* observer) override;
|
| @@ -247,6 +263,8 @@ class MediaRouterMojoImpl : public MediaRouterBase,
|
| void DoStopObservingMediaSinks(const MediaSource::Id& source_id);
|
| void DoStartObservingMediaRoutes(const MediaSource::Id& source_id);
|
| void DoStopObservingMediaRoutes(const MediaSource::Id& source_id);
|
| + void DoSearchProviders(const MediaSource::Id& source_id,
|
| + const MediaSink::Id& sink_id);
|
|
|
| // Invoked when the next batch of messages arrives.
|
| // |route_id|: ID of route of the messages.
|
| @@ -268,9 +286,12 @@ class MediaRouterMojoImpl : public MediaRouterBase,
|
| void OnIssue(interfaces::IssuePtr issue) override;
|
| void OnSinksReceived(const mojo::String& media_source,
|
| mojo::Array<interfaces::MediaSinkPtr> sinks) override;
|
| + void OnSearchSinksReceived(
|
| + const mojo::String& sink_id,
|
| + mojo::Array<interfaces::MediaSinkPtr> sinks) override;
|
| void OnRoutesUpdated(mojo::Array<interfaces::MediaRoutePtr> routes,
|
| - const mojo::String& media_source,
|
| - mojo::Array<mojo::String> joinable_route_ids) override;
|
| + const mojo::String& media_source,
|
| + mojo::Array<mojo::String> joinable_route_ids) override;
|
| void OnSinkAvailabilityUpdated(
|
| interfaces::MediaRouter::SinkAvailability availability) override;
|
| void OnPresentationConnectionStateChanged(
|
| @@ -321,6 +342,9 @@ class MediaRouterMojoImpl : public MediaRouterBase,
|
| base::ScopedPtrHashMap<MediaSource::Id, scoped_ptr<MediaSinksQuery>>
|
| sinks_queries_;
|
|
|
| + std::unordered_map<MediaSink::Id, scoped_ptr<MediaSinksSearchQuery>>
|
| + search_queries_;
|
| +
|
| base::ScopedPtrHashMap<MediaSource::Id, scoped_ptr<MediaRoutesQuery>>
|
| routes_queries_;
|
|
|
|
|