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 a344e83c4445c78bfd79b0b27c64d662c914d43d..2faa1b5b57edadc6c55378216425b13224676678 100644 |
| --- a/chrome/browser/media/router/media_router_mojo_impl.h |
| +++ b/chrome/browser/media/router/media_router_mojo_impl.h |
| @@ -24,6 +24,7 @@ |
| #include "chrome/browser/media/router/issue_manager.h" |
| #include "chrome/browser/media/router/media_router.h" |
| #include "chrome/browser/media/router/media_router.mojom.h" |
| +#include "chrome/browser/media/router/media_routes_observer.h" |
| #include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h" |
| namespace content { |
| @@ -83,6 +84,7 @@ class MediaRouterMojoImpl : public MediaRouter, |
| void AddIssue(const Issue& issue) override; |
| void ClearIssue(const Issue::Id& issue_id) override; |
| void OnPresentationSessionDetached(const MediaRoute::Id& route_id) override; |
| + bool GetHasLocalRoute() override; |
| const std::string& media_route_provider_extension_id() const { |
| return media_route_provider_extension_id_; |
| @@ -105,6 +107,22 @@ class MediaRouterMojoImpl : public MediaRouter, |
| FRIEND_TEST_ALL_PREFIXES(MediaRouterMojoExtensionTest, |
| DeferredBindingAndSuspension); |
| + class MediaRouterMediaRoutesObserver : |
|
imcheng
2015/10/02 17:21:11
Consider moving this into an anonymous namespace i
apacible
2015/10/02 18:48:20
Done.
|
| + public media_router::MediaRoutesObserver { |
| + public: |
| + explicit MediaRouterMediaRoutesObserver(MediaRouterMojoImpl* router); |
| + ~MediaRouterMediaRoutesObserver() override; |
| + |
| + // media_router::MediaRoutesObserver: |
| + void OnRoutesUpdated(const std::vector<media_router::MediaRoute>& routes) |
| + override; |
| + |
| + private: |
| + MediaRouterMojoImpl* const router_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(MediaRouterMediaRoutesObserver); |
| + }; |
| + |
| // Standard constructor, used by |
| // MediaRouterMojoImplFactory::GetApiForBrowserContext. |
| explicit MediaRouterMojoImpl( |
| @@ -138,6 +156,10 @@ class MediaRouterMojoImpl : public MediaRouter, |
| PresentationSessionMessagesObserver* observer) override; |
| void UnregisterPresentationSessionMessagesObserver( |
| PresentationSessionMessagesObserver* observer) override; |
| + void RegisterLocalMediaRoutesObserver( |
| + LocalMediaRoutesObserver* observer) override; |
| + void UnregisterLocalMediaRoutesObserver( |
| + LocalMediaRoutesObserver* observer) override; |
| // These calls invoke methods in the component extension via Mojo. |
| void DoCreateRoute(const MediaSource::Id& source_id, |
| @@ -187,6 +209,16 @@ class MediaRouterMojoImpl : public MediaRouter, |
| mojo::Array<interfaces::MediaSinkPtr> sinks) override; |
| void OnRoutesUpdated(mojo::Array<interfaces::MediaRoutePtr> routes) override; |
| + // Converts the callback result of calling Mojo CreateRoute()/JoinRoute() |
| + // into a local callback. |
| + void RouteResponseReceived( |
| + const std::string& presentation_id, |
| + const std::vector<MediaRouteResponseCallback>& callbacks, |
| + interfaces::MediaRoutePtr media_route, |
| + const mojo::String& error_text); |
| + |
| + void UpdateHasLocalRoute(bool has_local_route); |
| + |
| // Pending requests queued to be executed once component extension |
| // becomes ready. |
| std::vector<base::Closure> pending_requests_; |
| @@ -195,6 +227,8 @@ class MediaRouterMojoImpl : public MediaRouter, |
| scoped_ptr<base::ObserverList<MediaSinksObserver>>> |
| sinks_observers_; |
| + base::ObserverList<LocalMediaRoutesObserver> local_routes_observers_; |
| + |
| base::ObserverList<MediaRoutesObserver> routes_observers_; |
| using PresentationSessionMessagesObserverList = |
| @@ -210,6 +244,8 @@ class MediaRouterMojoImpl : public MediaRouter, |
| IssueManager issue_manager_; |
| + scoped_ptr<media_router::MediaRoutesObserver> routes_observer_; |
| + |
| // Binds |this| to a Mojo connection stub for interfaces::MediaRouter. |
| scoped_ptr<mojo::Binding<interfaces::MediaRouter>> binding_; |
| @@ -234,6 +270,8 @@ class MediaRouterMojoImpl : public MediaRouter, |
| // therefore stale. |
| std::string instance_id_; |
| + bool has_local_route_; |
| + |
| base::ThreadChecker thread_checker_; |
| DISALLOW_COPY_AND_ASSIGN(MediaRouterMojoImpl); |