Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10)

Side by Side Diff: third_party/WebKit/LayoutTests/svg/dom/SVGLength-calc-in-attr.html

Issue 2097383002: Added support of calc() for SVGLength (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <script src="../../resources/testharness.js"></script>
3 <script src="../../resources/testharnessreport.js"></script>
4 <svg width="500px" height="500px" viewBox="0 0 500 500">
5 <rect width="1" height="1"/>
6 <marker markerWidth="1" markerHeight="1"/>
7 </svg>
8 <script>
9 var viewportWidth = 500;
10 var EPSILON = Math.pow(2, -8);
11 var cssPixelsPerInch = 96;
12 var cssPixelsPerCentimeter = cssPixelsPerInch / 2.54; //2.54 cm/in
13 var cssPixelsPerMillimeter = cssPixelsPerCentimeter / 10;
14 var cssPixelsPerPoint = cssPixelsPerInch / 72;
15 var cssPixelsPerPica = cssPixelsPerInch / 6;
16
17 function viewportWidthPercent()
18 {
fs 2016/07/16 21:13:02 Move to previous line
Shanmuga Pandi 2016/07/18 13:35:32 Done.
19 return viewportWidth / 100;
20 }
21
22 function assert_calc_expression_on_width_attr(expression, expected) {
23 var rect = document.querySelector('rect');
24 var rectWidth;
25 // Test calc with setAttribute
26 rect.setAttribute('width', expression);
27 rectWidth = rect.getBoundingClientRect().width;
28 assert_approx_equals(rectWidth, expected, EPSILON);
29 assert_approx_equals(rect.width.baseVal.value, expected, EPSILON);
30 assert_equals(rect.width.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_UNKNOWN);
31 assert_equals(rect.width.baseVal.valueInSpecifiedUnits, 0);
32
33 // Test valueInSpecifiedUnits setter after 'calc' value attribute
34 rect.width.baseVal.valueInSpecifiedUnits = 100;
35 assert_equals(rect.width.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_NUMBER);
36 assert_equals(rect.width.baseVal.valueInSpecifiedUnits, 100);
37
38 // Test value setter after 'calc' value attribute
39 rect.setAttribute('width', expression); // reset to calc value
40 rect.width.baseVal.value = 10;
41 assert_equals(rect.width.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_NUMBER);
42 assert_equals(rect.width.baseVal.valueInSpecifiedUnits, 10);
43
44 // Test calc with "valueAsString"
45 rect.setAttribute('width', '20px'); // reset to normal value
46 assert_throws(null, function() {rect.width.baseVal.valueAsString = expression} );
47 assert_equals(rect.width.baseVal.value, 20);
48 }
49
50 function assert_calc_expression_on_markerWidth_attr(expression, expected) {
51 var marker = document.querySelector('marker');
52 // Test calc with setAttribute
53 marker.setAttribute('markerWidth', expression);
54 assert_approx_equals(marker.markerWidth.baseVal.value, expected, EPSILON);
55 assert_equals(marker.markerWidth.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_UN KNOWN);
56 assert_equals(marker.markerWidth.baseVal.valueInSpecifiedUnits, 0);
57
58 // Test valueInSpecifiedUnits setter after 'calc' value attribute
59 marker.markerWidth.baseVal.valueInSpecifiedUnits = 100;
60 assert_equals(marker.markerWidth.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_NU MBER);
61 assert_equals(marker.markerWidth.baseVal.valueInSpecifiedUnits, 100);
62
63 // Test value setter after 'calc' value attribute
64 marker.setAttribute('width', expression); // reset to calc value
fs 2016/07/16 21:13:02 s/'width'/'markerWidth'/
Shanmuga Pandi 2016/07/18 13:35:32 Done.
65 marker.markerWidth.baseVal.value = 10;
66 assert_equals(marker.markerWidth.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_NU MBER);
67 assert_equals(marker.markerWidth.baseVal.valueInSpecifiedUnits, 10);
68
69 // Test calc with "valueAsString"
70 marker.setAttribute('markerWidth', '20px'); // reset to normal value
71 assert_throws(null, function() {marker.markerWidth.baseVal.valueAsString = exp ression});
72 assert_equals(marker.markerWidth.baseVal.value, 20);
73 }
74
75 function assert_calc_expression(expression, expected) {
76 assert_calc_expression_on_width_attr(expression, expected); // presentation attr
77 assert_calc_expression_on_markerWidth_attr(expression, expected); // non pre sentation attr
78 }
79
80 test(function() {
81 assert_calc_expression("calc(20%)", (20 * viewportWidthPercent()));
82 assert_calc_expression("calc(10mm + 10in)", (10 * cssPixelsPerMillimeter) + (10 * cssPixelsPerInch));
83 assert_calc_expression("calc(10mm + 10mm)", (20 * cssPixelsPerMillimeter));
84 assert_calc_expression("calc(20mm)", (20 * cssPixelsPerMillimeter));
85 assert_calc_expression("calc(10 + 10)", 20);
86 assert_calc_expression("calc(10mm + 10)", (10 * cssPixelsPerMillimeter) + 10 );
87 assert_calc_expression("calc(10% + 10)", (10 * viewportWidthPercent()) + 10) ;
88 assert_calc_expression("calc(1cm + 2in + 1cm + 2)", (2 * cssPixelsPerInch) + (2 * cssPixelsPerCentimeter) + 2);
89 assert_calc_expression("calc(1cm + 2 + 1cm + 2in)", (2 * cssPixelsPerInch) + (2 * cssPixelsPerCentimeter) + 2);
90 assert_calc_expression("calc(10% + 10 + 2% + 10pc)", (12 * viewportWidthPerc ent()) + 10 + (10 * cssPixelsPerPica));
91 }, "Tests calc() on presentation attr in svgLength");
fs 2016/07/16 21:13:01 This is a bit misleading since it also tests the n
Shanmuga Pandi 2016/07/18 13:35:32 Done.
92 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698