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

Side by Side Diff: chrome/browser/prerender/prerender_link_manager.cc

Issue 2554573012: Fix early prerender cancellation not working with PlzNavigate. (Closed)
Patch Set: 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
« no previous file with comments | « chrome/browser/prerender/prerender_handle.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/prerender/prerender_link_manager.h" 5 #include "chrome/browser/prerender/prerender_link_manager.h"
6 6
7 #include <functional> 7 #include <functional>
8 #include <limits> 8 #include <limits>
9 #include <memory> 9 #include <memory>
10 #include <set> 10 #include <set>
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 std::unique_ptr<PrerenderHandle> handle = 385 std::unique_ptr<PrerenderHandle> handle =
386 manager_->AddPrerenderFromLinkRelPrerender( 386 manager_->AddPrerenderFromLinkRelPrerender(
387 (*i)->launcher_child_id, (*i)->render_view_route_id, (*i)->url, 387 (*i)->launcher_child_id, (*i)->render_view_route_id, (*i)->url,
388 (*i)->rel_types, (*i)->referrer, (*i)->size); 388 (*i)->rel_types, (*i)->referrer, (*i)->size);
389 if (!handle) { 389 if (!handle) {
390 // This prerender couldn't be launched, it's gone. 390 // This prerender couldn't be launched, it's gone.
391 prerenders_.erase(*i); 391 prerenders_.erase(*i);
392 continue; 392 continue;
393 } 393 }
394 394
395 // We have successfully started a new prerender. 395 if (handle->IsPrerendering()) {
396 (*i)->handle = handle.release(); 396 // We have successfully started a new prerender.
397 ++total_started_prerender_count; 397 (*i)->handle = handle.release();
398 (*i)->handle->SetObserver(this); 398 ++total_started_prerender_count;
399 if ((*i)->handle->IsPrerendering()) 399 (*i)->handle->SetObserver(this);
400 OnPrerenderStart((*i)->handle); 400 OnPrerenderStart((*i)->handle);
401 RecordLinkManagerStarting((*i)->rel_types); 401 RecordLinkManagerStarting((*i)->rel_types);
402 402 running_launcher_and_render_view_routes.insert(
403 running_launcher_and_render_view_routes.insert( 403 launcher_and_render_view_route);
404 launcher_and_render_view_route); 404 } else {
405 Send((*i)->launcher_child_id,
406 new PrerenderMsg_OnPrerenderStop((*i)->prerender_id));
407 prerenders_.erase(*i);
408 }
405 } 409 }
406 } 410 }
407 411
408 PrerenderLinkManager::LinkPrerender* 412 PrerenderLinkManager::LinkPrerender*
409 PrerenderLinkManager::FindByLauncherChildIdAndPrerenderId(int launcher_child_id, 413 PrerenderLinkManager::FindByLauncherChildIdAndPrerenderId(int launcher_child_id,
410 int prerender_id) { 414 int prerender_id) {
411 for (std::list<LinkPrerender>::iterator i = prerenders_.begin(); 415 for (std::list<LinkPrerender>::iterator i = prerenders_.begin();
412 i != prerenders_.end(); ++i) { 416 i != prerenders_.end(); ++i) {
413 if (launcher_child_id == i->launcher_child_id && 417 if (launcher_child_id == i->launcher_child_id &&
414 prerender_id == i->prerender_id) { 418 prerender_id == i->prerender_id) {
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 new PrerenderMsg_OnPrerenderDomContentLoaded(prerender->prerender_id)); 519 new PrerenderMsg_OnPrerenderDomContentLoaded(prerender->prerender_id));
516 } 520 }
517 521
518 void PrerenderLinkManager::OnPrerenderStop( 522 void PrerenderLinkManager::OnPrerenderStop(
519 PrerenderHandle* prerender_handle) { 523 PrerenderHandle* prerender_handle) {
520 LinkPrerender* prerender = FindByPrerenderHandle(prerender_handle); 524 LinkPrerender* prerender = FindByPrerenderHandle(prerender_handle);
521 if (!prerender) 525 if (!prerender)
522 return; 526 return;
523 527
524 Send(prerender->launcher_child_id, 528 Send(prerender->launcher_child_id,
525 new PrerenderMsg_OnPrerenderStop(prerender->prerender_id)); 529 new PrerenderMsg_OnPrerenderStop(prerender->prerender_id));
526 RemovePrerender(prerender); 530 RemovePrerender(prerender);
527 StartPrerenders(); 531 StartPrerenders();
528 } 532 }
529 533
530 } // namespace prerender 534 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_handle.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698