| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * | 10 * |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 m_errorMessages.appendLiteral(" on line "); | 83 m_errorMessages.appendLiteral(" on line "); |
| 84 m_errorMessages.appendNumber(position.m_line.oneBasedInt()); | 84 m_errorMessages.appendNumber(position.m_line.oneBasedInt()); |
| 85 m_errorMessages.appendLiteral(" at column "); | 85 m_errorMessages.appendLiteral(" at column "); |
| 86 m_errorMessages.appendNumber(position.m_column.oneBasedInt()); | 86 m_errorMessages.appendNumber(position.m_column.oneBasedInt()); |
| 87 m_errorMessages.appendLiteral(": "); | 87 m_errorMessages.appendLiteral(": "); |
| 88 m_errorMessages.append(message); | 88 m_errorMessages.append(message); |
| 89 } | 89 } |
| 90 | 90 |
| 91 static inline Element* createXHTMLParserErrorHeader(Document* doc, const String&
errorMessages) | 91 static inline Element* createXHTMLParserErrorHeader(Document* doc, const String&
errorMessages) |
| 92 { | 92 { |
| 93 Element* reportElement = doc->createElement(QualifiedName(nullAtom, "parsere
rror", xhtmlNamespaceURI), true); | 93 Element* reportElement = doc->createElement(QualifiedName(nullAtom, "parsere
rror", xhtmlNamespaceURI), CreatedByParser); |
| 94 | 94 |
| 95 Vector<Attribute> reportAttributes; | 95 Vector<Attribute> reportAttributes; |
| 96 reportAttributes.append(Attribute(styleAttr, "display: block; white-space: p
re; border: 2px solid #c77; padding: 0 1em 0 1em; margin: 1em; background-color:
#fdd; color: black")); | 96 reportAttributes.append(Attribute(styleAttr, "display: block; white-space: p
re; border: 2px solid #c77; padding: 0 1em 0 1em; margin: 1em; background-color:
#fdd; color: black")); |
| 97 reportElement->parserSetAttributes(reportAttributes); | 97 reportElement->parserSetAttributes(reportAttributes); |
| 98 | 98 |
| 99 Element* h3 = doc->createElement(h3Tag, true); | 99 Element* h3 = doc->createElement(h3Tag, CreatedByParser); |
| 100 reportElement->parserAppendChild(h3); | 100 reportElement->parserAppendChild(h3); |
| 101 h3->parserAppendChild(doc->createTextNode("This page contains the following
errors:")); | 101 h3->parserAppendChild(doc->createTextNode("This page contains the following
errors:")); |
| 102 | 102 |
| 103 Element* fixed = doc->createElement(divTag, true); | 103 Element* fixed = doc->createElement(divTag, CreatedByParser); |
| 104 Vector<Attribute> fixedAttributes; | 104 Vector<Attribute> fixedAttributes; |
| 105 fixedAttributes.append(Attribute(styleAttr, "font-family:monospace;font-size
:12px")); | 105 fixedAttributes.append(Attribute(styleAttr, "font-family:monospace;font-size
:12px")); |
| 106 fixed->parserSetAttributes(fixedAttributes); | 106 fixed->parserSetAttributes(fixedAttributes); |
| 107 reportElement->parserAppendChild(fixed); | 107 reportElement->parserAppendChild(fixed); |
| 108 | 108 |
| 109 fixed->parserAppendChild(doc->createTextNode(errorMessages)); | 109 fixed->parserAppendChild(doc->createTextNode(errorMessages)); |
| 110 | 110 |
| 111 h3 = doc->createElement(h3Tag, true); | 111 h3 = doc->createElement(h3Tag, CreatedByParser); |
| 112 reportElement->parserAppendChild(h3); | 112 reportElement->parserAppendChild(h3); |
| 113 h3->parserAppendChild(doc->createTextNode("Below is a rendering of the page
up to the first error.")); | 113 h3->parserAppendChild(doc->createTextNode("Below is a rendering of the page
up to the first error.")); |
| 114 | 114 |
| 115 return reportElement; | 115 return reportElement; |
| 116 } | 116 } |
| 117 | 117 |
| 118 void XMLErrors::insertErrorMessageBlock() | 118 void XMLErrors::insertErrorMessageBlock() |
| 119 { | 119 { |
| 120 // One or more errors occurred during parsing of the code. Display an error
block to the user above | 120 // One or more errors occurred during parsing of the code. Display an error
block to the user above |
| 121 // the normal content (the DOM tree is created manually and includes line/co
l info regarding | 121 // the normal content (the DOM tree is created manually and includes line/co
l info regarding |
| 122 // where the errors are located) | 122 // where the errors are located) |
| 123 | 123 |
| 124 // Create elements for display | 124 // Create elements for display |
| 125 Element* documentElement = m_document->documentElement(); | 125 Element* documentElement = m_document->documentElement(); |
| 126 if (!documentElement) { | 126 if (!documentElement) { |
| 127 Element* rootElement = m_document->createElement(htmlTag, true); | 127 Element* rootElement = m_document->createElement(htmlTag, CreatedByParse
r); |
| 128 Element* body = m_document->createElement(bodyTag, true); | 128 Element* body = m_document->createElement(bodyTag, CreatedByParser); |
| 129 rootElement->parserAppendChild(body); | 129 rootElement->parserAppendChild(body); |
| 130 m_document->parserAppendChild(rootElement); | 130 m_document->parserAppendChild(rootElement); |
| 131 documentElement = body; | 131 documentElement = body; |
| 132 } else if (documentElement->namespaceURI() == SVGNames::svgNamespaceURI) { | 132 } else if (documentElement->namespaceURI() == SVGNames::svgNamespaceURI) { |
| 133 Element* rootElement = m_document->createElement(htmlTag, true); | 133 Element* rootElement = m_document->createElement(htmlTag, CreatedByParse
r); |
| 134 Element* head = m_document->createElement(headTag, true); | 134 Element* head = m_document->createElement(headTag, CreatedByParser); |
| 135 Element* style = m_document->createElement(styleTag, true); | 135 Element* style = m_document->createElement(styleTag, CreatedByParser); |
| 136 head->parserAppendChild(style); | 136 head->parserAppendChild(style); |
| 137 style->parserAppendChild(m_document->createTextNode("html, body { height
: 100% } parsererror + svg { width: 100%; height: 100% }")); | 137 style->parserAppendChild(m_document->createTextNode("html, body { height
: 100% } parsererror + svg { width: 100%; height: 100% }")); |
| 138 style->finishParsingChildren(); | 138 style->finishParsingChildren(); |
| 139 rootElement->parserAppendChild(head); | 139 rootElement->parserAppendChild(head); |
| 140 Element* body = m_document->createElement(bodyTag, true); | 140 Element* body = m_document->createElement(bodyTag, CreatedByParser); |
| 141 rootElement->parserAppendChild(body); | 141 rootElement->parserAppendChild(body); |
| 142 | 142 |
| 143 m_document->parserRemoveChild(*documentElement); | 143 m_document->parserRemoveChild(*documentElement); |
| 144 | 144 |
| 145 body->parserAppendChild(documentElement); | 145 body->parserAppendChild(documentElement); |
| 146 m_document->parserAppendChild(rootElement); | 146 m_document->parserAppendChild(rootElement); |
| 147 | 147 |
| 148 documentElement = body; | 148 documentElement = body; |
| 149 } | 149 } |
| 150 | 150 |
| 151 String errorMessages = m_errorMessages.toString(); | 151 String errorMessages = m_errorMessages.toString(); |
| 152 Element* reportElement = createXHTMLParserErrorHeader(m_document, errorMessa
ges); | 152 Element* reportElement = createXHTMLParserErrorHeader(m_document, errorMessa
ges); |
| 153 | 153 |
| 154 if (DocumentXSLT::hasTransformSourceDocument(*m_document)) { | 154 if (DocumentXSLT::hasTransformSourceDocument(*m_document)) { |
| 155 Vector<Attribute> attributes; | 155 Vector<Attribute> attributes; |
| 156 attributes.append(Attribute(styleAttr, "white-space: normal")); | 156 attributes.append(Attribute(styleAttr, "white-space: normal")); |
| 157 Element* paragraph = m_document->createElement(pTag, true); | 157 Element* paragraph = m_document->createElement(pTag, CreatedByParser); |
| 158 paragraph->parserSetAttributes(attributes); | 158 paragraph->parserSetAttributes(attributes); |
| 159 paragraph->parserAppendChild(m_document->createTextNode("This document w
as created as the result of an XSL transformation. The line and column numbers g
iven are from the transformed result.")); | 159 paragraph->parserAppendChild(m_document->createTextNode("This document w
as created as the result of an XSL transformation. The line and column numbers g
iven are from the transformed result.")); |
| 160 reportElement->parserAppendChild(paragraph); | 160 reportElement->parserAppendChild(paragraph); |
| 161 } | 161 } |
| 162 | 162 |
| 163 Node* firstChild = documentElement->firstChild(); | 163 Node* firstChild = documentElement->firstChild(); |
| 164 if (firstChild) | 164 if (firstChild) |
| 165 documentElement->parserInsertBefore(reportElement, *firstChild); | 165 documentElement->parserInsertBefore(reportElement, *firstChild); |
| 166 else | 166 else |
| 167 documentElement->parserAppendChild(reportElement); | 167 documentElement->parserAppendChild(reportElement); |
| 168 | 168 |
| 169 // FIXME: Why do we need to call this manually? | 169 // FIXME: Why do we need to call this manually? |
| 170 m_document->updateStyleAndLayoutTree(); | 170 m_document->updateStyleAndLayoutTree(); |
| 171 } | 171 } |
| 172 | 172 |
| 173 } // namespace blink | 173 } // namespace blink |
| OLD | NEW |