| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This file is part of the XSL implementation. | 2 * This file is part of the XSL implementation. |
| 3 * | 3 * |
| 4 * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved. | 4 * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved. |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 SOFT_LINK(libxslt, xsltIsBlank, int, (xmlChar *str), (str)) | 50 SOFT_LINK(libxslt, xsltIsBlank, int, (xmlChar *str), (str)) |
| 51 SOFT_LINK(libxslt, xsltGetNsProp, xmlChar *, (xmlNodePtr node, const xmlChar *na
me, const xmlChar *nameSpace), (node, name, nameSpace)) | 51 SOFT_LINK(libxslt, xsltGetNsProp, xmlChar *, (xmlNodePtr node, const xmlChar *na
me, const xmlChar *nameSpace), (node, name, nameSpace)) |
| 52 SOFT_LINK(libxslt, xsltParseStylesheetDoc, xsltStylesheetPtr, (xmlDocPtr doc), (
doc)) | 52 SOFT_LINK(libxslt, xsltParseStylesheetDoc, xsltStylesheetPtr, (xmlDocPtr doc), (
doc)) |
| 53 SOFT_LINK(libxslt, xsltLoadStylesheetPI, xsltStylesheetPtr, (xmlDocPtr doc), (do
c)) | 53 SOFT_LINK(libxslt, xsltLoadStylesheetPI, xsltStylesheetPtr, (xmlDocPtr doc), (do
c)) |
| 54 #endif | 54 #endif |
| 55 | 55 |
| 56 namespace WebCore { | 56 namespace WebCore { |
| 57 | 57 |
| 58 XSLStyleSheet::XSLStyleSheet(XSLImportRule* parentRule, const String& originalUR
L, const KURL& finalURL) | 58 XSLStyleSheet::XSLStyleSheet(XSLImportRule* parentRule, const String& originalUR
L, const KURL& finalURL) |
| 59 : StyleSheet(parentRule, originalURL, finalURL) | 59 : StyleSheet(parentRule, originalURL, finalURL) |
| 60 , m_ownerDocument(0) |
| 60 , m_embedded(false) | 61 , m_embedded(false) |
| 61 , m_processed(false) // Child sheets get marked as processed when the libxsl
t engine has finally seen them. | 62 , m_processed(false) // Child sheets get marked as processed when the libxsl
t engine has finally seen them. |
| 62 , m_stylesheetDoc(0) | 63 , m_stylesheetDoc(0) |
| 63 , m_stylesheetDocTaken(false) | 64 , m_stylesheetDocTaken(false) |
| 64 , m_parentStyleSheet(0) | 65 , m_parentStyleSheet(0) |
| 65 { | 66 { |
| 66 } | 67 } |
| 67 | 68 |
| 68 XSLStyleSheet::XSLStyleSheet(Node* parentNode, const String& originalURL, const
KURL& finalURL, bool embedded) | 69 XSLStyleSheet::XSLStyleSheet(Node* parentNode, const String& originalURL, const
KURL& finalURL, bool embedded) |
| 69 : StyleSheet(parentNode, originalURL, finalURL) | 70 : StyleSheet(parentNode, originalURL, finalURL) |
| 71 , m_ownerDocument(parentNode->document()) |
| 70 , m_embedded(embedded) | 72 , m_embedded(embedded) |
| 71 , m_processed(true) // The root sheet starts off processed. | 73 , m_processed(true) // The root sheet starts off processed. |
| 72 , m_stylesheetDoc(0) | 74 , m_stylesheetDoc(0) |
| 73 , m_stylesheetDocTaken(false) | 75 , m_stylesheetDocTaken(false) |
| 74 , m_parentStyleSheet(0) | 76 , m_parentStyleSheet(0) |
| 75 { | 77 { |
| 76 } | 78 } |
| 77 | 79 |
| 78 XSLStyleSheet::~XSLStyleSheet() | 80 XSLStyleSheet::~XSLStyleSheet() |
| 79 { | 81 { |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 if (rule->isImportRule()) { | 123 if (rule->isImportRule()) { |
| 122 XSLImportRule* import = static_cast<XSLImportRule*>(rule); | 124 XSLImportRule* import = static_cast<XSLImportRule*>(rule); |
| 123 if (import->styleSheet()) | 125 if (import->styleSheet()) |
| 124 import->styleSheet()->clearDocuments(); | 126 import->styleSheet()->clearDocuments(); |
| 125 } | 127 } |
| 126 } | 128 } |
| 127 } | 129 } |
| 128 | 130 |
| 129 CachedResourceLoader* XSLStyleSheet::cachedResourceLoader() | 131 CachedResourceLoader* XSLStyleSheet::cachedResourceLoader() |
| 130 { | 132 { |
| 131 Document* document = ownerDocument(); | 133 if (!m_ownerDocument) |
| 132 if (!document) | |
| 133 return 0; | 134 return 0; |
| 134 return document->cachedResourceLoader(); | 135 return m_ownerDocument->cachedResourceLoader(); |
| 135 } | 136 } |
| 136 | 137 |
| 137 bool XSLStyleSheet::parseString(const String& string, bool) | 138 bool XSLStyleSheet::parseString(const String& string, bool) |
| 138 { | 139 { |
| 139 // Parse in a single chunk into an xmlDocPtr | 140 // Parse in a single chunk into an xmlDocPtr |
| 140 const UChar BOM = 0xFEFF; | 141 const UChar BOM = 0xFEFF; |
| 141 const unsigned char BOMHighByte = *reinterpret_cast<const unsigned char*>(&B
OM); | 142 const unsigned char BOMHighByte = *reinterpret_cast<const unsigned char*>(&B
OM); |
| 142 if (!m_stylesheetDocTaken) | 143 if (!m_stylesheetDocTaken) |
| 143 xmlFreeDoc(m_stylesheetDoc); | 144 xmlFreeDoc(m_stylesheetDoc); |
| 144 m_stylesheetDocTaken = false; | 145 m_stylesheetDocTaken = false; |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 ASSERT(!m_stylesheetDocTaken); | 251 ASSERT(!m_stylesheetDocTaken); |
| 251 xsltStylesheetPtr result = xsltParseStylesheetDoc(m_stylesheetDoc); | 252 xsltStylesheetPtr result = xsltParseStylesheetDoc(m_stylesheetDoc); |
| 252 if (result) | 253 if (result) |
| 253 m_stylesheetDocTaken = true; | 254 m_stylesheetDocTaken = true; |
| 254 return result; | 255 return result; |
| 255 } | 256 } |
| 256 | 257 |
| 257 void XSLStyleSheet::setParentStyleSheet(XSLStyleSheet* parent) | 258 void XSLStyleSheet::setParentStyleSheet(XSLStyleSheet* parent) |
| 258 { | 259 { |
| 259 m_parentStyleSheet = parent; | 260 m_parentStyleSheet = parent; |
| 260 } | 261 if (parent) |
| 261 | 262 m_ownerDocument = parent->ownerDocument(); |
| 262 Document* XSLStyleSheet::ownerDocument() | |
| 263 { | |
| 264 for (XSLStyleSheet* styleSheet = this; styleSheet; styleSheet = styleSheet->
parentStyleSheet()) { | |
| 265 Node* node = styleSheet->ownerNode(); | |
| 266 if (node) | |
| 267 return node->document(); | |
| 268 } | |
| 269 return 0; | |
| 270 } | 263 } |
| 271 | 264 |
| 272 xmlDocPtr XSLStyleSheet::locateStylesheetSubResource(xmlDocPtr parentDoc, const
xmlChar* uri) | 265 xmlDocPtr XSLStyleSheet::locateStylesheetSubResource(xmlDocPtr parentDoc, const
xmlChar* uri) |
| 273 { | 266 { |
| 274 bool matchedParent = (parentDoc == document()); | 267 bool matchedParent = (parentDoc == document()); |
| 275 unsigned len = length(); | 268 unsigned len = length(); |
| 276 for (unsigned i = 0; i < len; ++i) { | 269 for (unsigned i = 0; i < len; ++i) { |
| 277 StyleBase* rule = item(i); | 270 StyleBase* rule = item(i); |
| 278 if (rule->isImportRule()) { | 271 if (rule->isImportRule()) { |
| 279 XSLImportRule* import = static_cast<XSLImportRule*>(rule); | 272 XSLImportRule* import = static_cast<XSLImportRule*>(rule); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 { | 306 { |
| 314 ASSERT(!m_processed); | 307 ASSERT(!m_processed); |
| 315 ASSERT(!m_stylesheetDocTaken); | 308 ASSERT(!m_stylesheetDocTaken); |
| 316 m_processed = true; | 309 m_processed = true; |
| 317 m_stylesheetDocTaken = true; | 310 m_stylesheetDocTaken = true; |
| 318 } | 311 } |
| 319 | 312 |
| 320 } // namespace WebCore | 313 } // namespace WebCore |
| 321 | 314 |
| 322 #endif // ENABLE(XSLT) | 315 #endif // ENABLE(XSLT) |
| OLD | NEW |