Remove calls of PrerenderTracker::TryCancelOnIOThread in SafeBrowsingResourceThrottle and instead PrerenderContents::Destroy directly on the UI thread.
This is part of the work on removing calls to ResourceRequestInfo::GetAssociatedRenderView. The last callers to that method are using it to cancel prerenders if they haven't been used yet, so the checking/cancelling needs to all move to the UI thread.
BUG=304341
[email protected]
Review URL: https://codereview.chromium.org/103633008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243063 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/prerender/prerender_contents.cc b/chrome/browser/prerender/prerender_contents.cc
index 714f85c8..952e809 100644
--- a/chrome/browser/prerender/prerender_contents.cc
+++ b/chrome/browser/prerender/prerender_contents.cc
@@ -17,6 +17,7 @@
#include "chrome/browser/prerender/prerender_final_status.h"
#include "chrome/browser/prerender/prerender_handle.h"
#include "chrome/browser/prerender/prerender_manager.h"
+#include "chrome/browser/prerender/prerender_manager_factory.h"
#include "chrome/browser/prerender/prerender_tracker.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
@@ -237,6 +238,18 @@
return new PrerenderContentsFactoryImpl();
}
+// static
+PrerenderContents* PrerenderContents::FromWebContents(
+ content::WebContents* web_contents) {
+ if (!web_contents)
+ return NULL;
+ PrerenderManager* prerender_manager = PrerenderManagerFactory::GetForProfile(
+ Profile::FromBrowserContext(web_contents->GetBrowserContext()));
+ if (!prerender_manager)
+ return NULL;
+ return prerender_manager->GetPrerenderContents(web_contents);
+}
+
void PrerenderContents::StartPrerendering(
int creator_child_id,
const gfx::Size& size,