1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/* import-globals-from helper_attributes_test_runner.js */
"use strict";
// Tests that adding various types of attributes to nodes in the markup-view
// works as expected. Also checks that the changes are properly undoable and
// redoable. For each step in the test, we:
// - Create a new DIV
// - Make the change, check that the change was made as we expect
// - Undo the change, check that the node is back in its original state
// - Redo the change, check that the node change was made again correctly.
loadHelperScript("helper_attributes_test_runner.js");
var TEST_URL = "data:text/html,<div>markup-view attributes addition test</div>";
var TEST_DATA = [
{
desc: "Mixed single and double quotes",
text: "name=\"hi\" maxlength='not a number'",
expectedAttributes: {
maxlength: "not a number",
name: "hi",
},
},
{
desc: "Invalid attribute name",
text: "x='y' <why-would-you-do-this>=\"???\"",
expectedAttributes: {
x: "y",
},
},
{
desc: "Double quote wrapped in single quotes",
text: "x='h\"i'",
expectedAttributes: {
x: 'h"i',
},
},
{
desc: "Single quote wrapped in double quotes",
text: 'x="h\'i"',
expectedAttributes: {
x: "h'i",
},
},
{
desc: "No quote wrapping",
text: "a=b x=y data-test=Some spaced data",
expectedAttributes: {
a: "b",
x: "y",
"data-test": "Some",
spaced: "",
data: "",
},
},
{
desc: "Duplicate Attributes",
text: "a=b a='c' a=\"d\"",
expectedAttributes: {
a: "b",
},
},
{
desc: "Inline styles",
text: "style=\"font-family: 'Lucida Grande', sans-serif; font-size: 75%;\"",
expectedAttributes: {
style: "font-family: 'Lucida Grande', sans-serif; font-size: 75%;",
},
},
{
desc: "Object attribute names",
text: 'toString="true" hasOwnProperty="false"',
expectedAttributes: {
tostring: "true",
hasownproperty: "false",
},
},
{
desc: "Add event handlers",
text:
"onclick=\"javascript: throw new Error('wont fire');\" " +
"onload=\"alert('here');\"",
expectedAttributes: {
onclick: "javascript: throw new Error('wont fire');",
onload: "alert('here');",
},
},
];
add_task(async function () {
const { inspector } = await openInspectorForURL(TEST_URL);
await runAddAttributesTests(TEST_DATA, "div", inspector);
});
|