Index: Source/core/xml/XSLImportRule.cpp |
diff --git a/Source/core/xml/XSLImportRule.cpp b/Source/core/xml/XSLImportRule.cpp |
index e8d38a07c9c94dd9d3d429e9c6b773d507bd0749..8d775ac5f792fa2ec1371957f2922d72157592e8 100644 |
--- a/Source/core/xml/XSLImportRule.cpp |
+++ b/Source/core/xml/XSLImportRule.cpp |
@@ -27,13 +27,14 @@ |
#include "core/fetch/FetchRequest.h" |
#include "core/fetch/ResourceFetcher.h" |
#include "core/fetch/XSLStyleSheetResource.h" |
+#include "core/html/parser/TextResourceDecoder.h" |
+#include "platform/SharedBuffer.h" |
namespace blink { |
XSLImportRule::XSLImportRule(XSLStyleSheet* parent, const String& href) |
: m_parentStyleSheet(parent) |
, m_strHref(href) |
- , m_resource(0) |
, m_loading(false) |
{ |
} |
@@ -44,9 +45,6 @@ XSLImportRule::~XSLImportRule() |
if (m_styleSheet) |
m_styleSheet->setParentStyleSheet(0); |
#endif |
- |
- if (m_resource) |
- m_resource->removeClient(this); |
} |
void XSLImportRule::setXSLStyleSheet(const String& href, const KURL& baseURL, const String& sheet) |
@@ -99,18 +97,19 @@ void XSLImportRule::loadSheet() |
return; |
} |
- FetchRequest request(ResourceRequest(fetcher->document()->completeURL(absHref)), FetchInitiatorTypeNames::xml); |
- m_resource = fetcher->fetchXSLStyleSheet(request); |
- |
- if (m_resource) { |
- m_resource->addClient(this); |
- |
- // If the imported sheet is in the cache, then setXSLStyleSheet gets |
- // called, and the sheet even gets parsed (via parseString). In this |
- // case we have loaded (even if our subresources haven't), so if we have |
- // a stylesheet after checking the cache, then we've clearly loaded. |
- if (!m_styleSheet) |
- m_loading = true; |
+ ResourceLoaderOptions fetchOptions(ResourceFetcher::defaultResourceOptions()); |
+ FetchRequest request(ResourceRequest(fetcher->document()->completeURL(absHref)), FetchInitiatorTypeNames::xml, fetchOptions); |
+ request.setOriginRestriction(FetchRequest::RestrictToSameOrigin); |
+ ResourcePtr<Resource> resource = fetcher->fetchSynchronously(request); |
+ if (!resource) |
+ return; |
+ |
+ ASSERT(!m_styleSheet); |
+ if (SharedBuffer* data = resource->resourceBuffer()) { |
+ OwnPtr<TextResourceDecoder> decoder = TextResourceDecoder::create("text/xsl", request.charset()); |
+ String text = decoder->decode(data->data(), resource->encodedSize()); |
+ text = text + decoder->flush(); |
abarth-chromium
2014/09/06 23:13:51
You should just use the UTF-8 encoding directly.
tasak
2014/09/08 04:22:03
I see. Done.
|
+ setXSLStyleSheet(absHref, parentSheet->baseURL(), text); |
} |
} |