Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/media/android/router/media_router_android.h" | 5 #include "chrome/browser/media/android/router/media_router_android.h" |
| 6 | 6 |
| 7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
| 8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
| 9 #include "base/guid.h" | 9 #include "base/guid.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "chrome/browser/media/router/media_routes_observer.h" | |
| 11 #include "chrome/browser/media/router/media_sinks_observer.h" | 12 #include "chrome/browser/media/router/media_sinks_observer.h" |
| 12 #include "jni/ChromeMediaRouter_jni.h" | 13 #include "jni/ChromeMediaRouter_jni.h" |
| 13 | 14 |
| 14 using base::android::ConvertUTF8ToJavaString; | 15 using base::android::ConvertUTF8ToJavaString; |
| 15 using base::android::ConvertJavaStringToUTF8; | 16 using base::android::ConvertJavaStringToUTF8; |
| 16 using base::android::ScopedJavaLocalRef; | 17 using base::android::ScopedJavaLocalRef; |
| 17 using base::android::AttachCurrentThread; | 18 using base::android::AttachCurrentThread; |
| 18 | 19 |
| 19 namespace media_router { | 20 namespace media_router { |
| 20 | 21 |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 160 JNIEnv* env = base::android::AttachCurrentThread(); | 161 JNIEnv* env = base::android::AttachCurrentThread(); |
| 161 ScopedJavaLocalRef<jstring> jsource_id = | 162 ScopedJavaLocalRef<jstring> jsource_id = |
| 162 base::android::ConvertUTF8ToJavaString(env, source_id); | 163 base::android::ConvertUTF8ToJavaString(env, source_id); |
| 163 Java_ChromeMediaRouter_stopObservingMediaSinks( | 164 Java_ChromeMediaRouter_stopObservingMediaSinks( |
| 164 env, java_media_router_.obj(), jsource_id.obj()); | 165 env, java_media_router_.obj(), jsource_id.obj()); |
| 165 } | 166 } |
| 166 } | 167 } |
| 167 | 168 |
| 168 void MediaRouterAndroid::RegisterMediaRoutesObserver( | 169 void MediaRouterAndroid::RegisterMediaRoutesObserver( |
| 169 MediaRoutesObserver* observer) { | 170 MediaRoutesObserver* observer) { |
| 170 NOTIMPLEMENTED(); | 171 DVLOG(2) << "Added MediaRoutesObserver: " << observer; |
| 172 routes_observers_.AddObserver(observer); | |
| 171 } | 173 } |
| 172 | 174 |
| 173 void MediaRouterAndroid::UnregisterMediaRoutesObserver( | 175 void MediaRouterAndroid::UnregisterMediaRoutesObserver( |
| 174 MediaRoutesObserver* observer) { | 176 MediaRoutesObserver* observer) { |
| 175 NOTIMPLEMENTED(); | 177 if (!routes_observers_.HasObserver(observer)) |
|
mlamouri (slow - plz ping)
2015/08/18 22:39:37
nit: I don't think this check is necessary.
whywhat
2015/08/19 00:26:43
I copied it from the desktop implementation :) Not
| |
| 178 return; | |
| 179 routes_observers_.RemoveObserver(observer); | |
| 176 } | 180 } |
| 177 | 181 |
| 178 void MediaRouterAndroid::RegisterIssuesObserver(IssuesObserver* observer) { | 182 void MediaRouterAndroid::RegisterIssuesObserver(IssuesObserver* observer) { |
| 179 NOTIMPLEMENTED(); | 183 NOTIMPLEMENTED(); |
| 180 } | 184 } |
| 181 | 185 |
| 182 void MediaRouterAndroid::UnregisterIssuesObserver(IssuesObserver* observer) { | 186 void MediaRouterAndroid::UnregisterIssuesObserver(IssuesObserver* observer) { |
| 183 NOTIMPLEMENTED(); | 187 NOTIMPLEMENTED(); |
| 184 } | 188 } |
| 185 | 189 |
| 186 void MediaRouterAndroid::RegisterPresentationSessionMessagesObserver( | 190 void MediaRouterAndroid::RegisterPresentationSessionMessagesObserver( |
| 187 PresentationSessionMessagesObserver* observer) { | 191 PresentationSessionMessagesObserver* observer) { |
| 188 NOTIMPLEMENTED(); | 192 NOTIMPLEMENTED(); |
| 189 } | 193 } |
| 190 | 194 |
| 191 void MediaRouterAndroid::UnregisterPresentationSessionMessagesObserver( | 195 void MediaRouterAndroid::UnregisterPresentationSessionMessagesObserver( |
| 192 PresentationSessionMessagesObserver* observer) { | 196 PresentationSessionMessagesObserver* observer) { |
| 193 NOTIMPLEMENTED(); | 197 NOTIMPLEMENTED(); |
| 194 } | 198 } |
| 195 | 199 |
| 196 void MediaRouterAndroid::OnSinksReceived( | 200 void MediaRouterAndroid::OnSinksReceived( |
| 197 JNIEnv* env, | 201 JNIEnv* env, |
| 198 jobject obj, | 202 jobject obj, |
| 199 jstring jsource_urn, | 203 jstring jsource_urn, |
| 200 jint count) { | 204 jint jcount) { |
| 201 std::vector<MediaSink> sinks_converted; | 205 std::vector<MediaSink> sinks_converted; |
| 202 sinks_converted.reserve(count); | 206 sinks_converted.reserve(jcount); |
| 203 for (int i = 0; i < count; ++i) { | 207 for (int i = 0; i < jcount; ++i) { |
| 204 ScopedJavaLocalRef<jstring> jsink_urn = | 208 ScopedJavaLocalRef<jstring> jsink_urn = |
| 205 Java_ChromeMediaRouter_getSinkUrn( | 209 Java_ChromeMediaRouter_getSinkUrn( |
| 206 env, java_media_router_.obj(), jsource_urn, i); | 210 env, java_media_router_.obj(), jsource_urn, i); |
| 207 ScopedJavaLocalRef<jstring> jsink_name = | 211 ScopedJavaLocalRef<jstring> jsink_name = |
| 208 Java_ChromeMediaRouter_getSinkName( | 212 Java_ChromeMediaRouter_getSinkName( |
| 209 env, java_media_router_.obj(), jsource_urn, i); | 213 env, java_media_router_.obj(), jsource_urn, i); |
| 210 sinks_converted.push_back( | 214 sinks_converted.push_back( |
| 211 MediaSink(ConvertJavaStringToUTF8(env, jsink_urn.obj()), | 215 MediaSink(ConvertJavaStringToUTF8(env, jsink_urn.obj()), |
| 212 ConvertJavaStringToUTF8(env, jsink_name.obj()))); | 216 ConvertJavaStringToUTF8(env, jsink_name.obj()))); |
| 213 } | 217 } |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 236 request->media_source, | 240 request->media_source, |
| 237 request->media_sink, | 241 request->media_sink, |
| 238 std::string(), | 242 std::string(), |
| 239 jis_local, | 243 jis_local, |
| 240 std::string())); | 244 std::string())); |
| 241 | 245 |
| 242 for (const MediaRouteResponseCallback& callback : request->callbacks) | 246 for (const MediaRouteResponseCallback& callback : request->callbacks) |
| 243 callback.Run(route.get(), request->presentation_id, std::string()); | 247 callback.Run(route.get(), request->presentation_id, std::string()); |
| 244 | 248 |
| 245 create_route_requests_.Remove(jcreate_route_request_id); | 249 create_route_requests_.Remove(jcreate_route_request_id); |
| 250 active_routes_.add(route->media_route_id(), route.Pass()); | |
| 251 UpdateRoutesObservers(); | |
| 246 } | 252 } |
| 247 | 253 |
| 248 void MediaRouterAndroid::OnRouteCreationError( | 254 void MediaRouterAndroid::OnRouteCreationError( |
| 249 JNIEnv* env, | 255 JNIEnv* env, |
| 250 jobject obj, | 256 jobject obj, |
| 251 jstring jerror_text, | 257 jstring jerror_text, |
| 252 jint jcreate_route_request_id) { | 258 jint jcreate_route_request_id) { |
| 253 CreateMediaRouteRequest* request = | 259 CreateMediaRouteRequest* request = |
| 254 create_route_requests_.Lookup(jcreate_route_request_id); | 260 create_route_requests_.Lookup(jcreate_route_request_id); |
| 255 if (!request) | 261 if (!request) |
| 256 return; | 262 return; |
| 257 | 263 |
| 258 std::string error_text = ConvertJavaStringToUTF8(env, jerror_text); | 264 std::string error_text = ConvertJavaStringToUTF8(env, jerror_text); |
| 259 | 265 |
| 260 for (const MediaRouteResponseCallback& callback : request->callbacks) | 266 for (const MediaRouteResponseCallback& callback : request->callbacks) |
| 261 callback.Run(nullptr, std::string(), error_text); | 267 callback.Run(nullptr, std::string(), error_text); |
| 262 | 268 |
| 263 create_route_requests_.Remove(jcreate_route_request_id); | 269 create_route_requests_.Remove(jcreate_route_request_id); |
| 264 } | 270 } |
| 265 | 271 |
| 272 void MediaRouterAndroid::OnRouteClosed(JNIEnv* env, | |
| 273 jobject obj, | |
| 274 jstring jmedia_route_id) { | |
| 275 MediaRoute::Id route_id = ConvertJavaStringToUTF8(env, jmedia_route_id); | |
| 276 active_routes_.erase(route_id); | |
| 277 | |
| 278 UpdateRoutesObservers(); | |
| 279 } | |
| 280 | |
| 281 void MediaRouterAndroid::UpdateRoutesObservers() { | |
| 282 std::vector<MediaRoute> routes; | |
| 283 routes.reserve(active_routes_.size()); | |
| 284 for (auto it = active_routes_.begin(); it != active_routes_.end(); ++it) | |
|
mlamouri (slow - plz ping)
2015/08/18 22:39:37
nit: const auto& it
also, can you do: for (const
whywhat
2015/08/19 00:26:43
A const reference to iterator can't be ++'ed
| |
| 285 routes.push_back(*it->second); | |
|
mlamouri (slow - plz ping)
2015/08/18 22:39:37
nit:
routes.push_back(*(it->second));
| |
| 286 | |
| 287 FOR_EACH_OBSERVER(MediaRoutesObserver, routes_observers_, | |
| 288 OnRoutesUpdated(routes)); | |
| 289 } | |
| 290 | |
| 266 } // namespace media_router | 291 } // namespace media_router |
| OLD | NEW |