OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2008, 2009, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2008, 2009, 2010 Apple 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 | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 lockCompatibilityMode(); | 56 lockCompatibilityMode(); |
57 } | 57 } |
58 | 58 |
59 PassRefPtr<DocumentParser> HTMLViewSourceDocument::createParser() | 59 PassRefPtr<DocumentParser> HTMLViewSourceDocument::createParser() |
60 { | 60 { |
61 return HTMLViewSourceParser::create(this, m_type); | 61 return HTMLViewSourceParser::create(this, m_type); |
62 } | 62 } |
63 | 63 |
64 void HTMLViewSourceDocument::createContainingTable() | 64 void HTMLViewSourceDocument::createContainingTable() |
65 { | 65 { |
66 RefPtr<HTMLHtmlElement> html = HTMLHtmlElement::create(this); | 66 RefPtr<HTMLHtmlElement> html = HTMLHtmlElement::create(*this); |
67 parserAppendChild(html); | 67 parserAppendChild(html); |
68 html->lazyAttach(); | 68 html->lazyAttach(); |
69 RefPtr<HTMLBodyElement> body = HTMLBodyElement::create(this); | 69 RefPtr<HTMLBodyElement> body = HTMLBodyElement::create(*this); |
70 html->parserAppendChild(body); | 70 html->parserAppendChild(body); |
71 | 71 |
72 // Create a line gutter div that can be used to make sure the gutter extends
down the height of the whole | 72 // Create a line gutter div that can be used to make sure the gutter extends
down the height of the whole |
73 // document. | 73 // document. |
74 RefPtr<HTMLDivElement> div = HTMLDivElement::create(this); | 74 RefPtr<HTMLDivElement> div = HTMLDivElement::create(*this); |
75 div->setAttribute(classAttr, "webkit-line-gutter-backdrop"); | 75 div->setAttribute(classAttr, "webkit-line-gutter-backdrop"); |
76 body->parserAppendChild(div); | 76 body->parserAppendChild(div); |
77 | 77 |
78 RefPtr<HTMLTableElement> table = HTMLTableElement::create(this); | 78 RefPtr<HTMLTableElement> table = HTMLTableElement::create(*this); |
79 body->parserAppendChild(table); | 79 body->parserAppendChild(table); |
80 m_tbody = HTMLTableSectionElement::create(tbodyTag, this); | 80 m_tbody = HTMLTableSectionElement::create(tbodyTag, *this); |
81 table->parserAppendChild(m_tbody); | 81 table->parserAppendChild(m_tbody); |
82 m_current = m_tbody; | 82 m_current = m_tbody; |
83 m_lineNumber = 0; | 83 m_lineNumber = 0; |
84 } | 84 } |
85 | 85 |
86 void HTMLViewSourceDocument::addSource(const String& source, HTMLToken& token) | 86 void HTMLViewSourceDocument::addSource(const String& source, HTMLToken& token) |
87 { | 87 { |
88 if (!m_current) | 88 if (!m_current) |
89 createContainingTable(); | 89 createContainingTable(); |
90 | 90 |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 addText(source, ""); | 166 addText(source, ""); |
167 } | 167 } |
168 | 168 |
169 PassRefPtr<Element> HTMLViewSourceDocument::addSpanWithClassName(const AtomicStr
ing& className) | 169 PassRefPtr<Element> HTMLViewSourceDocument::addSpanWithClassName(const AtomicStr
ing& className) |
170 { | 170 { |
171 if (m_current == m_tbody) { | 171 if (m_current == m_tbody) { |
172 addLine(className); | 172 addLine(className); |
173 return m_current; | 173 return m_current; |
174 } | 174 } |
175 | 175 |
176 RefPtr<HTMLElement> span = HTMLElement::create(spanTag, this); | 176 RefPtr<HTMLElement> span = HTMLElement::create(spanTag, *this); |
177 span->setAttribute(classAttr, className); | 177 span->setAttribute(classAttr, className); |
178 m_current->parserAppendChild(span); | 178 m_current->parserAppendChild(span); |
179 return span.release(); | 179 return span.release(); |
180 } | 180 } |
181 | 181 |
182 void HTMLViewSourceDocument::addLine(const AtomicString& className) | 182 void HTMLViewSourceDocument::addLine(const AtomicString& className) |
183 { | 183 { |
184 // Create a table row. | 184 // Create a table row. |
185 RefPtr<HTMLTableRowElement> trow = HTMLTableRowElement::create(this); | 185 RefPtr<HTMLTableRowElement> trow = HTMLTableRowElement::create(*this); |
186 m_tbody->parserAppendChild(trow); | 186 m_tbody->parserAppendChild(trow); |
187 | 187 |
188 // Create a cell that will hold the line number (it is generated in the styl
esheet using counters). | 188 // Create a cell that will hold the line number (it is generated in the styl
esheet using counters). |
189 RefPtr<HTMLTableCellElement> td = HTMLTableCellElement::create(tdTag, this); | 189 RefPtr<HTMLTableCellElement> td = HTMLTableCellElement::create(tdTag, *this)
; |
190 td->setAttribute(classAttr, "webkit-line-number"); | 190 td->setAttribute(classAttr, "webkit-line-number"); |
191 td->setAttribute(valueAttr, String::number(++m_lineNumber)); | 191 td->setAttribute(valueAttr, String::number(++m_lineNumber)); |
192 trow->parserAppendChild(td); | 192 trow->parserAppendChild(td); |
193 | 193 |
194 // Create a second cell for the line contents | 194 // Create a second cell for the line contents |
195 td = HTMLTableCellElement::create(tdTag, this); | 195 td = HTMLTableCellElement::create(tdTag, *this); |
196 td->setAttribute(classAttr, "webkit-line-content"); | 196 td->setAttribute(classAttr, "webkit-line-content"); |
197 trow->parserAppendChild(td); | 197 trow->parserAppendChild(td); |
198 m_current = m_td = td; | 198 m_current = m_td = td; |
199 | 199 |
200 #ifdef DEBUG_LINE_NUMBERS | 200 #ifdef DEBUG_LINE_NUMBERS |
201 RefPtr<Text> lineNumberText = Text::create(this, String::number(parser()->li
neNumber() + 1) + " "); | 201 RefPtr<Text> lineNumberText = Text::create(this, String::number(parser()->li
neNumber() + 1) + " "); |
202 td->addChild(lineNumberText); | 202 td->addChild(lineNumberText); |
203 lineNumberText->lazyAttach(); | 203 lineNumberText->lazyAttach(); |
204 #endif | 204 #endif |
205 | 205 |
206 // Open up the needed spans. | 206 // Open up the needed spans. |
207 if (!className.isEmpty()) { | 207 if (!className.isEmpty()) { |
208 if (className == "webkit-html-attribute-name" || className == "webkit-ht
ml-attribute-value") | 208 if (className == "webkit-html-attribute-name" || className == "webkit-ht
ml-attribute-value") |
209 m_current = addSpanWithClassName("webkit-html-tag"); | 209 m_current = addSpanWithClassName("webkit-html-tag"); |
210 m_current = addSpanWithClassName(className); | 210 m_current = addSpanWithClassName(className); |
211 } | 211 } |
212 } | 212 } |
213 | 213 |
214 void HTMLViewSourceDocument::finishLine() | 214 void HTMLViewSourceDocument::finishLine() |
215 { | 215 { |
216 if (!m_current->hasChildNodes()) { | 216 if (!m_current->hasChildNodes()) { |
217 RefPtr<HTMLBRElement> br = HTMLBRElement::create(this); | 217 RefPtr<HTMLBRElement> br = HTMLBRElement::create(*this); |
218 m_current->parserAppendChild(br); | 218 m_current->parserAppendChild(br); |
219 } | 219 } |
220 m_current = m_tbody; | 220 m_current = m_tbody; |
221 } | 221 } |
222 | 222 |
223 void HTMLViewSourceDocument::addText(const String& text, const AtomicString& cla
ssName) | 223 void HTMLViewSourceDocument::addText(const String& text, const AtomicString& cla
ssName) |
224 { | 224 { |
225 if (text.isEmpty()) | 225 if (text.isEmpty()) |
226 return; | 226 return; |
227 | 227 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 m_current = addSpanWithClassName(className); | 260 m_current = addSpanWithClassName(className); |
261 } | 261 } |
262 addText(text, className); | 262 addText(text, className); |
263 if (!className.isEmpty() && m_current != m_tbody) | 263 if (!className.isEmpty() && m_current != m_tbody) |
264 m_current = toElement(m_current->parentNode()); | 264 m_current = toElement(m_current->parentNode()); |
265 return end; | 265 return end; |
266 } | 266 } |
267 | 267 |
268 PassRefPtr<Element> HTMLViewSourceDocument::addBase(const AtomicString& href) | 268 PassRefPtr<Element> HTMLViewSourceDocument::addBase(const AtomicString& href) |
269 { | 269 { |
270 RefPtr<HTMLBaseElement> base = HTMLBaseElement::create(baseTag, this); | 270 RefPtr<HTMLBaseElement> base = HTMLBaseElement::create(baseTag, *this); |
271 base->setAttribute(hrefAttr, href); | 271 base->setAttribute(hrefAttr, href); |
272 m_current->parserAppendChild(base); | 272 m_current->parserAppendChild(base); |
273 return base.release(); | 273 return base.release(); |
274 } | 274 } |
275 | 275 |
276 PassRefPtr<Element> HTMLViewSourceDocument::addLink(const AtomicString& url, boo
l isAnchor) | 276 PassRefPtr<Element> HTMLViewSourceDocument::addLink(const AtomicString& url, boo
l isAnchor) |
277 { | 277 { |
278 if (m_current == m_tbody) | 278 if (m_current == m_tbody) |
279 addLine("webkit-html-tag"); | 279 addLine("webkit-html-tag"); |
280 | 280 |
281 // Now create a link for the attribute value instead of a span. | 281 // Now create a link for the attribute value instead of a span. |
282 RefPtr<HTMLAnchorElement> anchor = HTMLAnchorElement::create(this); | 282 RefPtr<HTMLAnchorElement> anchor = HTMLAnchorElement::create(*this); |
283 const char* classValue; | 283 const char* classValue; |
284 if (isAnchor) | 284 if (isAnchor) |
285 classValue = "webkit-html-attribute-value webkit-html-external-link"; | 285 classValue = "webkit-html-attribute-value webkit-html-external-link"; |
286 else | 286 else |
287 classValue = "webkit-html-attribute-value webkit-html-resource-link"; | 287 classValue = "webkit-html-attribute-value webkit-html-resource-link"; |
288 anchor->setAttribute(classAttr, classValue); | 288 anchor->setAttribute(classAttr, classValue); |
289 anchor->setAttribute(targetAttr, "_blank"); | 289 anchor->setAttribute(targetAttr, "_blank"); |
290 anchor->setAttribute(hrefAttr, url); | 290 anchor->setAttribute(hrefAttr, url); |
291 m_current->parserAppendChild(anchor); | 291 m_current->parserAppendChild(anchor); |
292 return anchor.release(); | 292 return anchor.release(); |
293 } | 293 } |
294 | 294 |
295 } | 295 } |
OLD | NEW |