| 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..3a0f5554a55825c5fc9241195f6f2e2c10971ba7 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 HasLocalRoute() const 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 :
|
| + 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);
|
|
|