| Index: third_party/WebKit/Source/core/fetch/CSSStyleSheetResource.cpp
|
| diff --git a/third_party/WebKit/Source/core/fetch/CSSStyleSheetResource.cpp b/third_party/WebKit/Source/core/fetch/CSSStyleSheetResource.cpp
|
| index 763015bfe8f64e39a326e59f580e92bb117b0d73..8946986691f97d8fbe73352c11e926be3ba66c6b 100644
|
| --- a/third_party/WebKit/Source/core/fetch/CSSStyleSheetResource.cpp
|
| +++ b/third_party/WebKit/Source/core/fetch/CSSStyleSheetResource.cpp
|
| @@ -51,6 +51,7 @@ CSSStyleSheetResource* CSSStyleSheetResource::createForTest(const ResourceReques
|
|
|
| CSSStyleSheetResource::CSSStyleSheetResource(const ResourceRequest& resourceRequest, const ResourceLoaderOptions& options, const String& charset)
|
| : StyleSheetResource(resourceRequest, CSSStyleSheet, options, "text/css", charset)
|
| + , m_didNotifyFirstData(false)
|
| {
|
| }
|
|
|
| @@ -80,8 +81,12 @@ void CSSStyleSheetResource::didAddClient(ResourceClient* c)
|
| // because setCSSStyleSheet() may cause scripts to be executed, which could destroy 'c' if it is an instance of HTMLLinkElement.
|
| // see the comment of HTMLLinkElement::setCSSStyleSheet.
|
| Resource::didAddClient(c);
|
| + if (m_didNotifyFirstData)
|
| + static_cast<StyleSheetResourceClient*>(c)->didAppendFirstData(this);
|
|
|
| - if (!isLoading())
|
| + // |c| might be removed in didAppendFirstData, so ensure it is still a
|
| + // client.
|
| + if (hasClient(c) && !isLoading())
|
| static_cast<StyleSheetResourceClient*>(c)->setCSSStyleSheet(resourceRequest().url(), response().url(), encoding(), this);
|
| }
|
|
|
| @@ -97,6 +102,17 @@ const String CSSStyleSheetResource::sheetText(MIMETypeCheck mimeTypeCheck) const
|
| return decodedText();
|
| }
|
|
|
| +void CSSStyleSheetResource::appendData(const char* data, size_t length)
|
| +{
|
| + Resource::appendData(data, length);
|
| + if (m_didNotifyFirstData)
|
| + return;
|
| + ResourceClientWalker<StyleSheetResourceClient> w(clients());
|
| + while (StyleSheetResourceClient* c = w.next())
|
| + c->didAppendFirstData(this);
|
| + m_didNotifyFirstData = true;
|
| +}
|
| +
|
| void CSSStyleSheetResource::checkNotify()
|
| {
|
| // Decode the data to find out the encoding and keep the sheet text around during checkNotify()
|
|
|