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

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

Issue 2397453002: Asynchronously resolve getAvailability callbacks. (Closed)
Patch Set: fix compile Created 4 years, 2 months 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
« no previous file with comments | « content/browser/presentation/presentation_browsertest.cc ('k') | content/test/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 auto status_it = availability_status_.find(availabilityUrl); 248 auto status_it = availability_status_.find(availabilityUrl);
249 if (status_it == availability_status_.end()) { 249 if (status_it == availability_status_.end()) {
250 status = new AvailabilityStatus(availabilityUrl); 250 status = new AvailabilityStatus(availabilityUrl);
251 availability_status_[availabilityUrl] = base::WrapUnique(status); 251 availability_status_[availabilityUrl] = base::WrapUnique(status);
252 } else { 252 } else {
253 status = status_it->second.get(); 253 status = status_it->second.get();
254 } 254 }
255 DCHECK(status); 255 DCHECK(status);
256 256
257 if (status->listening_state == ListeningState::ACTIVE) { 257 if (status->listening_state == ListeningState::ACTIVE) {
258 callbacks->onSuccess(status->last_known_availability); 258 base::ThreadTaskRunnerHandle::Get()->PostTask(
259 delete callbacks; 259 FROM_HERE,
260 base::Bind(&blink::WebPresentationAvailabilityCallbacks::onSuccess,
261 base::Owned(callbacks),
262 status->last_known_availability));
260 return; 263 return;
261 } 264 }
262 265
263 status->availability_callbacks.Add(callbacks); 266 status->availability_callbacks.Add(callbacks);
264 UpdateListeningState(status); 267 UpdateListeningState(status);
265 } 268 }
266 269
267 void PresentationDispatcher::startListening( 270 void PresentationDispatcher::startListening(
268 blink::WebPresentationAvailabilityObserver* observer) { 271 blink::WebPresentationAvailabilityObserver* observer) {
269 auto status_it = availability_status_.find(observer->url()); 272 auto status_it = availability_status_.find(observer->url());
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus( 546 PresentationDispatcher::AvailabilityStatus::AvailabilityStatus(
544 const GURL& availability_url) 547 const GURL& availability_url)
545 : url(availability_url), 548 : url(availability_url),
546 last_known_availability(false), 549 last_known_availability(false),
547 listening_state(ListeningState::INACTIVE) {} 550 listening_state(ListeningState::INACTIVE) {}
548 551
549 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() { 552 PresentationDispatcher::AvailabilityStatus::~AvailabilityStatus() {
550 } 553 }
551 554
552 } // namespace content 555 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/presentation/presentation_browsertest.cc ('k') | content/test/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698