Diff
Modified: trunk/LayoutTests/ChangeLog (121126 => 121127)
--- trunk/LayoutTests/ChangeLog 2012-06-25 00:41:05 UTC (rev 121126)
+++ trunk/LayoutTests/ChangeLog 2012-06-25 01:46:14 UTC (rev 121127)
@@ -1,3 +1,13 @@
+2012-06-24 David Barr <[email protected]>
+
+ Add snap to css3-images image-resolution
+ https://bugs.webkit.org/show_bug.cgi?id=89745
+
+ Reviewed by Tony Chang.
+
+ * fast/css/image-resolution/image-resolution-expected.txt:
+ * fast/css/image-resolution/image-resolution.html:
+
2012-06-24 Oli Lan <[email protected]>
After Editor::setComposition is called, input should scroll to the end of the composition.
Modified: trunk/LayoutTests/fast/css/image-resolution/image-resolution-expected.txt (121126 => 121127)
--- trunk/LayoutTests/fast/css/image-resolution/image-resolution-expected.txt 2012-06-25 00:41:05 UTC (rev 121126)
+++ trunk/LayoutTests/fast/css/image-resolution/image-resolution-expected.txt 2012-06-25 01:46:14 UTC (rev 121127)
@@ -219,6 +219,576 @@
PASS img.style.cssText is "image-resolution: from-image; "
PASS img.offsetWidth is 16
PASS img.offsetHeight is 16
+TEST "0dppx snap"
+PASS img.style.cssText is ""
+TEST "snap 0dppx"
+PASS img.style.cssText is ""
+TEST "1dppx snap"
+PASS img.style.cssText is "image-resolution: 1dppx snap; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "snap 1dppx"
+PASS img.style.cssText is "image-resolution: snap 1dppx; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "2dppx snap"
+PASS img.style.cssText is "image-resolution: 2dppx snap; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "snap 2dppx"
+PASS img.style.cssText is "image-resolution: snap 2dppx; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "3dppx snap"
+PASS img.style.cssText is "image-resolution: 3dppx snap; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "snap 3dppx"
+PASS img.style.cssText is "image-resolution: snap 3dppx; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "4dppx snap"
+PASS img.style.cssText is "image-resolution: 4dppx snap; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "snap 4dppx"
+PASS img.style.cssText is "image-resolution: snap 4dppx; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "0dpi snap"
+PASS img.style.cssText is ""
+TEST "snap 0dpi"
+PASS img.style.cssText is ""
+TEST "96dpi snap"
+PASS img.style.cssText is "image-resolution: 96dpi snap; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "snap 96dpi"
+PASS img.style.cssText is "image-resolution: snap 96dpi; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "192dpi snap"
+PASS img.style.cssText is "image-resolution: 192dpi snap; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "snap 192dpi"
+PASS img.style.cssText is "image-resolution: snap 192dpi; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "288dpi snap"
+PASS img.style.cssText is "image-resolution: 288dpi snap; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "snap 288dpi"
+PASS img.style.cssText is "image-resolution: snap 288dpi; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "384dpi snap"
+PASS img.style.cssText is "image-resolution: 384dpi snap; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "snap 384dpi"
+PASS img.style.cssText is "image-resolution: snap 384dpi; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "150dpi snap"
+PASS img.style.cssText is "image-resolution: 150dpi snap; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "snap 150dpi"
+PASS img.style.cssText is "image-resolution: snap 150dpi; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "300dpi snap"
+PASS img.style.cssText is "image-resolution: 300dpi snap; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "snap 300dpi"
+PASS img.style.cssText is "image-resolution: snap 300dpi; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "450dpi snap"
+PASS img.style.cssText is "image-resolution: 450dpi snap; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "snap 450dpi"
+PASS img.style.cssText is "image-resolution: snap 450dpi; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "600dpi snap"
+PASS img.style.cssText is "image-resolution: 600dpi snap; "
+PASS img.offsetWidth is 2
+PASS img.offsetHeight is 2
+TEST "snap 600dpi"
+PASS img.style.cssText is "image-resolution: snap 600dpi; "
+PASS img.offsetWidth is 2
+PASS img.offsetHeight is 2
+TEST "0dpcm snap"
+PASS img.style.cssText is ""
+TEST "snap 0dpcm"
+PASS img.style.cssText is ""
+TEST "37.7dpcm snap"
+PASS img.style.cssText is "image-resolution: 37.7dpcm snap; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "snap 37.7dpcm"
+PASS img.style.cssText is "image-resolution: snap 37.7dpcm; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "75.5dpcm snap"
+PASS img.style.cssText is "image-resolution: 75.5dpcm snap; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "snap 75.5dpcm"
+PASS img.style.cssText is "image-resolution: snap 75.5dpcm; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "113.3dpcm snap"
+PASS img.style.cssText is "image-resolution: 113.3dpcm snap; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "snap 113.3dpcm"
+PASS img.style.cssText is "image-resolution: snap 113.3dpcm; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "151.1dpcm snap"
+PASS img.style.cssText is "image-resolution: 151.1dpcm snap; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "snap 151.1dpcm"
+PASS img.style.cssText is "image-resolution: snap 151.1dpcm; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "snap"
+PASS img.style.cssText is ""
+TEST "0dppx from-image snap"
+PASS img.style.cssText is ""
+TEST "0dppx snap from-image"
+PASS img.style.cssText is ""
+TEST "from-image 0dppx snap"
+PASS img.style.cssText is ""
+TEST "from-image snap 0dppx"
+PASS img.style.cssText is ""
+TEST "snap 0dppx from-image"
+PASS img.style.cssText is ""
+TEST "snap from-image 0dppx"
+PASS img.style.cssText is ""
+TEST "1dppx from-image snap"
+PASS img.style.cssText is "image-resolution: 1dppx from-image snap; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "1dppx snap from-image"
+PASS img.style.cssText is "image-resolution: 1dppx snap from-image; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "from-image 1dppx snap"
+PASS img.style.cssText is "image-resolution: from-image 1dppx snap; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "from-image snap 1dppx"
+PASS img.style.cssText is "image-resolution: from-image snap 1dppx; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "snap 1dppx from-image"
+PASS img.style.cssText is "image-resolution: snap 1dppx from-image; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "snap from-image 1dppx"
+PASS img.style.cssText is "image-resolution: snap from-image 1dppx; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "2dppx from-image snap"
+PASS img.style.cssText is "image-resolution: 2dppx from-image snap; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "2dppx snap from-image"
+PASS img.style.cssText is "image-resolution: 2dppx snap from-image; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "from-image 2dppx snap"
+PASS img.style.cssText is "image-resolution: from-image 2dppx snap; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "from-image snap 2dppx"
+PASS img.style.cssText is "image-resolution: from-image snap 2dppx; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "snap 2dppx from-image"
+PASS img.style.cssText is "image-resolution: snap 2dppx from-image; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "snap from-image 2dppx"
+PASS img.style.cssText is "image-resolution: snap from-image 2dppx; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "3dppx from-image snap"
+PASS img.style.cssText is "image-resolution: 3dppx from-image snap; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "3dppx snap from-image"
+PASS img.style.cssText is "image-resolution: 3dppx snap from-image; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "from-image 3dppx snap"
+PASS img.style.cssText is "image-resolution: from-image 3dppx snap; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "from-image snap 3dppx"
+PASS img.style.cssText is "image-resolution: from-image snap 3dppx; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "snap 3dppx from-image"
+PASS img.style.cssText is "image-resolution: snap 3dppx from-image; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "snap from-image 3dppx"
+PASS img.style.cssText is "image-resolution: snap from-image 3dppx; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "4dppx from-image snap"
+PASS img.style.cssText is "image-resolution: 4dppx from-image snap; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "4dppx snap from-image"
+PASS img.style.cssText is "image-resolution: 4dppx snap from-image; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "from-image 4dppx snap"
+PASS img.style.cssText is "image-resolution: from-image 4dppx snap; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "from-image snap 4dppx"
+PASS img.style.cssText is "image-resolution: from-image snap 4dppx; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "snap 4dppx from-image"
+PASS img.style.cssText is "image-resolution: snap 4dppx from-image; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "snap from-image 4dppx"
+PASS img.style.cssText is "image-resolution: snap from-image 4dppx; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "0dpi from-image snap"
+PASS img.style.cssText is ""
+TEST "0dpi snap from-image"
+PASS img.style.cssText is ""
+TEST "from-image 0dpi snap"
+PASS img.style.cssText is ""
+TEST "from-image snap 0dpi"
+PASS img.style.cssText is ""
+TEST "snap 0dpi from-image"
+PASS img.style.cssText is ""
+TEST "snap from-image 0dpi"
+PASS img.style.cssText is ""
+TEST "96dpi from-image snap"
+PASS img.style.cssText is "image-resolution: 96dpi from-image snap; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "96dpi snap from-image"
+PASS img.style.cssText is "image-resolution: 96dpi snap from-image; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "from-image 96dpi snap"
+PASS img.style.cssText is "image-resolution: from-image 96dpi snap; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "from-image snap 96dpi"
+PASS img.style.cssText is "image-resolution: from-image snap 96dpi; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "snap 96dpi from-image"
+PASS img.style.cssText is "image-resolution: snap 96dpi from-image; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "snap from-image 96dpi"
+PASS img.style.cssText is "image-resolution: snap from-image 96dpi; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "192dpi from-image snap"
+PASS img.style.cssText is "image-resolution: 192dpi from-image snap; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "192dpi snap from-image"
+PASS img.style.cssText is "image-resolution: 192dpi snap from-image; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "from-image 192dpi snap"
+PASS img.style.cssText is "image-resolution: from-image 192dpi snap; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "from-image snap 192dpi"
+PASS img.style.cssText is "image-resolution: from-image snap 192dpi; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "snap 192dpi from-image"
+PASS img.style.cssText is "image-resolution: snap 192dpi from-image; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "snap from-image 192dpi"
+PASS img.style.cssText is "image-resolution: snap from-image 192dpi; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "288dpi from-image snap"
+PASS img.style.cssText is "image-resolution: 288dpi from-image snap; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "288dpi snap from-image"
+PASS img.style.cssText is "image-resolution: 288dpi snap from-image; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "from-image 288dpi snap"
+PASS img.style.cssText is "image-resolution: from-image 288dpi snap; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "from-image snap 288dpi"
+PASS img.style.cssText is "image-resolution: from-image snap 288dpi; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "snap 288dpi from-image"
+PASS img.style.cssText is "image-resolution: snap 288dpi from-image; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "snap from-image 288dpi"
+PASS img.style.cssText is "image-resolution: snap from-image 288dpi; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "384dpi from-image snap"
+PASS img.style.cssText is "image-resolution: 384dpi from-image snap; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "384dpi snap from-image"
+PASS img.style.cssText is "image-resolution: 384dpi snap from-image; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "from-image 384dpi snap"
+PASS img.style.cssText is "image-resolution: from-image 384dpi snap; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "from-image snap 384dpi"
+PASS img.style.cssText is "image-resolution: from-image snap 384dpi; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "snap 384dpi from-image"
+PASS img.style.cssText is "image-resolution: snap 384dpi from-image; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "snap from-image 384dpi"
+PASS img.style.cssText is "image-resolution: snap from-image 384dpi; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "150dpi from-image snap"
+PASS img.style.cssText is "image-resolution: 150dpi from-image snap; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "150dpi snap from-image"
+PASS img.style.cssText is "image-resolution: 150dpi snap from-image; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "from-image 150dpi snap"
+PASS img.style.cssText is "image-resolution: from-image 150dpi snap; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "from-image snap 150dpi"
+PASS img.style.cssText is "image-resolution: from-image snap 150dpi; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "snap 150dpi from-image"
+PASS img.style.cssText is "image-resolution: snap 150dpi from-image; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "snap from-image 150dpi"
+PASS img.style.cssText is "image-resolution: snap from-image 150dpi; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "300dpi from-image snap"
+PASS img.style.cssText is "image-resolution: 300dpi from-image snap; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "300dpi snap from-image"
+PASS img.style.cssText is "image-resolution: 300dpi snap from-image; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "from-image 300dpi snap"
+PASS img.style.cssText is "image-resolution: from-image 300dpi snap; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "from-image snap 300dpi"
+PASS img.style.cssText is "image-resolution: from-image snap 300dpi; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "snap 300dpi from-image"
+PASS img.style.cssText is "image-resolution: snap 300dpi from-image; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "snap from-image 300dpi"
+PASS img.style.cssText is "image-resolution: snap from-image 300dpi; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "450dpi from-image snap"
+PASS img.style.cssText is "image-resolution: 450dpi from-image snap; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "450dpi snap from-image"
+PASS img.style.cssText is "image-resolution: 450dpi snap from-image; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "from-image 450dpi snap"
+PASS img.style.cssText is "image-resolution: from-image 450dpi snap; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "from-image snap 450dpi"
+PASS img.style.cssText is "image-resolution: from-image snap 450dpi; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "snap 450dpi from-image"
+PASS img.style.cssText is "image-resolution: snap 450dpi from-image; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "snap from-image 450dpi"
+PASS img.style.cssText is "image-resolution: snap from-image 450dpi; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "600dpi from-image snap"
+PASS img.style.cssText is "image-resolution: 600dpi from-image snap; "
+PASS img.offsetWidth is 2
+PASS img.offsetHeight is 2
+TEST "600dpi snap from-image"
+PASS img.style.cssText is "image-resolution: 600dpi snap from-image; "
+PASS img.offsetWidth is 2
+PASS img.offsetHeight is 2
+TEST "from-image 600dpi snap"
+PASS img.style.cssText is "image-resolution: from-image 600dpi snap; "
+PASS img.offsetWidth is 2
+PASS img.offsetHeight is 2
+TEST "from-image snap 600dpi"
+PASS img.style.cssText is "image-resolution: from-image snap 600dpi; "
+PASS img.offsetWidth is 2
+PASS img.offsetHeight is 2
+TEST "snap 600dpi from-image"
+PASS img.style.cssText is "image-resolution: snap 600dpi from-image; "
+PASS img.offsetWidth is 2
+PASS img.offsetHeight is 2
+TEST "snap from-image 600dpi"
+PASS img.style.cssText is "image-resolution: snap from-image 600dpi; "
+PASS img.offsetWidth is 2
+PASS img.offsetHeight is 2
+TEST "0dpcm from-image snap"
+PASS img.style.cssText is ""
+TEST "0dpcm snap from-image"
+PASS img.style.cssText is ""
+TEST "from-image 0dpcm snap"
+PASS img.style.cssText is ""
+TEST "from-image snap 0dpcm"
+PASS img.style.cssText is ""
+TEST "snap 0dpcm from-image"
+PASS img.style.cssText is ""
+TEST "snap from-image 0dpcm"
+PASS img.style.cssText is ""
+TEST "37.7dpcm from-image snap"
+PASS img.style.cssText is "image-resolution: 37.7dpcm from-image snap; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "37.7dpcm snap from-image"
+PASS img.style.cssText is "image-resolution: 37.7dpcm snap from-image; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "from-image 37.7dpcm snap"
+PASS img.style.cssText is "image-resolution: from-image 37.7dpcm snap; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "from-image snap 37.7dpcm"
+PASS img.style.cssText is "image-resolution: from-image snap 37.7dpcm; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "snap 37.7dpcm from-image"
+PASS img.style.cssText is "image-resolution: snap 37.7dpcm from-image; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "snap from-image 37.7dpcm"
+PASS img.style.cssText is "image-resolution: snap from-image 37.7dpcm; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "75.5dpcm from-image snap"
+PASS img.style.cssText is "image-resolution: 75.5dpcm from-image snap; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "75.5dpcm snap from-image"
+PASS img.style.cssText is "image-resolution: 75.5dpcm snap from-image; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "from-image 75.5dpcm snap"
+PASS img.style.cssText is "image-resolution: from-image 75.5dpcm snap; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "from-image snap 75.5dpcm"
+PASS img.style.cssText is "image-resolution: from-image snap 75.5dpcm; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "snap 75.5dpcm from-image"
+PASS img.style.cssText is "image-resolution: snap 75.5dpcm from-image; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "snap from-image 75.5dpcm"
+PASS img.style.cssText is "image-resolution: snap from-image 75.5dpcm; "
+PASS img.offsetWidth is 8
+PASS img.offsetHeight is 8
+TEST "113.3dpcm from-image snap"
+PASS img.style.cssText is "image-resolution: 113.3dpcm from-image snap; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "113.3dpcm snap from-image"
+PASS img.style.cssText is "image-resolution: 113.3dpcm snap from-image; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "from-image 113.3dpcm snap"
+PASS img.style.cssText is "image-resolution: from-image 113.3dpcm snap; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "from-image snap 113.3dpcm"
+PASS img.style.cssText is "image-resolution: from-image snap 113.3dpcm; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "snap 113.3dpcm from-image"
+PASS img.style.cssText is "image-resolution: snap 113.3dpcm from-image; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "snap from-image 113.3dpcm"
+PASS img.style.cssText is "image-resolution: snap from-image 113.3dpcm; "
+PASS img.offsetWidth is 5
+PASS img.offsetHeight is 5
+TEST "151.1dpcm from-image snap"
+PASS img.style.cssText is "image-resolution: 151.1dpcm from-image snap; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "151.1dpcm snap from-image"
+PASS img.style.cssText is "image-resolution: 151.1dpcm snap from-image; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "from-image 151.1dpcm snap"
+PASS img.style.cssText is "image-resolution: from-image 151.1dpcm snap; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "from-image snap 151.1dpcm"
+PASS img.style.cssText is "image-resolution: from-image snap 151.1dpcm; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "snap 151.1dpcm from-image"
+PASS img.style.cssText is "image-resolution: snap 151.1dpcm from-image; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "snap from-image 151.1dpcm"
+PASS img.style.cssText is "image-resolution: snap from-image 151.1dpcm; "
+PASS img.offsetWidth is 4
+PASS img.offsetHeight is 4
+TEST "from-image snap"
+PASS img.style.cssText is "image-resolution: from-image snap; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
+TEST "snap from-image"
+PASS img.style.cssText is "image-resolution: snap from-image; "
+PASS img.offsetWidth is 16
+PASS img.offsetHeight is 16
PASS successfullyParsed is true
TEST COMPLETE
Modified: trunk/LayoutTests/fast/css/image-resolution/image-resolution.html (121126 => 121127)
--- trunk/LayoutTests/fast/css/image-resolution/image-resolution.html 2012-06-25 00:41:05 UTC (rev 121126)
+++ trunk/LayoutTests/fast/css/image-resolution/image-resolution.html 2012-06-25 01:46:14 UTC (rev 121127)
@@ -27,6 +27,8 @@
var value = explicit && explicit[1] * 1;
var unit = explicit && explicit[3];
var dppx = 1;
+ if (!unit && !fromImage)
+ return;
if (unit && value <= 0)
return;
if (unit && value) {
@@ -38,28 +40,40 @@
dppx = value / cssPxPerIn;
else if (unit === 'dpcm')
dppx = value / (cssPxPerIn / cmPerIn);
+ else
+ return;
}
if (fromImage && imgResolutionDppx)
dppx = imgResolutionDppx;
if (snap)
- dppx = Math.floor(dppx);
+ dppx = Math.floor(dppx + 0.01);
if (dppx <= 0)
dppx = 1;
return dppx;
}
-function permute2(rule) {
+function permute3(rule) {
var s = rule.trim().split(' ');
if (s.length == 1)
return s;
- return [s.join(' '), [s[1], s[0]].join(' ')];
+ if (s.length == 2)
+ return [s.join(' '), [s[1], s[0]].join(' ')];
+ return [[s[0], s[1], s[2]].join(' '), [s[0], s[2], s[1]].join(' '),
+ [s[1], s[0], s[2]].join(' '), [s[1], s[2], s[0]].join(' '),
+ [s[2], s[0], s[1]].join(' '), [s[2], s[1], s[0]].join(' ')];
}
function generateTests(resolutions) {
var tests = resolutions.slice();
resolutions.forEach(function(resolution) {
- tests.push.apply(tests, permute2(resolution + ' from-image'));
+ tests.push.apply(tests, permute3(resolution + ' from-image'));
});
+ resolutions.forEach(function(resolution) {
+ tests.push.apply(tests, permute3(resolution + ' snap'));
+ });
+ resolutions.forEach(function(resolution) {
+ tests.push.apply(tests, permute3(resolution + ' from-image snap'));
+ });
return tests;
}
Modified: trunk/Source/WebCore/ChangeLog (121126 => 121127)
--- trunk/Source/WebCore/ChangeLog 2012-06-25 00:41:05 UTC (rev 121126)
+++ trunk/Source/WebCore/ChangeLog 2012-06-25 01:46:14 UTC (rev 121127)
@@ -1,3 +1,35 @@
+2012-06-24 David Barr <[email protected]>
+
+ Add snap to css3-images image-resolution
+ https://bugs.webkit.org/show_bug.cgi?id=89745
+
+ Reviewed by Tony Chang.
+
+ Due to floating point imprecision, it is difficult to be precise in dpcm.
+ So use PrimitiveValue::roundForImpreciseConversion rather than just floor.
+
+ No new tests; extended fast/css/image-resolution/image-resolution.html
+
+ * css/CSSParser.cpp: Accept snap identifier in image-resolution property.
+ (WebCore::CSSParser::parseImageResolution): Map CSSValueSnap to identifier value from cssValuePool.
+ * css/CSSValueKeywords.in: Add snap.
+ * css/StyleBuilder.cpp: Extend ApplyPropertyImageResolution to apply RenderStyle::imageResolutionSnap.
+ (WebCore::ApplyPropertyImageResolution::applyInheritValue): Apply RenderStyle::imageResolutionSnap.
+ (WebCore::ApplyPropertyImageResolution::applyInitialValue): Apply RenderStyle::imageResolutionSnap.
+ (WebCore::ApplyPropertyImageResolution::applyValue): Map CSSValueSnap to ImageResolutionSnapPixels.
+ * rendering/RenderImage.cpp: Extend conditions for recalculation of intrinsic size.
+ (WebCore::RenderImage::styleDidChange): Update intrinsic size if RenderStyle::imageResolutionSnap() has changed.
+ (WebCore::RenderImage::imageDimensionsChanged): Floor scale factor to int, round up if less than 0.01 away from ceiling.
+ * rendering/style/RenderStyle.cpp: Include StyleRareInheritedData::m_imageResolutionSnap in style diff.
+ (WebCore::RenderStyle::diff): Map change in StyleRareInheritedData::m_imageResolutionSnap to StyleDifferenceLayout.
+ * rendering/style/RenderStyle.h: Add RenderStyle::imageResolutionSnap, RenderStyle::setImageResolutionSnap, RenderStyle::initialImageResolutionSnap.
+ * rendering/style/RenderStyleConstants.h: Add enum ImageResolutionSnap.
+ * rendering/style/StyleRareInheritedData.cpp: Add StyleRareInheritedData::m_imageResolutionSnap.
+ (WebCore::StyleRareInheritedData::StyleRareInheritedData): Add m_imageResolutionSnap to default and copy constructor.
+ (WebCore::StyleRareInheritedData::operator==): Include m_imageResolutionSnap in comparison.
+ * rendering/style/StyleRareInheritedData.h: Add StyleRareInheritedData::m_imageResolutionSnap.
+ (StyleRareInheritedData): Add 1-bit field StyleRareInheritedData::m_imageResolutionSnap.
+
2012-06-24 Sheriff Bot <[email protected]>
Unreviewed, rolling out r121106.
Modified: trunk/Source/WebCore/css/CSSParser.cpp (121126 => 121127)
--- trunk/Source/WebCore/css/CSSParser.cpp 2012-06-25 00:41:05 UTC (rev 121126)
+++ trunk/Source/WebCore/css/CSSParser.cpp 2012-06-25 01:46:14 UTC (rev 121127)
@@ -6904,12 +6904,16 @@
RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
bool haveResolution = false;
bool haveFromImage = false;
+ bool haveSnap = false;
CSSParserValue* value = valueList->current();
while (value) {
if (!haveFromImage && value->id == CSSValueFromImage) {
list->append(cssValuePool().createIdentifierValue(value->id));
haveFromImage = true;
+ } else if (!haveSnap && value->id == CSSValueSnap) {
+ list->append(cssValuePool().createIdentifierValue(value->id));
+ haveSnap = true;
} else if (!haveResolution && validUnit(value, FResolution | FNonNeg) && value->fValue > 0) {
list->append(createPrimitiveNumericValue(value));
haveResolution = true;
@@ -6919,6 +6923,8 @@
}
if (!list->length())
return 0;
+ if (!haveFromImage && !haveResolution)
+ return 0;
return list;
}
#endif
Modified: trunk/Source/WebCore/css/CSSValueKeywords.in (121126 => 121127)
--- trunk/Source/WebCore/css/CSSValueKeywords.in 2012-06-25 00:41:05 UTC (rev 121126)
+++ trunk/Source/WebCore/css/CSSValueKeywords.in 2012-06-25 01:46:14 UTC (rev 121127)
@@ -934,5 +934,6 @@
#if defined(ENABLE_CSS_IMAGE_RESOLUTION) && ENABLE_CSS_IMAGE_RESOLUTION
from-image
+snap
#endif
Modified: trunk/Source/WebCore/css/StyleBuilder.cpp (121126 => 121127)
--- trunk/Source/WebCore/css/StyleBuilder.cpp 2012-06-25 00:41:05 UTC (rev 121126)
+++ trunk/Source/WebCore/css/StyleBuilder.cpp 2012-06-25 01:46:14 UTC (rev 121127)
@@ -1785,12 +1785,14 @@
static void applyInheritValue(StyleResolver* styleResolver)
{
ApplyPropertyDefaultBase<ImageResolutionSource, &RenderStyle::imageResolutionSource, ImageResolutionSource, &RenderStyle::setImageResolutionSource, ImageResolutionSource, &RenderStyle::initialImageResolutionSource>::applyInheritValue(styleResolver);
+ ApplyPropertyDefaultBase<ImageResolutionSnap, &RenderStyle::imageResolutionSnap, ImageResolutionSnap, &RenderStyle::setImageResolutionSnap, ImageResolutionSnap, &RenderStyle::initialImageResolutionSnap>::applyInheritValue(styleResolver);
ApplyPropertyDefaultBase<float, &RenderStyle::imageResolution, float, &RenderStyle::setImageResolution, float, &RenderStyle::initialImageResolution>::applyInheritValue(styleResolver);
}
static void applyInitialValue(StyleResolver* styleResolver)
{
ApplyPropertyDefaultBase<ImageResolutionSource, &RenderStyle::imageResolutionSource, ImageResolutionSource, &RenderStyle::setImageResolutionSource, ImageResolutionSource, &RenderStyle::initialImageResolutionSource>::applyInitialValue(styleResolver);
+ ApplyPropertyDefaultBase<ImageResolutionSnap, &RenderStyle::imageResolutionSnap, ImageResolutionSnap, &RenderStyle::setImageResolutionSnap, ImageResolutionSnap, &RenderStyle::initialImageResolutionSnap>::applyInitialValue(styleResolver);
ApplyPropertyDefaultBase<float, &RenderStyle::imageResolution, float, &RenderStyle::setImageResolution, float, &RenderStyle::initialImageResolution>::applyInitialValue(styleResolver);
}
@@ -1800,6 +1802,7 @@
return;
CSSValueList* valueList = static_cast<CSSValueList*>(value);
ImageResolutionSource source = RenderStyle::initialImageResolutionSource();
+ ImageResolutionSnap snap = RenderStyle::initialImageResolutionSnap();
double resolution = RenderStyle::initialImageResolution();
for (size_t i = 0; i < valueList->length(); i++) {
CSSValue* item = valueList->itemWithoutBoundsCheck(i);
@@ -1808,10 +1811,13 @@
CSSPrimitiveValue* primitiveValue = static_cast<CSSPrimitiveValue*>(item);
if (primitiveValue->getIdent() == CSSValueFromImage)
source = ImageResolutionFromImage;
+ else if (primitiveValue->getIdent() == CSSValueSnap)
+ snap = ImageResolutionSnapPixels;
else
resolution = primitiveValue->getDoubleValue(CSSPrimitiveValue::CSS_DPPX);
}
styleResolver->style()->setImageResolutionSource(source);
+ styleResolver->style()->setImageResolutionSnap(snap);
styleResolver->style()->setImageResolution(resolution);
}
Modified: trunk/Source/WebCore/rendering/RenderImage.cpp (121126 => 121127)
--- trunk/Source/WebCore/rendering/RenderImage.cpp 2012-06-25 00:41:05 UTC (rev 121126)
+++ trunk/Source/WebCore/rendering/RenderImage.cpp 2012-06-25 01:46:14 UTC (rev 121127)
@@ -140,6 +140,7 @@
#if ENABLE(CSS_IMAGE_RESOLUTION)
if (diff == StyleDifferenceLayout
&& (oldStyle->imageResolution() != style()->imageResolution()
+ || oldStyle->imageResolutionSnap() != style()->imageResolutionSnap()
|| oldStyle->imageResolutionSource() != style()->imageResolutionSource()))
imageDimensionsChanged(true /* imageSizeChanged */);
#endif
@@ -198,7 +199,12 @@
void RenderImage::imageDimensionsChanged(bool imageSizeChanged, const IntRect* rect)
{
#if ENABLE(CSS_IMAGE_RESOLUTION)
- bool intrinsicSizeChanged = updateIntrinsicSizeIfNeeded(m_imageResource->imageSize(style()->effectiveZoom() / style()->imageResolution()), imageSizeChanged);
+ double scale = style()->imageResolution();
+ if (style()->imageResolutionSnap() == ImageResolutionSnapPixels)
+ scale = roundForImpreciseConversion<int>(scale);
+ if (scale <= 0)
+ scale = 1;
+ bool intrinsicSizeChanged = updateIntrinsicSizeIfNeeded(m_imageResource->imageSize(style()->effectiveZoom() / scale), imageSizeChanged);
#else
bool intrinsicSizeChanged = updateIntrinsicSizeIfNeeded(m_imageResource->imageSize(style()->effectiveZoom()), imageSizeChanged);
#endif
Modified: trunk/Source/WebCore/rendering/style/RenderStyle.cpp (121126 => 121127)
--- trunk/Source/WebCore/rendering/style/RenderStyle.cpp 2012-06-25 00:41:05 UTC (rev 121126)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.cpp 2012-06-25 01:46:14 UTC (rev 121127)
@@ -474,6 +474,7 @@
|| rareInheritedData->m_lineGrid != other->rareInheritedData->m_lineGrid
#if ENABLE(CSS_IMAGE_RESOLUTION)
|| rareInheritedData->m_imageResolutionSource != other->rareInheritedData->m_imageResolutionSource
+ || rareInheritedData->m_imageResolutionSnap != other->rareInheritedData->m_imageResolutionSnap
|| rareInheritedData->m_imageResolution != other->rareInheritedData->m_imageResolution
#endif
|| rareInheritedData->m_lineSnap != other->rareInheritedData->m_lineSnap
Modified: trunk/Source/WebCore/rendering/style/RenderStyle.h (121126 => 121127)
--- trunk/Source/WebCore/rendering/style/RenderStyle.h 2012-06-25 00:41:05 UTC (rev 121126)
+++ trunk/Source/WebCore/rendering/style/RenderStyle.h 2012-06-25 01:46:14 UTC (rev 121127)
@@ -983,6 +983,7 @@
#if ENABLE(CSS_IMAGE_RESOLUTION)
ImageResolutionSource imageResolutionSource() const { return static_cast<ImageResolutionSource>(rareInheritedData->m_imageResolutionSource); }
+ ImageResolutionSnap imageResolutionSnap() const { return static_cast<ImageResolutionSnap>(rareInheritedData->m_imageResolutionSnap); }
float imageResolution() const { return rareInheritedData->m_imageResolution; }
#endif
@@ -1154,6 +1155,7 @@
#if ENABLE(CSS_IMAGE_RESOLUTION)
void setImageResolutionSource(ImageResolutionSource v) { SET_VAR(rareInheritedData, m_imageResolutionSource, v) }
+ void setImageResolutionSnap(ImageResolutionSnap v) { SET_VAR(rareInheritedData, m_imageResolutionSnap, v) }
void setImageResolution(float f) { SET_VAR(rareInheritedData, m_imageResolution, f) }
#endif
@@ -1667,6 +1669,7 @@
static LineBoxContain initialLineBoxContain() { return LineBoxContainBlock | LineBoxContainInline | LineBoxContainReplaced; }
static EImageRendering initialImageRendering() { return ImageRenderingAuto; }
static ImageResolutionSource initialImageResolutionSource() { return ImageResolutionSpecified; }
+ static ImageResolutionSnap initialImageResolutionSnap() { return ImageResolutionNoSnap; }
static float initialImageResolution() { return 1; }
static StyleImage* initialBorderImageSource() { return 0; }
static StyleImage* initialMaskBoxImageSource() { return 0; }
Modified: trunk/Source/WebCore/rendering/style/RenderStyleConstants.h (121126 => 121127)
--- trunk/Source/WebCore/rendering/style/RenderStyleConstants.h 2012-06-25 00:41:05 UTC (rev 121126)
+++ trunk/Source/WebCore/rendering/style/RenderStyleConstants.h 2012-06-25 01:46:14 UTC (rev 121127)
@@ -452,6 +452,8 @@
enum ImageResolutionSource { ImageResolutionSpecified = 0, ImageResolutionFromImage };
+enum ImageResolutionSnap { ImageResolutionNoSnap = 0, ImageResolutionSnapPixels };
+
enum Order { LogicalOrder = 0, VisualOrder };
enum RegionOverflow { AutoRegionOverflow, BreakRegionOverflow };
Modified: trunk/Source/WebCore/rendering/style/StyleRareInheritedData.cpp (121126 => 121127)
--- trunk/Source/WebCore/rendering/style/StyleRareInheritedData.cpp 2012-06-25 00:41:05 UTC (rev 121126)
+++ trunk/Source/WebCore/rendering/style/StyleRareInheritedData.cpp 2012-06-25 01:46:14 UTC (rev 121127)
@@ -89,6 +89,7 @@
#endif
#if ENABLE(CSS_IMAGE_RESOLUTION)
, m_imageResolutionSource(RenderStyle::initialImageResolutionSource())
+ , m_imageResolutionSnap(RenderStyle::initialImageResolutionSnap())
#endif
, hyphenationLimitBefore(-1)
, hyphenationLimitAfter(-1)
@@ -147,6 +148,7 @@
#endif
#if ENABLE(CSS_IMAGE_RESOLUTION)
, m_imageResolutionSource(o.m_imageResolutionSource)
+ , m_imageResolutionSnap(o.m_imageResolutionSnap)
#endif
, hyphenationString(o.hyphenationString)
, hyphenationLimitBefore(o.hyphenationLimitBefore)
@@ -231,6 +233,7 @@
&& m_imageRendering == o.m_imageRendering
#if ENABLE(CSS_IMAGE_RESOLUTION)
&& m_imageResolutionSource == o.m_imageResolutionSource
+ && m_imageResolutionSnap == o.m_imageResolutionSnap
&& m_imageResolution == o.m_imageResolution
#endif
&& m_lineSnap == o.m_lineSnap
Modified: trunk/Source/WebCore/rendering/style/StyleRareInheritedData.h (121126 => 121127)
--- trunk/Source/WebCore/rendering/style/StyleRareInheritedData.h 2012-06-25 00:41:05 UTC (rev 121126)
+++ trunk/Source/WebCore/rendering/style/StyleRareInheritedData.h 2012-06-25 01:46:14 UTC (rev 121127)
@@ -103,6 +103,7 @@
#endif
#if ENABLE(CSS_IMAGE_RESOLUTION)
unsigned m_imageResolutionSource : 1; // ImageResolutionSource
+ unsigned m_imageResolutionSnap : 1; // ImageResolutionSnap
#endif
AtomicString hyphenationString;