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

Unified Diff: Source/core/html/LinkRelAttribute.cpp

Issue 235063003: Get rid of code duplication in LinkRelAttribute (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: more silly Created 6 years, 8 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.h ('k') | Source/core/html/LinkRelAttributeTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/html/LinkRelAttribute.cpp
diff --git a/Source/core/html/LinkRelAttribute.cpp b/Source/core/html/LinkRelAttribute.cpp
index 91ba040155a4d5fd557c5159045a9c9eaa67362e..ef4bcd768168140a84638d5925036d03f61fd0ad 100644
--- a/Source/core/html/LinkRelAttribute.cpp
+++ b/Source/core/html/LinkRelAttribute.cpp
@@ -33,23 +33,9 @@
#include "core/html/LinkRelAttribute.h"
#include "RuntimeEnabledFeatures.h"
-#include "wtf/text/WTFString.h"
namespace WebCore {
-LinkRelAttribute::LinkRelAttribute()
- : m_iconType(InvalidIcon)
- , m_isStyleSheet(false)
- , m_isAlternate(false)
- , m_isDNSPrefetch(false)
- , m_isLinkPrefetch(false)
- , m_isLinkSubresource(false)
- , m_isLinkPrerender(false)
- , m_isLinkNext(false)
- , m_isImport(false)
-{
-}
-
LinkRelAttribute::LinkRelAttribute(const String& rel)
: m_iconType(InvalidIcon)
, m_isStyleSheet(false)
@@ -61,56 +47,43 @@ LinkRelAttribute::LinkRelAttribute(const String& rel)
, m_isLinkNext(false)
, m_isImport(false)
{
- if (equalIgnoringCase(rel, "stylesheet")) {
- m_isStyleSheet = true;
- } else if (equalIgnoringCase(rel, "icon") || equalIgnoringCase(rel, "shortcut icon")) {
- m_iconType = Favicon;
- } else if (equalIgnoringCase(rel, "dns-prefetch")) {
- m_isDNSPrefetch = true;
- } else if (equalIgnoringCase(rel, "alternate stylesheet") || equalIgnoringCase(rel, "stylesheet alternate")) {
- m_isStyleSheet = true;
- m_isAlternate = true;
- } else if (equalIgnoringCase(rel, "import")) {
- m_isImport = true;
- } else if (equalIgnoringCase(rel, "apple-touch-icon")) {
- if (RuntimeEnabledFeatures::touchIconLoadingEnabled()) {
- m_iconType = TouchIcon;
- }
- } else if (equalIgnoringCase(rel, "apple-touch-icon-precomposed")) {
- if (RuntimeEnabledFeatures::touchIconLoadingEnabled()) {
- m_iconType = TouchPrecomposedIcon;
- }
- } else {
- // Tokenize the rel attribute and set bits based on specific keywords that we find.
- String relCopy = rel;
- relCopy.replace('\n', ' ');
- Vector<String> list;
- relCopy.split(' ', list);
- Vector<String>::const_iterator end = list.end();
- for (Vector<String>::const_iterator it = list.begin(); it != end; ++it) {
- if (equalIgnoringCase(*it, "stylesheet")) {
+ if (rel.isEmpty())
+ return;
+ String relCopy = rel;
+ relCopy.replace('\n', ' ');
+ Vector<String> list;
+ relCopy.split(' ', list);
+ Vector<String>::const_iterator end = list.end();
+ for (Vector<String>::const_iterator it = list.begin(); it != end; ++it) {
+ if (equalIgnoringCase(*it, "stylesheet")) {
+ if (!m_isImport)
m_isStyleSheet = true;
- } else if (equalIgnoringCase(*it, "alternate")) {
- m_isAlternate = true;
- } else if (equalIgnoringCase(*it, "icon")) {
- m_iconType = Favicon;
- } else if (equalIgnoringCase(*it, "prefetch")) {
- m_isLinkPrefetch = true;
- } else if (equalIgnoringCase(*it, "subresource")) {
- m_isLinkSubresource = true;
- } else if (equalIgnoringCase(*it, "prerender")) {
- m_isLinkPrerender = true;
- } else if (equalIgnoringCase(*it, "next")) {
- m_isLinkNext = true;
- } else if (equalIgnoringCase(*it, "apple-touch-icon")) {
- if (RuntimeEnabledFeatures::touchIconLoadingEnabled()) {
- m_iconType = TouchIcon;
- }
- } else if (equalIgnoringCase(*it, "apple-touch-icon-precomposed")) {
- if (RuntimeEnabledFeatures::touchIconLoadingEnabled()) {
- m_iconType = TouchPrecomposedIcon;
- }
- }
+ } else if (equalIgnoringCase(*it, "import")) {
+ if (!m_isStyleSheet)
+ m_isImport = true;
+ } else if (equalIgnoringCase(*it, "alternate")) {
+ m_isAlternate = true;
+ } else if (equalIgnoringCase(*it, "icon")) {
+ // This also allows "shortcut icon" since we just ignore the non-standard "shortcut" token.
+ // FIXME: This doesn't really follow the spec that requires "shortcut icon" to be the
+ // entire string http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#rel-icon
+ m_iconType = Favicon;
+ } else if (equalIgnoringCase(*it, "prefetch")) {
+ m_isLinkPrefetch = true;
+ } else if (equalIgnoringCase(*it, "dns-prefetch")) {
+ m_isDNSPrefetch = true;
+ } else if (equalIgnoringCase(*it, "subresource")) {
+ m_isLinkSubresource = true;
+ } else if (equalIgnoringCase(*it, "prerender")) {
+ m_isLinkPrerender = true;
+ } else if (equalIgnoringCase(*it, "next")) {
+ m_isLinkNext = true;
+ } else if (equalIgnoringCase(*it, "apple-touch-icon")) {
+ if (RuntimeEnabledFeatures::touchIconLoadingEnabled())
+ m_iconType = TouchIcon;
+ } else if (equalIgnoringCase(*it, "apple-touch-icon-precomposed")) {
+ if (RuntimeEnabledFeatures::touchIconLoadingEnabled())
+ m_iconType = TouchPrecomposedIcon;
}
}
}
« no previous file with comments | « Source/core/html/LinkRelAttribute.h ('k') | Source/core/html/LinkRelAttributeTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698