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

Unified Diff: Source/WebCore/html/parser/HTMLPreloadScanner.cpp

Issue 13945017: External Stylesheets preloaded according to their media attribute (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 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
Index: Source/WebCore/html/parser/HTMLPreloadScanner.cpp
diff --git a/Source/WebCore/html/parser/HTMLPreloadScanner.cpp b/Source/WebCore/html/parser/HTMLPreloadScanner.cpp
index 6f9b1778036f656976a7588e3c50f5a6591f691f..c939284f2c2e315fd7d4d56c3c0266c31a0b6cf1 100644
--- a/Source/WebCore/html/parser/HTMLPreloadScanner.cpp
+++ b/Source/WebCore/html/parser/HTMLPreloadScanner.cpp
@@ -34,8 +34,6 @@
#include "HTMLTokenizer.h"
#include "InputTypeNames.h"
#include "LinkRelAttribute.h"
-#include "MediaList.h"
-#include "MediaQueryEvaluator.h"
#include <wtf/Functional.h>
#include <wtf/MainThread.h>
@@ -111,7 +109,6 @@ public:
explicit StartTagScanner(TagId tagId)
: m_tagId(tagId)
, m_linkIsStyleSheet(false)
- , m_linkMediaAttributeIsScreen(true)
, m_inputIsImage(false)
{
}
@@ -143,7 +140,7 @@ public:
if (!shouldPreload())
return nullptr;
- OwnPtr<PreloadRequest> request = PreloadRequest::create(initiatorFor(m_tagId), m_urlToLoad, predictedBaseURL, resourceType());
+ OwnPtr<PreloadRequest> request = PreloadRequest::create(initiatorFor(m_tagId), m_urlToLoad, predictedBaseURL, resourceType(), m_mediaAttribute);
request->setCrossOriginModeAllowsCookies(crossOriginModeAllowsCookies());
request->setCharset(charset());
return request.release();
@@ -180,7 +177,7 @@ private:
else if (match(attributeName, relAttr))
m_linkIsStyleSheet = relAttributeIsStyleSheet(attributeValue);
else if (match(attributeName, mediaAttr))
- m_linkMediaAttributeIsScreen = linkMediaAttributeIsScreen(attributeValue);
+ m_mediaAttribute = attributeValue;
} else if (m_tagId == InputTagId) {
if (match(attributeName, srcAttr))
setUrlToLoad(attributeValue);
@@ -195,19 +192,6 @@ private:
return rel.m_isStyleSheet && !rel.m_isAlternate && rel.m_iconType == InvalidIcon && !rel.m_isDNSPrefetch;
}
- static bool linkMediaAttributeIsScreen(const String& attributeValue)
- {
- if (attributeValue.isEmpty())
- return true;
- RefPtr<MediaQuerySet> mediaQueries = MediaQuerySet::createAllowingDescriptionSyntax(attributeValue);
-
- // Only preload screen media stylesheets. Used this way, the evaluator evaluates to true for any
- // rules containing complex queries (full evaluation is possible but it requires a frame and a style selector which
- // may be problematic here).
- MediaQueryEvaluator mediaQueryEvaluator("screen");
- return mediaQueryEvaluator.eval(mediaQueries.get());
- }
-
void setUrlToLoad(const String& attributeValue)
{
// We only respect the first src/href, per HTML5:
@@ -231,7 +215,7 @@ private:
return CachedResource::Script;
if (m_tagId == ImgTagId || (m_tagId == InputTagId && m_inputIsImage))
return CachedResource::ImageResource;
- if (m_tagId == LinkTagId && m_linkIsStyleSheet && m_linkMediaAttributeIsScreen)
+ if (m_tagId == LinkTagId && m_linkIsStyleSheet)
return CachedResource::CSSStyleSheet;
ASSERT_NOT_REACHED();
return CachedResource::RawResource;
@@ -242,7 +226,7 @@ private:
if (m_urlToLoad.isEmpty())
return false;
- if (m_tagId == LinkTagId && (!m_linkIsStyleSheet || !m_linkMediaAttributeIsScreen))
+ if (m_tagId == LinkTagId && !m_linkIsStyleSheet)
return false;
if (m_tagId == InputTagId && !m_inputIsImage)
@@ -261,7 +245,7 @@ private:
String m_charset;
String m_crossOriginMode;
bool m_linkIsStyleSheet;
- bool m_linkMediaAttributeIsScreen;
+ String m_mediaAttribute;
bool m_inputIsImage;
};
« no previous file with comments | « LayoutTests/http/tests/loading/resources/small_mq.css ('k') | Source/WebCore/html/parser/HTMLResourcePreloader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698