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/context_utils.h" | 7 #include "base/android/context_utils.h" |
| 8 #include "base/android/jni_android.h" | 8 #include "base/android/jni_android.h" |
| 9 #include "base/android/jni_array.h" | 9 #include "base/android/jni_array.h" |
| 10 #include "base/android/jni_string.h" | 10 #include "base/android/jni_string.h" |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 98 env, | 98 env, |
| 99 java_media_router_.obj(), | 99 java_media_router_.obj(), |
| 100 jsource_id.obj(), | 100 jsource_id.obj(), |
| 101 jsink_id.obj(), | 101 jsink_id.obj(), |
| 102 jpresentation_id.obj(), | 102 jpresentation_id.obj(), |
| 103 jorigin.obj(), | 103 jorigin.obj(), |
| 104 tab_id, | 104 tab_id, |
| 105 route_request_id); | 105 route_request_id); |
| 106 } | 106 } |
| 107 | 107 |
| 108 void MediaRouterAndroid::JoinRouteByRouteId( | |
| 109 const MediaSource::Id& source, | |
| 110 const MediaRoute::Id& route_id, | |
| 111 const GURL& origin, | |
| 112 content::WebContents* web_contents, | |
| 113 const std::vector<MediaRouteResponseCallback>& callbacks) { | |
| 114 NOTIMPLEMENTED(); | |
| 115 } | |
| 116 | |
| 108 void MediaRouterAndroid::JoinRoute( | 117 void MediaRouterAndroid::JoinRoute( |
| 109 const MediaSource::Id& source_id, | 118 const MediaSource::Id& source_id, |
| 110 const std::string& presentation_id, | 119 const std::string& presentation_id, |
| 111 const GURL& origin, | 120 const GURL& origin, |
| 112 content::WebContents* web_contents, | 121 content::WebContents* web_contents, |
| 113 const std::vector<MediaRouteResponseCallback>& callbacks) { | 122 const std::vector<MediaRouteResponseCallback>& callbacks) { |
| 114 if (!origin.is_valid()) { | 123 if (!origin.is_valid()) { |
| 115 for (const MediaRouteResponseCallback& callback : callbacks) | 124 for (const MediaRouteResponseCallback& callback : callbacks) |
| 116 callback.Run(nullptr, "", "Invalid origin"); | 125 callback.Run(nullptr, "", "Invalid origin"); |
| 117 return; | 126 return; |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 253 ScopedJavaLocalRef<jstring> jsource_id = | 262 ScopedJavaLocalRef<jstring> jsource_id = |
| 254 base::android::ConvertUTF8ToJavaString(env, source_id); | 263 base::android::ConvertUTF8ToJavaString(env, source_id); |
| 255 Java_ChromeMediaRouter_stopObservingMediaSinks( | 264 Java_ChromeMediaRouter_stopObservingMediaSinks( |
| 256 env, java_media_router_.obj(), jsource_id.obj()); | 265 env, java_media_router_.obj(), jsource_id.obj()); |
| 257 } | 266 } |
| 258 } | 267 } |
| 259 | 268 |
| 260 void MediaRouterAndroid::RegisterMediaRoutesObserver( | 269 void MediaRouterAndroid::RegisterMediaRoutesObserver( |
| 261 MediaRoutesObserver* observer) { | 270 MediaRoutesObserver* observer) { |
| 262 DVLOG(2) << "Added MediaRoutesObserver: " << observer; | 271 DVLOG(2) << "Added MediaRoutesObserver: " << observer; |
| 272 const std::string& source_id = observer->source_id(); | |
|
mark a. foltz
2015/12/09 00:48:16
Can this be inlined below?
matt.boetger
2015/12/15 19:21:20
Done.
| |
| 273 if (!source_id.empty()) | |
| 274 NOTIMPLEMENTED() << "Joinable routes query not implemented."; | |
| 275 | |
| 263 routes_observers_.AddObserver(observer); | 276 routes_observers_.AddObserver(observer); |
| 264 } | 277 } |
| 265 | 278 |
| 266 void MediaRouterAndroid::UnregisterMediaRoutesObserver( | 279 void MediaRouterAndroid::UnregisterMediaRoutesObserver( |
| 267 MediaRoutesObserver* observer) { | 280 MediaRoutesObserver* observer) { |
| 268 if (!routes_observers_.HasObserver(observer)) | 281 if (!routes_observers_.HasObserver(observer)) |
| 269 return; | 282 return; |
| 270 routes_observers_.RemoveObserver(observer); | 283 routes_observers_.RemoveObserver(observer); |
| 271 } | 284 } |
| 272 | 285 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 358 jis_local, std::string(), | 371 jis_local, std::string(), |
| 359 true); // TODO(avayvod): Populate for_display. | 372 true); // TODO(avayvod): Populate for_display. |
| 360 | 373 |
| 361 for (const MediaRouteResponseCallback& callback : request->callbacks) | 374 for (const MediaRouteResponseCallback& callback : request->callbacks) |
| 362 callback.Run(&route, request->presentation_id, std::string()); | 375 callback.Run(&route, request->presentation_id, std::string()); |
| 363 | 376 |
| 364 route_requests_.Remove(jroute_request_id); | 377 route_requests_.Remove(jroute_request_id); |
| 365 | 378 |
| 366 active_routes_.push_back(route); | 379 active_routes_.push_back(route); |
| 367 FOR_EACH_OBSERVER(MediaRoutesObserver, routes_observers_, | 380 FOR_EACH_OBSERVER(MediaRoutesObserver, routes_observers_, |
| 368 OnRoutesUpdated(active_routes_)); | 381 OnRoutesUpdated(active_routes_, |
| 382 std::vector<MediaRoute::Id>())); | |
| 369 } | 383 } |
| 370 | 384 |
| 371 void MediaRouterAndroid::OnRouteRequestError( | 385 void MediaRouterAndroid::OnRouteRequestError( |
| 372 JNIEnv* env, | 386 JNIEnv* env, |
| 373 jobject obj, | 387 jobject obj, |
| 374 jstring jerror_text, | 388 jstring jerror_text, |
| 375 jint jroute_request_id) { | 389 jint jroute_request_id) { |
| 376 MediaRouteRequest* request = route_requests_.Lookup(jroute_request_id); | 390 MediaRouteRequest* request = route_requests_.Lookup(jroute_request_id); |
| 377 if (!request) | 391 if (!request) |
| 378 return; | 392 return; |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 389 jobject obj, | 403 jobject obj, |
| 390 jstring jmedia_route_id) { | 404 jstring jmedia_route_id) { |
| 391 MediaRoute::Id route_id = ConvertJavaStringToUTF8(env, jmedia_route_id); | 405 MediaRoute::Id route_id = ConvertJavaStringToUTF8(env, jmedia_route_id); |
| 392 for (auto it = active_routes_.begin(); it != active_routes_.end(); ++it) | 406 for (auto it = active_routes_.begin(); it != active_routes_.end(); ++it) |
| 393 if (it->media_route_id() == route_id) { | 407 if (it->media_route_id() == route_id) { |
| 394 active_routes_.erase(it); | 408 active_routes_.erase(it); |
| 395 break; | 409 break; |
| 396 } | 410 } |
| 397 | 411 |
| 398 FOR_EACH_OBSERVER(MediaRoutesObserver, routes_observers_, | 412 FOR_EACH_OBSERVER(MediaRoutesObserver, routes_observers_, |
| 399 OnRoutesUpdated(active_routes_)); | 413 OnRoutesUpdated(active_routes_, |
| 414 std::vector<MediaRoute::Id>())); | |
| 400 } | 415 } |
| 401 | 416 |
| 402 void MediaRouterAndroid::OnMessageSentResult( | 417 void MediaRouterAndroid::OnMessageSentResult( |
| 403 JNIEnv* env, jobject obj, jboolean jsuccess, jint jcallback_id) { | 418 JNIEnv* env, jobject obj, jboolean jsuccess, jint jcallback_id) { |
| 404 SendRouteMessageCallback* callback = message_callbacks_.Lookup(jcallback_id); | 419 SendRouteMessageCallback* callback = message_callbacks_.Lookup(jcallback_id); |
| 405 callback->Run(jsuccess); | 420 callback->Run(jsuccess); |
| 406 message_callbacks_.Remove(jcallback_id); | 421 message_callbacks_.Remove(jcallback_id); |
| 407 } | 422 } |
| 408 | 423 |
| 409 // Notifies the media router about a message received from the media route. | 424 // Notifies the media router about a message received from the media route. |
| 410 void MediaRouterAndroid::OnMessage( | 425 void MediaRouterAndroid::OnMessage( |
| 411 JNIEnv* env, jobject obj, jstring jmedia_route_id, jstring jmessage) { | 426 JNIEnv* env, jobject obj, jstring jmedia_route_id, jstring jmessage) { |
| 412 MediaRoute::Id route_id = ConvertJavaStringToUTF8(env, jmedia_route_id); | 427 MediaRoute::Id route_id = ConvertJavaStringToUTF8(env, jmedia_route_id); |
| 413 auto* observer_list = messages_observers_.get(route_id); | 428 auto* observer_list = messages_observers_.get(route_id); |
| 414 if (!observer_list) | 429 if (!observer_list) |
| 415 return; | 430 return; |
| 416 | 431 |
| 417 ScopedVector<content::PresentationSessionMessage> session_messages; | 432 ScopedVector<content::PresentationSessionMessage> session_messages; |
| 418 scoped_ptr<content::PresentationSessionMessage> message( | 433 scoped_ptr<content::PresentationSessionMessage> message( |
| 419 new content::PresentationSessionMessage(content::TEXT)); | 434 new content::PresentationSessionMessage(content::TEXT)); |
| 420 message->message = ConvertJavaStringToUTF8(env, jmessage); | 435 message->message = ConvertJavaStringToUTF8(env, jmessage); |
| 421 session_messages.push_back(message.Pass()); | 436 session_messages.push_back(message.Pass()); |
| 422 | 437 |
| 423 FOR_EACH_OBSERVER(PresentationSessionMessagesObserver, *observer_list, | 438 FOR_EACH_OBSERVER(PresentationSessionMessagesObserver, *observer_list, |
| 424 OnMessagesReceived(session_messages, true)); | 439 OnMessagesReceived(session_messages, true)); |
| 425 } | 440 } |
| 426 | 441 |
| 427 } // namespace media_router | 442 } // namespace media_router |
| OLD | NEW |