| 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 <string> | 7 #include <string> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 } | 254 } |
| 255 | 255 |
| 256 void PresentationDispatcher::terminateSession( | 256 void PresentationDispatcher::terminateSession( |
| 257 const blink::WebURL& presentationUrl, | 257 const blink::WebURL& presentationUrl, |
| 258 const blink::WebString& presentationId) { | 258 const blink::WebString& presentationId) { |
| 259 ConnectToPresentationServiceIfNeeded(); | 259 ConnectToPresentationServiceIfNeeded(); |
| 260 presentation_service_->Terminate(presentationUrl, presentationId.utf8()); | 260 presentation_service_->Terminate(presentationUrl, presentationId.utf8()); |
| 261 } | 261 } |
| 262 | 262 |
| 263 void PresentationDispatcher::getAvailability( | 263 void PresentationDispatcher::getAvailability( |
| 264 const blink::WebURL& availabilityUrl, | 264 const blink::WebVector<blink::WebURL>& availabilityUrls, |
| 265 std::unique_ptr<blink::WebPresentationAvailabilityCallbacks> callbacks) { | 265 std::unique_ptr<blink::WebPresentationAvailabilityCallbacks> callbacks) { |
| 266 // TODO(mfoltz): Pass all URLs to PresentationService. See crbug.com/627655. |
| 267 const blink::WebURL& availabilityUrl = availabilityUrls[0]; |
| 266 AvailabilityStatus* status = nullptr; | 268 AvailabilityStatus* status = nullptr; |
| 267 auto status_it = availability_status_.find(availabilityUrl); | 269 auto status_it = availability_status_.find(availabilityUrl); |
| 268 if (status_it == availability_status_.end()) { | 270 if (status_it == availability_status_.end()) { |
| 269 status = new AvailabilityStatus(availabilityUrl); | 271 status = new AvailabilityStatus(availabilityUrl); |
| 270 availability_status_[availabilityUrl] = base::WrapUnique(status); | 272 availability_status_[availabilityUrl] = base::WrapUnique(status); |
| 271 } else { | 273 } else { |
| 272 status = status_it->second.get(); | 274 status = status_it->second.get(); |
| 273 } | 275 } |
| 274 DCHECK(status); | 276 DCHECK(status); |
| 275 | 277 |
| 276 if (status->listening_state == ListeningState::ACTIVE) { | 278 if (status->listening_state == ListeningState::ACTIVE) { |
| 277 base::ThreadTaskRunnerHandle::Get()->PostTask( | 279 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 278 FROM_HERE, | 280 FROM_HERE, |
| 279 base::Bind(&blink::WebPresentationAvailabilityCallbacks::onSuccess, | 281 base::Bind(&blink::WebPresentationAvailabilityCallbacks::onSuccess, |
| 280 base::Passed(&callbacks), status->last_known_availability)); | 282 base::Passed(&callbacks), status->last_known_availability)); |
| 281 return; | 283 return; |
| 282 } | 284 } |
| 283 | 285 |
| 284 status->availability_callbacks.Add(std::move(callbacks)); | 286 status->availability_callbacks.Add(std::move(callbacks)); |
| 285 UpdateListeningState(status); | 287 UpdateListeningState(status); |
| 286 } | 288 } |
| 287 | 289 |
| 288 void PresentationDispatcher::startListening( | 290 void PresentationDispatcher::startListening( |
| 289 blink::WebPresentationAvailabilityObserver* observer) { | 291 blink::WebPresentationAvailabilityObserver* observer) { |
| 290 auto status_it = availability_status_.find(observer->url()); | 292 // TODO(mfoltz): Pass all URLs to PresentationService. See crbug.com/627655. |
| 293 const blink::WebURL& availabilityUrl = observer->urls()[0]; |
| 294 auto status_it = availability_status_.find(availabilityUrl); |
| 291 if (status_it == availability_status_.end()) { | 295 if (status_it == availability_status_.end()) { |
| 292 DLOG(WARNING) << "Start listening for availability for unknown URL " | 296 DLOG(WARNING) << "Start listening for availability for unknown URL " |
| 293 << GURL(observer->url()); | 297 << GURL(availabilityUrl); |
| 294 return; | 298 return; |
| 295 } | 299 } |
| 296 status_it->second->availability_observers.insert(observer); | 300 status_it->second->availability_observers.insert(observer); |
| 297 UpdateListeningState(status_it->second.get()); | 301 UpdateListeningState(status_it->second.get()); |
| 298 } | 302 } |
| 299 | 303 |
| 300 void PresentationDispatcher::stopListening( | 304 void PresentationDispatcher::stopListening( |
| 301 blink::WebPresentationAvailabilityObserver* observer) { | 305 blink::WebPresentationAvailabilityObserver* observer) { |
| 302 auto status_it = availability_status_.find(observer->url()); | 306 // TODO(mfoltz): Pass all URLs to PresentationService. See crbug.com/627655. |
| 307 const blink::WebURL& availabilityUrl = observer->urls()[0]; |
| 308 auto status_it = availability_status_.find(availabilityUrl); |
| 303 if (status_it == availability_status_.end()) { | 309 if (status_it == availability_status_.end()) { |
| 304 DLOG(WARNING) << "Stop listening for availability for unknown URL " | 310 DLOG(WARNING) << "Stop listening for availability for unknown URL " |
| 305 << GURL(observer->url()); | 311 << GURL(availabilityUrl); |
| 306 return; | 312 return; |
| 307 } | 313 } |
| 308 status_it->second->availability_observers.erase(observer); | 314 status_it->second->availability_observers.erase(observer); |
| 309 UpdateListeningState(status_it->second.get()); | 315 UpdateListeningState(status_it->second.get()); |
| 310 } | 316 } |
| 311 | 317 |
| 312 void PresentationDispatcher::setDefaultPresentationUrls( | 318 void PresentationDispatcher::setDefaultPresentationUrls( |
| 313 const blink::WebVector<blink::WebURL>& presentationUrls) { | 319 const blink::WebVector<blink::WebURL>& presentationUrls) { |
| 314 ConnectToPresentationServiceIfNeeded(); | 320 ConnectToPresentationServiceIfNeeded(); |
| 315 | 321 |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 561 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus( | 567 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus( |
| 562 const GURL& availability_url) | 568 const GURL& availability_url) |
| 563 : url(availability_url), | 569 : url(availability_url), |
| 564 last_known_availability(false), | 570 last_known_availability(false), |
| 565 listening_state(ListeningState::INACTIVE) {} | 571 listening_state(ListeningState::INACTIVE) {} |
| 566 | 572 |
| 567 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() { | 573 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() { |
| 568 } | 574 } |
| 569 | 575 |
| 570 } // namespace content | 576 } // namespace content |
| OLD | NEW |