Changeset 84148 in webkit


Ignore:
Timestamp:
Apr 18, 2011 8:59:28 AM (13 years ago)
Author:
pfeldman@chromium.org
Message:

2011-04-18 Pavel Feldman <pfeldman@google.com>

Reviewed by Yury Semikhatsky.

Web Inspector: add test for CSS-resource binding.
https://bugs.webkit.org/show_bug.cgi?id=58786

  • inspector/styles/resources/styles-history.css: Added. (body):
  • inspector/styles/styles-history-expecte.txt: Added.
  • inspector/styles/styles-history.html: Added.
  • inspector/styles/styles-source-offsets.html:

2011-04-18 Pavel Feldman <pfeldman@google.com>

Reviewed by Yury Semikhatsky.

Web Inspector: add test for CSS-resource binding.
https://bugs.webkit.org/show_bug.cgi?id=58786

Test: inspector/styles/styles-history.html

  • inspector/InspectorCSSAgent.cpp: (WebCore::InspectorCSSAgent::setPropertyText): (WebCore::InspectorCSSAgent::toggleProperty):
  • inspector/InspectorStyleSheet.cpp: (WebCore::InspectorStyle::setPropertyText): (WebCore::InspectorStyle::toggleProperty): (WebCore::InspectorStyleSheet::setPropertyText): (WebCore::InspectorStyleSheet::toggleProperty):
  • inspector/InspectorStyleSheet.h:
  • inspector/front-end/CSSStyleModel.js: (WebInspector.CSSStyleModel.prototype._fireStyleSheetChanged.if): (WebInspector.CSSStyleModel.prototype._fireStyleSheetChanged.mycallback): (WebInspector.CSSStyleModel.prototype._fireStyleSheetChanged): (WebInspector.CSSStyleModel.prototype.setStyleSheetText): (WebInspector.CSSStyleDeclaration.prototype.insertPropertyAt): (WebInspector.CSSProperty.prototype.setText.callback): (WebInspector.CSSProperty.prototype.setText):
Location:
trunk
Files:
3 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r84147 r84148  
     12011-04-18  Pavel Feldman  <pfeldman@google.com>
     2
     3        Reviewed by Yury Semikhatsky.
     4
     5        Web Inspector: add test for CSS-resource binding.
     6        https://bugs.webkit.org/show_bug.cgi?id=58786
     7
     8        * inspector/styles/resources/styles-history.css: Added.
     9        (body):
     10        * inspector/styles/styles-history-expecte.txt: Added.
     11        * inspector/styles/styles-history.html: Added.
     12        * inspector/styles/styles-source-offsets.html:
     13
    1142011-04-18  Sheriff Bot  <webkit.review.bot@gmail.com>
    215
  • trunk/LayoutTests/inspector/styles/styles-source-offsets.html

    r82578 r84148  
    22<head>
    33
    4 <link rel="stylesheet" href="resources/styles-source-offsets.css" -->
     4<link rel="stylesheet" href="resources/styles-source-offsets.css">
    55
    66<script src="../../http/tests/inspector/inspector-test.js"></script>
  • trunk/Source/WebCore/ChangeLog

    r84147 r84148  
     12011-04-18  Pavel Feldman  <pfeldman@google.com>
     2
     3        Reviewed by Yury Semikhatsky.
     4
     5        Web Inspector: add test for CSS-resource binding.
     6        https://bugs.webkit.org/show_bug.cgi?id=58786
     7
     8        Test: inspector/styles/styles-history.html
     9
     10        * inspector/InspectorCSSAgent.cpp:
     11        (WebCore::InspectorCSSAgent::setPropertyText):
     12        (WebCore::InspectorCSSAgent::toggleProperty):
     13        * inspector/InspectorStyleSheet.cpp:
     14        (WebCore::InspectorStyle::setPropertyText):
     15        (WebCore::InspectorStyle::toggleProperty):
     16        (WebCore::InspectorStyleSheet::setPropertyText):
     17        (WebCore::InspectorStyleSheet::toggleProperty):
     18        * inspector/InspectorStyleSheet.h:
     19        * inspector/front-end/CSSStyleModel.js:
     20        (WebInspector.CSSStyleModel.prototype._fireStyleSheetChanged.if):
     21        (WebInspector.CSSStyleModel.prototype._fireStyleSheetChanged.mycallback):
     22        (WebInspector.CSSStyleModel.prototype._fireStyleSheetChanged):
     23        (WebInspector.CSSStyleModel.prototype.setStyleSheetText):
     24        (WebInspector.CSSStyleDeclaration.prototype.insertPropertyAt):
     25        (WebInspector.CSSProperty.prototype.setText.callback):
     26        (WebInspector.CSSProperty.prototype.setText):
     27
    1282011-04-18  Sheriff Bot  <webkit.review.bot@gmail.com>
    229
  • trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp

    r83962 r84148  
    303303        inspectorStyleSheet->reparseStyleSheet(text);
    304304    else
    305         *errorString = "Internal error setting style sheet text.";
     305        *errorString = "Internal error setting style sheet text";
    306306}
    307307
     
    315315        return;
    316316
    317     bool success = inspectorStyleSheet->setPropertyText(compoundId, propertyIndex, text, overwrite);
     317    bool success = inspectorStyleSheet->setPropertyText(errorString, compoundId, propertyIndex, text, overwrite);
    318318    if (success)
    319319        *result = inspectorStyleSheet->buildObjectForStyle(inspectorStyleSheet->styleForId(compoundId));
     
    329329        return;
    330330
    331     bool success = inspectorStyleSheet->toggleProperty(compoundId, propertyIndex, disable);
     331    bool success = inspectorStyleSheet->toggleProperty(errorString, compoundId, propertyIndex, disable);
    332332    if (success)
    333333        *result = inspectorStyleSheet->buildObjectForStyle(inspectorStyleSheet->styleForId(compoundId));
  • trunk/Source/WebCore/inspector/InspectorStyleSheet.cpp

    r83441 r84148  
    181181// The propertyText (if not empty) is checked to be a valid style declaration (containing at least one property). If not,
    182182// the method returns false (denoting an error).
    183 bool InspectorStyle::setPropertyText(unsigned index, const String& propertyText, bool overwrite)
     183bool InspectorStyle::setPropertyText(ErrorString* errorString, unsigned index, const String& propertyText, bool overwrite)
    184184{
    185185    ASSERT(m_parentStyleSheet);
    186     if (!m_parentStyleSheet->ensureParsedDataReady())
    187         return false;
     186    if (!m_parentStyleSheet->ensureParsedDataReady()) {
     187        *errorString = "Internal error: no stylesheet parsed data available";
     188        return false;
     189    }
    188190
    189191    Vector<InspectorStyleProperty> allProperties;
     
    202204
    203205        // At least one property + the bogus property added just above should be present.
    204         if (propertyCount < 2)
     206        if (propertyCount < 2) {
     207            *errorString = "Invalid property value";
    205208            return false;
     209        }
    206210
    207211        // Check for a proper propertyText termination (the parser could at least restore to the PROPERTY_NAME state).
    208         if (propertyData.at(propertyCount - 1).name != "-webkit-boguz-propertee")
     212        if (propertyData.at(propertyCount - 1).name != "-webkit-boguz-propertee") {
     213            *errorString = "Invalid property value";
    209214            return false;
     215        }
    210216    }
    211217
     
    221227        if (!property.disabled) {
    222228            bool success = replacePropertyInStyleText(property, propertyText);
    223             if (!success)
     229            if (!success) {
     230                *errorString = "Internal error: could not replace property value";
    224231                return false;
     232            }
    225233        } else {
    226234            unsigned textLength = propertyText.length();
     
    240248        // Insert at index.
    241249        RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet->ruleSourceDataFor(m_style.get());
    242         if (!sourceData)
     250        if (!sourceData) {
     251            *errorString = "Internal error: no CSS rule source found";
    243252            return false;
     253        }
    244254        String text;
    245255        bool success = styleText(&text);
    246         if (!success)
     256        if (!success) {
     257            *errorString = "Internal error: could not fetch style text";
    247258            return false;
     259        }
    248260        propertyLengthDelta = propertyText.length();
    249261
     
    288300}
    289301
    290 bool InspectorStyle::toggleProperty(unsigned index, bool disable)
     302bool InspectorStyle::toggleProperty(ErrorString* errorString, unsigned index, bool disable)
    291303{
    292304    ASSERT(m_parentStyleSheet);
    293     if (!m_parentStyleSheet->ensureParsedDataReady())
    294         return false; // Can toggle only source-based properties.
     305    if (!m_parentStyleSheet->ensureParsedDataReady()) {
     306        *errorString = "Can toggle only source-based properties";
     307        return false;
     308    }
    295309    RefPtr<CSSRuleSourceData> sourceData = m_parentStyleSheet->ruleSourceDataFor(m_style.get());
    296     if (!sourceData)
    297         return false; // No source data for the style.
     310    if (!sourceData) {
     311        *errorString = "Internal error: No source data for the style found";
     312        return false;
     313    }
    298314
    299315    Vector<InspectorStyleProperty> allProperties;
    300316    populateAllProperties(&allProperties);
    301     if (index >= allProperties.size())
    302         return false; // Outside of property range.
     317    if (index >= allProperties.size()) {
     318        *errorString = "Property index is outside of property range";
     319        return false;
     320    }
    303321
    304322    InspectorStyleProperty& property = allProperties.at(index);
     
    806824}
    807825
    808 bool InspectorStyleSheet::setPropertyText(const InspectorCSSId& id, unsigned propertyIndex, const String& text, bool overwrite)
     826bool InspectorStyleSheet::setPropertyText(ErrorString* errorString, const InspectorCSSId& id, unsigned propertyIndex, const String& text, bool overwrite)
    809827{
    810828    RefPtr<InspectorStyle> inspectorStyle = inspectorStyleForId(id);
    811     if (!inspectorStyle)
    812         return false;
    813 
    814     return inspectorStyle->setPropertyText(propertyIndex, text, overwrite);
    815 }
    816 
    817 bool InspectorStyleSheet::toggleProperty(const InspectorCSSId& id, unsigned propertyIndex, bool disable)
     829    if (!inspectorStyle) {
     830        *errorString = "No style found for given id";
     831        return false;
     832    }
     833
     834    return inspectorStyle->setPropertyText(errorString, propertyIndex, text, overwrite);
     835}
     836
     837bool InspectorStyleSheet::toggleProperty(ErrorString* errorString, const InspectorCSSId& id, unsigned propertyIndex, bool disable)
    818838{
    819839    RefPtr<InspectorStyle> inspectorStyle = inspectorStyleForId(id);
    820     if (!inspectorStyle)
    821         return false;
    822 
    823     bool success = inspectorStyle->toggleProperty(propertyIndex, disable);
     840    if (!inspectorStyle) {
     841        *errorString = "No style found for given id";
     842        return false;
     843    }
     844
     845    bool success = inspectorStyle->toggleProperty(errorString, propertyIndex, disable);
    824846    if (success) {
    825847        if (disable)
  • trunk/Source/WebCore/inspector/InspectorStyleSheet.h

    r82252 r84148  
    5050#if ENABLE(INSPECTOR)
    5151
     52typedef String ErrorString;
     53
    5254class InspectorCSSId {
    5355public:
     
    128130    PassRefPtr<InspectorObject> buildObjectForStyle() const;
    129131    bool hasDisabledProperties() const { return !m_disabledProperties.isEmpty(); }
    130     bool setPropertyText(unsigned index, const String& text, bool overwrite);
    131     bool toggleProperty(unsigned index, bool disable);
     132    bool setPropertyText(ErrorString*, unsigned index, const String& text, bool overwrite);
     133    bool toggleProperty(ErrorString*, unsigned index, bool disable);
    132134
    133135private:
     
    172174    PassRefPtr<InspectorObject> buildObjectForRule(CSSStyleRule*);
    173175    PassRefPtr<InspectorObject> buildObjectForStyle(CSSStyleDeclaration*);
    174     bool setPropertyText(const InspectorCSSId&, unsigned propertyIndex, const String& text, bool overwrite);
    175     bool toggleProperty(const InspectorCSSId&, unsigned propertyIndex, bool disable);
     176    bool setPropertyText(ErrorString*, const InspectorCSSId&, unsigned propertyIndex, const String& text, bool overwrite);
     177    bool toggleProperty(ErrorString*, const InspectorCSSId&, unsigned propertyIndex, bool disable);
    176178
    177179    virtual bool text(String* result) const;
  • trunk/Source/WebCore/inspector/front-end/CSSStyleModel.js

    r83969 r84148  
    167167    },
    168168
    169     _fireStyleSheetChanged: function(styleSheetId, majorChange)
    170     {
    171         if (!majorChange || !styleSheetId)
     169    _fireStyleSheetChanged: function(styleSheetId, majorChange, callback)
     170    {
     171        callback = callback || function() {};
     172
     173        if (!majorChange || !styleSheetId || !this.hasEventListeners(WebInspector.CSSStyleModel.Events.StyleSheetChanged)) {
     174            callback();
    172175            return;
    173 
    174         function callback(error, content)
    175         {
    176             if (error)
    177                 return;
    178 
    179             this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.StyleSheetChanged, { styleSheetId: styleSheetId, content: content, majorChange: majorChange });
    180         }
    181         if (this.hasEventListeners(WebInspector.CSSStyleModel.Events.StyleSheetChanged))
    182             CSSAgent.getStyleSheetText(styleSheetId, callback.bind(this));
     176        }
     177
     178        function mycallback(error, content)
     179        {
     180            if (!error)
     181                this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.StyleSheetChanged, { styleSheetId: styleSheetId, content: content, majorChange: majorChange });
     182            callback();
     183        }
     184
     185        CSSAgent.getStyleSheetText(styleSheetId, mycallback.bind(this));
    183186    },
    184187
     
    188191        {
    189192             if (!error)
    190                  this._fireStyleSheetChanged(styleSheetId, majorChange);
    191 
    192              if (userCallback)
    193                  userCallback(error);
     193                 this._fireStyleSheetChanged(styleSheetId, majorChange, userCallback ? userCallback.bind(this, error) : null);
    194194        }
    195195        CSSAgent.setStyleSheetText(styleSheetId, newText, callback.bind(this));
     
    367367                return;
    368368
    369             if (error)
     369            if (error) {
     370                console.error(JSON.stringify(error));
    370371                userCallback(null);
    371             else {
     372            } else {
    372373                userCallback(WebInspector.CSSStyleDeclaration.parsePayload(payload));
    373374                WebInspector.cssModel._fireStyleSheetChanged(this.id.styleSheetId, true);
     
    499500        function callback(error, stylePayload)
    500501        {
    501             if (!error && stylePayload) {
     502            if (!error) {
    502503                this.text = propertyText;
    503504                var style = WebInspector.CSSStyleDeclaration.parsePayload(stylePayload);
     
    507508                    newProperty.setDisabled(false, enabledCallback);
    508509                    return;
    509                 } else
    510                     WebInspector.cssModel._fireStyleSheetChanged(style.id.styleSheetId, majorChange);
    511                 if (userCallback)
    512                     userCallback(style);
     510                }
     511
     512                WebInspector.cssModel._fireStyleSheetChanged(style.id.styleSheetId, majorChange, userCallback.bind(this, style));
    513513            } else {
     514                console.error(JSON.stringify(error));
    514515                if (userCallback)
    515516                    userCallback(null);
Note: See TracChangeset for help on using the changeset viewer.