summaryrefslogtreecommitdiffstats
path: root/WebCore/dom/StyleElement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/dom/StyleElement.cpp')
-rw-r--r--WebCore/dom/StyleElement.cpp20
1 files changed, 8 insertions, 12 deletions
diff --git a/WebCore/dom/StyleElement.cpp b/WebCore/dom/StyleElement.cpp
index f318326..157e8f9 100644
--- a/WebCore/dom/StyleElement.cpp
+++ b/WebCore/dom/StyleElement.cpp
@@ -43,13 +43,6 @@ StyleElement::~StyleElement()
{
}
-StyleSheet* StyleElement::sheet(Element* e)
-{
- if (!m_sheet)
- createSheet(e, 0);
- return m_sheet.get();
-}
-
void StyleElement::insertedIntoDocument(Document* document, Element* element)
{
ASSERT(document);
@@ -67,11 +60,14 @@ void StyleElement::removedFromDocument(Document* document, Element* element)
ASSERT(element);
document->removeStyleSheetCandidateNode(element);
- // If we're in document teardown, then we don't need to do any notification of our sheet's removal.
- if (!document->renderer())
- return;
+ if (m_sheet) {
+ ASSERT(m_sheet->ownerNode() == element);
+ m_sheet->clearOwnerNode();
+ m_sheet = 0;
+ }
- if (m_sheet)
+ // If we're in document teardown, then we don't need to do any notification of our sheet's removal.
+ if (document->renderer())
document->styleSelectorChanged(DeferRecalcStyle);
}
@@ -88,7 +84,6 @@ void StyleElement::finishParsingChildren(Element* element)
{
ASSERT(element);
process(element);
- sheet(element);
m_createdByParser = false;
}
@@ -124,6 +119,7 @@ void StyleElement::process(Element* e)
void StyleElement::createSheet(Element* e, int startLineNumber, const String& text)
{
ASSERT(e);
+ ASSERT(e->inDocument());
Document* document = e->document();
if (m_sheet) {
if (m_sheet->isLoading())