Index: third_party/WebKit/LayoutTests/imported/wpt/cssom/serialize-values.html |
diff --git a/third_party/WebKit/LayoutTests/imported/wpt/cssom/serialize-values.html b/third_party/WebKit/LayoutTests/imported/wpt/cssom/serialize-values.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8f6f3d28d03c970decba0366beaff84f96ac348e |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/imported/wpt/cssom/serialize-values.html |
@@ -0,0 +1,596 @@ |
+<!DOCTYPE html> |
tkent
2016/11/03 13:40:51
cssom/ is a new directory. We should skip.
|
+<meta charset="utf-8"> |
+<title>CSSOM serialize values</title> |
+<meta name="author" title="Josh Matthews" href="mailto:josh@joshmatthews.net"> |
+<script src="/resources/testharness.js"></script> |
+<script src="/resources/testharnessreport.js"></script> |
+<body> |
+ <div id="log"></div> |
+ <div id="parent"></div> |
+ <script> |
+ function iterable(values) { |
+ var i = 0; |
+ return function() { |
+ if (i < values.length) { |
+ return values[i++]; |
+ } |
+ return null; |
+ } |
+ } |
+ |
+ function color() { |
+ var colors = ['black', 'red', 'rgb(50, 75, 100)', 'rgba(5, 7, 10, 0.5)']; |
+ return iterable(colors); |
+ } |
+ |
+ function percentage() { |
+ var values = ["5%", {actual: ".5%", serialized: "0.5%"}]; |
+ return iterable(values); |
+ } |
+ |
+ function negative_percentage() { |
+ var values = ["-5%", {actual: "-.5%", serialized: "-0.5%"}]; |
+ return iterable(values); |
+ } |
+ |
+ function length() { |
+ var values = ["0px", "1px", {actual: ".1em", serialized: "0.1em"}]; |
+ return iterable(values); |
+ } |
+ |
+ function negative_length() { |
+ var values = [{actual: "-0px", serialized: "0px"}, |
+ "-1px", {actual: "-.1em", serialized: "-0.1em"}]; |
+ return iterable(values); |
+ } |
+ |
+ function degree() { |
+ var values = ["87deg"]; |
+ return iterable(values); |
+ } |
+ |
+ function uri() { |
+ var values = ["url(\"http://localhost/\")", |
+ {actual: "url(http://localhost/)", |
+ serialized: "url(\"http://localhost/\")"}]; |
+ return iterable(values); |
+ } |
+ |
+ function border_style() { |
+ var values = ['none', 'hidden', 'dotted', 'dashed', 'solid', 'double', 'groove', 'ridge', |
+ 'inset', 'outset']; |
+ return iterable(values); |
+ } |
+ |
+ function border_style_without_hidden() { |
+ var values = ['none', 'dotted', 'dashed', 'solid', 'double', 'groove', 'ridge', |
+ 'inset', 'outset']; |
+ return iterable(values); |
+ } |
+ |
+ function integer() { |
+ var values = ['0', '101', '-51']; |
+ return iterable(values); |
+ } |
+ |
+ function nonzero_positive_integer() { |
+ var values = ['101']; |
+ return iterable(values); |
+ } |
+ |
+ function shape() { |
+ var values = ['rect(1em, auto, 0.5px, 2000em)']; |
+ return iterable(values); |
+ } |
+ |
+ function string() { |
+ var values = ['"string"', {actual: "'string'", serialized: '"string"'}]; |
+ return iterable(values); |
+ } |
+ |
+ function counter() { |
+ var values = [{actual: 'counter(par-num)', |
+ serialized: 'counter(par-num, decimal)'}, |
+ 'counter(par-num, upper-roman)']; |
+ return iterable(values); |
+ } |
+ |
+ function attr() { |
+ var values = ['attr(foo-bar)', 'attr(foo_bar)']; |
+ return iterable(values); |
+ } |
+ |
+ function family_name() { |
+ var values = ['Arial', {actual: "'Lucida Grande'", serialized: '"Lucida Grande"'}]; |
+ return iterable(values); |
+ } |
+ |
+ function generic_family() { |
+ var values = ['serif', 'sans-serif']; |
+ return iterable(values); |
+ } |
+ |
+ function absolute_size() { |
+ var values = ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large']; |
+ return iterable(values); |
+ } |
+ |
+ function relative_size() { |
+ var values = ['larger', 'smaller']; |
+ return iterable(values); |
+ } |
+ |
+ function number() { |
+ var values = ['0', {'actual': '-0', serialized: '0'}, '1000', '-5123', '0.9', '-0.09']; |
+ return iterable(values); |
+ } |
+ |
+ function positive_number() { |
+ var values = ['0', {'actual': '-0', serialized: '0'}, '1000', '0.9']; |
+ return iterable(values); |
+ } |
+ |
+ function generate_inline_style(name, value) { |
+ if (value) { |
+ return {'declaration': name + ": " + value.actual, |
+ 'value': value.actual, |
+ 'result': value.expected}; |
+ } |
+ return null; |
+ } |
+ |
+ function create_result(actual, expected) { |
+ return {actual: actual, expected: expected} |
+ } |
+ |
+ function all_values(values) { |
+ var results = []; |
+ for (var i = 0; i < values.length; i++) { |
+ var value = values[i]; |
+ if (typeof value == "function") { |
+ var f = value(); |
+ var result; |
+ while ((result = f()) != null) { |
+ if (typeof result == "object" && 'serialized' in result) { |
+ results.push(create_result(result.actual, result.serialized)); |
+ } else { |
+ results.push(create_result(result, result)); |
+ } |
+ } |
+ } else if (typeof value == "string") { |
+ results.push(create_result(value, value)); |
+ } else if (value instanceof Array) { |
+ var subresults = []; |
+ for (var j = 0; j < value.length; j++) { |
+ var subresult = all_values(value[j], true); |
+ if (!(subresult instanceof Array)) { |
+ subresult = [subresult]; |
+ } |
+ subresults.push(subresult); |
+ } |
+ if (subresults.length > 1) { |
+ function choose_slices(vecs) { |
+ if (vecs.length == 1) { |
+ return vecs[0].map(function(v) { return [v]; }); |
+ } |
+ var slice_results = []; |
+ var rest = choose_slices(vecs.slice(1, vecs.length)); |
+ for (var a = 0; a < vecs[0].length; a++) { |
+ for (var b = 0; b < rest.length; b++) { |
+ var result = vecs[0][a]; |
+ slice_results.push([result].concat(rest[b])); |
+ } |
+ } |
+ return slice_results; |
+ } |
+ |
+ subresults = choose_slices(subresults).map(function (a) { |
+ var actual = a.map(function(a) { return a.actual }); |
+ var expected = a.map(function(a) { return a.expected }); |
+ return create_result(actual.join(' '), expected.join(' ')) |
+ }); |
+ } |
+ for (var j = 0; j < subresults.length; j++) { |
+ results = results.concat(subresults[j]); |
+ } |
+ } else if (value instanceof Object && 'serialized' in value) { |
+ results.push(create_result(value.actual, value.serialized)); |
+ } else if (typeof value == "number") { |
+ results.push(create_result(value.toString(), value.toString())); |
+ } else { |
+ throw "unexpected value type: " + typeof(value); |
+ } |
+ } |
+ return results; |
+ } |
+ |
+ function create_value_generator(property) { |
+ var results = all_values(property.values); |
+ return iterable(results); |
+ } |
+ |
+ function to_idl(property) { |
+ return property.replace(/-\w/g, function(x){return x[1].toUpperCase()}); |
+ } |
+ |
+ function run_individual_test(property, generator, initial) { |
+ var elem = document.createElement('div'); |
+ document.getElementById('parent').appendChild(elem); |
+ var test_data = generator(); |
+ var style = generate_inline_style(property, test_data); |
+ if (!style) { |
+ return false; |
+ } |
+ var t = async_test(style.declaration); |
+ |
+ t.add_cleanup(function() { |
+ document.getElementById('parent').removeChild(elem); |
+ }); |
+ |
+ t.step(function() { |
+ elem.setAttribute('style', style.declaration); |
+ var expected = style.result; |
+ var serialized = elem.style[to_idl(property)]; |
+ assert_equals(serialized, expected, property + ' raw inline style declaration'); |
+ elem.setAttribute('style', ''); |
+ elem.style[to_idl(property)] = style.value; |
+ assert_equals(elem.style[to_idl(property)], expected, property + ' style property'); |
+ }); |
+ t.done(); |
+ return true; |
+ } |
+ |
+ function test_property(property) { |
+ var generator = create_value_generator(property[1]); |
+ while (run_individual_test(property[0], generator, property[1].initial)) { |
+ } |
+ } |
+ |
+ var properties = [ |
+ ['background-attachment', { |
+ 'values': ['scroll', 'fixed', 'inherit'], |
+ 'initial': 'scroll', |
+ }], |
+ ['background-color', { |
+ 'values': [color, 'transparent', 'inherit'], |
+ 'initial': 'transparent', |
+ }], |
+ ['background-image', { |
+ 'values': [uri, 'none', 'inherit'], |
+ 'initial': 'none', |
+ }], |
+ ['background-position', { |
+ 'values': [[[percentage, negative_percentage, length, negative_length, |
+ 'left', 'center', 'right'], |
+ [percentage, negative_percentage, length, negative_length, |
+ 'top', 'center', 'bottom']], |
+ 'inherit'], |
+ 'initial': '0% 0%', |
+ }], |
+ ['background-repeat', { |
+ 'values': ['repeat', 'repeat-x', 'repeat-y', 'no-repeat', 'inherit'], |
+ 'initial': 'repeat', |
+ }], |
+ //background |
+ ['border-collapse', { |
+ 'values': ['collapse', 'separate', 'inherit'], |
+ 'initial': 'separate', |
+ }], |
+ //border-color |
+ ['border-spacing', { |
+ 'values': [length, 'inherit'], |
+ 'initial': '0', |
+ }], |
+ //border-style |
+ //border-top, border-right, border-bottom, border-left |
+ ['border-top-color', { |
+ 'values': [color, 'transparent', 'inherit'], |
+ 'initial': 'black', //FIXME |
+ }], |
+ ['border-right-color', { |
+ 'values': [color, 'transparent', 'inherit'], |
+ 'initial': 'black', //FIXME |
+ }], |
+ ['border-bottom-color', { |
+ 'values': [color, 'transparent', 'inherit'], |
+ 'initial': 'black', //FIXME |
+ }], |
+ ['border-left-color', { |
+ 'values': [color, 'transparent', 'inherit'], |
+ 'initial': 'black', //FIXME |
+ }], |
+ ['border-top-style', { |
+ 'values': [border_style, 'inherit'], |
+ 'initial': null, |
+ }], |
+ ['border-right-style', { |
+ 'values': [border_style, 'inherit'], |
+ 'initial': null, |
+ }], |
+ ['border-bottom-style', { |
+ 'values': [border_style, 'inherit'], |
+ 'initial': null, |
+ }], |
+ ['border-left-style', { |
+ 'values': [border_style, 'inherit'], |
+ 'initial': null, |
+ }], |
+ ['border-top-width', { |
+ 'values': ['thin', 'medium', 'thick', length, 'inherit'], |
+ 'initial': 'medium', |
+ }], |
+ ['border-right-width', { |
+ 'values': ['thin', 'medium', 'thick', length, 'inherit'], |
+ 'initial': 'medium', |
+ }], |
+ ['border-bottom-width', { |
+ 'values': ['thin', 'medium', 'thick', length, 'inherit'], |
+ 'initial': 'medium', |
+ }], |
+ ['border-left-width', { |
+ 'values': ['thin', 'medium', 'thick', length, 'inherit'], |
+ 'initial': 'medium', |
+ }], |
+ //border-width |
+ //border |
+ ['bottom', { |
+ 'values': [length, percentage, 'auto', 'inherit'], |
+ 'initial': 'auto', |
+ }], |
+ ['caption-side', { |
+ 'values': ['top', 'bottom', 'inherit'], |
+ 'initial': 'top', |
+ }], |
+ ['clear', { |
+ 'values': ['none', 'left', 'right', 'both', 'inherit'], |
+ 'initial': 'none', |
+ }], |
+ ['clip', { |
+ 'values': [shape, 'auto', 'inherit'], |
+ 'initial': 'auto', |
+ }], |
+ ['color', { |
+ 'values': [color, 'inherit'], |
+ 'initial': 'black', //FIXME depends on user agent |
+ }], |
+ ['content', { |
+ 'values': ['normal', 'none', string, uri, counter, attr, 'inherit'], //FIXME |
+ 'initial': 'normal', |
+ }], |
+ //counter-increment |
+ //counter-reset |
+ ['cursor', { |
+ 'values': [ 'auto', 'crosshair', 'default', 'pointer', 'move', 'e-resize', 'ne-resize', |
+ 'nw-resize', 'n-resize', 'se-resize', 'sw-resize', 's-resize', 'w-resize', |
+ 'text', 'wait', 'help', 'progress', 'inherit'], |
+ 'initial': 'auto', |
+ }], |
+ ['direction', { |
+ 'values': ['ltr', 'rtl', 'inherit'], |
+ 'initial': 'ltr', |
+ }], |
+ ['display', { |
+ 'values': ['inline', 'block', 'list-item', 'inline-block', 'table', 'inline-table', |
+ 'table-row-group', 'table-header-group', 'table-footer-group', 'table-row', |
+ 'table-column-group', 'table-column', 'table-cell', 'table-caption', 'none', |
+ 'inherit'], |
+ 'initial': 'inline', |
+ }], |
+ ['empty-cells', { |
+ 'values': ['show', 'hide', 'inherit'], |
+ 'initial': 'show', |
+ }], |
+ ['float', { |
+ 'values': ['left', 'right', 'none', 'inherit'], |
+ 'initial': 'none', |
+ 'property': 'cssFloat', |
+ }], |
+ ['font-family', { |
+ 'values': [family_name, generic_family, 'inherit'], |
+ 'initial': 'sans-serif', //FIXME depends on user agent |
+ }], |
+ ['font-size', { |
+ 'values': [absolute_size, relative_size, length, percentage, 'inherit'], |
+ 'initial': 'medium', |
+ }], |
+ ['font-style', { |
+ 'values': ['normal', 'italic', 'oblique', 'inherit'], |
+ 'initial': 'normal', |
+ }], |
+ ['font-variant', { |
+ 'values': ['normal', 'small-caps', 'inherit'], |
+ 'initial': 'normal', |
+ }], |
+ ['font-weight', { |
+ 'values': ['normal', 'bold', 'bolder', 'lighter', 100, 200, 300, 400, 500, 600, |
+ 700, 800, 900, 'inherit'], |
+ 'initial': 'normal', |
+ }], |
+ //font |
+ ['height', { |
+ 'values': [length, percentage, 'auto', 'inherit'], |
+ 'initial': 'auto', |
+ }], |
+ ['left', { |
+ 'values': [length, percentage, 'auto', 'inherit'], |
+ 'initial': 'auto', |
+ }], |
+ ['letter-spacing', { |
+ 'values': ['normal', length, 'inherit'], |
+ 'initial': 'normal', |
+ }], |
+ ['line-height', { |
+ 'values': ['normal', positive_number, length, percentage, 'inherit'], |
+ 'initial': 'normal', |
+ }], |
+ ['list-style-image', { |
+ 'values': [uri, 'none', 'inherit'], |
+ 'initial': 'none', |
+ }], |
+ ['list-style-position', { |
+ 'values': ['inside', 'outside', 'inherit'], |
+ 'initial': 'outside', |
+ }], |
+ ['list-style-type', { |
+ 'values': ['disc', 'circle', 'square', 'decimal', 'decimal-leading-zero', 'lower-roman', |
+ 'upper-roman', 'lower-greek', 'lower-latin', 'upper-latin', 'armenian', 'georgian', |
+ 'lower-alpha', 'upper-alpha', 'none', 'inherit'], |
+ 'initial': 'disc', |
+ }], |
+ //list-style |
+ ['margin-right', { |
+ 'values': [length, percentage, 'auto', 'inherit'], |
+ 'initial': 0, |
+ }], |
+ ['margin-left', { |
+ 'values': [length, percentage, 'auto', 'inherit'], |
+ 'initial': 0, |
+ }], |
+ ['margin-top', { |
+ 'values': [length, percentage, 'auto', 'inherit'], |
+ 'initial': 0, |
+ }], |
+ ['margin-bottom', { |
+ 'values': [length, percentage, 'auto', 'inherit'], |
+ 'initial': 0, |
+ }], |
+ //margin |
+ ['max-height', { |
+ 'values': [length, percentage, 'none', 'inherit'], |
+ 'initial': 'none', |
+ }], |
+ ['max-width', { |
+ 'values': [length, percentage, 'none', 'inherit'], |
+ 'initial': 'none', |
+ }], |
+ ['min-height', { |
+ 'values': [length, percentage, 'inherit'], |
+ 'initial': 0, |
+ }], |
+ ['min-width', { |
+ 'values': [length, percentage, 'inherit'], |
+ 'initial': 0, |
+ }], |
+ ['orphans', { |
+ 'values': [nonzero_positive_integer, 'inherit'], |
+ 'initial': 2, |
+ }], |
+ ['outline-color', { |
+ 'values': [color, 'invert', 'inherit'], |
+ 'initial': 'invert', |
+ }], |
+ ['outline-style', { |
+ 'values': [border_style_without_hidden, 'inherit'], |
+ 'initial': 'none', |
+ }], |
+ ['outline-width', { |
+ 'values': ['thin', 'medium', 'thick', length, 'inherit'], |
+ 'initial': 'medium', |
+ }], |
+ //outline |
+ ['overflow', { |
+ 'values': ['visible', 'hidden', 'scroll', 'auto', 'inherit'], |
+ 'initial': 'visible', |
+ }], |
+ ['padding-top', { |
+ 'values': [length, percentage, 'inherit'], |
+ 'initial': 0, |
+ }], |
+ ['padding-right', { |
+ 'values': [length, percentage, 'inherit'], |
+ 'initial': 0, |
+ }], |
+ ['padding-bottom', { |
+ 'values': [length, percentage, 'inherit'], |
+ 'initial': 0, |
+ }], |
+ ['padding-left', { |
+ 'values': [length, percentage, 'inherit'], |
+ 'initial': 0, |
+ }], |
+ //padding |
+ ['page-break-after', { |
+ 'values': ['auto', 'always', 'avoid', 'left', 'right', 'inherit'], |
+ 'initial': 'auto', |
+ }], |
+ ['page-break-before', { |
+ 'values': ['auto', 'always', 'avoid', 'left', 'right', 'inherit'], |
+ 'initial': 'auto', |
+ }], |
+ ['page-break-inside', { |
+ 'values': ['avoid', 'auto', 'inherit'], |
+ 'initial': 'auto', |
+ }], |
+ ['position', { |
+ 'values': ['static', 'relative', 'absolute', 'fixed', 'inherit'], |
+ 'initial': 'static', |
+ }], |
+ //FIXME quotes |
+ ['right', { |
+ 'values': [length, percentage, 'auto', 'inherit'], |
+ 'initial': 'auto', |
+ }], |
+ ['table-layout', { |
+ 'values': ['auto', 'fixed', 'inherit'], |
+ 'initial': 'auto', |
+ }], |
+ ['text-align', { |
+ 'values': ['left', 'right', 'center', 'justify', 'inherit'], |
+ 'initial': null, |
+ }], |
+ ['text-decoration', { |
+ 'values': ['none', 'underline', 'overline', 'line-through', 'blink', 'inherit'], |
+ 'initial': 'none', |
+ }], |
+ ['text-indent', { |
+ 'values': [length, percentage, 'inherit'], |
+ 'initial': 0, |
+ }], |
+ ['text-transform', { |
+ 'values': ['capitalize', 'uppercase', 'lowercase', 'none', 'inherit'], |
+ 'initial': 'none', |
+ }], |
+ ['top', { |
+ 'values': [length, percentage, 'auto', 'inherit'], |
+ 'initial': 'auto', |
+ }], |
+ ['unicode-bidi', { |
+ 'values': ['normal', 'embed', 'bidi-override', 'inherit'], |
+ 'initial': 'normal', |
+ }], |
+ ['vertical-align', { |
+ 'values': ['baseline', 'sub', 'super', 'top', 'text-top', 'middle', 'bottom', 'text-bottom', |
+ percentage, length, 'inherit'], |
+ 'initial': 'baseline', |
+ }], |
+ ['visibility', { |
+ 'values': ['visible', 'hidden', 'collapse', 'inherit'], |
+ 'initial': 'visible', |
+ }], |
+ ['white-space', { |
+ 'values': ['normal', 'pre', 'nowrap', 'pre-wrap', 'pre-line', 'inherit'], |
+ 'initial': 'normal', |
+ }], |
+ ['widows', { |
+ 'values': [nonzero_positive_integer, 'inherit'], |
+ 'initial': 2, |
+ }], |
+ ['width', { |
+ 'values': [length, percentage, 'auto', 'inherit'], |
+ 'initial': 'auto', |
+ }], |
+ ['word-spacing', { |
+ 'values': ['normal', length, 'inherit'], |
+ 'initial': 'normal', |
+ }], |
+ ['z-index', { |
+ 'values': ['auto', integer, 'inherit'], |
+ 'initial': 'auto', |
+ }], |
+ ] |
+ |
+ for (var index = 0; index < properties.length; index++) { |
+ test_property(properties[index]); |
+ } |
+ </script> |
+</body> |