Diff
Modified: trunk/LayoutTests/ChangeLog (120193 => 120194)
--- trunk/LayoutTests/ChangeLog 2012-06-13 12:52:53 UTC (rev 120193)
+++ trunk/LayoutTests/ChangeLog 2012-06-13 13:04:21 UTC (rev 120194)
@@ -1,3 +1,13 @@
+2012-06-13 David Barr <[email protected]>
+
+ Add dpi to css3-images image-resolution
+ https://bugs.webkit.org/show_bug.cgi?id=85439
+
+ Reviewed by Tony Chang.
+
+ * fast/css/image-resolution/image-resolution-expected.txt:
+ * fast/css/image-resolution/image-resolution.html:
+
2012-06-13 Qi Zhang <[email protected]>
[Qt] Add configure test for zlib and set WTF_USE_ZLIB if found
Modified: trunk/LayoutTests/fast/css/image-resolution/image-resolution-expected.txt (120193 => 120194)
--- trunk/LayoutTests/fast/css/image-resolution/image-resolution-expected.txt 2012-06-13 12:52:53 UTC (rev 120193)
+++ trunk/LayoutTests/fast/css/image-resolution/image-resolution-expected.txt 2012-06-13 13:04:21 UTC (rev 120194)
@@ -21,6 +21,40 @@
PASS img.style.cssText is "image-resolution: 4dppx; "
PASS img.offsetWidth is 4
PASS img.offsetHeight is 4
+TEST "0dpi"
+PASS img.style.cssText is ""
+TEST "96dpi"
+PASS img.style.cssText is "image-resolution: 96dpi; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "192dpi"
+PASS img.style.cssText is "image-resolution: 192dpi; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "288dpi"
+PASS img.style.cssText is "image-resolution: 288dpi; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "384dpi"
+PASS img.style.cssText is "image-resolution: 384dpi; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "150dpi"
+PASS img.style.cssText is "image-resolution: 150dpi; "
+PASS img.offsetWidth is 10
+PASS img.offsetHeight is 10
+TEST "300dpi"
+PASS img.style.cssText is "image-resolution: 300dpi; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "450dpi"
+PASS img.style.cssText is "image-resolution: 450dpi; "
+PASS img.offsetWidth is 3
+PASS img.offsetHeight is 3
+TEST "600dpi"
+PASS img.style.cssText is "image-resolution: 600dpi; "
+PASS img.offsetWidth is 2
+PASS img.offsetHeight is 2
TEST ""
PASS img.style.cssText is ""
PASS successfullyParsed is true
Modified: trunk/LayoutTests/fast/css/image-resolution/image-resolution.html (120193 => 120194)
--- trunk/LayoutTests/fast/css/image-resolution/image-resolution.html 2012-06-13 12:52:53 UTC (rev 120193)
+++ trunk/LayoutTests/fast/css/image-resolution/image-resolution.html 2012-06-13 13:04:21 UTC (rev 120194)
@@ -59,7 +59,9 @@
var img = document.createElement('img');
img.src = ""
-var resolutions = ['0dppx', '1dppx', '2dppx', '3dppx', '4dppx', ''];
+var resolutions = ['0dppx', '1dppx', '2dppx', '3dppx', '4dppx',
+ '0dpi', '96dpi', '192dpi', '288dpi', '384dpi',
+ '150dpi', '300dpi', '450dpi', '600dpi', ''];
img._onload_ = function() {
resolutions.forEach(function(test) {
Modified: trunk/Source/WebCore/ChangeLog (120193 => 120194)
--- trunk/Source/WebCore/ChangeLog 2012-06-13 12:52:53 UTC (rev 120193)
+++ trunk/Source/WebCore/ChangeLog 2012-06-13 13:04:21 UTC (rev 120194)
@@ -1,3 +1,27 @@
+2012-06-13 David Barr <[email protected]>
+
+ Add dpi to css3-images image-resolution
+ https://bugs.webkit.org/show_bug.cgi?id=85439
+
+ Reviewed by Tony Chang.
+
+ No new tests; extended fast/css/image-resolution/image-resolution.html
+
+ * css/CSSGrammar.y:
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::validUnit):
+ (WebCore::CSSParser::createPrimitiveNumericValue):
+ (WebCore::unitFromString):
+ (WebCore::CSSParser::parseValidPrimitive):
+ (WebCore::CSSParser::detectNumberToken):
+ * css/CSSPrimitiveValue.cpp:
+ (WebCore::isValidCSSUnitTypeForDoubleConversion):
+ (WebCore::unitCategory):
+ (WebCore::conversionToCanonicalUnitsScaleFactor):
+ (WebCore::CSSPrimitiveValue::customCssText):
+ (WebCore::CSSPrimitiveValue::cloneForCSSOM):
+ * css/CSSPrimitiveValue.h:
+
2012-06-13 Li Yin <[email protected]>
FileAPI: type should be converted to be lower case in Blob constructor.
Modified: trunk/Source/WebCore/css/CSSGrammar.y (120193 => 120194)
--- trunk/Source/WebCore/css/CSSGrammar.y 2012-06-13 12:52:53 UTC (rev 120193)
+++ trunk/Source/WebCore/css/CSSGrammar.y 2012-06-13 13:04:21 UTC (rev 120194)
@@ -101,7 +101,7 @@
%}
-%expect 61
+%expect 62
%nonassoc LOWEST_PREC
@@ -195,6 +195,7 @@
%token <number> VH
%token <number> VMIN
%token <number> DPPX
+%token <number> DPI
%token <string> URI
%token <string> FUNCTION
@@ -1497,6 +1498,7 @@
| VH maybe_space { $$.id = 0; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_VH; }
| 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; }
;
function:
Modified: trunk/Source/WebCore/css/CSSParser.cpp (120193 => 120194)
--- trunk/Source/WebCore/css/CSSParser.cpp 2012-06-13 12:52:53 UTC (rev 120193)
+++ trunk/Source/WebCore/css/CSSParser.cpp 2012-06-13 13:04:21 UTC (rev 120194)
@@ -1369,6 +1369,7 @@
break;
#if ENABLE(CSS_IMAGE_RESOLUTION)
case CSSPrimitiveValue::CSS_DPPX:
+ case CSSPrimitiveValue::CSS_DPI:
b = (unitflags & FResolution);
break;
#endif
@@ -1399,7 +1400,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_DPPX && value->unit <= CSSPrimitiveValue::CSS_DPI));
#else
ASSERT((value->unit >= CSSPrimitiveValue::CSS_NUMBER && value->unit <= CSSPrimitiveValue::CSS_KHZ)
|| (value->unit >= CSSPrimitiveValue::CSS_TURN && value->unit <= CSSPrimitiveValue::CSS_REMS)
@@ -1462,6 +1463,8 @@
#if ENABLE(CSS_IMAGE_RESOLUTION)
if (equal(value->string, "dppx"))
return CSSPrimitiveValue::CSS_DPPX;
+ if (equal(value->string, "dpi"))
+ return CSSPrimitiveValue::CSS_DPI;
#endif
return 0;
@@ -1517,7 +1520,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)
+ if (value->unit >= CSSPrimitiveValue::CSS_DPPX && value->unit <= CSSPrimitiveValue::CSS_DPI)
return createPrimitiveNumericValue(value);
#endif
if (value->unit >= CSSParserValue::Q_EMS)
@@ -8373,12 +8376,15 @@
if (length == 3 && isASCIIAlphaCaselessEqual(type[1], 'e') && isASCIIAlphaCaselessEqual(type[2], 'g'))
m_token = DEGS;
#if ENABLE(CSS_IMAGE_RESOLUTION)
- // 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
- else if (length == 4 && isASCIIAlphaCaselessEqual(type[1], 'p')
- && isASCIIAlphaCaselessEqual(type[2], 'p') && isASCIIAlphaCaselessEqual(type[3], 'x'))
- m_token = DPPX;
+ 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;
+ }
#endif
return;
Modified: trunk/Source/WebCore/css/CSSPrimitiveValue.cpp (120193 => 120194)
--- trunk/Source/WebCore/css/CSSPrimitiveValue.cpp 2012-06-13 12:52:53 UTC (rev 120193)
+++ trunk/Source/WebCore/css/CSSPrimitiveValue.cpp 2012-06-13 13:04:21 UTC (rev 120194)
@@ -62,6 +62,7 @@
case CSSPrimitiveValue:: CSS_DIMENSION:
#if ENABLE(CSS_IMAGE_RESOLUTION)
case CSSPrimitiveValue:: CSS_DPPX:
+ case CSSPrimitiveValue:: CSS_DPI:
#endif
case CSSPrimitiveValue:: CSS_EMS:
case CSSPrimitiveValue:: CSS_EXS:
@@ -90,6 +91,7 @@
case CSSPrimitiveValue:: CSS_DASHBOARD_REGION:
#if !ENABLE(CSS_IMAGE_RESOLUTION)
case CSSPrimitiveValue:: CSS_DPPX:
+ case CSSPrimitiveValue:: CSS_DPI:
#endif
case CSSPrimitiveValue:: CSS_IDENT:
case CSSPrimitiveValue:: CSS_PAIR:
@@ -148,6 +150,7 @@
return CSSPrimitiveValue::UViewportPercentageLength;
#if ENABLE(CSS_IMAGE_RESOLUTION)
case CSSPrimitiveValue:: CSS_DPPX:
+ case CSSPrimitiveValue:: CSS_DPI:
return CSSPrimitiveValue::UResolution;
#endif
default:
@@ -570,6 +573,9 @@
case CSSPrimitiveValue::CSS_IN:
factor = cssPixelsPerInch;
break;
+ case CSSPrimitiveValue::CSS_DPI:
+ factor = 1 / cssPixelsPerInch;
+ break;
case CSSPrimitiveValue::CSS_PT:
factor = cssPixelsPerInch / 72.0;
break;
@@ -855,6 +861,9 @@
case CSS_DPPX:
text = formatNumber(m_value.num) + "dppx";
break;
+ case CSS_DPI:
+ text = formatNumber(m_value.num) + "dpi";
+ break;
#endif
case CSS_MM:
text = formatNumber(m_value.num) + "mm";
@@ -1197,6 +1206,7 @@
case CSS_VMIN:
#if ENABLE(CSS_IMAGE_RESOLUTION)
case CSS_DPPX:
+ case CSS_DPI:
#endif
result = CSSPrimitiveValue::create(m_value.num, static_cast<UnitTypes>(m_primitiveUnitType));
break;
Modified: trunk/Source/WebCore/css/CSSPrimitiveValue.h (120193 => 120194)
--- trunk/Source/WebCore/css/CSSPrimitiveValue.h 2012-06-13 12:52:53 UTC (rev 120193)
+++ trunk/Source/WebCore/css/CSSPrimitiveValue.h 2012-06-13 13:04:21 UTC (rev 120194)
@@ -96,6 +96,7 @@
CSS_VH = 27,
CSS_VMIN = 28,
CSS_DPPX = 29,
+ CSS_DPI = 30,
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,