Index: Source/core/xml/XSLImportRule.cpp |
diff --git a/Source/core/xml/XSLImportRule.cpp b/Source/core/xml/XSLImportRule.cpp |
index e8d38a07c9c94dd9d3d429e9c6b773d507bd0749..b391b30ee9fbd9621718d73299828ec4f9a36eae 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 "platform/SharedBuffer.h" |
+#include "wtf/text/TextEncoding.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,19 +97,16 @@ 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); |
+ 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; |
- // 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; |
- } |
+ ASSERT(!m_styleSheet); |
+ if (SharedBuffer* data = resource->resourceBuffer()) |
+ setXSLStyleSheet(absHref, parentSheet->baseURL(), UTF8Encoding().decode(data->data(), data->size())); |
} |
void XSLImportRule::trace(Visitor* visitor) |