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

Side by Side 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 unified diff | 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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))
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 10 matching lines...) Expand all
224 JNIEnv* env, 228 JNIEnv* env,
225 jobject obj, 229 jobject obj,
226 jstring jmedia_route_id, 230 jstring jmedia_route_id,
227 jint jcreate_route_request_id, 231 jint jcreate_route_request_id,
228 jboolean jis_local) { 232 jboolean jis_local) {
229 CreateMediaRouteRequest* request = 233 CreateMediaRouteRequest* request =
230 create_route_requests_.Lookup(jcreate_route_request_id); 234 create_route_requests_.Lookup(jcreate_route_request_id);
231 if (!request) 235 if (!request)
232 return; 236 return;
233 237
234 scoped_ptr<MediaRoute> route(new MediaRoute( 238 MediaRoute route(
235 ConvertJavaStringToUTF8(env, jmedia_route_id), 239 ConvertJavaStringToUTF8(env, jmedia_route_id),
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, 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
251 active_routes_.push_back(route);
252 FOR_EACH_OBSERVER(MediaRoutesObserver, routes_observers_,
253 OnRoutesUpdated(active_routes_));
246 } 254 }
247 255
248 void MediaRouterAndroid::OnRouteCreationError( 256 void MediaRouterAndroid::OnRouteCreationError(
249 JNIEnv* env, 257 JNIEnv* env,
250 jobject obj, 258 jobject obj,
251 jstring jerror_text, 259 jstring jerror_text,
252 jint jcreate_route_request_id) { 260 jint jcreate_route_request_id) {
253 CreateMediaRouteRequest* request = 261 CreateMediaRouteRequest* request =
254 create_route_requests_.Lookup(jcreate_route_request_id); 262 create_route_requests_.Lookup(jcreate_route_request_id);
255 if (!request) 263 if (!request)
256 return; 264 return;
257 265
258 std::string error_text = ConvertJavaStringToUTF8(env, jerror_text); 266 std::string error_text = ConvertJavaStringToUTF8(env, jerror_text);
259 267
260 for (const MediaRouteResponseCallback& callback : request->callbacks) 268 for (const MediaRouteResponseCallback& callback : request->callbacks)
261 callback.Run(nullptr, std::string(), error_text); 269 callback.Run(nullptr, std::string(), error_text);
262 270
263 create_route_requests_.Remove(jcreate_route_request_id); 271 create_route_requests_.Remove(jcreate_route_request_id);
264 } 272 }
265 273
274 void MediaRouterAndroid::OnRouteClosed(JNIEnv* env,
275 jobject obj,
276 jstring jmedia_route_id) {
277 MediaRoute::Id route_id = ConvertJavaStringToUTF8(env, jmedia_route_id);
278 for (auto it = active_routes_.begin(); it != active_routes_.end(); ++it)
279 if (it->media_route_id() == route_id) {
280 active_routes_.erase(it);
281 break;
282 }
283
284 FOR_EACH_OBSERVER(MediaRoutesObserver, routes_observers_,
285 OnRoutesUpdated(active_routes_));
286 }
287
266 } // namespace media_router 288 } // namespace media_router
OLDNEW
« 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