Changeset 132388 in webkit


Ignore:
Timestamp:
Oct 24, 2012 1:18:36 PM (11 years ago)
Author:
commit-queue@webkit.org
Message:

image-set doesn't round-trip properly with cssText
https://bugs.webkit.org/show_bug.cgi?id=99725

Patch by Rick Byers <rbyers@chromium.org> on 2012-10-24
Reviewed by Beth Dakin.

Source/WebCore:

Fix serialization of -webkit-image-set rules to use the same format as
is used for parsing.

Test: fast/css/image-set-setting.html

  • css/CSSImageSetValue.cpp:

(WebCore::CSSImageSetValue::customCssText):

  • css/CSSValueList.h:

(WebCore::CSSValueList::item): Add const overload

LayoutTests:

Update image-set-setting test to expect the css text to round-trip properly.

  • fast/css/image-set-setting-expected.txt:
  • fast/css/script-tests/image-set-setting.js:

(testComputedStyle):
(testImageSetRule):

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r132382 r132388  
     12012-10-24  Rick Byers  <rbyers@chromium.org>
     2
     3        image-set doesn't round-trip properly with cssText
     4        https://bugs.webkit.org/show_bug.cgi?id=99725
     5
     6        Reviewed by Beth Dakin.
     7
     8        Update image-set-setting test to expect the css text to round-trip properly.
     9
     10        * fast/css/image-set-setting-expected.txt:
     11        * fast/css/script-tests/image-set-setting.js:
     12        (testComputedStyle):
     13        (testImageSetRule):
     14
    1152012-10-24  Zan Dobersek  <zandobersek@gmail.com>
    216
  • trunk/LayoutTests/fast/css/image-set-setting-expected.txt

    r126611 r132388  
    55
    66
    7 Single value for background-image : url('http://www.webkit.org/a') 1x
    8 PASS testComputedStyle("background-image", "url('http://www.webkit.org/a') 1x") is "-webkit-image-set(url(http://www.webkit.org/a), 1)"
     7Single value for background-image : url(http://www.webkit.org/a) 1x
     8PASS testComputedStyle("background-image", "-webkit-image-set(url(http://www.webkit.org/a) 1x)") is "-webkit-image-set(url(http://www.webkit.org/a) 1x)"
    99
    10 Multiple values for background-image : url('http://www.webkit.org/a') 1x, url('http://www.webkit.org/b') 2x
    11 PASS testComputedStyle("background-image", "url('http://www.webkit.org/a') 1x, url('http://www.webkit.org/b') 2x") is "-webkit-image-set(url(http://www.webkit.org/a), 1, url(http://www.webkit.org/b), 2)"
     10Multiple values for background-image : url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x
     11PASS testComputedStyle("background-image", "-webkit-image-set(url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x)") is "-webkit-image-set(url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x)"
    1212
    13 Multiple values for background-image, out of order : url('http://www.webkit.org/c') 3x, url('http://www.webkit.org/b') 2x, url('http://www.webkit.org/a') 1x
    14 PASS testComputedStyle("background-image", "url('http://www.webkit.org/c') 3x, url('http://www.webkit.org/b') 2x, url('http://www.webkit.org/a') 1x") is "-webkit-image-set(url(http://www.webkit.org/c), 3, url(http://www.webkit.org/b), 2, url(http://www.webkit.org/a), 1)"
     13Multiple values for background-image, out of order : url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x
     14PASS testComputedStyle("background-image", "-webkit-image-set(url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x)") is "-webkit-image-set(url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x)"
     15
     16Duplicate values for background-image : url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x
     17PASS testComputedStyle("background-image", "-webkit-image-set(url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x)") is "-webkit-image-set(url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x)"
     18
     19Fractional values for background-image : url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x
     20PASS testComputedStyle("background-image", "-webkit-image-set(url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x)") is "-webkit-image-set(url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x)"
    1521PASS successfullyParsed is true
    1622
  • trunk/LayoutTests/fast/css/script-tests/image-set-setting.js

    r126611 r132388  
    11description("Test the setting of the -webkit-image-set function.");
    22
    3 function testComputedStyle(property, rule)
     3function testComputedStyle(property, fullRule)
    44{
    55    var div = document.createElement("div");
    66    document.body.appendChild(div);
    7     div.setAttribute("style", property + ": -webkit-image-set(" + rule + ")");
     7    div.setAttribute("style", property + ": " + fullRule);
    88    var computedValue = div.style.background;
    99    document.body.removeChild(div);
     
    1616    debug(description + " : " + rule);
    1717
    18     shouldBeEqualToString('testComputedStyle("' + property + '", "' + rule + '")', expected);
     18    var fullRule = "-webkit-image-set(" + rule + ")";
     19    shouldBeEqualToString('testComputedStyle("' + property + '", "' + fullRule + '")', fullRule);
    1920}
    2021
    2122testImageSetRule("Single value for background-image",
    2223                "background-image",
    23                 "url('http://www.webkit.org/a') 1x",
    24                 "-webkit-image-set(url(http://www.webkit.org/a), 1)");
     24                "url(http://www.webkit.org/a) 1x");
    2525
    2626testImageSetRule("Multiple values for background-image",
    2727                "background-image",
    28                 "url('http://www.webkit.org/a') 1x, url('http://www.webkit.org/b') 2x",
    29                 "-webkit-image-set(url(http://www.webkit.org/a), 1, url(http://www.webkit.org/b), 2)");
     28                "url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x");
    3029
    3130testImageSetRule("Multiple values for background-image, out of order",
    3231                "background-image",
    33                 "url('http://www.webkit.org/c') 3x, url('http://www.webkit.org/b') 2x, url('http://www.webkit.org/a') 1x",
    34                 "-webkit-image-set(url(http://www.webkit.org/c), 3, url(http://www.webkit.org/b), 2, url(http://www.webkit.org/a), 1)");
     32                "url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x");
     33
     34testImageSetRule("Duplicate values for background-image",
     35                "background-image",
     36                "url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x");
     37
     38testImageSetRule("Fractional values for background-image",
     39                "background-image",
     40                "url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x");
     41
     42// FIXME: We should also be testing the behavior of negative values somewhere, but it's currently
     43// broken.  http://wkb.ug/100132
    3544
    3645successfullyParsed = true;
  • trunk/Source/WebCore/ChangeLog

    r132387 r132388  
     12012-10-24  Rick Byers  <rbyers@chromium.org>
     2
     3        image-set doesn't round-trip properly with cssText
     4        https://bugs.webkit.org/show_bug.cgi?id=99725
     5
     6        Reviewed by Beth Dakin.
     7
     8        Fix serialization of -webkit-image-set rules to use the same format as
     9        is used for parsing.
     10
     11        Test: fast/css/image-set-setting.html
     12
     13        * css/CSSImageSetValue.cpp:
     14        (WebCore::CSSImageSetValue::customCssText):
     15        * css/CSSValueList.h:
     16        (WebCore::CSSValueList::item): Add const overload
     17
    1182012-10-24  Jonathan Feldstein  <jfeldstein@rim.com>
    219
  • trunk/Source/WebCore/css/CSSImageSetValue.cpp

    r132157 r132388  
    141141String CSSImageSetValue::customCssText() const
    142142{
    143     return "-webkit-image-set(" + CSSValueList::customCssText() + ")";
     143    StringBuilder result;
     144    result.append("-webkit-image-set(");
     145
     146    size_t length = this->length();
     147    size_t i = 0;
     148    while (i < length) {
     149        if (i > 0)
     150            result.append(", ");
     151
     152        const CSSValue* imageValue = item(i);
     153        result.append(imageValue->cssText());
     154        result.append(' ');
     155
     156        ++i;
     157        ASSERT(i < length);
     158        const CSSValue* scaleFactorValue = item(i);
     159        result.append(scaleFactorValue->cssText());
     160        // FIXME: Eventually the scale factor should contain it's own unit http://wkb.ug/100120.
     161        // For now 'x' is hard-coded in the parser, so we hard-code it here too.
     162        result.append('x');
     163
     164        ++i;
     165    }
     166
     167    result.append(")");
     168    return result.toString();
    144169}
    145170
  • trunk/Source/WebCore/css/CSSValueList.h

    r130292 r132388  
    5151    size_t length() const { return m_values.size(); }
    5252    CSSValue* item(size_t index) { return index < m_values.size() ? m_values[index].get() : 0; }
     53    const CSSValue* item(size_t index) const { return index < m_values.size() ? m_values[index].get() : 0; }
    5354    CSSValue* itemWithoutBoundsCheck(size_t index) { return m_values[index].get(); }
    5455
Note: See TracChangeset for help on using the changeset viewer.