OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007 Rob Buis | 2 * Copyright (C) 2006, 2007 Rob Buis |
3 * Copyright (C) 2008 Apple, Inc. All rights reserved. | 3 * Copyright (C) 2008 Apple, Inc. All rights reserved. |
4 * | 4 * |
5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
9 * | 9 * |
10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 | 67 |
68 process(element); | 68 process(element); |
69 } | 69 } |
70 | 70 |
71 void StyleElement::removedFromDocument(Document* document, Element* element) | 71 void StyleElement::removedFromDocument(Document* document, Element* element) |
72 { | 72 { |
73 ASSERT(document); | 73 ASSERT(document); |
74 ASSERT(element); | 74 ASSERT(element); |
75 document->removeStyleSheetCandidateNode(element); | 75 document->removeStyleSheetCandidateNode(element); |
76 | 76 |
77 if (m_sheet) { | 77 if (m_sheet) |
78 ASSERT(m_sheet->ownerNode() == element); | 78 clearSheet(); |
79 m_sheet->clearOwnerNode(); | |
80 m_sheet = 0; | |
81 } | |
82 | 79 |
83 // If we're in document teardown, then we don't need to do any notification
of our sheet's removal. | 80 // If we're in document teardown, then we don't need to do any notification
of our sheet's removal. |
84 if (document->renderer()) | 81 if (document->renderer()) |
85 document->styleSelectorChanged(DeferRecalcStyle); | 82 document->styleSelectorChanged(DeferRecalcStyle); |
86 } | 83 } |
87 | 84 |
88 void StyleElement::clearDocumentData(Document* document, Element* element) | 85 void StyleElement::clearDocumentData(Document* document, Element* element) |
89 { | 86 { |
90 if (m_sheet) | 87 if (m_sheet) |
91 m_sheet->clearOwnerNode(); | 88 m_sheet->clearOwnerNode(); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 for (Node* c = e->firstChild(); c; c = c->nextSibling()) { | 129 for (Node* c = e->firstChild(); c; c = c->nextSibling()) { |
133 if (isValidStyleChild(c)) { | 130 if (isValidStyleChild(c)) { |
134 sheetText.append(c->nodeValue()); | 131 sheetText.append(c->nodeValue()); |
135 } | 132 } |
136 } | 133 } |
137 ASSERT(sheetText.length() == resultLength); | 134 ASSERT(sheetText.length() == resultLength); |
138 | 135 |
139 createSheet(e, m_startLineNumber, sheetText.toString()); | 136 createSheet(e, m_startLineNumber, sheetText.toString()); |
140 } | 137 } |
141 | 138 |
| 139 void StyleElement::clearSheet() |
| 140 { |
| 141 ASSERT(m_sheet); |
| 142 m_sheet->clearOwnerNode(); |
| 143 m_sheet = 0; |
| 144 } |
| 145 |
142 void StyleElement::createSheet(Element* e, int startLineNumber, const String& te
xt) | 146 void StyleElement::createSheet(Element* e, int startLineNumber, const String& te
xt) |
143 { | 147 { |
144 ASSERT(e); | 148 ASSERT(e); |
145 ASSERT(e->inDocument()); | 149 ASSERT(e->inDocument()); |
146 Document* document = e->document(); | 150 Document* document = e->document(); |
147 if (m_sheet) { | 151 if (m_sheet) { |
148 if (m_sheet->isLoading()) | 152 if (m_sheet->isLoading()) |
149 document->removePendingSheet(); | 153 document->removePendingSheet(); |
150 m_sheet = 0; | 154 clearSheet(); |
151 } | 155 } |
152 | 156 |
153 // If type is empty or CSS, this is a CSS style sheet. | 157 // If type is empty or CSS, this is a CSS style sheet. |
154 const AtomicString& type = this->type(); | 158 const AtomicString& type = this->type(); |
155 if (document->contentSecurityPolicy()->allowInlineStyle() && isCSS(e, type))
{ | 159 if (document->contentSecurityPolicy()->allowInlineStyle() && isCSS(e, type))
{ |
156 RefPtr<MediaQuerySet> mediaQueries; | 160 RefPtr<MediaQuerySet> mediaQueries; |
157 if (e->isHTMLElement()) | 161 if (e->isHTMLElement()) |
158 mediaQueries = MediaQuerySet::createAllowingDescriptionSyntax(media(
)); | 162 mediaQueries = MediaQuerySet::createAllowingDescriptionSyntax(media(
)); |
159 else | 163 else |
160 mediaQueries = MediaQuerySet::create(media()); | 164 mediaQueries = MediaQuerySet::create(media()); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 return true; | 197 return true; |
194 } | 198 } |
195 | 199 |
196 void StyleElement::startLoadingDynamicSheet(Document* document) | 200 void StyleElement::startLoadingDynamicSheet(Document* document) |
197 { | 201 { |
198 ASSERT(document); | 202 ASSERT(document); |
199 document->addPendingSheet(); | 203 document->addPendingSheet(); |
200 } | 204 } |
201 | 205 |
202 } | 206 } |
OLD | NEW |