Diff
Modified: trunk/Source/WebCore/ChangeLog (138657 => 138658)
--- trunk/Source/WebCore/ChangeLog 2013-01-02 23:03:24 UTC (rev 138657)
+++ trunk/Source/WebCore/ChangeLog 2013-01-02 23:06:14 UTC (rev 138658)
@@ -1,3 +1,29 @@
+2013-01-02 Adam Barth <aba...@webkit.org>
+
+ HTML preload scanner doesn't need to remember whether we're scanning the body
+ https://bugs.webkit.org/show_bug.cgi?id=105945
+
+ Reviewed by Eric Seidel.
+
+ As far as I can tell, no one uses this state.
+
+ * html/parser/CSSPreloadScanner.cpp:
+ (WebCore::CSSPreloadScanner::CSSPreloadScanner):
+ (WebCore::CSSPreloadScanner::scan):
+ (WebCore::CSSPreloadScanner::emitRule):
+ * html/parser/CSSPreloadScanner.h:
+ (CSSPreloadScanner):
+ * html/parser/HTMLPreloadScanner.cpp:
+ (WebCore::PreloadTask::preload):
+ (WebCore::HTMLPreloadScanner::HTMLPreloadScanner):
+ (WebCore::HTMLPreloadScanner::processToken):
+ * html/parser/HTMLPreloadScanner.h:
+ (HTMLPreloadScanner):
+ * loader/cache/CachedResourceLoader.cpp:
+ (WebCore::CachedResourceLoader::preload):
+ * loader/cache/CachedResourceLoader.h:
+ (CachedResourceLoader):
+
2013-01-02 Abhishek Arya <infe...@chromium.org>
Crash in WebCore::Element::cloneElementWithoutChildren.
Modified: trunk/Source/WebCore/html/parser/CSSPreloadScanner.cpp (138657 => 138658)
--- trunk/Source/WebCore/html/parser/CSSPreloadScanner.cpp 2013-01-02 23:03:24 UTC (rev 138657)
+++ trunk/Source/WebCore/html/parser/CSSPreloadScanner.cpp 2013-01-02 23:06:14 UTC (rev 138658)
@@ -40,7 +40,6 @@
CSSPreloadScanner::CSSPreloadScanner(Document* document)
: m_state(Initial)
- , m_scanningBody(false)
, m_document(document)
{
}
@@ -52,10 +51,8 @@
m_ruleValue.clear();
}
-void CSSPreloadScanner::scan(const HTMLToken& token, bool scanningBody)
+void CSSPreloadScanner::scan(const HTMLToken& token)
{
- m_scanningBody = scanningBody;
-
const HTMLToken::DataVector& characters = token.characters();
for (HTMLToken::DataVector::const_iterator iter = characters.begin(); iter != characters.end() && m_state != DoneParsingImportRules; ++iter)
tokenize(*iter);
@@ -200,7 +197,7 @@
if (!value.isEmpty()) {
CachedResourceRequest request(ResourceRequest(m_document->completeURL(value)));
request.setInitiator(cachedResourceRequestInitiators().css);
- m_document->cachedResourceLoader()->preload(CachedResource::CSSStyleSheet, request, String(), m_scanningBody);
+ m_document->cachedResourceLoader()->preload(CachedResource::CSSStyleSheet, request, String());
}
m_state = Initial;
} else if (equalIgnoringCase("charset", m_rule.characters(), m_rule.length()))
Modified: trunk/Source/WebCore/html/parser/CSSPreloadScanner.h (138657 => 138658)
--- trunk/Source/WebCore/html/parser/CSSPreloadScanner.h 2013-01-02 23:03:24 UTC (rev 138657)
+++ trunk/Source/WebCore/html/parser/CSSPreloadScanner.h 2013-01-02 23:06:14 UTC (rev 138658)
@@ -40,7 +40,7 @@
explicit CSSPreloadScanner(Document*);
void reset();
- void scan(const HTMLToken&, bool scanningBody);
+ void scan(const HTMLToken&);
private:
enum State {
@@ -63,7 +63,6 @@
StringBuilder m_rule;
StringBuilder m_ruleValue;
- bool m_scanningBody;
Document* m_document;
};
Modified: trunk/Source/WebCore/html/parser/HTMLPreloadScanner.cpp (138657 => 138658)
--- trunk/Source/WebCore/html/parser/HTMLPreloadScanner.cpp 2013-01-02 23:03:24 UTC (rev 138657)
+++ trunk/Source/WebCore/html/parser/HTMLPreloadScanner.cpp 2013-01-02 23:06:14 UTC (rev 138658)
@@ -123,7 +123,7 @@
m_urlToLoad = stripLeadingAndTrailingHTMLSpaces(attributeValue);
}
- void preload(Document* document, bool scanningBody, const KURL& baseURL)
+ void preload(Document* document, const KURL& baseURL)
{
if (m_urlToLoad.isEmpty())
return;
@@ -133,12 +133,12 @@
request.setInitiator(tagName());
if (m_tagName == scriptTag) {
request.mutableResourceRequest().setAllowCookies(crossOriginModeAllowsCookies());
- cachedResourceLoader->preload(CachedResource::Script, request, m_charset, scanningBody);
+ cachedResourceLoader->preload(CachedResource::Script, request, m_charset);
}
else if (m_tagName == imgTag || (m_tagName == inputTag && m_inputIsImage))
- cachedResourceLoader->preload(CachedResource::ImageResource, request, String(), scanningBody);
+ cachedResourceLoader->preload(CachedResource::ImageResource, request, String());
else if (m_tagName == linkTag && m_linkIsStyleSheet && m_linkMediaAttributeIsScreen)
- cachedResourceLoader->preload(CachedResource::CSSStyleSheet, request, m_charset, scanningBody);
+ cachedResourceLoader->preload(CachedResource::CSSStyleSheet, request, m_charset);
}
const AtomicString& tagName() const { return m_tagName; }
@@ -165,7 +165,6 @@
: m_document(document)
, m_cssScanner(document)
, m_tokenizer(HTMLTokenizer::create(HTMLDocumentParser::usePreHTML5ParserQuirks(document)))
- , m_bodySeen(false)
, m_inStyle(false)
{
}
@@ -192,7 +191,7 @@
{
if (m_inStyle) {
if (m_token.type() == HTMLTokenTypes::Character)
- m_cssScanner.scan(m_token, scanningBody());
+ m_cssScanner.scan(m_token);
else if (m_token.type() == HTMLTokenTypes::EndTag) {
m_inStyle = false;
m_cssScanner.reset();
@@ -205,23 +204,15 @@
PreloadTask task(m_token);
m_tokenizer->updateStateFor(task.tagName(), m_document->frame());
- if (task.tagName() == bodyTag)
- m_bodySeen = true;
-
if (task.tagName() == styleTag)
m_inStyle = true;
if (task.tagName() == baseTag)
updatePredictedBaseElementURL(KURL(m_document->url(), task.baseElementHref()));
- task.preload(m_document, scanningBody(), m_predictedBaseElementURL.isEmpty() ? m_document->baseURL() : m_predictedBaseElementURL);
+ task.preload(m_document, m_predictedBaseElementURL.isEmpty() ? m_document->baseURL() : m_predictedBaseElementURL);
}
-bool HTMLPreloadScanner::scanningBody() const
-{
- return m_document->body() || m_bodySeen;
-}
-
void HTMLPreloadScanner::updatePredictedBaseElementURL(const KURL& baseElementURL)
{
// The first <base> element is the one that wins.
Modified: trunk/Source/WebCore/html/parser/HTMLPreloadScanner.h (138657 => 138658)
--- trunk/Source/WebCore/html/parser/HTMLPreloadScanner.h 2013-01-02 23:03:24 UTC (rev 138657)
+++ trunk/Source/WebCore/html/parser/HTMLPreloadScanner.h 2013-01-02 23:06:14 UTC (rev 138658)
@@ -48,7 +48,6 @@
private:
void processToken();
- bool scanningBody() const;
void updatePredictedBaseElementURL(const KURL& baseElementURL);
Document* m_document;
@@ -56,7 +55,6 @@
CSSPreloadScanner m_cssScanner;
OwnPtr<HTMLTokenizer> m_tokenizer;
HTMLToken m_token;
- bool m_bodySeen;
bool m_inStyle;
KURL m_predictedBaseElementURL;
};
Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (138657 => 138658)
--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp 2013-01-02 23:03:24 UTC (rev 138657)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp 2013-01-02 23:06:14 UTC (rev 138658)
@@ -790,11 +790,8 @@
ASSERT(m_requestCount > -1);
}
-void CachedResourceLoader::preload(CachedResource::Type type, CachedResourceRequest& request, const String& charset, bool referencedFromBody)
+void CachedResourceLoader::preload(CachedResource::Type type, CachedResourceRequest& request, const String& charset)
{
- // FIXME: Rip this out when we are sure it is no longer necessary (even for mobile).
- UNUSED_PARAM(referencedFromBody);
-
bool delaySubresourceLoad = true;
#if PLATFORM(IOS) || PLATFORM(CHROMIUM)
delaySubresourceLoad = false;
Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.h (138657 => 138658)
--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.h 2013-01-02 23:03:24 UTC (rev 138657)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.h 2013-01-02 23:06:14 UTC (rev 138658)
@@ -130,7 +130,7 @@
bool isPreloaded(const String& urlString) const;
void clearPreloads();
void clearPendingPreloads();
- void preload(CachedResource::Type, CachedResourceRequest&, const String& charset, bool referencedFromBody);
+ void preload(CachedResource::Type, CachedResourceRequest&, const String& charset);
void checkForPendingPreloads();
void printPreloadStats();
bool canRequest(CachedResource::Type, const KURL&, bool forPreload = false);