Changeset 64071 in webkit


Ignore:
Timestamp:
Jul 26, 2010 1:53:02 PM (14 years ago)
Author:
mrowe@apple.com
Message:

<http://webkit.org/b/42990> REGRESSION (r63854): Safari RSS layout is broken due to changes in vendor prefix handling

Reviewed by Dan Bernstein.

In r63854 support for properties with the -khtml vendor prefix was removed. This breaks the layout of
Safari's RSS interface, several Dashboard widgets that are included with Mac OS X, and at least one
popular third-party Mac OS X application. This change will need to be revisited in a manner that has
a clearer backwards-compatibility strategy. <http://webkit.org/b/42093> will be reopened to track that.

  • css/CSSParser.cpp:

(WebCore::cssPropertyID): Revert the WebCore change from r63854.

Location:
trunk/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r64070 r64071  
     12010-07-26  Mark Rowe  <mrowe@apple.com>
     2
     3        Reviewed by Dan Bernstein.
     4
     5        <http://webkit.org/b/42990> REGRESSION (r63854): Safari RSS layout is broken due to changes in vendor prefix handling
     6
     7        In r63854 support for properties with the -khtml vendor prefix was removed. This breaks the layout of
     8        Safari's RSS interface, several Dashboard widgets that are included with Mac OS X, and at least one
     9        popular third-party Mac OS X application. This change will need to be revisited in a manner that has
     10        a clearer backwards-compatibility strategy. <http://webkit.org/b/42093> will be reopened to track that.
     11
     12        * css/CSSParser.cpp:
     13        (WebCore::cssPropertyID): Revert the WebCore change from r63854.
     14
    1152010-07-26  Brady Eidson  <beidson@apple.com>
    216
  • trunk/WebCore/css/CSSParser.cpp

    r63854 r64071  
    56115611    const char* name = buffer;
    56125612    if (buffer[0] == '-') {
    5613         if (!strcmp(buffer, "-apple-dashboard-region") || !strcmp(buffer, "-apple-line-clamp")) {
    5614             // Support two Apple-specific CSS properties previously used for
    5615             // the Dashboard and Safari RSS line clamping.
     5613        // If the prefix is -apple- or -khtml-, change it to -webkit-.
     5614        // This makes the string one character longer.
     5615        if (hasPrefix(buffer, length, "-apple-") || hasPrefix(buffer, length, "-khtml-")) {
    56165616            memmove(buffer + 7, buffer + 6, length + 1 - 6);
    56175617            memcpy(buffer, "-webkit", 7);
    56185618            ++length;
    5619         } else if (!strcmp(buffer, "-webkit-opacity")) {
    5620             // Honor -webkit-opacity as a synonym for opacity. This was the only
    5621             // syntax that worked in Safari 1.1, and may be in use on some websites and widgets.
    5622             const char* const opacity = "opacity";
    5623             name = opacity;
    5624             length = 7;
    5625         } else if (hasPrefix(buffer, length, "-webkit-border-")) {
    5626             // -webkit-border-*-*-radius worked in Safari 4 and earlier. -webkit-border-radius syntax
    5627             // differs from border-radius, so it remains as a distinct property.
    5628             if (!strcmp(buffer + 15, "top-left-radius")
    5629                     || !strcmp(buffer + 15, "top-right-radius")
    5630                     || !strcmp(buffer + 15, "bottom-right-radius")
    5631                     || !strcmp(buffer + 15, "bottom-left-radius")) {
    5632                 name = buffer + 8;
    5633                 length -= 8;
     5619        }
     5620
     5621        if (hasPrefix(buffer, length, "-webkit")) {
     5622            if (strcmp(buffer, "-webkit-opacity") == 0) {
     5623                // Honor -webkit-opacity as a synonym for opacity.
     5624                // This was the only syntax that worked in Safari 1.1, and may be in use on some websites and widgets.
     5625                const char* const opacity = "opacity";
     5626                name = opacity;
     5627                length = strlen(opacity);
     5628            } else if (hasPrefix(buffer + 7, length - 7, "-border-")) {
     5629                // -webkit-border-*-*-radius worked in Safari 4 and earlier. -webkit-border-radius syntax
     5630                // differs from border-radius, so it is remains as a distinct property.
     5631                if (!strcmp(buffer + 15, "top-left-radius")
     5632                        || !strcmp(buffer + 15, "top-right-radius")
     5633                        || !strcmp(buffer + 15, "bottom-right-radius")
     5634                        || !strcmp(buffer + 15, "bottom-left-radius")) {
     5635                    name = buffer + 8;
     5636                    length -= 8;
     5637                }
    56345638            }
    56355639        }
Note: See TracChangeset for help on using the changeset viewer.