summaryrefslogtreecommitdiff
path: root/Source/WebCore/xml/XSLStyleSheet.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/xml/XSLStyleSheet.h')
-rw-r--r--Source/WebCore/xml/XSLStyleSheet.h69
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)