OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |