| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2000 Peter Kelly (pmk@post.com) | 2 * Copyright (C) 2000 Peter Kelly (pmk@post.com) |
| 3 * Copyright (C) 2005, 2006, 2008, 2014 Apple Inc. All rights reserved. | 3 * Copyright (C) 2005, 2006, 2008, 2014 Apple Inc. All rights reserved. |
| 4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
| 5 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org) | 5 * Copyright (C) 2007 Samuel Weinig (sam@webkit.org) |
| 6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 6 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
| 7 * Copyright (C) 2008 Holger Hans Peter Freyther | 7 * Copyright (C) 2008 Holger Hans Peter Freyther |
| 8 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 8 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
| 9 * | 9 * |
| 10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 // Each attribute has 5 elements in the array: | 140 // Each attribute has 5 elements in the array: |
| 141 // name, prefix, uri, value and an end pointer. | 141 // name, prefix, uri, value and an end pointer. |
| 142 for (int j = 0; j < 3; ++j) | 142 for (int j = 0; j < 3; ++j) |
| 143 m_attributes[i * 5 + j] = xmlStrdup(attributes[i * 5 + j]); | 143 m_attributes[i * 5 + j] = xmlStrdup(attributes[i * 5 + j]); |
| 144 int length = attributes[i * 5 + 4] - attributes[i * 5 + 3]; | 144 int length = attributes[i * 5 + 4] - attributes[i * 5 + 3]; |
| 145 m_attributes[i * 5 + 3] = xmlStrndup(attributes[i * 5 + 3], length); | 145 m_attributes[i * 5 + 3] = xmlStrndup(attributes[i * 5 + 3], length); |
| 146 m_attributes[i * 5 + 4] = m_attributes[i * 5 + 3] + length; | 146 m_attributes[i * 5 + 4] = m_attributes[i * 5 + 3] + length; |
| 147 } | 147 } |
| 148 } | 148 } |
| 149 | 149 |
| 150 virtual ~PendingStartElementNSCallback() | 150 ~PendingStartElementNSCallback() override |
| 151 { | 151 { |
| 152 for (int i = 0; i < m_namespaceCount * 2; ++i) | 152 for (int i = 0; i < m_namespaceCount * 2; ++i) |
| 153 xmlFree(m_namespaces[i]); | 153 xmlFree(m_namespaces[i]); |
| 154 xmlFree(m_namespaces); | 154 xmlFree(m_namespaces); |
| 155 for (int i = 0; i < m_attributeCount; ++i) | 155 for (int i = 0; i < m_attributeCount; ++i) |
| 156 for (int j = 0; j < 4; ++j) | 156 for (int j = 0; j < 4; ++j) |
| 157 xmlFree(m_attributes[i * 5 + j]); | 157 xmlFree(m_attributes[i * 5 + j]); |
| 158 xmlFree(m_attributes); | 158 xmlFree(m_attributes); |
| 159 } | 159 } |
| 160 | 160 |
| 161 virtual void call(XMLDocumentParser* parser) override | 161 void call(XMLDocumentParser* parser) override |
| 162 { | 162 { |
| 163 parser->startElementNs(m_localName, m_prefix, m_uri, | 163 parser->startElementNs(m_localName, m_prefix, m_uri, |
| 164 m_namespaceCount, const_cast<const xmlChar**>(m_namespaces), | 164 m_namespaceCount, const_cast<const xmlChar**>(m_namespaces), |
| 165 m_attributeCount, m_defaultedCount, const_cast<const xmlChar**>(m_at
tributes)); | 165 m_attributeCount, m_defaultedCount, const_cast<const xmlChar**>(m_at
tributes)); |
| 166 } | 166 } |
| 167 | 167 |
| 168 private: | 168 private: |
| 169 AtomicString m_localName; | 169 AtomicString m_localName; |
| 170 AtomicString m_prefix; | 170 AtomicString m_prefix; |
| 171 AtomicString m_uri; | 171 AtomicString m_uri; |
| 172 int m_namespaceCount; | 172 int m_namespaceCount; |
| 173 xmlChar** m_namespaces; | 173 xmlChar** m_namespaces; |
| 174 int m_attributeCount; | 174 int m_attributeCount; |
| 175 int m_defaultedCount; | 175 int m_defaultedCount; |
| 176 xmlChar** m_attributes; | 176 xmlChar** m_attributes; |
| 177 }; | 177 }; |
| 178 | 178 |
| 179 class PendingEndElementNSCallback final : public XMLDocumentParser::PendingCallb
ack { | 179 class PendingEndElementNSCallback final : public XMLDocumentParser::PendingCallb
ack { |
| 180 public: | 180 public: |
| 181 virtual void call(XMLDocumentParser* parser) override | 181 void call(XMLDocumentParser* parser) override |
| 182 { | 182 { |
| 183 parser->endElementNs(); | 183 parser->endElementNs(); |
| 184 } | 184 } |
| 185 }; | 185 }; |
| 186 | 186 |
| 187 class PendingCharactersCallback final : public XMLDocumentParser::PendingCallbac
k { | 187 class PendingCharactersCallback final : public XMLDocumentParser::PendingCallbac
k { |
| 188 public: | 188 public: |
| 189 PendingCharactersCallback(const xmlChar* chars, int length) | 189 PendingCharactersCallback(const xmlChar* chars, int length) |
| 190 : m_chars(xmlStrndup(chars, length)) | 190 : m_chars(xmlStrndup(chars, length)) |
| 191 , m_length(length) | 191 , m_length(length) |
| 192 { | 192 { |
| 193 } | 193 } |
| 194 | 194 |
| 195 virtual ~PendingCharactersCallback() | 195 ~PendingCharactersCallback() override |
| 196 { | 196 { |
| 197 xmlFree(m_chars); | 197 xmlFree(m_chars); |
| 198 } | 198 } |
| 199 | 199 |
| 200 virtual void call(XMLDocumentParser* parser) override | 200 void call(XMLDocumentParser* parser) override |
| 201 { | 201 { |
| 202 parser->characters(m_chars, m_length); | 202 parser->characters(m_chars, m_length); |
| 203 } | 203 } |
| 204 | 204 |
| 205 private: | 205 private: |
| 206 xmlChar* m_chars; | 206 xmlChar* m_chars; |
| 207 int m_length; | 207 int m_length; |
| 208 }; | 208 }; |
| 209 | 209 |
| 210 class PendingProcessingInstructionCallback final : public XMLDocumentParser::Pen
dingCallback { | 210 class PendingProcessingInstructionCallback final : public XMLDocumentParser::Pen
dingCallback { |
| 211 public: | 211 public: |
| 212 PendingProcessingInstructionCallback(const String& target, const String& dat
a) | 212 PendingProcessingInstructionCallback(const String& target, const String& dat
a) |
| 213 : m_target(target) | 213 : m_target(target) |
| 214 , m_data(data) | 214 , m_data(data) |
| 215 { | 215 { |
| 216 } | 216 } |
| 217 | 217 |
| 218 virtual void call(XMLDocumentParser* parser) override | 218 void call(XMLDocumentParser* parser) override |
| 219 { | 219 { |
| 220 parser->processingInstruction(m_target, m_data); | 220 parser->processingInstruction(m_target, m_data); |
| 221 } | 221 } |
| 222 | 222 |
| 223 private: | 223 private: |
| 224 String m_target; | 224 String m_target; |
| 225 String m_data; | 225 String m_data; |
| 226 }; | 226 }; |
| 227 | 227 |
| 228 class PendingCDATABlockCallback final : public XMLDocumentParser::PendingCallbac
k { | 228 class PendingCDATABlockCallback final : public XMLDocumentParser::PendingCallbac
k { |
| 229 public: | 229 public: |
| 230 explicit PendingCDATABlockCallback(const String& text) : m_text(text) { } | 230 explicit PendingCDATABlockCallback(const String& text) : m_text(text) { } |
| 231 | 231 |
| 232 virtual void call(XMLDocumentParser* parser) override | 232 void call(XMLDocumentParser* parser) override |
| 233 { | 233 { |
| 234 parser->cdataBlock(m_text); | 234 parser->cdataBlock(m_text); |
| 235 } | 235 } |
| 236 | 236 |
| 237 private: | 237 private: |
| 238 String m_text; | 238 String m_text; |
| 239 }; | 239 }; |
| 240 | 240 |
| 241 class PendingCommentCallback final : public XMLDocumentParser::PendingCallback { | 241 class PendingCommentCallback final : public XMLDocumentParser::PendingCallback { |
| 242 public: | 242 public: |
| 243 explicit PendingCommentCallback(const String& text) : m_text(text) { } | 243 explicit PendingCommentCallback(const String& text) : m_text(text) { } |
| 244 | 244 |
| 245 virtual void call(XMLDocumentParser* parser) override | 245 void call(XMLDocumentParser* parser) override |
| 246 { | 246 { |
| 247 parser->comment(m_text); | 247 parser->comment(m_text); |
| 248 } | 248 } |
| 249 | 249 |
| 250 private: | 250 private: |
| 251 String m_text; | 251 String m_text; |
| 252 }; | 252 }; |
| 253 | 253 |
| 254 class PendingInternalSubsetCallback final : public XMLDocumentParser::PendingCal
lback { | 254 class PendingInternalSubsetCallback final : public XMLDocumentParser::PendingCal
lback { |
| 255 public: | 255 public: |
| 256 PendingInternalSubsetCallback(const String& name, const String& externalID,
const String& systemID) | 256 PendingInternalSubsetCallback(const String& name, const String& externalID,
const String& systemID) |
| 257 : m_name(name) | 257 : m_name(name) |
| 258 , m_externalID(externalID) | 258 , m_externalID(externalID) |
| 259 , m_systemID(systemID) | 259 , m_systemID(systemID) |
| 260 { | 260 { |
| 261 } | 261 } |
| 262 | 262 |
| 263 virtual void call(XMLDocumentParser* parser) override | 263 void call(XMLDocumentParser* parser) override |
| 264 { | 264 { |
| 265 parser->internalSubset(m_name, m_externalID, m_systemID); | 265 parser->internalSubset(m_name, m_externalID, m_systemID); |
| 266 } | 266 } |
| 267 | 267 |
| 268 private: | 268 private: |
| 269 String m_name; | 269 String m_name; |
| 270 String m_externalID; | 270 String m_externalID; |
| 271 String m_systemID; | 271 String m_systemID; |
| 272 }; | 272 }; |
| 273 | 273 |
| 274 class PendingErrorCallback final : public XMLDocumentParser::PendingCallback { | 274 class PendingErrorCallback final : public XMLDocumentParser::PendingCallback { |
| 275 public: | 275 public: |
| 276 PendingErrorCallback(XMLErrors::ErrorType type, const xmlChar* message, Ordi
nalNumber lineNumber, OrdinalNumber columnNumber) | 276 PendingErrorCallback(XMLErrors::ErrorType type, const xmlChar* message, Ordi
nalNumber lineNumber, OrdinalNumber columnNumber) |
| 277 : m_type(type) | 277 : m_type(type) |
| 278 , m_message(xmlStrdup(message)) | 278 , m_message(xmlStrdup(message)) |
| 279 , m_lineNumber(lineNumber) | 279 , m_lineNumber(lineNumber) |
| 280 , m_columnNumber(columnNumber) | 280 , m_columnNumber(columnNumber) |
| 281 { | 281 { |
| 282 } | 282 } |
| 283 | 283 |
| 284 virtual ~PendingErrorCallback() | 284 ~PendingErrorCallback() override |
| 285 { | 285 { |
| 286 xmlFree(m_message); | 286 xmlFree(m_message); |
| 287 } | 287 } |
| 288 | 288 |
| 289 virtual void call(XMLDocumentParser* parser) override | 289 void call(XMLDocumentParser* parser) override |
| 290 { | 290 { |
| 291 parser->handleError(m_type, reinterpret_cast<char*>(m_message), TextPosi
tion(m_lineNumber, m_columnNumber)); | 291 parser->handleError(m_type, reinterpret_cast<char*>(m_message), TextPosi
tion(m_lineNumber, m_columnNumber)); |
| 292 } | 292 } |
| 293 | 293 |
| 294 private: | 294 private: |
| 295 XMLErrors::ErrorType m_type; | 295 XMLErrors::ErrorType m_type; |
| 296 xmlChar* m_message; | 296 xmlChar* m_message; |
| 297 OrdinalNumber m_lineNumber; | 297 OrdinalNumber m_lineNumber; |
| 298 OrdinalNumber m_columnNumber; | 298 OrdinalNumber m_columnNumber; |
| 299 }; | 299 }; |
| (...skipping 1367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1667 sax.initialized = XML_SAX2_MAGIC; | 1667 sax.initialized = XML_SAX2_MAGIC; |
| 1668 RefPtr<XMLParserContext> parser = XMLParserContext::createStringParser(&sax,
&state); | 1668 RefPtr<XMLParserContext> parser = XMLParserContext::createStringParser(&sax,
&state); |
| 1669 String parseString = "<?xml version=\"1.0\"?><attrs " + string + " />"; | 1669 String parseString = "<?xml version=\"1.0\"?><attrs " + string + " />"; |
| 1670 parseChunk(parser->context(), parseString); | 1670 parseChunk(parser->context(), parseString); |
| 1671 finishParsing(parser->context()); | 1671 finishParsing(parser->context()); |
| 1672 attrsOK = state.gotAttributes; | 1672 attrsOK = state.gotAttributes; |
| 1673 return state.attributes; | 1673 return state.attributes; |
| 1674 } | 1674 } |
| 1675 | 1675 |
| 1676 } // namespace blink | 1676 } // namespace blink |
| OLD | NEW |