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

Unified Diff: Source/core/xml/parser/XMLDocumentParser.cpp

Issue 333143003: Fix style errors in core/xml/. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/xml/parser/XMLDocumentParser.h ('k') | Source/core/xml/parser/XMLDocumentParserScope.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/xml/parser/XMLDocumentParser.cpp
diff --git a/Source/core/xml/parser/XMLDocumentParser.cpp b/Source/core/xml/parser/XMLDocumentParser.cpp
index a86e938e650c9ee6edd53989101900dfe7ec0bcd..61b4b32af093bb837881c1f3bfdb6e98185d8dcf 100644
--- a/Source/core/xml/parser/XMLDocumentParser.cpp
+++ b/Source/core/xml/parser/XMLDocumentParser.cpp
@@ -26,10 +26,6 @@
#include "config.h"
#include "core/xml/parser/XMLDocumentParser.h"
-#include <libxml/catalog.h>
-#include <libxml/parser.h>
-#include <libxml/parserInternals.h>
-#include <libxslt/xslt.h>
#include "bindings/v8/ExceptionState.h"
#include "bindings/v8/ExceptionStatePlaceholder.h"
#include "bindings/v8/ScriptController.h"
@@ -71,6 +67,10 @@
#include "wtf/Threading.h"
#include "wtf/Vector.h"
#include "wtf/unicode/UTF8.h"
+#include <libxml/catalog.h>
+#include <libxml/parser.h>
+#include <libxml/parserInternals.h>
+#include <libxslt/xslt.h>
namespace WebCore {
@@ -128,13 +128,13 @@ public:
, m_defaultedCount(defaultedCount)
{
m_namespaces = static_cast<xmlChar**>(xmlMalloc(sizeof(xmlChar*) * namespaceCount * 2));
- for (int i = 0; i < namespaceCount * 2 ; i++)
+ for (int i = 0; i < namespaceCount * 2 ; ++i)
m_namespaces[i] = xmlStrdup(namespaces[i]);
m_attributes = static_cast<xmlChar**>(xmlMalloc(sizeof(xmlChar*) * attributeCount * 5));
- for (int i = 0; i < attributeCount; i++) {
+ for (int i = 0; i < attributeCount; ++i) {
// Each attribute has 5 elements in the array:
// name, prefix, uri, value and an end pointer.
- for (int j = 0; j < 3; j++)
+ for (int j = 0; j < 3; ++j)
m_attributes[i * 5 + j] = xmlStrdup(attributes[i * 5 + j]);
int length = attributes[i * 5 + 4] - attributes[i * 5 + 3];
m_attributes[i * 5 + 3] = xmlStrndup(attributes[i * 5 + 3], length);
@@ -144,11 +144,11 @@ public:
virtual ~PendingStartElementNSCallback()
{
- for (int i = 0; i < m_namespaceCount * 2; i++)
+ for (int i = 0; i < m_namespaceCount * 2; ++i)
xmlFree(m_namespaces[i]);
xmlFree(m_namespaces);
- for (int i = 0; i < m_attributeCount; i++)
- for (int j = 0; j < 4; j++)
+ for (int i = 0; i < m_attributeCount; ++i)
+ for (int j = 0; j < 4; ++j)
xmlFree(m_attributes[i * 5 + j]);
xmlFree(m_attributes);
}
@@ -156,8 +156,8 @@ public:
virtual void call(XMLDocumentParser* parser) OVERRIDE
{
parser->startElementNs(m_localName, m_prefix, m_uri,
- m_namespaceCount, const_cast<const xmlChar**>(m_namespaces),
- m_attributeCount, m_defaultedCount, const_cast<const xmlChar**>(m_attributes));
+ m_namespaceCount, const_cast<const xmlChar**>(m_namespaces),
+ m_attributeCount, m_defaultedCount, const_cast<const xmlChar**>(m_attributes));
}
private:
@@ -304,7 +304,7 @@ void XMLDocumentParser::pushCurrentNode(ContainerNode* n)
m_currentNodeStack.append(m_currentNode);
m_currentNode = n;
if (m_currentNodeStack.size() > maxXMLTreeDepth)
- handleError(XMLErrors::fatal, "Excessive node nesting.", textPosition());
+ handleError(XMLErrors::ErrorTypeFatal, "Excessive node nesting.", textPosition());
}
void XMLDocumentParser::popCurrentNode()
@@ -369,9 +369,9 @@ void XMLDocumentParser::append(PassRefPtr<StringImpl> inputSource)
void XMLDocumentParser::handleError(XMLErrors::ErrorType type, const char* formattedMessage, TextPosition position)
{
m_xmlErrors.handleError(type, formattedMessage, position);
- if (type != XMLErrors::warning)
+ if (type != XMLErrors::ErrorTypeWarning)
m_sawError = true;
- if (type == XMLErrors::fatal)
+ if (type == XMLErrors::ErrorTypeFatal)
stopParsing();
}
@@ -419,9 +419,9 @@ void XMLDocumentParser::end()
if (m_parserPaused)
return;
- if (m_sawError)
+ if (m_sawError) {
insertErrorMessageBlock();
- else {
+ } else {
exitText();
document()->styleResolverChanged();
}
@@ -467,12 +467,13 @@ void XMLDocumentParser::notifyFinished(Resource* unusedResource)
ScriptLoader* scriptLoader = toScriptLoaderIfPossible(e.get());
ASSERT(scriptLoader);
- // JavaScript can detach this parser, make sure it's kept alive even if detached.
+ // JavaScript can detach this parser, make sure it's kept alive even if
+ // detached.
RefPtrWillBeRawPtr<XMLDocumentParser> protect(this);
- if (errorOccurred)
+ if (errorOccurred) {
scriptLoader->dispatchErrorEvent();
- else if (!wasCanceled) {
+ } else if (!wasCanceled) {
scriptLoader->executeScript(sourceCode);
scriptLoader->dispatchLoadEvent();
}
@@ -490,10 +491,8 @@ bool XMLDocumentParser::isWaitingForScripts() const
void XMLDocumentParser::pauseParsing()
{
- if (m_parsingFragment)
- return;
-
- m_parserPaused = true;
+ if (!m_parsingFragment)
+ m_parserPaused = true;
}
bool XMLDocumentParser::parseDocumentFragment(const String& chunk, DocumentFragment* fragment, Element* contextElement, ParserContentPolicy parserContentPolicy)
@@ -511,10 +510,14 @@ bool XMLDocumentParser::parseDocumentFragment(const String& chunk, DocumentFragm
RefPtrWillBeRawPtr<XMLDocumentParser> parser = XMLDocumentParser::create(fragment, contextElement, parserContentPolicy);
bool wellFormed = parser->appendFragmentSource(chunk);
- // Do not call finish(). Current finish() and doEnd() implementations touch the main Document/loader
- // and can cause crashes in the fragment case.
- parser->detach(); // Allows ~DocumentParser to assert it was detached before destruction.
- return wellFormed; // appendFragmentSource()'s wellFormed is more permissive than wellFormed().
+
+ // Do not call finish(). Current finish() and doEnd() implementations touch
+ // the main Document/loader and can cause crashes in the fragment case.
+
+ // Allows ~DocumentParser to assert it was detached before destruction.
+ parser->detach();
+ // appendFragmentSource()'s wellFormed is more permissive than wellFormed().
+ return wellFormed;
}
static int globalDescriptor = 0;
@@ -522,8 +525,9 @@ static ThreadIdentifier libxmlLoaderThread = 0;
static int matchFunc(const char*)
{
- // Only match loads initiated due to uses of libxml2 from within XMLDocumentParser to avoid
- // interfering with client applications that also use libxml2. http://bugs.webkit.org/show_bug.cgi?id=17353
+ // Only match loads initiated due to uses of libxml2 from within
+ // XMLDocumentParser to avoid interfering with client applications that also
+ // use libxml2. http://bugs.webkit.org/show_bug.cgi?id=17353
return XMLDocumentParserScope::currentFetcher && currentThread() == libxmlLoaderThread;
}
@@ -537,9 +541,9 @@ static inline void setAttributes(Element* element, Vector<Attribute>& attributeV
static void switchEncoding(xmlParserCtxtPtr ctxt, bool is8Bit)
{
// Hack around libxml2's lack of encoding overide support by manually
- // resetting the encoding to UTF-16 before every chunk. Otherwise libxml
- // will detect <?xml version="1.0" encoding="<encoding name>"?> blocks
- // and switch encodings, causing the parse to fail.
+ // resetting the encoding to UTF-16 before every chunk. Otherwise libxml
+ // will detect <?xml version="1.0" encoding="<encoding name>"?> blocks and
+ // switch encodings, causing the parse to fail.
if (is8Bit) {
xmlSwitchEncoding(ctxt, XML_CHAR_ENCODING_8859_1);
return;
@@ -589,8 +593,8 @@ static bool shouldAllowExternalLoad(const KURL& url)
if (isLibxmlDefaultCatalogFile(url))
return false;
- // The most common DTD. There isn't much point in hammering www.w3c.org
- // by requesting this URL for every XHTML document.
+ // The most common DTD. There isn't much point in hammering www.w3c.org by
+ // requesting this URL for every XHTML document.
if (urlString.startsWith("http://www.w3.org/TR/xhtml", false))
return false;
@@ -598,12 +602,12 @@ static bool shouldAllowExternalLoad(const KURL& url)
if (urlString.startsWith("http://www.w3.org/Graphics/SVG", false))
return false;
- // The libxml doesn't give us a lot of context for deciding whether to
- // allow this request. In the worst case, this load could be for an
- // external entity and the resulting document could simply read the
- // retrieved content. If we had more context, we could potentially allow
- // the parser to load a DTD. As things stand, we take the conservative
- // route and allow same-origin requests only.
+ // The libxml doesn't give us a lot of context for deciding whether to allow
+ // this request. In the worst case, this load could be for an external
+ // entity and the resulting document could simply read the retrieved
+ // content. If we had more context, we could potentially allow the parser to
+ // load a DTD. As things stand, we take the conservative route and allow
+ // same-origin requests only.
if (!XMLDocumentParserScope::currentFetcher->document()->securityOrigin()->canRequest(url)) {
XMLDocumentParserScope::currentFetcher->printAccessDeniedMessage(url);
return false;
@@ -864,7 +868,8 @@ void XMLDocumentParser::doWrite(const String& parseString)
// Protect the libxml context from deletion during a callback
RefPtr<XMLParserContext> context = m_context;
- // libXML throws an error if you try to switch the encoding for an empty string.
+ // libXML throws an error if you try to switch the encoding for an empty
+ // string.
if (parseString.length()) {
// JavaScript may cause the parser to detach during parseChunk
// keep this alive until this function is done.
@@ -880,24 +885,24 @@ void XMLDocumentParser::doWrite(const String& parseString)
return;
}
- // FIXME: Why is this here? And why is it after we process the passed source?
+ // FIXME: Why is this here? And why is it after we process the passed
+ // source?
if (document()->sawDecodingError()) {
// If the decoder saw an error, report it as fatal (stops parsing)
TextPosition position(OrdinalNumber::fromOneBasedInt(context->context()->input->line), OrdinalNumber::fromOneBasedInt(context->context()->input->col));
- handleError(XMLErrors::fatal, "Encoding error", position);
+ handleError(XMLErrors::ErrorTypeFatal, "Encoding error", position);
}
}
-struct _xmlSAX2Namespace {
+struct xmlSAX2Namespace {
const xmlChar* prefix;
const xmlChar* uri;
};
-typedef struct _xmlSAX2Namespace xmlSAX2Namespace;
static inline void handleNamespaceAttributes(Vector<Attribute>& prefixedAttributes, const xmlChar** libxmlNamespaces, int nbNamespaces, ExceptionState& exceptionState)
{
xmlSAX2Namespace* namespaces = reinterpret_cast<xmlSAX2Namespace*>(libxmlNamespaces);
- for (int i = 0; i < nbNamespaces; i++) {
+ for (int i = 0; i < nbNamespaces; ++i) {
AtomicString namespaceQName = xmlnsAtom;
AtomicString namespaceURI = toAtomicString(namespaces[i].uri);
if (namespaces[i].prefix)
@@ -911,19 +916,18 @@ static inline void handleNamespaceAttributes(Vector<Attribute>& prefixedAttribut
}
}
-struct _xmlSAX2Attributes {
+struct xmlSAX2Attributes {
const xmlChar* localname;
const xmlChar* prefix;
const xmlChar* uri;
const xmlChar* value;
const xmlChar* end;
};
-typedef struct _xmlSAX2Attributes xmlSAX2Attributes;
static inline void handleElementAttributes(Vector<Attribute>& prefixedAttributes, const xmlChar** libxmlAttributes, int nbAttributes, ExceptionState& exceptionState)
{
xmlSAX2Attributes* attributes = reinterpret_cast<xmlSAX2Attributes*>(libxmlAttributes);
- for (int i = 0; i < nbAttributes; i++) {
+ for (int i = 0; i < nbAttributes; ++i) {
int valueLength = static_cast<int>(attributes[i].end - attributes[i].value);
AtomicString attrValue = toAtomicString(attributes[i].value, valueLength);
String attrPrefix = toString(attributes[i].prefix);
@@ -1016,8 +1020,8 @@ void XMLDocumentParser::endElementNs()
return;
}
- // JavaScript can detach the parser. Make sure this is not released
- // before the end of this method.
+ // JavaScript can detach the parser. Make sure this is not released before
+ // the end of this method.
RefPtrWillBeRawPtr<XMLDocumentParser> protect(this);
exitText();
@@ -1067,7 +1071,8 @@ void XMLDocumentParser::endElementNs()
m_scriptElement = element;
m_pendingScript->addClient(this);
- // m_pendingScript will be 0 if script was already loaded and addClient() executed it.
+ // m_pendingScript will be 0 if script was already loaded and
+ // addClient() executed it.
if (m_pendingScript)
pauseParsing();
} else {
@@ -1119,7 +1124,7 @@ void XMLDocumentParser::processingInstruction(const String& target, const String
return;
if (m_parserPaused) {
- m_pendingCallbacks.append(adoptPtr(new PendingProcessingInstructionCallback(target ,data)));
+ m_pendingCallbacks.append(adoptPtr(new PendingProcessingInstructionCallback(target, data)));
return;
}
@@ -1145,10 +1150,11 @@ void XMLDocumentParser::processingInstruction(const String& target, const String
m_sawXSLTransform = !m_sawFirstElement && pi->isXSL();
if (m_sawXSLTransform && !document()->transformSourceDocument()) {
- // This behavior is very tricky. We call stopParsing() here because we want to stop processing the document
- // until we're ready to apply the transform, but we actually still want to be fed decoded string pieces to
- // accumulate in m_originalSourceForTransform. So, we call stopParsing() here and
- // check isStopped() in element callbacks.
+ // This behavior is very tricky. We call stopParsing() here because we
+ // want to stop processing the document until we're ready to apply the
+ // transform, but we actually still want to be fed decoded string pieces
+ // to accumulate in m_originalSourceForTransform. So, we call
+ // stopParsing() here and check isStopped() in element callbacks.
// FIXME: This contradicts the contract of DocumentParser.
stopParsing();
}
@@ -1193,7 +1199,7 @@ enum StandaloneInfo {
void XMLDocumentParser::startDocument(const String& version, const String& encoding, int standalone)
{
- StandaloneInfo standaloneInfo = (StandaloneInfo)standalone;
+ StandaloneInfo standaloneInfo = static_cast<StandaloneInfo>(standalone);
if (standaloneInfo == NoXMlDeclaration) {
document()->setHasXMLDeclaration(false);
return;
@@ -1268,7 +1274,7 @@ static void warningHandler(void* closure, const char* message, ...)
{
va_list args;
va_start(args, message);
- getParser(closure)->error(XMLErrors::warning, message, args);
+ getParser(closure)->error(XMLErrors::ErrorTypeWarning, message, args);
va_end(args);
}
@@ -1277,7 +1283,7 @@ static void fatalErrorHandler(void* closure, const char* message, ...)
{
va_list args;
va_start(args, message);
- getParser(closure)->error(XMLErrors::fatal, message, args);
+ getParser(closure)->error(XMLErrors::ErrorTypeFatal, message, args);
va_end(args);
}
@@ -1286,12 +1292,12 @@ static void normalErrorHandler(void* closure, const char* message, ...)
{
va_list args;
va_start(args, message);
- getParser(closure)->error(XMLErrors::nonFatal, message, args);
+ getParser(closure)->error(XMLErrors::ErrorTypeNonFatal, message, args);
va_end(args);
}
-// Using a static entity and marking it XML_INTERNAL_PREDEFINED_ENTITY is
-// a hack to avoid malloc/free. Using a global variable like this could cause trouble
+// Using a static entity and marking it XML_INTERNAL_PREDEFINED_ENTITY is a hack
+// to avoid malloc/free. Using a global variable like this could cause trouble
// if libxml implementation details were to change
static xmlChar sharedXHTMLEntityResult[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
@@ -1383,22 +1389,24 @@ static void internalSubsetHandler(void* closure, const xmlChar* name, const xmlC
static void externalSubsetHandler(void* closure, const xmlChar*, const xmlChar* externalId, const xmlChar*)
{
String extId = toString(externalId);
- if ((extId == "-//W3C//DTD XHTML 1.0 Transitional//EN")
- || (extId == "-//W3C//DTD XHTML 1.1//EN")
- || (extId == "-//W3C//DTD XHTML 1.0 Strict//EN")
- || (extId == "-//W3C//DTD XHTML 1.0 Frameset//EN")
- || (extId == "-//W3C//DTD XHTML Basic 1.0//EN")
- || (extId == "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN")
- || (extId == "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN")
- || (extId == "-//WAPFORUM//DTD XHTML Mobile 1.0//EN")
- || (extId == "-//WAPFORUM//DTD XHTML Mobile 1.1//EN")
- || (extId == "-//WAPFORUM//DTD XHTML Mobile 1.2//EN"))
- getParser(closure)->setIsXHTMLDocument(true); // controls if we replace entities or not.
+ if (extId == "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ || extId == "-//W3C//DTD XHTML 1.1//EN"
+ || extId == "-//W3C//DTD XHTML 1.0 Strict//EN"
+ || extId == "-//W3C//DTD XHTML 1.0 Frameset//EN"
+ || extId == "-//W3C//DTD XHTML Basic 1.0//EN"
+ || extId == "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
+ || extId == "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN"
+ || extId == "-//WAPFORUM//DTD XHTML Mobile 1.0//EN"
+ || extId == "-//WAPFORUM//DTD XHTML Mobile 1.1//EN"
+ || extId == "-//WAPFORUM//DTD XHTML Mobile 1.2//EN") {
+ // Controls if we replace entities or not.
+ getParser(closure)->setIsXHTMLDocument(true);
+ }
}
static void ignorableWhitespaceHandler(void*, const xmlChar*, int)
{
- // nothing to do, but we need this to work around a crasher
+ // Nothing to do, but we need this to work around a crasher.
// http://bugzilla.gnome.org/show_bug.cgi?id=172255
// http://bugs.webkit.org/show_bug.cgi?id=5792
}
@@ -1432,9 +1440,9 @@ void XMLDocumentParser::initializeParserContext(const CString& chunk)
m_sawFirstElement = false;
XMLDocumentParserScope scope(document()->fetcher());
- if (m_parsingFragment)
+ if (m_parsingFragment) {
m_context = XMLParserContext::createMemoryParser(&sax, this, chunk);
- else {
+ } else {
ASSERT(!chunk.data());
m_context = XMLParserContext::createStringParser(&sax, this);
}
@@ -1461,12 +1469,12 @@ void XMLDocumentParser::doEnd()
} else if (m_sawXSLTransform) {
xmlDocPtr doc = xmlDocPtrForString(document()->fetcher(), m_originalSourceForTransform.toString(), document()->url().string());
document()->setTransformSource(adoptPtr(new TransformSource(doc)));
-
- document()->setParsing(false); // Make the document think it's done, so it will apply XSL stylesheets.
+ // Make the document think it's done, so it will apply XSL stylesheets.
+ document()->setParsing(false);
document()->styleResolverChanged();
- // styleResolverChanged() call can detach the parser and null out its document.
- // In that case, we just bail out.
+ // styleResolverChanged() call can detach the parser and null out its
+ // document. In that case, we just bail out.
if (isDetached())
return;
@@ -1480,8 +1488,8 @@ xmlDocPtr xmlDocPtrForString(ResourceFetcher* fetcher, const String& source, con
if (source.isEmpty())
return 0;
// Parse in a single chunk into an xmlDocPtr
- // FIXME: Hook up error handlers so that a failure to parse the main document results in
- // good error messages.
+ // FIXME: Hook up error handlers so that a failure to parse the main
+ // document results in good error messages.
XMLDocumentParserScope scope(fetcher, errorFunc, 0);
XMLParserInput input(source);
return xmlReadMemory(input.data(), input.size(), url.latin1().data(), input.encoding(), XSLT_PARSE_OPTIONS);
@@ -1502,8 +1510,7 @@ TextPosition XMLDocumentParser::textPosition() const
xmlParserCtxtPtr context = this->context();
if (!context)
return TextPosition::minimumPosition();
- return TextPosition(OrdinalNumber::fromOneBasedInt(context->input->line),
- OrdinalNumber::fromOneBasedInt(context->input->col));
+ return TextPosition(OrdinalNumber::fromOneBasedInt(context->input->line), OrdinalNumber::fromOneBasedInt(context->input->col));
}
void XMLDocumentParser::stopParsing()
@@ -1551,7 +1558,8 @@ bool XMLDocumentParser::appendFragmentSource(const String& chunk)
CString chunkAsUtf8 = chunk.utf8();
- // libxml2 takes an int for a length, and therefore can't handle XML chunks larger than 2 GiB.
+ // libxml2 takes an int for a length, and therefore can't handle XML chunks
+ // larger than 2 GiB.
if (chunkAsUtf8.length() > INT_MAX)
return false;
@@ -1559,13 +1567,16 @@ bool XMLDocumentParser::appendFragmentSource(const String& chunk)
xmlParseContent(context());
endDocument(); // Close any open text nodes.
- // FIXME: If this code is actually needed, it should probably move to finish()
- // XMLDocumentParserQt has a similar check (m_stream.error() == QXmlStreamReader::PrematureEndOfDocumentError) in doEnd().
- // Check if all the chunk has been processed.
+ // FIXME: If this code is actually needed, it should probably move to
+ // finish()
+ // XMLDocumentParserQt has a similar check (m_stream.error() ==
+ // QXmlStreamReader::PrematureEndOfDocumentError) in doEnd(). Check if all
+ // the chunk has been processed.
long bytesProcessed = xmlByteConsumed(context());
- if (bytesProcessed == -1 || ((unsigned long)bytesProcessed) != chunkAsUtf8.length()) {
- // FIXME: I don't believe we can hit this case without also having seen an error or a null byte.
- // If we hit this ASSERT, we've found a test case which demonstrates the need for this code.
+ if (bytesProcessed == -1 || static_cast<unsigned long>(bytesProcessed) != chunkAsUtf8.length()) {
+ // FIXME: I don't believe we can hit this case without also having seen
+ // an error or a null byte. If we hit this ASSERT, we've found a test
+ // case which demonstrates the need for this code.
ASSERT(m_sawError || (bytesProcessed >= 0 && !chunkAsUtf8.data()[bytesProcessed]));
return false;
}
@@ -1594,7 +1605,7 @@ static void attributesStartElementNsHandler(void* closure, const xmlChar* xmlLoc
state->gotAttributes = true;
xmlSAX2Attributes* attributes = reinterpret_cast<xmlSAX2Attributes*>(libxmlAttributes);
- for (int i = 0; i < nbAttributes; i++) {
+ for (int i = 0; i < nbAttributes; ++i) {
String attrLocalName = toString(attributes[i].localname);
int valueLength = (int) (attributes[i].end - attributes[i].value);
String attrValue = toString(attributes[i].value, valueLength);
« no previous file with comments | « Source/core/xml/parser/XMLDocumentParser.h ('k') | Source/core/xml/parser/XMLDocumentParserScope.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698