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

Side by Side Diff: content/renderer/presentation/presentation_dispatcher.cc

Issue 2552343009: [Presentation API] Adds DOMString[] constructor to PresentationRequest. (Closed)
Patch Set: rebase with master Created 4 years 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
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 "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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698