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 "content/renderer/presentation/presentation_dispatcher.h" | 5 #include "content/renderer/presentation/presentation_dispatcher.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 236 } | 236 } |
| 237 | 237 |
| 238 void PresentationDispatcher::terminateSession( | 238 void PresentationDispatcher::terminateSession( |
| 239 const blink::WebURL& presentationUrl, | 239 const blink::WebURL& presentationUrl, |
| 240 const blink::WebString& presentationId) { | 240 const blink::WebString& presentationId) { |
| 241 ConnectToPresentationServiceIfNeeded(); | 241 ConnectToPresentationServiceIfNeeded(); |
| 242 presentation_service_->Terminate(presentationUrl, presentationId.utf8()); | 242 presentation_service_->Terminate(presentationUrl, presentationId.utf8()); |
| 243 } | 243 } |
| 244 | 244 |
| 245 void PresentationDispatcher::getAvailability( | 245 void PresentationDispatcher::getAvailability( |
| 246 const blink::WebURL& availabilityUrl, | 246 const blink::WebVector<blink::WebURL>& availabilityUrls, |
| 247 std::unique_ptr<blink::WebPresentationAvailabilityCallbacks> callbacks) { | 247 std::unique_ptr<blink::WebPresentationAvailabilityCallbacks> callbacks) { |
| 248 // TODO(crbug.com/627655): Pass all URLs to PresentationService. | |
|
mlamouri (slow - plz ping)
2016/12/13 13:50:53
nit: usually, we do TODO(username) and mention the
zhaobin
2016/12/14 01:51:53
Done.
| |
| 249 const blink::WebURL& availabilityUrl = availabilityUrls[0]; | |
| 248 AvailabilityStatus* status = nullptr; | 250 AvailabilityStatus* status = nullptr; |
| 249 auto status_it = availability_status_.find(availabilityUrl); | 251 auto status_it = availability_status_.find(availabilityUrl); |
| 250 if (status_it == availability_status_.end()) { | 252 if (status_it == availability_status_.end()) { |
| 251 status = new AvailabilityStatus(availabilityUrl); | 253 status = new AvailabilityStatus(availabilityUrl); |
| 252 availability_status_[availabilityUrl] = base::WrapUnique(status); | 254 availability_status_[availabilityUrl] = base::WrapUnique(status); |
| 253 } else { | 255 } else { |
| 254 status = status_it->second.get(); | 256 status = status_it->second.get(); |
| 255 } | 257 } |
| 256 DCHECK(status); | 258 DCHECK(status); |
| 257 | 259 |
| 258 if (status->listening_state == ListeningState::ACTIVE) { | 260 if (status->listening_state == ListeningState::ACTIVE) { |
| 259 base::ThreadTaskRunnerHandle::Get()->PostTask( | 261 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 260 FROM_HERE, | 262 FROM_HERE, |
| 261 base::Bind(&blink::WebPresentationAvailabilityCallbacks::onSuccess, | 263 base::Bind(&blink::WebPresentationAvailabilityCallbacks::onSuccess, |
| 262 base::Passed(&callbacks), status->last_known_availability)); | 264 base::Passed(&callbacks), status->last_known_availability)); |
| 263 return; | 265 return; |
| 264 } | 266 } |
| 265 | 267 |
| 266 status->availability_callbacks.Add(std::move(callbacks)); | 268 status->availability_callbacks.Add(std::move(callbacks)); |
| 267 UpdateListeningState(status); | 269 UpdateListeningState(status); |
| 268 } | 270 } |
| 269 | 271 |
| 270 void PresentationDispatcher::startListening( | 272 void PresentationDispatcher::startListening( |
| 271 blink::WebPresentationAvailabilityObserver* observer) { | 273 blink::WebPresentationAvailabilityObserver* observer) { |
| 272 auto status_it = availability_status_.find(observer->url()); | 274 // TODO(mfoltz): Pass all URLs to PresentationService. |
| 275 const blink::WebURL& availabilityUrl = observer->urls()[0]; | |
| 276 auto status_it = availability_status_.find(availabilityUrl); | |
| 273 if (status_it == availability_status_.end()) { | 277 if (status_it == availability_status_.end()) { |
| 274 DLOG(WARNING) << "Start listening for availability for unknown URL " | 278 DLOG(WARNING) << "Start listening for availability for unknown URL " |
| 275 << GURL(observer->url()); | 279 << GURL(availabilityUrl); |
| 276 return; | 280 return; |
| 277 } | 281 } |
| 278 status_it->second->availability_observers.insert(observer); | 282 status_it->second->availability_observers.insert(observer); |
| 279 UpdateListeningState(status_it->second.get()); | 283 UpdateListeningState(status_it->second.get()); |
| 280 } | 284 } |
| 281 | 285 |
| 282 void PresentationDispatcher::stopListening( | 286 void PresentationDispatcher::stopListening( |
| 283 blink::WebPresentationAvailabilityObserver* observer) { | 287 blink::WebPresentationAvailabilityObserver* observer) { |
| 284 auto status_it = availability_status_.find(observer->url()); | 288 // TODO(mfoltz): Pass all URLs to PresentationService. |
| 289 const blink::WebURL& availabilityUrl = observer->urls()[0]; | |
| 290 auto status_it = availability_status_.find(availabilityUrl); | |
| 285 if (status_it == availability_status_.end()) { | 291 if (status_it == availability_status_.end()) { |
| 286 DLOG(WARNING) << "Stop listening for availability for unknown URL " | 292 DLOG(WARNING) << "Stop listening for availability for unknown URL " |
| 287 << GURL(observer->url()); | 293 << GURL(availabilityUrl); |
| 288 return; | 294 return; |
| 289 } | 295 } |
| 290 status_it->second->availability_observers.erase(observer); | 296 status_it->second->availability_observers.erase(observer); |
| 291 UpdateListeningState(status_it->second.get()); | 297 UpdateListeningState(status_it->second.get()); |
| 292 } | 298 } |
| 293 | 299 |
| 294 void PresentationDispatcher::setDefaultPresentationUrls( | 300 void PresentationDispatcher::setDefaultPresentationUrls( |
| 295 const blink::WebVector<blink::WebURL>& presentationUrls) { | 301 const blink::WebVector<blink::WebURL>& presentationUrls) { |
| 296 ConnectToPresentationServiceIfNeeded(); | 302 ConnectToPresentationServiceIfNeeded(); |
| 297 | 303 |
| (...skipping 248 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 |