Chromium Code Reviews| Index: chrome/browser/media/android/router/media_router_android.cc |
| diff --git a/chrome/browser/media/android/router/media_router_android.cc b/chrome/browser/media/android/router/media_router_android.cc |
| index 614d4d9ec7aa1c988a527856dadcfe0bd18eb3ce..f27e23bb28a93ff46327cfa1bd758a995529a868 100644 |
| --- a/chrome/browser/media/android/router/media_router_android.cc |
| +++ b/chrome/browser/media/android/router/media_router_android.cc |
| @@ -104,6 +104,15 @@ void MediaRouterAndroid::CreateRoute( |
| route_request_id); |
| } |
| +void MediaRouterAndroid::JoinRouteByRouteId( |
| + const MediaSource::Id& source, |
| + const MediaRoute::Id& route_id, |
| + const GURL& origin, |
| + content::WebContents* web_contents, |
| + const std::vector<MediaRouteResponseCallback>& callbacks) { |
| + NOTIMPLEMENTED(); |
| +} |
| + |
| void MediaRouterAndroid::JoinRoute( |
| const MediaSource::Id& source_id, |
| const std::string& presentation_id, |
| @@ -259,14 +268,26 @@ void MediaRouterAndroid::UnregisterMediaSinksObserver( |
| void MediaRouterAndroid::RegisterMediaRoutesObserver( |
| MediaRoutesObserver* observer) { |
| DVLOG(2) << "Added MediaRoutesObserver: " << observer; |
| - routes_observers_.AddObserver(observer); |
| + const std::string& source_id = observer->source_id(); |
| + base::ObserverList<MediaRoutesObserver>* observer_list = |
|
imcheng
2015/11/26 00:49:45
Use auto* so it's consistent with below.
matt.boetger
2015/12/01 01:26:55
Reverting.
|
| + routes_observers_.get(source_id); |
| + if (!observer_list) { |
|
imcheng
2015/11/26 00:49:45
It looks like we don't currently support joinable
whywhat
2015/11/26 14:43:04
So actually, on Android it doesn't seem like we ca
matt.boetger
2015/12/01 01:26:55
Done.
matt.boetger
2015/12/01 01:26:55
Done.
|
| + observer_list = new base::ObserverList<MediaRoutesObserver>; |
| + routes_observers_.add(source_id, make_scoped_ptr(observer_list)); |
| + } else { |
| + DCHECK(!observer_list->HasObserver(observer)); |
| + } |
| + observer_list->AddObserver(observer); |
| } |
| void MediaRouterAndroid::UnregisterMediaRoutesObserver( |
| MediaRoutesObserver* observer) { |
| - if (!routes_observers_.HasObserver(observer)) |
| + const std::string& source_id = observer->source_id(); |
| + auto* observer_list = routes_observers_.get(source_id); |
| + if (!observer_list || !observer_list->HasObserver(observer)) |
| return; |
| - routes_observers_.RemoveObserver(observer); |
| + |
| + observer_list->RemoveObserver(observer); |
| } |
| void MediaRouterAndroid::RegisterIssuesObserver(IssuesObserver* observer) { |
| @@ -363,8 +384,13 @@ void MediaRouterAndroid::OnRouteCreated( |
| route_requests_.Remove(jroute_request_id); |
| active_routes_.push_back(route); |
| - FOR_EACH_OBSERVER(MediaRoutesObserver, routes_observers_, |
| - OnRoutesUpdated(active_routes_)); |
| + for (auto it = routes_observers_.begin(); |
| + it != routes_observers_.end(); |
| + ++it) { |
| + FOR_EACH_OBSERVER(MediaRoutesObserver, *it->second, |
| + OnRoutesUpdated(active_routes_, |
| + std::vector<MediaRoute::Id>())); |
| + } |
| } |
| void MediaRouterAndroid::OnRouteRequestError( |
| @@ -394,8 +420,13 @@ void MediaRouterAndroid::OnRouteClosed(JNIEnv* env, |
| break; |
| } |
| - FOR_EACH_OBSERVER(MediaRoutesObserver, routes_observers_, |
| - OnRoutesUpdated(active_routes_)); |
| + for (auto it = routes_observers_.begin(); |
| + it != routes_observers_.end(); |
| + ++it) { |
| + FOR_EACH_OBSERVER(MediaRoutesObserver, *it->second, |
| + OnRoutesUpdated(active_routes_, |
| + std::vector<MediaRoute::Id>())); |
| + } |
| } |
| void MediaRouterAndroid::OnMessageSentResult( |