Allow specifying CSS property aliases in CSSPropertyNames.in files
authormitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 28 Apr 2011 18:08:39 +0000 (18:08 +0000)
committermitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 28 Apr 2011 18:08:39 +0000 (18:08 +0000)
https://bugs.webkit.org/show_bug.cgi?id=59712

Reviewed by Simon Fraser.

* css/CSSParser.cpp:
(WebCore::cssPropertyID): Removed code to handle some aliases
* css/CSSPropertyNames.in: Added aliases no longer handled in code.
* css/makeprop.pl: Interpret lines of the form "alias-property-name = property-name" as
defining an alias, and add an appropriate entry to the gperf file.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@85212 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/css/CSSParser.cpp
Source/WebCore/css/CSSPropertyNames.in
Source/WebCore/css/makeprop.pl

index f602988..13c56b7 100644 (file)
@@ -1,3 +1,16 @@
+2011-04-28  Dan Bernstein  <mitz@apple.com>
+
+        Reviewed by Simon Fraser.
+
+        Allow specifying CSS property aliases in CSSPropertyNames.in files
+        https://bugs.webkit.org/show_bug.cgi?id=59712
+
+        * css/CSSParser.cpp:
+        (WebCore::cssPropertyID): Removed code to handle some aliases
+        * css/CSSPropertyNames.in: Added aliases no longer handled in code.
+        * css/makeprop.pl: Interpret lines of the form "alias-property-name = property-name" as
+        defining an alias, and add an appropriate entry to the gperf file.
+
 2011-04-28  Arno Renevier  <arno@renevier.net>
 
         Reviewed by Gustavo Noronha Silva.
index 8f7b7dd..517626b 100644 (file)
@@ -6602,37 +6602,13 @@ static int cssPropertyID(const UChar* propertyName, unsigned length)
             ++length;
         }
 
-        if (hasPrefix(buffer, length, "-webkit")) {
-            if (!strcmp(buffer, "-webkit-box-sizing")) {
-                // -webkit-box-sizing worked in Safari 4 and earlier.
-                const char* const boxSizing = "box-sizing";
-                name = boxSizing;
-                length = strlen(boxSizing);
-            } else if (!strcmp(buffer, "-webkit-opacity")) {
-                // Honor -webkit-opacity as a synonym for opacity.
-                // This was the only syntax that worked in Safari 1.1, and may be in use on some websites and widgets.
-                const char* const opacity = "opacity";
-                name = opacity;
-                length = strlen(opacity);
 #if PLATFORM(IOS)
-            } else if (!strcmp(buffer, "-webkit-hyphenate-locale")) {
-                // Worked in iOS 4.2.
-                const char* const webkitLocale = "-webkit-locale";
-                name = webkitLocale;
-                length = strlen(webkitLocale);
+        if (!strcmp(buffer, "-webkit-hyphenate-locale")) {
+            // Worked in iOS 4.2.
+            const char* const webkitLocale = "-webkit-locale";
+            name = webkitLocale;
+            length = strlen(webkitLocale);
 #endif
-            } else if (hasPrefix(buffer + 7, length - 7, "-border-")) {
-                // -webkit-border-*-*-radius worked in Safari 4 and earlier. -webkit-border-radius syntax
-                // differs from border-radius, so it is remains as a distinct property.
-                if (!strcmp(buffer + 15, "top-left-radius")
-                        || !strcmp(buffer + 15, "top-right-radius")
-                        || !strcmp(buffer + 15, "bottom-right-radius")
-                        || !strcmp(buffer + 15, "bottom-left-radius")) {
-                    name = buffer + 8;
-                    length -= 8;
-                }
-            }
-        }
     }
 
     const Property* hashTableEntry = findProperty(name, length);
index a62d2f3..8da3cf8 100644 (file)
@@ -47,7 +47,9 @@ border
 border-bottom
 border-bottom-color
 border-bottom-left-radius
+-webkit-border-bottom-left-radius = border-bottom-left-radius
 border-bottom-right-radius
+-webkit-border-bottom-right-radius = border-bottom-right-radius
 border-bottom-style
 border-bottom-width
 border-collapse
@@ -66,13 +68,17 @@ border-style
 border-top
 border-top-color
 border-top-left-radius
+-webkit-border-top-left-radius = border-top-left-radius
 border-top-right-radius
+-webkit-border-top-right-radius = border-top-right-radius
 border-top-style
 border-top-width
 border-width
 bottom
 box-shadow
 box-sizing
+# -webkit-box-sizing worked in Safari 4 and earlier.
+-webkit-box-sizing = box-sizing
 caption-side
 clear
 clip
@@ -100,6 +106,9 @@ max-width
 min-height
 min-width
 opacity
+# Honor -webkit-opacity as a synonym for opacity. This was the only syntax that worked in Safari 1.1,
+# and may be in use on some websites and widgets.
+-webkit-opacity = opacity
 orphans
 outline
 outline-color
index d394739..6d4f2bf 100644 (file)
@@ -26,11 +26,16 @@ use warnings;
 
 open NAMES, "<CSSPropertyNames.in" || die "Could not find CSSPropertyNames.in";
 my @names = ();
+my @aliases = ();
 while (<NAMES>) {
   next if (m/(^#)|(^\s*$)/);
   # Input may use a different EOL sequence than $/, so avoid chomp.
   $_ =~ s/[\r\n]+$//g;
-  push @names, $_;
+  if ($_ =~ /=/) {
+    push @aliases, $_;
+  } else {
+    push @names, $_;
+  }
 }
 close(NAMES);
 
@@ -65,6 +70,14 @@ foreach my $name (@names) {
   print GPERF $name . ", CSSProperty" . $id . "\n";
 }
 
+foreach my $alias (@aliases) {
+  $alias =~ /^([^\s]*)[\s]*=[\s]*([^\s]*)/;
+  my $name = $1;
+  my $id = $2;
+  $id =~ s/(^[^-])|-(.)/uc($1||$2)/ge;
+  print GPERF $name . ", CSSProperty" . $id . "\n";
+}
+
 print GPERF<< "EOF";
 %%
 const Property* findProperty(register const char* str, register unsigned int len)