diff options
Diffstat (limited to 'Source/WebCore/xml/XSLStyleSheet.h')
-rw-r--r-- | Source/WebCore/xml/XSLStyleSheet.h | 69 |
1 files changed, 36 insertions, 33 deletions
diff --git a/Source/WebCore/xml/XSLStyleSheet.h b/Source/WebCore/xml/XSLStyleSheet.h index 0e0043e27..644df34bd 100644 --- a/Source/WebCore/xml/XSLStyleSheet.h +++ b/Source/WebCore/xml/XSLStyleSheet.h @@ -20,18 +20,16 @@ * */ -#ifndef XSLStyleSheet_h -#define XSLStyleSheet_h +#pragma once #if ENABLE(XSLT) #include "ProcessingInstruction.h" #include "StyleSheet.h" - #include <libxml/parser.h> #include <libxslt/transform.h> - -#include <wtf/PassRefPtr.h> +#include <wtf/Ref.h> +#include <wtf/TypeCasts.h> namespace WebCore { @@ -40,24 +38,24 @@ class XSLImportRule; class XSLStyleSheet final : public StyleSheet { public: - static PassRefPtr<XSLStyleSheet> create(XSLImportRule* parentImport, const String& originalURL, const URL& finalURL) + static Ref<XSLStyleSheet> create(XSLImportRule* parentImport, const String& originalURL, const URL& finalURL) { - return adoptRef(new XSLStyleSheet(parentImport, originalURL, finalURL)); + return adoptRef(*new XSLStyleSheet(parentImport, originalURL, finalURL)); } - static PassRefPtr<XSLStyleSheet> create(ProcessingInstruction* parentNode, const String& originalURL, const URL& finalURL) + static Ref<XSLStyleSheet> create(ProcessingInstruction* parentNode, const String& originalURL, const URL& finalURL) { - return adoptRef(new XSLStyleSheet(parentNode, originalURL, finalURL, false)); + return adoptRef(*new XSLStyleSheet(parentNode, originalURL, finalURL, false)); } - static PassRefPtr<XSLStyleSheet> createEmbedded(ProcessingInstruction* parentNode, const URL& finalURL) + static Ref<XSLStyleSheet> createEmbedded(ProcessingInstruction* parentNode, const URL& finalURL) { - return adoptRef(new XSLStyleSheet(parentNode, finalURL.string(), finalURL, true)); + return adoptRef(*new XSLStyleSheet(parentNode, finalURL.string(), finalURL, true)); } // Taking an arbitrary node is unsafe, because owner node pointer can become stale. // XSLTProcessor ensures that the stylesheet doesn't outlive its parent, in part by not exposing it to JavaScript. - static PassRefPtr<XSLStyleSheet> createForXSLTProcessor(Node* parentNode, const String& originalURL, const URL& finalURL) + static Ref<XSLStyleSheet> createForXSLTProcessor(Node* parentNode, const String& originalURL, const URL& finalURL) { - return adoptRef(new XSLStyleSheet(parentNode, originalURL, finalURL, false)); + return adoptRef(*new XSLStyleSheet(parentNode, originalURL, finalURL, false)); } virtual ~XSLStyleSheet(); @@ -74,7 +72,7 @@ public: CachedResourceLoader* cachedResourceLoader(); Document* ownerDocument(); - virtual XSLStyleSheet* parentStyleSheet() const override { return m_parentStyleSheet; } + XSLStyleSheet* parentStyleSheet() const override { return m_parentStyleSheet; } void setParentStyleSheet(XSLStyleSheet* parent); xmlDocPtr document(); @@ -86,41 +84,46 @@ public: void markAsProcessed(); bool processed() const { return m_processed; } - virtual String type() const override { return "text/xml"; } - virtual bool disabled() const override { return m_isDisabled; } - virtual void setDisabled(bool b) override { m_isDisabled = b; } - virtual Node* ownerNode() const override { return m_ownerNode; } - virtual String href() const override { return m_originalURL; } - virtual String title() const override { return emptyString(); } - - virtual void clearOwnerNode() override { m_ownerNode = 0; } - virtual URL baseURL() const override { return m_finalURL; } - virtual bool isLoading() const override; + String type() const override { return "text/xml"; } + bool disabled() const override { return m_isDisabled; } + void setDisabled(bool b) override { m_isDisabled = b; } + Node* ownerNode() const override { return m_ownerNode; } + String href() const override { return m_originalURL; } + String title() const override { return emptyString(); } - virtual bool isXSLStyleSheet() const override { return true; } + void clearOwnerNode() override { m_ownerNode = nullptr; } + URL baseURL() const override { return m_finalURL; } + bool isLoading() const override; private: XSLStyleSheet(Node* parentNode, const String& originalURL, const URL& finalURL, bool embedded); XSLStyleSheet(XSLImportRule* parentImport, const String& originalURL, const URL& finalURL); - + + bool isXSLStyleSheet() const override { return true; } + + void clearXSLStylesheetDocument(); + Node* m_ownerNode; String m_originalURL; URL m_finalURL; - bool m_isDisabled; + bool m_isDisabled { false }; Vector<std::unique_ptr<XSLImportRule>> m_children; bool m_embedded; bool m_processed; - xmlDocPtr m_stylesheetDoc; - bool m_stylesheetDocTaken; - - XSLStyleSheet* m_parentStyleSheet; + xmlDocPtr m_stylesheetDoc { nullptr }; + bool m_stylesheetDocTaken { false }; + bool m_compilationFailed { false }; + + XSLStyleSheet* m_parentStyleSheet { nullptr }; }; } // namespace WebCore -#endif // ENABLE(XSLT) +SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::XSLStyleSheet) + static bool isType(const WebCore::StyleSheet& styleSheet) { return styleSheet.isXSLStyleSheet(); } +SPECIALIZE_TYPE_TRAITS_END() -#endif // XSLStyleSheet_h +#endif // ENABLE(XSLT) |