Index: chrome/browser/prerender/prerender_manager.cc |
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc |
index bee549a950864481555ff56c6b7e9385a3053c21..5e678ddbe8613d0cea3de9f11cabdafa39d8451e 100644 |
--- a/chrome/browser/prerender/prerender_manager.cc |
+++ b/chrome/browser/prerender/prerender_manager.cc |
@@ -48,6 +48,7 @@ |
#include "chrome/common/chrome_switches.h" |
#include "chrome/common/pref_names.h" |
#include "chrome/common/prerender_messages.h" |
+#include "chrome/common/prerender_types.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/devtools_agent_host.h" |
#include "content/public/browser/navigation_controller.h" |
@@ -314,9 +315,12 @@ PrerenderHandle* PrerenderManager::AddPrerenderFromLinkRelPrerender( |
int process_id, |
int route_id, |
const GURL& url, |
+ const uint32 rel_types, |
const content::Referrer& referrer, |
const gfx::Size& size) { |
- Origin origin = ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN; |
+ Origin origin = rel_types & PrerenderRelTypePrerender ? |
+ ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN : |
+ ORIGIN_LINK_REL_NEXT; |
SessionStorageNamespace* session_storage_namespace = NULL; |
// Unit tests pass in a process_id == -1. |
if (process_id != -1) { |
@@ -328,8 +332,10 @@ PrerenderHandle* PrerenderManager::AddPrerenderFromLinkRelPrerender( |
WebContents::FromRenderViewHost(source_render_view_host); |
if (!source_web_contents) |
return NULL; |
- if (source_web_contents->GetURL().host() == url.host()) |
+ if (origin == ORIGIN_LINK_REL_PRERENDER_CROSSDOMAIN && |
+ source_web_contents->GetURL().host() == url.host()) { |
origin = ORIGIN_LINK_REL_PRERENDER_SAMEDOMAIN; |
+ } |
// TODO(ajwong): This does not correctly handle storage for isolated apps. |
session_storage_namespace = |
source_web_contents->GetController() |