| 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 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 } | 237 } |
| 238 | 238 |
| 239 void PresentationDispatcher::terminateSession( | 239 void PresentationDispatcher::terminateSession( |
| 240 const blink::WebURL& presentationUrl, | 240 const blink::WebURL& presentationUrl, |
| 241 const blink::WebString& presentationId) { | 241 const blink::WebString& presentationId) { |
| 242 ConnectToPresentationServiceIfNeeded(); | 242 ConnectToPresentationServiceIfNeeded(); |
| 243 presentation_service_->Terminate(presentationUrl, presentationId.utf8()); | 243 presentation_service_->Terminate(presentationUrl, presentationId.utf8()); |
| 244 } | 244 } |
| 245 | 245 |
| 246 void PresentationDispatcher::getAvailability( | 246 void PresentationDispatcher::getAvailability( |
| 247 const blink::WebURL& availabilityUrl, | 247 const blink::WebVector<blink::WebURL>& availabilityUrls, |
| 248 std::unique_ptr<blink::WebPresentationAvailabilityCallbacks> callbacks) { | 248 std::unique_ptr<blink::WebPresentationAvailabilityCallbacks> callbacks) { |
| 249 // TODO(mfoltz): Pass all URLs to PresentationService. See crbug.com/627655. |
| 250 const blink::WebURL& availabilityUrl = availabilityUrls[0]; |
| 249 AvailabilityStatus* status = nullptr; | 251 AvailabilityStatus* status = nullptr; |
| 250 auto status_it = availability_status_.find(availabilityUrl); | 252 auto status_it = availability_status_.find(availabilityUrl); |
| 251 if (status_it == availability_status_.end()) { | 253 if (status_it == availability_status_.end()) { |
| 252 status = new AvailabilityStatus(availabilityUrl); | 254 status = new AvailabilityStatus(availabilityUrl); |
| 253 availability_status_[availabilityUrl] = base::WrapUnique(status); | 255 availability_status_[availabilityUrl] = base::WrapUnique(status); |
| 254 } else { | 256 } else { |
| 255 status = status_it->second.get(); | 257 status = status_it->second.get(); |
| 256 } | 258 } |
| 257 DCHECK(status); | 259 DCHECK(status); |
| 258 | 260 |
| 259 if (status->listening_state == ListeningState::ACTIVE) { | 261 if (status->listening_state == ListeningState::ACTIVE) { |
| 260 base::ThreadTaskRunnerHandle::Get()->PostTask( | 262 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 261 FROM_HERE, | 263 FROM_HERE, |
| 262 base::Bind(&blink::WebPresentationAvailabilityCallbacks::onSuccess, | 264 base::Bind(&blink::WebPresentationAvailabilityCallbacks::onSuccess, |
| 263 base::Passed(&callbacks), status->last_known_availability)); | 265 base::Passed(&callbacks), status->last_known_availability)); |
| 264 return; | 266 return; |
| 265 } | 267 } |
| 266 | 268 |
| 267 status->availability_callbacks.Add(std::move(callbacks)); | 269 status->availability_callbacks.Add(std::move(callbacks)); |
| 268 UpdateListeningState(status); | 270 UpdateListeningState(status); |
| 269 } | 271 } |
| 270 | 272 |
| 271 void PresentationDispatcher::startListening( | 273 void PresentationDispatcher::startListening( |
| 272 blink::WebPresentationAvailabilityObserver* observer) { | 274 blink::WebPresentationAvailabilityObserver* observer) { |
| 273 auto status_it = availability_status_.find(observer->url()); | 275 // TODO(mfoltz): Pass all URLs to PresentationService. See crbug.com/627655. |
| 276 const blink::WebURL& availabilityUrl = observer->urls()[0]; |
| 277 auto status_it = availability_status_.find(availabilityUrl); |
| 274 if (status_it == availability_status_.end()) { | 278 if (status_it == availability_status_.end()) { |
| 275 DLOG(WARNING) << "Start listening for availability for unknown URL " | 279 DLOG(WARNING) << "Start listening for availability for unknown URL " |
| 276 << GURL(observer->url()); | 280 << GURL(availabilityUrl); |
| 277 return; | 281 return; |
| 278 } | 282 } |
| 279 status_it->second->availability_observers.insert(observer); | 283 status_it->second->availability_observers.insert(observer); |
| 280 UpdateListeningState(status_it->second.get()); | 284 UpdateListeningState(status_it->second.get()); |
| 281 } | 285 } |
| 282 | 286 |
| 283 void PresentationDispatcher::stopListening( | 287 void PresentationDispatcher::stopListening( |
| 284 blink::WebPresentationAvailabilityObserver* observer) { | 288 blink::WebPresentationAvailabilityObserver* observer) { |
| 285 auto status_it = availability_status_.find(observer->url()); | 289 // TODO(mfoltz): Pass all URLs to PresentationService. See crbug.com/627655. |
| 290 const blink::WebURL& availabilityUrl = observer->urls()[0]; |
| 291 auto status_it = availability_status_.find(availabilityUrl); |
| 286 if (status_it == availability_status_.end()) { | 292 if (status_it == availability_status_.end()) { |
| 287 DLOG(WARNING) << "Stop listening for availability for unknown URL " | 293 DLOG(WARNING) << "Stop listening for availability for unknown URL " |
| 288 << GURL(observer->url()); | 294 << GURL(availabilityUrl); |
| 289 return; | 295 return; |
| 290 } | 296 } |
| 291 status_it->second->availability_observers.erase(observer); | 297 status_it->second->availability_observers.erase(observer); |
| 292 UpdateListeningState(status_it->second.get()); | 298 UpdateListeningState(status_it->second.get()); |
| 293 } | 299 } |
| 294 | 300 |
| 295 void PresentationDispatcher::setDefaultPresentationUrls( | 301 void PresentationDispatcher::setDefaultPresentationUrls( |
| 296 const blink::WebVector<blink::WebURL>& presentationUrls) { | 302 const blink::WebVector<blink::WebURL>& presentationUrls) { |
| 297 ConnectToPresentationServiceIfNeeded(); | 303 ConnectToPresentationServiceIfNeeded(); |
| 298 | 304 |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 546 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus( | 552 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus( |
| 547 const GURL& availability_url) | 553 const GURL& availability_url) |
| 548 : url(availability_url), | 554 : url(availability_url), |
| 549 last_known_availability(false), | 555 last_known_availability(false), |
| 550 listening_state(ListeningState::INACTIVE) {} | 556 listening_state(ListeningState::INACTIVE) {} |
| 551 | 557 |
| 552 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() { | 558 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() { |
| 553 } | 559 } |
| 554 | 560 |
| 555 } // namespace content | 561 } // namespace content |
| OLD | NEW |