Title: [120308] trunk
Revision
120308
Author
[email protected]
Date
2012-06-14 03:20:51 -0700 (Thu, 14 Jun 2012)

Log Message

Add dpcm to css3-images image-resolution
https://bugs.webkit.org/show_bug.cgi?id=85442

Patch by David Barr <[email protected]> on 2012-06-14
Reviewed by Tony Chang.

Source/WebCore:

The css3-images module is at candidate recommendation.
http://www.w3.org/TR/2012/CR-css3-images-20120417/#the-image-resolution

No new tests; extended fast/css/image-resolution/image-resolution.html

* css/CSSGrammar.y: Add DPCM token and unary term.
* css/CSSParser.cpp: Extend range of units accepted for resolution and tokenize "dpcm".
(WebCore::CSSParser::validUnit): Accept CSSPrimitiveValue::CSS_DPCM.
(WebCore::CSSParser::createPrimitiveNumericValue): Accept CSSPrimitiveValue::CSS_DPCM.
(WebCore::unitFromString): Map "dpcm" to CSSPrimitiveValue::CSS_DPCM.
(WebCore::CSSParser::parseValidPrimitive): Accept CSSPrimitiveValue::CSS_DPCM.
(WebCore::CSSParser::detectNumberToken): Map "dpcm" to CSSPrimitiveValue::CSS_DPCM.
* css/CSSPrimitiveValue.cpp: Add CSSPrimitiveValue::CSS_DPCM as a numeric unit.
(WebCore::isValidCSSUnitTypeForDoubleConversion): Accept CSSPrimitiveValue::CSS_DPCM.
(WebCore::unitCategory): Map CSSPrimitiveValue::CSS_DPCM to CSSPrimitiveValue::UResolution.
(WebCore::conversionToCanonicalUnitsScaleFactor): Scale CSSPrimitiveValue::CSS_DPCM to CSSPrimitiveValue::CSS_DPPX.
(WebCore::CSSPrimitiveValue::customCssText): Format CSSPrimitiveValue::CSS_DPCM as "<num>dpcm".
(WebCore::CSSPrimitiveValue::cloneForCSSOM): Accept CSSPrimitiveValue::CSS_DPCM as numeric unit.
* css/CSSPrimitiveValue.h: Add CSSPrimitiveValue::CSS_DPCM.

LayoutTests:

* fast/css/image-resolution/image-resolution-expected.txt:
* fast/css/image-resolution/image-resolution.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (120307 => 120308)


--- trunk/LayoutTests/ChangeLog	2012-06-14 10:16:42 UTC (rev 120307)
+++ trunk/LayoutTests/ChangeLog	2012-06-14 10:20:51 UTC (rev 120308)
@@ -1,3 +1,13 @@
+2012-06-14  David Barr  <[email protected]>
+
+        Add dpcm to css3-images image-resolution
+        https://bugs.webkit.org/show_bug.cgi?id=85442
+
+        Reviewed by Tony Chang.
+
+        * fast/css/image-resolution/image-resolution-expected.txt:
+        * fast/css/image-resolution/image-resolution.html:
+
 2012-06-14  Matt Falkenhagen  <[email protected]>
 
         LocaleToScriptMappingDefault.cpp should also do what scriptCodeForFontSelection does in LocaleToScriptMappingICU.cpp

Modified: trunk/LayoutTests/fast/css/image-resolution/image-resolution-expected.txt (120307 => 120308)


--- trunk/LayoutTests/fast/css/image-resolution/image-resolution-expected.txt	2012-06-14 10:16:42 UTC (rev 120307)
+++ trunk/LayoutTests/fast/css/image-resolution/image-resolution-expected.txt	2012-06-14 10:20:51 UTC (rev 120308)
@@ -55,6 +55,24 @@
 PASS img.style.cssText is "image-resolution: 600dpi; "
 PASS img.offsetWidth is 2
 PASS img.offsetHeight is 2
+TEST "0dpcm"
+PASS img.style.cssText is ""
+TEST "37.7dpcm"
+PASS img.style.cssText is "image-resolution: 37.7dpcm; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "75.5dpcm"
+PASS img.style.cssText is "image-resolution: 75.5dpcm; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "113.3dpcm"
+PASS img.style.cssText is "image-resolution: 113.3dpcm; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "151.1dpcm"
+PASS img.style.cssText is "image-resolution: 151.1dpcm; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
 TEST ""
 PASS img.style.cssText is ""
 PASS successfullyParsed is true

Modified: trunk/LayoutTests/fast/css/image-resolution/image-resolution.html (120307 => 120308)


--- trunk/LayoutTests/fast/css/image-resolution/image-resolution.html	2012-06-14 10:16:42 UTC (rev 120307)
+++ trunk/LayoutTests/fast/css/image-resolution/image-resolution.html	2012-06-14 10:20:51 UTC (rev 120308)
@@ -61,7 +61,8 @@
 
 var resolutions = ['0dppx', '1dppx', '2dppx', '3dppx', '4dppx',
                    '0dpi', '96dpi', '192dpi', '288dpi', '384dpi',
-                   '150dpi', '300dpi', '450dpi', '600dpi', ''];
+                   '150dpi', '300dpi', '450dpi', '600dpi',
+                   '0dpcm', '37.7dpcm', '75.5dpcm', '113.3dpcm', '151.1dpcm', ''];
 
 img._onload_ = function() {
     resolutions.forEach(function(test) {

Modified: trunk/Source/WebCore/ChangeLog (120307 => 120308)


--- trunk/Source/WebCore/ChangeLog	2012-06-14 10:16:42 UTC (rev 120307)
+++ trunk/Source/WebCore/ChangeLog	2012-06-14 10:20:51 UTC (rev 120308)
@@ -1,3 +1,30 @@
+2012-06-14  David Barr  <[email protected]>
+
+        Add dpcm to css3-images image-resolution
+        https://bugs.webkit.org/show_bug.cgi?id=85442
+
+        Reviewed by Tony Chang.
+
+        The css3-images module is at candidate recommendation.
+        http://www.w3.org/TR/2012/CR-css3-images-20120417/#the-image-resolution
+
+        No new tests; extended fast/css/image-resolution/image-resolution.html
+
+        * css/CSSGrammar.y: Add DPCM token and unary term.
+        * css/CSSParser.cpp: Extend range of units accepted for resolution and tokenize "dpcm".
+        (WebCore::CSSParser::validUnit): Accept CSSPrimitiveValue::CSS_DPCM.
+        (WebCore::CSSParser::createPrimitiveNumericValue): Accept CSSPrimitiveValue::CSS_DPCM.
+        (WebCore::unitFromString): Map "dpcm" to CSSPrimitiveValue::CSS_DPCM.
+        (WebCore::CSSParser::parseValidPrimitive): Accept CSSPrimitiveValue::CSS_DPCM.
+        (WebCore::CSSParser::detectNumberToken): Map "dpcm" to CSSPrimitiveValue::CSS_DPCM.
+        * css/CSSPrimitiveValue.cpp: Add CSSPrimitiveValue::CSS_DPCM as a numeric unit.
+        (WebCore::isValidCSSUnitTypeForDoubleConversion): Accept CSSPrimitiveValue::CSS_DPCM.
+        (WebCore::unitCategory): Map CSSPrimitiveValue::CSS_DPCM to CSSPrimitiveValue::UResolution.
+        (WebCore::conversionToCanonicalUnitsScaleFactor): Scale CSSPrimitiveValue::CSS_DPCM to CSSPrimitiveValue::CSS_DPPX.
+        (WebCore::CSSPrimitiveValue::customCssText): Format CSSPrimitiveValue::CSS_DPCM as "<num>dpcm".
+        (WebCore::CSSPrimitiveValue::cloneForCSSOM): Accept CSSPrimitiveValue::CSS_DPCM as numeric unit.
+        * css/CSSPrimitiveValue.h: Add CSSPrimitiveValue::CSS_DPCM.
+
 2012-06-14  Ilya Tikhonovsky  <[email protected]>
 
         Web Inspector: REGRESSION HeapProfiler can't remove heap snapshot from the list if Dominators view has been opened.

Modified: trunk/Source/WebCore/css/CSSGrammar.y (120307 => 120308)


--- trunk/Source/WebCore/css/CSSGrammar.y	2012-06-14 10:16:42 UTC (rev 120307)
+++ trunk/Source/WebCore/css/CSSGrammar.y	2012-06-14 10:20:51 UTC (rev 120308)
@@ -101,7 +101,7 @@
 
 %}
 
-%expect 62
+%expect 63
 
 %nonassoc LOWEST_PREC
 
@@ -196,6 +196,7 @@
 %token <number> VMIN
 %token <number> DPPX
 %token <number> DPI
+%token <number> DPCM
 
 %token <string> URI
 %token <string> FUNCTION
@@ -1499,6 +1500,7 @@
   | VMIN maybe_space { $$.id = 0; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_VMIN; }
   | DPPX maybe_space { $$.id = 0; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_DPPX; }
   | DPI maybe_space { $$.id = 0; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_DPI; }
+  | DPCM maybe_space { $$.id = 0; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_DPCM; }
   ;
 
 function:

Modified: trunk/Source/WebCore/css/CSSParser.cpp (120307 => 120308)


--- trunk/Source/WebCore/css/CSSParser.cpp	2012-06-14 10:16:42 UTC (rev 120307)
+++ trunk/Source/WebCore/css/CSSParser.cpp	2012-06-14 10:20:51 UTC (rev 120308)
@@ -1370,6 +1370,7 @@
 #if ENABLE(CSS_IMAGE_RESOLUTION)
     case CSSPrimitiveValue::CSS_DPPX:
     case CSSPrimitiveValue::CSS_DPI:
+    case CSSPrimitiveValue::CSS_DPCM:
         b = (unitflags & FResolution);
         break;
 #endif
@@ -1400,7 +1401,7 @@
     ASSERT((value->unit >= CSSPrimitiveValue::CSS_NUMBER && value->unit <= CSSPrimitiveValue::CSS_KHZ)
            || (value->unit >= CSSPrimitiveValue::CSS_TURN && value->unit <= CSSPrimitiveValue::CSS_REMS)
            || (value->unit >= CSSPrimitiveValue::CSS_VW && value->unit <= CSSPrimitiveValue::CSS_VMIN)
-           || (value->unit >= CSSPrimitiveValue::CSS_DPPX && value->unit <= CSSPrimitiveValue::CSS_DPI));
+           || (value->unit >= CSSPrimitiveValue::CSS_DPPX && value->unit <= CSSPrimitiveValue::CSS_DPCM));
 #else
     ASSERT((value->unit >= CSSPrimitiveValue::CSS_NUMBER && value->unit <= CSSPrimitiveValue::CSS_KHZ)
            || (value->unit >= CSSPrimitiveValue::CSS_TURN && value->unit <= CSSPrimitiveValue::CSS_REMS)
@@ -1465,6 +1466,8 @@
         return CSSPrimitiveValue::CSS_DPPX;
     if (equal(value->string, "dpi"))
         return CSSPrimitiveValue::CSS_DPI;
+    if (equal(value->string, "dpcm"))
+        return CSSPrimitiveValue::CSS_DPCM;
 #endif
 
     return 0;
@@ -1520,7 +1523,7 @@
     if (value->unit >= CSSPrimitiveValue::CSS_VW && value->unit <= CSSPrimitiveValue::CSS_VMIN)
         return createPrimitiveNumericValue(value);
 #if ENABLE(CSS_IMAGE_RESOLUTION)
-    if (value->unit >= CSSPrimitiveValue::CSS_DPPX && value->unit <= CSSPrimitiveValue::CSS_DPI)
+    if (value->unit >= CSSPrimitiveValue::CSS_DPPX && value->unit <= CSSPrimitiveValue::CSS_DPCM)
         return createPrimitiveNumericValue(value);
 #endif
     if (value->unit >= CSSParserValue::Q_EMS)
@@ -8377,13 +8380,16 @@
             m_token = DEGS;
 #if ENABLE(CSS_IMAGE_RESOLUTION)
         else if (length > 2 && isASCIIAlphaCaselessEqual(type[1], 'p')) {
-            // There is a discussion about the name of this unit on www-style.
-            // Keep this compile time guard in place until that is resolved.
-            // http://lists.w3.org/Archives/Public/www-style/2012May/0915.html
-            if (length == 4 && isASCIIAlphaCaselessEqual(type[2], 'p') && isASCIIAlphaCaselessEqual(type[3], 'x'))
-                m_token = DPPX;
-            else if (length == 3 && isASCIIAlphaCaselessEqual(type[2], 'i'))
-                m_token = DPI;
+            if (length == 4) {
+                // There is a discussion about the name of this unit on www-style.
+                // Keep this compile time guard in place until that is resolved.
+                // http://lists.w3.org/Archives/Public/www-style/2012May/0915.html
+                if (isASCIIAlphaCaselessEqual(type[2], 'p') && isASCIIAlphaCaselessEqual(type[3], 'x'))
+                    m_token = DPPX;
+                else if (isASCIIAlphaCaselessEqual(type[2], 'c') && isASCIIAlphaCaselessEqual(type[3], 'm'))
+                    m_token = DPCM;
+            } else if (length == 3 && isASCIIAlphaCaselessEqual(type[2], 'i'))
+                    m_token = DPI;
         }
 #endif
         return;

Modified: trunk/Source/WebCore/css/CSSPrimitiveValue.cpp (120307 => 120308)


--- trunk/Source/WebCore/css/CSSPrimitiveValue.cpp	2012-06-14 10:16:42 UTC (rev 120307)
+++ trunk/Source/WebCore/css/CSSPrimitiveValue.cpp	2012-06-14 10:20:51 UTC (rev 120308)
@@ -63,6 +63,7 @@
 #if ENABLE(CSS_IMAGE_RESOLUTION)
     case CSSPrimitiveValue:: CSS_DPPX:
     case CSSPrimitiveValue:: CSS_DPI:
+    case CSSPrimitiveValue:: CSS_DPCM:
 #endif
     case CSSPrimitiveValue:: CSS_EMS:
     case CSSPrimitiveValue:: CSS_EXS:
@@ -92,6 +93,7 @@
 #if !ENABLE(CSS_IMAGE_RESOLUTION)
     case CSSPrimitiveValue:: CSS_DPPX:
     case CSSPrimitiveValue:: CSS_DPI:
+    case CSSPrimitiveValue:: CSS_DPCM:
 #endif
     case CSSPrimitiveValue:: CSS_IDENT:
     case CSSPrimitiveValue:: CSS_PAIR:
@@ -151,6 +153,7 @@
 #if ENABLE(CSS_IMAGE_RESOLUTION)
     case CSSPrimitiveValue:: CSS_DPPX:
     case CSSPrimitiveValue:: CSS_DPI:
+    case CSSPrimitiveValue:: CSS_DPCM:
         return CSSPrimitiveValue::UResolution;
 #endif
     default:
@@ -567,6 +570,9 @@
         case CSSPrimitiveValue::CSS_CM:
             factor = cssPixelsPerInch / 2.54; // (2.54 cm/in)
             break;
+        case CSSPrimitiveValue::CSS_DPCM:
+            factor = 2.54 / cssPixelsPerInch; // (2.54 cm/in)
+            break;
         case CSSPrimitiveValue::CSS_MM:
             factor = cssPixelsPerInch / 25.4;
             break;
@@ -864,6 +870,9 @@
         case CSS_DPI:
             text = formatNumber(m_value.num) + "dpi";
             break;
+        case CSS_DPCM:
+            text = formatNumber(m_value.num) + "dpcm";
+            break;
 #endif
         case CSS_MM:
             text = formatNumber(m_value.num) + "mm";
@@ -1207,6 +1216,7 @@
 #if ENABLE(CSS_IMAGE_RESOLUTION)
     case CSS_DPPX:
     case CSS_DPI:
+    case CSS_DPCM:
 #endif
         result = CSSPrimitiveValue::create(m_value.num, static_cast<UnitTypes>(m_primitiveUnitType));
         break;

Modified: trunk/Source/WebCore/css/CSSPrimitiveValue.h (120307 => 120308)


--- trunk/Source/WebCore/css/CSSPrimitiveValue.h	2012-06-14 10:16:42 UTC (rev 120307)
+++ trunk/Source/WebCore/css/CSSPrimitiveValue.h	2012-06-14 10:20:51 UTC (rev 120308)
@@ -97,6 +97,7 @@
         CSS_VMIN = 28,
         CSS_DPPX = 29,
         CSS_DPI = 30,
+        CSS_DPCM = 31,
         CSS_PAIR = 100, // We envision this being exposed as a means of getting computed style values for pairs (border-spacing/radius, background-position, etc.)
         CSS_DASHBOARD_REGION = 101, // FIXME: Dashboard region should not be a primitive value.
         CSS_UNICODE_RANGE = 102,
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to