| 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;
|
| }
|
| }
|
| }
|
|
|