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

Side by Side Diff: Source/core/xml/parser/XMLDocumentParser.cpp

Issue 22150003: XMLTreeViewer should be created only in the XML viewer mode (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 4 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/core/xml/XMLTreeViewer.cpp ('k') | no next file » | 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 * Copyright (C) 2000 Peter Kelly (pmk@post.com) 2 * Copyright (C) 2000 Peter Kelly (pmk@post.com)
3 * Copyright (C) 2005, 2006, 2008 Apple Inc. All rights reserved. 3 * Copyright (C) 2005, 2006, 2008 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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 static inline AtomicString toAtomicString(const xmlChar* string, size_t length) 90 static inline AtomicString toAtomicString(const xmlChar* string, size_t length)
91 { 91 {
92 return AtomicString::fromUTF8(reinterpret_cast<const char*>(string), length) ; 92 return AtomicString::fromUTF8(reinterpret_cast<const char*>(string), length) ;
93 } 93 }
94 94
95 static inline AtomicString toAtomicString(const xmlChar* string) 95 static inline AtomicString toAtomicString(const xmlChar* string)
96 { 96 {
97 return AtomicString::fromUTF8(reinterpret_cast<const char*>(string)); 97 return AtomicString::fromUTF8(reinterpret_cast<const char*>(string));
98 } 98 }
99 99
100 static inline bool hasNoStyleInformation(Document* document)
101 {
102 if (document->sawElementsInKnownNamespaces() || document->transformSourceDoc ument())
103 return false;
104
105 if (!document->frame() || !document->frame()->page())
106 return false;
107
108 if (document->frame()->tree()->parent())
109 return false; // This document is not in a top frame
110
111 return true;
112 }
113
100 class PendingStartElementNSCallback FINAL : public XMLDocumentParser::PendingCal lback { 114 class PendingStartElementNSCallback FINAL : public XMLDocumentParser::PendingCal lback {
101 public: 115 public:
102 PendingStartElementNSCallback(const AtomicString& localName, const AtomicStr ing& prefix, const AtomicString& uri, 116 PendingStartElementNSCallback(const AtomicString& localName, const AtomicStr ing& prefix, const AtomicString& uri,
103 int namespaceCount, const xmlChar** namespaces, int attributeCount, int defaultedCount, const xmlChar** attributes) 117 int namespaceCount, const xmlChar** namespaces, int attributeCount, int defaultedCount, const xmlChar** attributes)
104 : m_localName(localName) 118 : m_localName(localName)
105 , m_prefix(prefix) 119 , m_prefix(prefix)
106 , m_uri(uri) 120 , m_uri(uri)
107 , m_namespaceCount(namespaceCount) 121 , m_namespaceCount(namespaceCount)
108 , m_attributeCount(attributeCount) 122 , m_attributeCount(attributeCount)
109 , m_defaultedCount(defaultedCount) 123 , m_defaultedCount(defaultedCount)
(...skipping 1322 matching lines...) Expand 10 before | Expand all | Expand 10 after
1432 // Tell libxml we're done. 1446 // Tell libxml we're done.
1433 { 1447 {
1434 XMLDocumentParserScope scope(document()->fetcher()); 1448 XMLDocumentParserScope scope(document()->fetcher());
1435 finishParsing(context()); 1449 finishParsing(context());
1436 } 1450 }
1437 1451
1438 m_context = 0; 1452 m_context = 0;
1439 } 1453 }
1440 } 1454 }
1441 1455
1442 XMLTreeViewer xmlTreeViewer(document()); 1456 bool xmlViewerMode = !m_sawError && !m_sawCSS && !m_sawXSLTransform && hasNo StyleInformation(document());
1443 bool xmlViewerMode = !m_sawError && !m_sawCSS && !m_sawXSLTransform && xmlTr eeViewer.hasNoStyleInformation();
1444 if (xmlViewerMode) { 1457 if (xmlViewerMode) {
1458 XMLTreeViewer xmlTreeViewer(document());
1445 xmlTreeViewer.transformDocumentToTreeView(); 1459 xmlTreeViewer.transformDocumentToTreeView();
1446 } else if (m_sawXSLTransform) { 1460 } else if (m_sawXSLTransform) {
1447 xmlDocPtr doc = xmlDocPtrForString(document()->fetcher(), m_originalSour ceForTransform.toString(), document()->url().string()); 1461 xmlDocPtr doc = xmlDocPtrForString(document()->fetcher(), m_originalSour ceForTransform.toString(), document()->url().string());
1448 document()->setTransformSource(adoptPtr(new TransformSource(doc))); 1462 document()->setTransformSource(adoptPtr(new TransformSource(doc)));
1449 1463
1450 document()->setParsing(false); // Make the document think it's done, so it will apply XSL stylesheets. 1464 document()->setParsing(false); // Make the document think it's done, so it will apply XSL stylesheets.
1451 document()->styleResolverChanged(RecalcStyleImmediately); 1465 document()->styleResolverChanged(RecalcStyleImmediately);
1452 1466
1453 // styleResolverChanged() call can detach the parser and null out its do cument. 1467 // styleResolverChanged() call can detach the parser and null out its do cument.
1454 // In that case, we just bail out. 1468 // In that case, we just bail out.
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
1601 sax.initialized = XML_SAX2_MAGIC; 1615 sax.initialized = XML_SAX2_MAGIC;
1602 RefPtr<XMLParserContext> parser = XMLParserContext::createStringParser(&sax, &state); 1616 RefPtr<XMLParserContext> parser = XMLParserContext::createStringParser(&sax, &state);
1603 String parseString = "<?xml version=\"1.0\"?><attrs " + string + " />"; 1617 String parseString = "<?xml version=\"1.0\"?><attrs " + string + " />";
1604 parseChunk(parser->context(), parseString); 1618 parseChunk(parser->context(), parseString);
1605 finishParsing(parser->context()); 1619 finishParsing(parser->context());
1606 attrsOK = state.gotAttributes; 1620 attrsOK = state.gotAttributes;
1607 return state.attributes; 1621 return state.attributes;
1608 } 1622 }
1609 1623
1610 } // namespace WebCore 1624 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/xml/XMLTreeViewer.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698