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

Unified Diff: Source/core/loader/LinkLoader.cpp

Issue 116183005: Add support for rel=next to Prerender in Blink. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: add missing file Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/html/LinkRelAttribute.cpp ('k') | Source/core/loader/PrerenderHandle.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/loader/LinkLoader.cpp
diff --git a/Source/core/loader/LinkLoader.cpp b/Source/core/loader/LinkLoader.cpp
index 8517a62cfd7317e91e39c4ab83a5f08b72ce5e10..adbc51ea2ef82865a5e9ef0fbc4168ae271d940d 100644
--- a/Source/core/loader/LinkLoader.cpp
+++ b/Source/core/loader/LinkLoader.cpp
@@ -36,13 +36,25 @@
#include "core/dom/Document.h"
#include "core/fetch/FetchRequest.h"
#include "core/fetch/ResourceFetcher.h"
+#include "core/frame/Settings.h"
#include "core/html/LinkRelAttribute.h"
#include "core/loader/PrerenderHandle.h"
-#include "core/frame/Settings.h"
+#include "platform/Prerender.h"
#include "platform/network/DNS.h"
namespace WebCore {
+static unsigned prerenderRelTypesFromRelAttribute(const LinkRelAttribute& relAttribute)
+{
+ unsigned result = 0;
+ if (relAttribute.isLinkPrerender())
+ result |= PrerenderRelTypePrerender;
+ if (relAttribute.isLinkNext())
+ result |= PrerenderRelTypeNext;
+
+ return result;
+}
+
LinkLoader::LinkLoader(LinkLoaderClient* client)
: m_client(client)
, m_linkLoadTimer(this, &LinkLoader::linkLoadTimerFired)
@@ -119,13 +131,14 @@ bool LinkLoader::loadLink(const LinkRelAttribute& relAttribute, const AtomicStri
setResource(document.fetcher()->fetchLinkResource(type, linkRequest));
}
- if (relAttribute.isLinkPrerender()) {
+ if (const unsigned prerenderRelTypes = prerenderRelTypesFromRelAttribute(relAttribute)) {
if (!m_prerender) {
- m_prerender = PrerenderHandle::create(document, this, href);
+ m_prerender = PrerenderHandle::create(document, this, href, prerenderRelTypes);
} else if (m_prerender->url() != href) {
m_prerender->cancel();
- m_prerender = PrerenderHandle::create(document, this, href);
+ m_prerender = PrerenderHandle::create(document, this, href, prerenderRelTypes);
}
+ // TODO(gavinp): Handle changes to rel types of existing prerenders.
} else if (m_prerender) {
m_prerender->cancel();
m_prerender.clear();
« no previous file with comments | « Source/core/html/LinkRelAttribute.cpp ('k') | Source/core/loader/PrerenderHandle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698