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

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

Issue 12253035: Guard against duplicate adds in PrerenderLinkManager. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: fixity Created 7 years, 10 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 | Annotate | Revision Log
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 <limits> 7 #include <limits>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 } 60 }
61 } 61 }
62 } 62 }
63 63
64 void PrerenderLinkManager::OnAddPrerender(int launcher_child_id, 64 void PrerenderLinkManager::OnAddPrerender(int launcher_child_id,
65 int prerender_id, 65 int prerender_id,
66 const GURL& url, 66 const GURL& url,
67 const content::Referrer& referrer, 67 const content::Referrer& referrer,
68 const gfx::Size& size, 68 const gfx::Size& size,
69 int render_view_route_id) { 69 int render_view_route_id) {
70 DCHECK_EQ(static_cast<LinkPrerender*>(NULL), 70 // TODO(gavinp): Determine why WebKit appears to be sending duplicate adds,
71 FindByLauncherChildIdAndPrerenderId(launcher_child_id, 71 // and prevent it.
72 prerender_id)); 72 if (FindByLauncherChildIdAndPrerenderId(launcher_child_id, prerender_id))
73 return;
74
73 content::RenderProcessHost* rph = 75 content::RenderProcessHost* rph =
74 content::RenderProcessHost::FromID(launcher_child_id); 76 content::RenderProcessHost::FromID(launcher_child_id);
75 // Guests inside <webview> do not support cross-process navigation and so we 77 // Guests inside <webview> do not support cross-process navigation and so we
76 // do not allow guests to prerender content. 78 // do not allow guests to prerender content.
77 if (rph && rph->IsGuest()) 79 if (rph && rph->IsGuest())
78 return; 80 return;
79 81
80 LinkPrerender 82 LinkPrerender
81 prerender(launcher_child_id, prerender_id, url, referrer, size, 83 prerender(launcher_child_id, prerender_id, url, referrer, size,
82 render_view_route_id, manager_->GetCurrentTimeTicks()); 84 render_view_route_id, manager_->GetCurrentTimeTicks());
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 LinkPrerender* prerender = FindByPrerenderHandle(prerender_handle); 346 LinkPrerender* prerender = FindByPrerenderHandle(prerender_handle);
345 if (!prerender) 347 if (!prerender)
346 return; 348 return;
347 349
348 Send(prerender->launcher_child_id, 350 Send(prerender->launcher_child_id,
349 new PrerenderMsg_OnPrerenderAddAlias(prerender->prerender_id, 351 new PrerenderMsg_OnPrerenderAddAlias(prerender->prerender_id,
350 alias_url)); 352 alias_url));
351 } 353 }
352 354
353 } // namespace prerender 355 } // namespace prerender
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_unittest.cc » ('j') | chrome/browser/prerender/prerender_unittest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698