Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(61)

Side by Side Diff: Source/WebCore/xml/XSLStyleSheetLibxslt.cpp

Issue 6483001: Merge 76728 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/648/
Patch Set: Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/WebCore/xml/XSLStyleSheet.h ('k') | Source/WebCore/xml/XSLStyleSheetQt.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 SOFT_LINK(libxslt, xsltIsBlank, int, (xmlChar *str), (str)) 49 SOFT_LINK(libxslt, xsltIsBlank, int, (xmlChar *str), (str))
50 SOFT_LINK(libxslt, xsltGetNsProp, xmlChar *, (xmlNodePtr node, const xmlChar *na me, const xmlChar *nameSpace), (node, name, nameSpace)) 50 SOFT_LINK(libxslt, xsltGetNsProp, xmlChar *, (xmlNodePtr node, const xmlChar *na me, const xmlChar *nameSpace), (node, name, nameSpace))
51 SOFT_LINK(libxslt, xsltParseStylesheetDoc, xsltStylesheetPtr, (xmlDocPtr doc), ( doc)) 51 SOFT_LINK(libxslt, xsltParseStylesheetDoc, xsltStylesheetPtr, (xmlDocPtr doc), ( doc))
52 SOFT_LINK(libxslt, xsltLoadStylesheetPI, xsltStylesheetPtr, (xmlDocPtr doc), (do c)) 52 SOFT_LINK(libxslt, xsltLoadStylesheetPI, xsltStylesheetPtr, (xmlDocPtr doc), (do c))
53 #endif 53 #endif
54 54
55 namespace WebCore { 55 namespace WebCore {
56 56
57 XSLStyleSheet::XSLStyleSheet(XSLImportRule* parentRule, const String& originalUR L, const KURL& finalURL) 57 XSLStyleSheet::XSLStyleSheet(XSLImportRule* parentRule, const String& originalUR L, const KURL& finalURL)
58 : StyleSheet(parentRule, originalURL, finalURL) 58 : StyleSheet(parentRule, originalURL, finalURL)
59 , m_ownerDocument(0)
60 , m_embedded(false) 59 , m_embedded(false)
61 , m_processed(false) // Child sheets get marked as processed when the libxsl t engine has finally seen them. 60 , m_processed(false) // Child sheets get marked as processed when the libxsl t engine has finally seen them.
62 , m_stylesheetDoc(0) 61 , m_stylesheetDoc(0)
63 , m_stylesheetDocTaken(false) 62 , m_stylesheetDocTaken(false)
64 , m_parentStyleSheet(0) 63 , m_parentStyleSheet(0)
65 { 64 {
66 } 65 }
67 66
68 XSLStyleSheet::XSLStyleSheet(Node* parentNode, const String& originalURL, const KURL& finalURL, bool embedded) 67 XSLStyleSheet::XSLStyleSheet(Node* parentNode, const String& originalURL, const KURL& finalURL, bool embedded)
69 : StyleSheet(parentNode, originalURL, finalURL) 68 : StyleSheet(parentNode, originalURL, finalURL)
70 , m_ownerDocument(parentNode->document())
71 , m_embedded(embedded) 69 , m_embedded(embedded)
72 , m_processed(true) // The root sheet starts off processed. 70 , m_processed(true) // The root sheet starts off processed.
73 , m_stylesheetDoc(0) 71 , m_stylesheetDoc(0)
74 , m_stylesheetDocTaken(false) 72 , m_stylesheetDocTaken(false)
75 , m_parentStyleSheet(0) 73 , m_parentStyleSheet(0)
76 { 74 {
77 } 75 }
78 76
79 XSLStyleSheet::~XSLStyleSheet() 77 XSLStyleSheet::~XSLStyleSheet()
80 { 78 {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 if (rule->isImportRule()) { 120 if (rule->isImportRule()) {
123 XSLImportRule* import = static_cast<XSLImportRule*>(rule); 121 XSLImportRule* import = static_cast<XSLImportRule*>(rule);
124 if (import->styleSheet()) 122 if (import->styleSheet())
125 import->styleSheet()->clearDocuments(); 123 import->styleSheet()->clearDocuments();
126 } 124 }
127 } 125 }
128 } 126 }
129 127
130 CachedResourceLoader* XSLStyleSheet::cachedResourceLoader() 128 CachedResourceLoader* XSLStyleSheet::cachedResourceLoader()
131 { 129 {
132 if (!m_ownerDocument) 130 Document* document = ownerDocument();
131 if (!document)
133 return 0; 132 return 0;
134 return m_ownerDocument->cachedResourceLoader(); 133 return document->cachedResourceLoader();
135 } 134 }
136 135
137 bool XSLStyleSheet::parseString(const String& string, bool) 136 bool XSLStyleSheet::parseString(const String& string, bool)
138 { 137 {
139 // Parse in a single chunk into an xmlDocPtr 138 // Parse in a single chunk into an xmlDocPtr
140 const UChar BOM = 0xFEFF; 139 const UChar BOM = 0xFEFF;
141 const unsigned char BOMHighByte = *reinterpret_cast<const unsigned char*>(&B OM); 140 const unsigned char BOMHighByte = *reinterpret_cast<const unsigned char*>(&B OM);
142 if (!m_stylesheetDocTaken) 141 if (!m_stylesheetDocTaken)
143 xmlFreeDoc(m_stylesheetDoc); 142 xmlFreeDoc(m_stylesheetDoc);
144 m_stylesheetDocTaken = false; 143 m_stylesheetDocTaken = false;
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 ASSERT(!m_stylesheetDocTaken); 249 ASSERT(!m_stylesheetDocTaken);
251 xsltStylesheetPtr result = xsltParseStylesheetDoc(m_stylesheetDoc); 250 xsltStylesheetPtr result = xsltParseStylesheetDoc(m_stylesheetDoc);
252 if (result) 251 if (result)
253 m_stylesheetDocTaken = true; 252 m_stylesheetDocTaken = true;
254 return result; 253 return result;
255 } 254 }
256 255
257 void XSLStyleSheet::setParentStyleSheet(XSLStyleSheet* parent) 256 void XSLStyleSheet::setParentStyleSheet(XSLStyleSheet* parent)
258 { 257 {
259 m_parentStyleSheet = parent; 258 m_parentStyleSheet = parent;
260 if (parent) 259 }
261 m_ownerDocument = parent->ownerDocument(); 260
261 Document* XSLStyleSheet::ownerDocument()
262 {
263 for (XSLStyleSheet* styleSheet = this; styleSheet; styleSheet = styleSheet-> parentStyleSheet()) {
264 Node* node = styleSheet->ownerNode();
265 if (node)
266 return node->document();
267 }
268 return 0;
262 } 269 }
263 270
264 xmlDocPtr XSLStyleSheet::locateStylesheetSubResource(xmlDocPtr parentDoc, const xmlChar* uri) 271 xmlDocPtr XSLStyleSheet::locateStylesheetSubResource(xmlDocPtr parentDoc, const xmlChar* uri)
265 { 272 {
266 bool matchedParent = (parentDoc == document()); 273 bool matchedParent = (parentDoc == document());
267 unsigned len = length(); 274 unsigned len = length();
268 for (unsigned i = 0; i < len; ++i) { 275 for (unsigned i = 0; i < len; ++i) {
269 StyleBase* rule = item(i); 276 StyleBase* rule = item(i);
270 if (rule->isImportRule()) { 277 if (rule->isImportRule()) {
271 XSLImportRule* import = static_cast<XSLImportRule*>(rule); 278 XSLImportRule* import = static_cast<XSLImportRule*>(rule);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 { 312 {
306 ASSERT(!m_processed); 313 ASSERT(!m_processed);
307 ASSERT(!m_stylesheetDocTaken); 314 ASSERT(!m_stylesheetDocTaken);
308 m_processed = true; 315 m_processed = true;
309 m_stylesheetDocTaken = true; 316 m_stylesheetDocTaken = true;
310 } 317 }
311 318
312 } // namespace WebCore 319 } // namespace WebCore
313 320
314 #endif // ENABLE(XSLT) 321 #endif // ENABLE(XSLT)
OLDNEW
« no previous file with comments | « Source/WebCore/xml/XSLStyleSheet.h ('k') | Source/WebCore/xml/XSLStyleSheetQt.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698