Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4093)

Unified Diff: chrome/browser/media/android/router/media_router_android.cc

Issue 1291203003: [Presentation API, Android] Implement routes observers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@close-route
Patch Set: Rebase Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/media/android/router/media_router_android.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 218cec24451098e392533e2099622c152d43e0cf..f689ad71f8c328ed8fcee13bfb9af11871b8d57a 100644
--- a/chrome/browser/media/android/router/media_router_android.cc
+++ b/chrome/browser/media/android/router/media_router_android.cc
@@ -8,6 +8,7 @@
#include "base/android/jni_string.h"
#include "base/guid.h"
#include "base/logging.h"
+#include "chrome/browser/media/router/media_routes_observer.h"
#include "chrome/browser/media/router/media_sinks_observer.h"
#include "jni/ChromeMediaRouter_jni.h"
@@ -167,12 +168,15 @@ void MediaRouterAndroid::UnregisterMediaSinksObserver(
void MediaRouterAndroid::RegisterMediaRoutesObserver(
MediaRoutesObserver* observer) {
- NOTIMPLEMENTED();
+ DVLOG(2) << "Added MediaRoutesObserver: " << observer;
+ routes_observers_.AddObserver(observer);
}
void MediaRouterAndroid::UnregisterMediaRoutesObserver(
MediaRoutesObserver* observer) {
- NOTIMPLEMENTED();
+ if (!routes_observers_.HasObserver(observer))
+ return;
+ routes_observers_.RemoveObserver(observer);
}
void MediaRouterAndroid::RegisterIssuesObserver(IssuesObserver* observer) {
@@ -197,10 +201,10 @@ void MediaRouterAndroid::OnSinksReceived(
JNIEnv* env,
jobject obj,
jstring jsource_urn,
- jint count) {
+ jint jcount) {
std::vector<MediaSink> sinks_converted;
- sinks_converted.reserve(count);
- for (int i = 0; i < count; ++i) {
+ sinks_converted.reserve(jcount);
+ for (int i = 0; i < jcount; ++i) {
ScopedJavaLocalRef<jstring> jsink_urn =
Java_ChromeMediaRouter_getSinkUrn(
env, java_media_router_.obj(), jsource_urn, i);
@@ -231,18 +235,22 @@ void MediaRouterAndroid::OnRouteCreated(
if (!request)
return;
- scoped_ptr<MediaRoute> route(new MediaRoute(
+ MediaRoute route(
ConvertJavaStringToUTF8(env, jmedia_route_id),
request->media_source,
request->media_sink,
std::string(),
jis_local,
- std::string()));
+ std::string());
for (const MediaRouteResponseCallback& callback : request->callbacks)
- callback.Run(route.get(), request->presentation_id, std::string());
+ callback.Run(&route, request->presentation_id, std::string());
create_route_requests_.Remove(jcreate_route_request_id);
+
+ active_routes_.push_back(route);
+ FOR_EACH_OBSERVER(MediaRoutesObserver, routes_observers_,
+ OnRoutesUpdated(active_routes_));
}
void MediaRouterAndroid::OnRouteCreationError(
@@ -263,4 +271,18 @@ void MediaRouterAndroid::OnRouteCreationError(
create_route_requests_.Remove(jcreate_route_request_id);
}
+void MediaRouterAndroid::OnRouteClosed(JNIEnv* env,
+ jobject obj,
+ jstring jmedia_route_id) {
+ MediaRoute::Id route_id = ConvertJavaStringToUTF8(env, jmedia_route_id);
+ for (auto it = active_routes_.begin(); it != active_routes_.end(); ++it)
+ if (it->media_route_id() == route_id) {
+ active_routes_.erase(it);
+ break;
+ }
+
+ FOR_EACH_OBSERVER(MediaRoutesObserver, routes_observers_,
+ OnRoutesUpdated(active_routes_));
+}
+
} // namespace media_router
« no previous file with comments | « chrome/browser/media/android/router/media_router_android.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698