Changeset 74637 in webkit


Ignore:
Timestamp:
Dec 24, 2010 9:51:25 AM (13 years ago)
Author:
yurys@chromium.org
Message:

2010-12-24 Yury Semikhatsky <yurys@chromium.org>

Reviewed by Darin Adler.

inspector/debugger-step-out.html crashing intermittently in the bots
https://bugs.webkit.org/show_bug.cgi?id=50868

Use RefPtr rather instead of raw pointers when keeping references
to refcounted objects.

  • inspector/InspectorCSSAgent.cpp: (WebCore::InspectorCSSAgent::getStylesForNode2): (WebCore::InspectorCSSAgent::getComputedStyleForNode2):
  • inspector/InspectorStyleSheet.cpp: (WebCore::InspectorStyle::create): (WebCore::InspectorStyle::InspectorStyle): (WebCore::InspectorStyle::buildObjectForStyle): (WebCore::InspectorStyle::setPropertyText): (WebCore::InspectorStyle::toggleProperty): (WebCore::InspectorStyle::styleText): (WebCore::InspectorStyle::populateAllProperties): (WebCore::InspectorStyle::replacePropertyInStyleText): (WebCore::InspectorStyleSheet::create): (WebCore::InspectorStyleSheet::InspectorStyleSheet): (WebCore::InspectorStyleSheetForInlineStyle::create): (WebCore::InspectorStyleSheetForInlineStyle::InspectorStyleSheetForInlineStyle): (WebCore::InspectorStyleSheetForInlineStyle::getStyleAttributeRanges):
  • inspector/InspectorStyleSheet.h: (WebCore::InspectorStyle::cssStyle): (WebCore::InspectorStyleSheet::pageStyleSheet):
Location:
trunk/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r74636 r74637  
     12010-12-24  Yury Semikhatsky  <yurys@chromium.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        inspector/debugger-step-out.html crashing intermittently in the bots
     6        https://bugs.webkit.org/show_bug.cgi?id=50868
     7
     8        Use RefPtr rather instead of raw pointers when keeping references
     9        to refcounted objects.
     10
     11        * inspector/InspectorCSSAgent.cpp:
     12        (WebCore::InspectorCSSAgent::getStylesForNode2):
     13        (WebCore::InspectorCSSAgent::getComputedStyleForNode2):
     14        * inspector/InspectorStyleSheet.cpp:
     15        (WebCore::InspectorStyle::create):
     16        (WebCore::InspectorStyle::InspectorStyle):
     17        (WebCore::InspectorStyle::buildObjectForStyle):
     18        (WebCore::InspectorStyle::setPropertyText):
     19        (WebCore::InspectorStyle::toggleProperty):
     20        (WebCore::InspectorStyle::styleText):
     21        (WebCore::InspectorStyle::populateAllProperties):
     22        (WebCore::InspectorStyle::replacePropertyInStyleText):
     23        (WebCore::InspectorStyleSheet::create):
     24        (WebCore::InspectorStyleSheet::InspectorStyleSheet):
     25        (WebCore::InspectorStyleSheetForInlineStyle::create):
     26        (WebCore::InspectorStyleSheetForInlineStyle::InspectorStyleSheetForInlineStyle):
     27        (WebCore::InspectorStyleSheetForInlineStyle::getStyleAttributeRanges):
     28        * inspector/InspectorStyleSheet.h:
     29        (WebCore::InspectorStyle::cssStyle):
     30        (WebCore::InspectorStyleSheet::pageStyleSheet):
     31
    1322010-12-24  Justin Schuh  <jschuh@chromium.org>
    233
  • trunk/WebCore/inspector/InspectorCSSAgent.cpp

    r74634 r74637  
    187187
    188188    RefPtr<CSSComputedStyleDeclaration> computedStyleInfo = computedStyle(element, true); // Support the viewing of :visited information in computed style.
    189     RefPtr<InspectorStyle> computedInspectorStyle = InspectorStyle::create(InspectorCSSId(), computedStyleInfo.get(), 0);
     189    RefPtr<InspectorStyle> computedInspectorStyle = InspectorStyle::create(InspectorCSSId(), computedStyleInfo, 0);
    190190    resultObject->setObject("computedStyle", computedInspectorStyle->buildObjectForStyle());
    191191
     
    249249
    250250    RefPtr<CSSComputedStyleDeclaration> computedStyleInfo = computedStyle(element, true);
    251     RefPtr<InspectorStyle> inspectorStyle = InspectorStyle::create(InspectorCSSId(), computedStyleInfo.get(), 0);
     251    RefPtr<InspectorStyle> inspectorStyle = InspectorStyle::create(InspectorCSSId(), computedStyleInfo, 0);
    252252    *style = inspectorStyle->buildObjectForStyle();
    253253}
  • trunk/WebCore/inspector/InspectorStyleSheet.cpp

    r74634 r74637  
    132132}
    133133
     134PassRefPtr<InspectorStyle> InspectorStyle::create(const InspectorCSSId& styleId, PassRefPtr<CSSStyleDeclaration> style, InspectorStyleSheet* parentStyleSheet)
     135{
     136    return adoptRef(new InspectorStyle(styleId, style, parentStyleSheet));
     137}
     138
     139InspectorStyle::InspectorStyle(const InspectorCSSId& styleId, PassRefPtr<CSSStyleDeclaration> style, InspectorStyleSheet* parentStyleSheet)
     140    : m_styleId(styleId)
     141    , m_style(style)
     142    , m_parentStyleSheet(parentStyleSheet)
     143{
     144    ASSERT(m_style);
     145}
     146
    134147PassRefPtr<InspectorObject> InspectorStyle::buildObjectForStyle() const
    135148{
     
    142155    propertiesObject->setString("height", m_style->getPropertyValue("height"));
    143156
    144     RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet ? m_parentStyleSheet->ruleSourceDataFor(m_style) : 0;
     157    RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet ? m_parentStyleSheet->ruleSourceDataFor(m_style.get()) : 0;
    145158    if (sourceData) {
    146159        propertiesObject->setNumber("startOffset", sourceData->styleSourceData->styleBodyRange.start);
     
    218231    } else {
    219232        // Insert at index.
    220         RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet->ruleSourceDataFor(m_style);
     233        RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet->ruleSourceDataFor(m_style.get());
    221234        if (!sourceData)
    222235            return false;
     
    258271
    259272        text.insert(textToSet, propertyStart);
    260         m_parentStyleSheet->setStyleText(m_style, text);
     273        m_parentStyleSheet->setStyleText(m_style.get(), text);
    261274    }
    262275
     
    272285    if (!m_parentStyleSheet->ensureParsedDataReady())
    273286        return false; // Can toggle only source-based properties.
    274     RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet->ruleSourceDataFor(m_style);
     287    RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet->ruleSourceDataFor(m_style.get());
    275288    if (!sourceData)
    276289        return false; // No source data for the style.
     
    313326{
    314327    // Precondition: m_parentStyleSheet->ensureParsedDataReady() has been called successfully.
    315     RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet->ruleSourceDataFor(m_style);
     328    RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet->ruleSourceDataFor(m_style.get());
    316329    if (!sourceData)
    317330        return false;
     
    382395        disabledProperty = m_disabledProperties.at(disabledIndex);
    383396
    384     RefPtr<CSSRuleSourceData> sourceData = (m_parentStyleSheet && m_parentStyleSheet->ensureParsedDataReady()) ? m_parentStyleSheet->ruleSourceDataFor(m_style) : 0;
     397    RefPtr<CSSRuleSourceData> sourceData = (m_parentStyleSheet && m_parentStyleSheet->ensureParsedDataReady()) ? m_parentStyleSheet->ruleSourceDataFor(m_style.get()) : 0;
    385398    Vector<CSSPropertySourceData>* sourcePropertyData = sourceData ? &(sourceData->styleSourceData->propertyData) : 0;
    386399    if (sourcePropertyData) {
     
    509522    const SourceRange& range = property.sourceData.range;
    510523    text.replace(range.start, range.end - range.start, newText);
    511     success = m_parentStyleSheet->setStyleText(m_style, text);
     524    success = m_parentStyleSheet->setStyleText(m_style.get(), text);
    512525    return success;
    513526}
     
    564577}
    565578
    566 InspectorStyleSheet::InspectorStyleSheet(const String& id, CSSStyleSheet* pageStyleSheet, const String& origin, const String& documentURL)
     579PassRefPtr<InspectorStyleSheet> InspectorStyleSheet::create(const String& id, PassRefPtr<CSSStyleSheet> pageStyleSheet, const String& origin, const String& documentURL)
     580{
     581    return adoptRef(new InspectorStyleSheet(id, pageStyleSheet, origin, documentURL));
     582}
     583
     584InspectorStyleSheet::InspectorStyleSheet(const String& id, PassRefPtr<CSSStyleSheet> pageStyleSheet, const String& origin, const String& documentURL)
    567585    : m_id(id)
    568586    , m_pageStyleSheet(pageStyleSheet)
     
    10931111}
    10941112
    1095 InspectorStyleSheetForInlineStyle::InspectorStyleSheetForInlineStyle(const String& id, Element* element, const String& origin)
     1113PassRefPtr<InspectorStyleSheetForInlineStyle> InspectorStyleSheetForInlineStyle::create(const String& id, PassRefPtr<Element> element, const String& origin)
     1114{
     1115    return adoptRef(new InspectorStyleSheetForInlineStyle(id, element, origin));
     1116}
     1117
     1118InspectorStyleSheetForInlineStyle::InspectorStyleSheetForInlineStyle(const String& id, PassRefPtr<Element> element, const String& origin)
    10961119    : InspectorStyleSheet(id, 0, origin, "")
    10971120    , m_element(element)
    10981121    , m_ruleSourceData(0)
    10991122{
    1100     ASSERT(element);
     1123    ASSERT(m_element);
    11011124    m_inspectorStyle = InspectorStyle::create(InspectorCSSId(id, 0), inlineStyle(), this);
    11021125    m_styleText = m_element->isStyledElement() ? m_element->getAttribute("style").string() : String();
  • trunk/WebCore/inspector/InspectorStyleSheet.h

    r74634 r74637  
    122122class InspectorStyle : public RefCounted<InspectorStyle> {
    123123public:
    124     static PassRefPtr<InspectorStyle> create(const InspectorCSSId& styleId, CSSStyleDeclaration* style, InspectorStyleSheet* parentStyleSheet)
    125     {
    126         return adoptRef(new InspectorStyle(styleId, style, parentStyleSheet));
    127     }
    128 
    129     InspectorStyle(const InspectorCSSId& styleId, CSSStyleDeclaration* style, InspectorStyleSheet* parentStyleSheet)
    130         : m_styleId(styleId)
    131         , m_style(style)
    132         , m_parentStyleSheet(parentStyleSheet)
    133     {
    134         ASSERT(style);
    135     }
    136 
    137     CSSStyleDeclaration* cssStyle() const { return m_style; }
     124    static PassRefPtr<InspectorStyle> create(const InspectorCSSId& styleId, PassRefPtr<CSSStyleDeclaration> style, InspectorStyleSheet* parentStyleSheet);
     125
     126    CSSStyleDeclaration* cssStyle() const { return m_style.get(); }
    138127    PassRefPtr<InspectorObject> buildObjectForStyle() const;
    139128    bool hasDisabledProperties() const { return !m_disabledProperties.isEmpty(); }
     
    142131
    143132private:
     133    InspectorStyle(const InspectorCSSId& styleId, PassRefPtr<CSSStyleDeclaration> style, InspectorStyleSheet* parentStyleSheet);
     134
    144135    static unsigned disabledIndexByOrdinal(unsigned ordinal, bool canUseSubsequent, Vector<InspectorStyleProperty>& allProperties);
    145136
     
    156147
    157148    InspectorCSSId m_styleId;
    158     CSSStyleDeclaration* m_style;
     149    RefPtr<CSSStyleDeclaration> m_style;
    159150    InspectorStyleSheet* m_parentStyleSheet;
    160151    Vector<InspectorStyleProperty> m_disabledProperties;
     
    164155public:
    165156    typedef HashMap<CSSStyleDeclaration*, RefPtr<InspectorStyle> > InspectorStyleMap;
    166     static PassRefPtr<InspectorStyleSheet> create(const String& id, CSSStyleSheet* pageStyleSheet, const String& origin, const String& documentURL)
    167     {
    168         return adoptRef(new InspectorStyleSheet(id, pageStyleSheet, origin, documentURL));
    169     }
    170 
    171     InspectorStyleSheet(const String& id, CSSStyleSheet* pageStyleSheet, const String& origin, const String& documentURL);
     157    static PassRefPtr<InspectorStyleSheet> create(const String& id, PassRefPtr<CSSStyleSheet> pageStyleSheet, const String& origin, const String& documentURL);
     158
    172159    virtual ~InspectorStyleSheet();
    173160
    174161    String id() const { return m_id; }
    175162    String finalURL() const;
    176     CSSStyleSheet* pageStyleSheet() const { return m_pageStyleSheet; }
     163    CSSStyleSheet* pageStyleSheet() const { return m_pageStyleSheet.get(); }
    177164    void reparseStyleSheet(const String&);
    178165    bool setText(const String&);
     
    190177
    191178protected:
     179    InspectorStyleSheet(const String& id, PassRefPtr<CSSStyleSheet> pageStyleSheet, const String& origin, const String& documentURL);
     180
    192181    bool canBind() const { return m_origin != "userAgent" && m_origin != "user"; }
    193182    InspectorCSSId ruleOrStyleId(CSSStyleDeclaration* style) const;
     
    219208
    220209    String m_id;
    221     CSSStyleSheet* m_pageStyleSheet;
     210    RefPtr<CSSStyleSheet> m_pageStyleSheet;
    222211    String m_origin;
    223212    String m_documentURL;
     
    232221class InspectorStyleSheetForInlineStyle : public InspectorStyleSheet {
    233222public:
    234     static PassRefPtr<InspectorStyleSheetForInlineStyle> create(const String& id, Element* element, const String& origin)
    235     {
    236         return adoptRef(new InspectorStyleSheetForInlineStyle(id, element, origin));
    237     }
    238 
    239     InspectorStyleSheetForInlineStyle(const String& id, Element* element, const String& origin);
     223    static PassRefPtr<InspectorStyleSheetForInlineStyle> create(const String& id, PassRefPtr<Element> element, const String& origin);
     224
    240225    void didModifyElementAttribute();
    241226    virtual bool text(String* result) const;
     
    243228
    244229protected:
     230    InspectorStyleSheetForInlineStyle(const String& id, PassRefPtr<Element> element, const String& origin);
     231
    245232    virtual Document* ownerDocument() const;
    246233    virtual RefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration* style) const { ASSERT_UNUSED(style, style == inlineStyle()); return m_ruleSourceData; }
     
    258245    bool getStyleAttributeRanges(RefPtr<CSSStyleSourceData>* result);
    259246
    260     Element* m_element;
     247    RefPtr<Element> m_element;
    261248    RefPtr<CSSRuleSourceData> m_ruleSourceData;
    262249    RefPtr<InspectorStyle> m_inspectorStyle;
Note: See TracChangeset for help on using the changeset viewer.