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..d567fc9e45c951b0a51887c511fa119a023c0847 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_; |
@@ -92,6 +94,8 @@ class MediaRouterMojoImpl : public MediaRouter, |
instance_id_ = instance_id; |
} |
+ void UpdateHasLocalRoute(bool has_local_route); |
imcheng
2015/10/02 19:54:43
ok, I see now why you had the MediaRoutesObserver
apacible
2015/10/02 20:45:48
No problem, switched back.
|
+ |
private: |
friend class MediaRouterFactory; |
friend class MediaRouterMojoExtensionTest; |
@@ -138,6 +142,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 +195,14 @@ 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); |
+ |
// Pending requests queued to be executed once component extension |
// becomes ready. |
std::vector<base::Closure> pending_requests_; |
@@ -195,6 +211,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 +228,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 +254,8 @@ class MediaRouterMojoImpl : public MediaRouter, |
// therefore stale. |
std::string instance_id_; |
+ bool has_local_route_; |
+ |
base::ThreadChecker thread_checker_; |
DISALLOW_COPY_AND_ASSIGN(MediaRouterMojoImpl); |