| 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 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 : launcher_child_id(launcher_child_id), | 265 : launcher_child_id(launcher_child_id), |
| 266 prerender_id(prerender_id), | 266 prerender_id(prerender_id), |
| 267 url(url), | 267 url(url), |
| 268 rel_types(rel_types), | 268 rel_types(rel_types), |
| 269 referrer(referrer), | 269 referrer(referrer), |
| 270 size(size), | 270 size(size), |
| 271 render_view_route_id(render_view_route_id), | 271 render_view_route_id(render_view_route_id), |
| 272 creation_time(creation_time), | 272 creation_time(creation_time), |
| 273 deferred_launcher(deferred_launcher), | 273 deferred_launcher(deferred_launcher), |
| 274 handle(NULL), | 274 handle(NULL), |
| 275 is_match_complete_replacement(false), | |
| 276 has_been_abandoned(false) {} | 275 has_been_abandoned(false) {} |
| 277 | 276 |
| 278 PrerenderLinkManager::LinkPrerender::LinkPrerender(const LinkPrerender& other) = | 277 PrerenderLinkManager::LinkPrerender::LinkPrerender(const LinkPrerender& other) = |
| 279 default; | 278 default; |
| 280 | 279 |
| 281 PrerenderLinkManager::LinkPrerender::~LinkPrerender() { | 280 PrerenderLinkManager::LinkPrerender::~LinkPrerender() { |
| 282 DCHECK_EQ(static_cast<PrerenderHandle*>(NULL), handle) | 281 DCHECK_EQ(static_cast<PrerenderHandle*>(NULL), handle) |
| 283 << "The PrerenderHandle should be destroyed before its Prerender."; | 282 << "The PrerenderHandle should be destroyed before its Prerender."; |
| 284 } | 283 } |
| 285 | 284 |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 514 Send(prerender->launcher_child_id, | 513 Send(prerender->launcher_child_id, |
| 515 new PrerenderMsg_OnPrerenderDomContentLoaded(prerender->prerender_id)); | 514 new PrerenderMsg_OnPrerenderDomContentLoaded(prerender->prerender_id)); |
| 516 } | 515 } |
| 517 | 516 |
| 518 void PrerenderLinkManager::OnPrerenderStop( | 517 void PrerenderLinkManager::OnPrerenderStop( |
| 519 PrerenderHandle* prerender_handle) { | 518 PrerenderHandle* prerender_handle) { |
| 520 LinkPrerender* prerender = FindByPrerenderHandle(prerender_handle); | 519 LinkPrerender* prerender = FindByPrerenderHandle(prerender_handle); |
| 521 if (!prerender) | 520 if (!prerender) |
| 522 return; | 521 return; |
| 523 | 522 |
| 524 // If the prerender became a match complete replacement, the stop | 523 Send(prerender->launcher_child_id, |
| 525 // message has already been sent. | 524 new PrerenderMsg_OnPrerenderStop(prerender->prerender_id)); |
| 526 if (!prerender->is_match_complete_replacement) { | |
| 527 Send(prerender->launcher_child_id, | |
| 528 new PrerenderMsg_OnPrerenderStop(prerender->prerender_id)); | |
| 529 } | |
| 530 RemovePrerender(prerender); | 525 RemovePrerender(prerender); |
| 531 StartPrerenders(); | 526 StartPrerenders(); |
| 532 } | 527 } |
| 533 | 528 |
| 534 void PrerenderLinkManager::OnPrerenderCreatedMatchCompleteReplacement( | |
| 535 PrerenderHandle* prerender_handle) { | |
| 536 LinkPrerender* prerender = FindByPrerenderHandle(prerender_handle); | |
| 537 if (!prerender) | |
| 538 return; | |
| 539 | |
| 540 DCHECK(!prerender->is_match_complete_replacement); | |
| 541 prerender->is_match_complete_replacement = true; | |
| 542 Send(prerender->launcher_child_id, | |
| 543 new PrerenderMsg_OnPrerenderStop(prerender->prerender_id)); | |
| 544 // Do not call RemovePrerender here. The replacement needs to stay connected | |
| 545 // to the HTMLLinkElement in the renderer so it notices renderer-triggered | |
| 546 // cancelations. | |
| 547 } | |
| 548 | |
| 549 } // namespace prerender | 529 } // namespace prerender |
| OLD | NEW |