Skip to content
  • bdakin's avatar
    Reviewed by Hyatt. · 23902137
    bdakin authored
            Refactor of change for <rdar://problem/5404899> REGRESSION: Mail 
            crash in WebCore::FontFallbackList::fontDataAt() after dragging 
            image into text multiple times
    
            The original fix that I made last night prevents the pending style 
            sheet count from being incremented until the element is in the 
            document. This fix prevents the style sheet from loading at all 
            until it is in the document.
    
            Here is the fix.
            * dom/StyleElement.cpp:
            (WebCore::StyleElement::insertedIntoDocument): Call process.
            (WebCore::StyleElement::removedFromDocument): This can be reverted 
            to its original state before my patch last night.
            (WebCore::StyleElement::process): childrenChanged is now called 
            process. Return early if your not in the document.
            (WebCore::StyleElement::createSheet): Revert change from last 
            night. The inDocument check is now in caller childrenChanged.
            * dom/StyleElement.h: insertedIntoDocument() must now accept an 
            element in addition to a document.
    
            This is an optimization to prevent calling updateStyleSelector() 
            too frequently.
            * dom/XMLTokenizer.cpp:
            (WebCore::XMLTokenizer::startElementNs):
            * html/HTMLStyleElement.cpp:
            (WebCore::HTMLStyleElement::HTMLStyleElement):
            (WebCore::HTMLStyleElement::finishedParsing):
            (WebCore::HTMLStyleElement::insertedIntoDocument):
            (WebCore::HTMLStyleElement::childrenChanged):
            (WebCore::HTMLStyleElement::sheetLoaded):
            * html/HTMLStyleElement.h:
            * ksvg2/svg/SVGStyleElement.cpp:
            (WebCore::SVGStyleElement::SVGStyleElement):
            (WebCore::SVGStyleElement::finishedParsing):
            (WebCore::SVGStyleElement::insertedIntoDocument):
            (WebCore::SVGStyleElement::childrenChanged):
            (WebCore::SVGStyleElement::sheetLoaded):
            * ksvg2/svg/SVGStyleElement.h:
            (WebCore::SVGStyleElement::setCreatedByParser):
    
            This is a name change. Document::stylesheetLoaded() 
            is now Document::removePendingSheet()
            * dom/Document.cpp:
            (WebCore::Document::removePendingSheet):
            * dom/Document.h:
            * dom/ProcessingInstruction.cpp:
            (WebCore::ProcessingInstruction::sheetLoaded):
            * html/HTMLLinkElement.cpp:
            (WebCore::HTMLLinkElement::~HTMLLinkElement):
            (WebCore::HTMLLinkElement::setDisabledState):
            (WebCore::HTMLLinkElement::process):
            (WebCore::HTMLLinkElement::sheetLoaded):
            * page/Frame.cpp:
            (WebCore::UserStyleSheetLoader::~UserStyleSheetLoader):
            (WebCore::UserStyleSheetLoader::setCSSStyleSheet):
    
            This is another name change. closeRenderer() is now 
            finishedParsing()
            * dom/Node.h:
            (WebCore::Node::finishedParsing):
            * dom/XMLTokenizer.cpp:
            (WebCore::XMLTokenizer::endElementNs):
            (WebCore::):
            * html/HTMLAppletElement.cpp:
            (WebCore::HTMLAppletElement::finishedParsing):
            * html/HTMLAppletElement.h:
            * html/HTMLGenericFormElement.cpp:
            (WebCore::HTMLFormControlElementWithState::finishedParsing):
            * html/HTMLGenericFormElement.h:
            * html/HTMLObjectElement.cpp:
            (WebCore::HTMLObjectElement::finishedParsing):
            * html/HTMLObjectElement.h:
            * html/HTMLParser.cpp:
            (WebCore::HTMLParser::insertNode):
            (WebCore::HTMLParser::popOneBlockCommon):
            * html/HTMLScriptElement.cpp:
            (WebCore::HTMLScriptElement::finishedParsing):
            * html/HTMLScriptElement.h:
            (WebCore::HTMLStyleElement::setCreatedByParser):
            * ksvg2/svg/SVGAnimationElement.cpp:
            (WebCore::SVGAnimationElement::finishedParsing):
            * ksvg2/svg/SVGAnimationElement.h:
            * ksvg2/svg/SVGElement.cpp:
            (WebCore::SVGElement::finishedParsing):
            * ksvg2/svg/SVGElement.h:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@25082 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    23902137