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 "content/renderer/presentation/presentation_dispatcher.h" | 5 #include "content/renderer/presentation/presentation_dispatcher.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 | 218 |
219 presentation_service_->CloseSession( | 219 presentation_service_->CloseSession( |
220 presentationUrl.utf8(), | 220 presentationUrl.utf8(), |
221 presentationId.utf8()); | 221 presentationId.utf8()); |
222 } | 222 } |
223 | 223 |
224 void PresentationDispatcher::getAvailability( | 224 void PresentationDispatcher::getAvailability( |
225 const blink::WebString& presentationUrl, | 225 const blink::WebString& presentationUrl, |
226 blink::WebPresentationAvailabilityCallbacks* callbacks) { | 226 blink::WebPresentationAvailabilityCallbacks* callbacks) { |
227 if (listening_state_ == ListeningState::Active) { | 227 if (listening_state_ == ListeningState::Active) { |
228 callbacks->onSuccess(new bool(last_known_availability_)); | 228 callbacks->onSuccess(last_known_availability_); |
229 delete callbacks; | 229 delete callbacks; |
230 return; | 230 return; |
231 } | 231 } |
232 | 232 |
233 availability_callbacks_.Add(callbacks); | 233 availability_callbacks_.Add(callbacks); |
234 UpdateListeningState(); | 234 UpdateListeningState(); |
235 } | 235 } |
236 | 236 |
237 void PresentationDispatcher::startListening( | 237 void PresentationDispatcher::startListening( |
238 blink::WebPresentationAvailabilityObserver* observer) { | 238 blink::WebPresentationAvailabilityObserver* observer) { |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 last_known_availability_ = available; | 270 last_known_availability_ = available; |
271 | 271 |
272 if (listening_state_ == ListeningState::Waiting) | 272 if (listening_state_ == ListeningState::Waiting) |
273 listening_state_ = ListeningState::Active; | 273 listening_state_ = ListeningState::Active; |
274 | 274 |
275 for (auto observer : availability_observers_) | 275 for (auto observer : availability_observers_) |
276 observer->availabilityChanged(available); | 276 observer->availabilityChanged(available); |
277 | 277 |
278 for (AvailabilityCallbacksMap::iterator iter(&availability_callbacks_); | 278 for (AvailabilityCallbacksMap::iterator iter(&availability_callbacks_); |
279 !iter.IsAtEnd(); iter.Advance()) { | 279 !iter.IsAtEnd(); iter.Advance()) { |
280 iter.GetCurrentValue()->onSuccess(new bool(available)); | 280 iter.GetCurrentValue()->onSuccess(available); |
281 } | 281 } |
282 availability_callbacks_.Clear(); | 282 availability_callbacks_.Clear(); |
283 | 283 |
284 UpdateListeningState(); | 284 UpdateListeningState(); |
285 } | 285 } |
286 | 286 |
287 void PresentationDispatcher::OnScreenAvailabilityNotSupported() { | 287 void PresentationDispatcher::OnScreenAvailabilityNotSupported() { |
288 DCHECK(listening_state_ == ListeningState::Waiting); | 288 DCHECK(listening_state_ == ListeningState::Waiting); |
289 | 289 |
290 for (AvailabilityCallbacksMap::iterator iter(&availability_callbacks_); | 290 for (AvailabilityCallbacksMap::iterator iter(&availability_callbacks_); |
291 !iter.IsAtEnd(); iter.Advance()) { | 291 !iter.IsAtEnd(); iter.Advance()) { |
292 iter.GetCurrentValue()->onError(new blink::WebPresentationError( | 292 iter.GetCurrentValue()->onError(blink::WebPresentationError( |
293 blink::WebPresentationError::ErrorTypeAvailabilityNotSupported, | 293 blink::WebPresentationError::ErrorTypeAvailabilityNotSupported, |
294 blink::WebString::fromUTF8( | 294 blink::WebString::fromUTF8( |
295 "getAvailability() isn't supported at the moment. It can be due to" | 295 "getAvailability() isn't supported at the moment. It can be due to" |
296 "a permanent or temporary system limitation. It is recommended to" | 296 "a permanent or temporary system limitation. It is recommended to" |
297 "try to blindly start a session in that case."))); | 297 "try to blindly start a session in that case."))); |
298 } | 298 } |
299 availability_callbacks_.Clear(); | 299 availability_callbacks_.Clear(); |
300 | 300 |
301 UpdateListeningState(); | 301 UpdateListeningState(); |
302 } | 302 } |
(...skipping 15 matching lines...) Expand all Loading... |
318 } | 318 } |
319 } | 319 } |
320 | 320 |
321 void PresentationDispatcher::OnSessionCreated( | 321 void PresentationDispatcher::OnSessionCreated( |
322 blink::WebPresentationSessionClientCallbacks* callback, | 322 blink::WebPresentationSessionClientCallbacks* callback, |
323 presentation::PresentationSessionInfoPtr session_info, | 323 presentation::PresentationSessionInfoPtr session_info, |
324 presentation::PresentationErrorPtr error) { | 324 presentation::PresentationErrorPtr error) { |
325 DCHECK(callback); | 325 DCHECK(callback); |
326 if (!error.is_null()) { | 326 if (!error.is_null()) { |
327 DCHECK(session_info.is_null()); | 327 DCHECK(session_info.is_null()); |
328 callback->onError(new blink::WebPresentationError( | 328 callback->onError(blink::WebPresentationError( |
329 GetWebPresentationErrorTypeFromMojo(error->error_type), | 329 GetWebPresentationErrorTypeFromMojo(error->error_type), |
330 blink::WebString::fromUTF8(error->message))); | 330 blink::WebString::fromUTF8(error->message))); |
331 return; | 331 return; |
332 } | 332 } |
333 | 333 |
334 DCHECK(!session_info.is_null()); | 334 DCHECK(!session_info.is_null()); |
335 callback->onSuccess(new PresentationSessionClient(session_info.Clone())); | 335 callback->onSuccess( |
| 336 blink::adoptWebPtr(new PresentationSessionClient(session_info.Clone()))); |
336 presentation_service_->ListenForSessionMessages(session_info.Pass()); | 337 presentation_service_->ListenForSessionMessages(session_info.Pass()); |
337 } | 338 } |
338 | 339 |
339 void PresentationDispatcher::OnSessionStateChanged( | 340 void PresentationDispatcher::OnSessionStateChanged( |
340 presentation::PresentationSessionInfoPtr session_info, | 341 presentation::PresentationSessionInfoPtr session_info, |
341 presentation::PresentationSessionState session_state) { | 342 presentation::PresentationSessionState session_state) { |
342 if (!controller_) | 343 if (!controller_) |
343 return; | 344 return; |
344 | 345 |
345 DCHECK(!session_info.is_null()); | 346 DCHECK(!session_info.is_null()); |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
459 | 460 |
460 presentation::SessionMessagePtr session_message = | 461 presentation::SessionMessagePtr session_message = |
461 presentation::SessionMessage::New(); | 462 presentation::SessionMessage::New(); |
462 session_message->type = type; | 463 session_message->type = type; |
463 std::vector<uint8> tmp_data_vector(data, data + length); | 464 std::vector<uint8> tmp_data_vector(data, data + length); |
464 session_message->data.Swap(&tmp_data_vector); | 465 session_message->data.Swap(&tmp_data_vector); |
465 return new SendMessageRequest(session_info.Pass(), session_message.Pass()); | 466 return new SendMessageRequest(session_info.Pass(), session_message.Pass()); |
466 } | 467 } |
467 | 468 |
468 } // namespace content | 469 } // namespace content |
OLD | NEW |