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,