diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/DIR_METADATA b/third_party/blink/web_tests/wpt_internal/sanitizer-api/DIR_METADATA index c1c57ff93ec12d..67c41ba17d0cf9 100644 --- a/third_party/blink/web_tests/wpt_internal/sanitizer-api/DIR_METADATA +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/DIR_METADATA @@ -2,7 +2,4 @@ monorail { component: "Blink>SecurityFeature>SanitizerAPI" } team_email: "security-dev@chromium.org" -wpt { - notify: YES -} diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/META.yml b/third_party/blink/web_tests/wpt_internal/sanitizer-api/META.yml deleted file mode 100644 index 7ac32665e19a0b..00000000000000 --- a/third_party/blink/web_tests/wpt_internal/sanitizer-api/META.yml +++ /dev/null @@ -1,5 +0,0 @@ -spec: https://wicg.github.io/sanitizer-api/ -suggested_reviewers: - - ivanlish - - mozfreddyb - - otherdaniel diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/README.md b/third_party/blink/web_tests/wpt_internal/sanitizer-api/README.md new file mode 100644 index 00000000000000..85001852e220df --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/README.md @@ -0,0 +1,9 @@ +Sanitizer API MVP tests + +This is a copy of external/wpt/sanitizer-api, in the last state that where +it passed for the initial Sanitizer "MVP" implementation. We put this copy +here in wpt_internal/sanitizer-api to ensure backward compatibility with +the launched Sanitizer state. I.e., as regression tests. + +The tests in external/wpt/sanitizer-api will be modified as the external +Sanitizer spec evolves. diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/element-set-sanitized-html.https.html b/third_party/blink/web_tests/wpt_internal/sanitizer-api/element-set-sanitized-html.https.html new file mode 100644 index 00000000000000..560e9cd6352328 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/element-set-sanitized-html.https.html @@ -0,0 +1,111 @@ + + + + + + + + + + + diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/idlharness.https.window.js b/third_party/blink/web_tests/wpt_internal/sanitizer-api/idlharness.https.window.js new file mode 100644 index 00000000000000..384317b8e55bd3 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/idlharness.https.window.js @@ -0,0 +1,12 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +idl_test( + ['sanitizer-api.tentative'], + ['html'], + idl_array => { + idl_array.add_objects({ + Sanitizer: ['new Sanitizer({})'] + }); + } +); diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-config.https.html b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-config.https.html new file mode 100644 index 00000000000000..4faa156ead3b15 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-config.https.html @@ -0,0 +1,90 @@ + + + + + + + + + + + diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-insecure-context.html b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-insecure-context.html new file mode 100644 index 00000000000000..4b185fd3a7443b --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-insecure-context.html @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-names.https.html b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-names.https.html new file mode 100644 index 00000000000000..8559a9bbcc8e40 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-names.https.html @@ -0,0 +1,91 @@ + + + + + + + + + + diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-query-config.https.html b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-query-config.https.html new file mode 100644 index 00000000000000..60cba2d618bbee --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-query-config.https.html @@ -0,0 +1,79 @@ + + + + + + + + + + diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitize.https.tentative.html b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitize.https.tentative.html index 9da517fe73d1b6..82eaeb48329f23 100644 --- a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitize.https.tentative.html +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitize.https.tentative.html @@ -10,9 +10,10 @@ diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitizeFor.https.tentative.html b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitizeFor.https.tentative.html new file mode 100644 index 00000000000000..77ae0abb6b0b30 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-sanitizeFor.https.tentative.html @@ -0,0 +1,101 @@ + + + + + + + + + + + + diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-secure-context.https.html b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-secure-context.https.html new file mode 100644 index 00000000000000..0e04e04d169a40 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-secure-context.https.html @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-unknown.https.html b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-unknown.https.html new file mode 100644 index 00000000000000..a703f42f4962e0 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/sanitizer-unknown.https.html @@ -0,0 +1,40 @@ + + + + + + + + + + diff --git a/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js b/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js index 33344a57bb9388..13c0912892224a 100644 --- a/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js +++ b/third_party/blink/web_tests/wpt_internal/sanitizer-api/support/testcases.sub.js @@ -1,5 +1,5 @@ const testcases = [ - // Test cases from issue WICG/sanitizer-api#84 + // Test cases from issue WICG/sanitizer-api#84 { config_input: {"allowElements":["svg","use"], "allowAttributes":{"xlink:href":["use"]}}, value: ``, @@ -23,5 +23,91 @@ const testcases = [ result: "", message: "Regression test for WICG/sanitizer-api#86." }, -]; + {config_input: {}, value: "test", result: "test", message: "string"}, + {config_input: {}, value: "bla", result: "bla", message: "html fragment"}, + {config_input: {}, value: "test", result: "test", message: "document"}, + {config_input: {}, value: "
test", result: "
test
", message: "html without close tag"}, + {config_input: {}, value: "", result: "

Click.

", message: "dropAttributes list {\"data-attribute-with-dashes\": [\"*\"]} with dom dataset js access"}, + {config_input: {allowAttributes: {"id": ["div"]}}, value: "

P

DIV
", result: "

P

DIV
", message: "allowAttributes list {\"id\": [\"div\"]} with id attribute"}, + {config_input: {allowAttributes: {"id": ["*"]}}, value: "

Click.

", result: "

Click.

", message: "allowAttributes list {\"id\": [\"*\"]} with id attribute and onclick scripts"}, + {config_input: {allowAttributes: {"*": ["a"]}}, value: "Click.
div
", result: "Click.
div
", message: "allowAttributes list {\"*\": [\"a\"]} with style attribute"}, + {config_input: {dropAttributes: {"style": ["*"]}, allowAttributes: {"style": ["*"]}}, value: "

Click.

", result: "

Click.

", message: "allowAttributes list has no influence to dropAttributes"}, + {config_input: {allowElements: ["template", "div"]}, value: "", result: "", message: "Template element"}, + {config_input: {}, value: "Click.", result: "Click.", message: "HTMLAnchorElement with javascript protocal"}, + {config_input: {}, value: "Click.", result: "Click.", message: "HTMLAnchorElement with javascript protocal start with space"}, + {config_input: {}, value: "Click.", result: "Click.", message: "HTMLAnchorElement"}, + {config_input: {}, value: "Click.", result: "Click.", message: "HTMLAreaElement with javascript protocal"}, + {config_input: {}, value: "Click.", result: "Click.", message: "HTMLAreaElement with javascript protocal start with space"}, + {config_input: {}, value: "Click.", result: "Click.", message: "HTMLAreaElement"}, + {config_input: {}, value: "
Click.
", result: "
Click.
", message: "HTMLFormElement with javascript action"}, + {config_input: {}, value: "
Click.
", result: "
Click.
", message: "HTMLFormElement with javascript action start with space"}, + {config_input: {}, value: "
Click.
", result: "
Click.
", message: "HTMLFormElement"}, + {config_input: {}, value: "Click.", result: "Click.", message: "HTMLInputElement with javascript formaction"}, + {config_input: {}, value: "Click.", result: "Click.", message: "HTMLInputElement with javascript formaction start with space"}, + {config_input: {}, value: "Click.", result: "Click.", message: "HTMLInputElement"}, + {config_input: {}, value: "", result: "", message: "HTMLButtonElement with javascript formaction"}, + {config_input: {}, value: "", result: "", message: "HTMLButtonElement with javascript formaction start with space"}, + {config_input: {}, value: "", result: "", message: "HTMLButtonElement"}, + {config_input: {}, value: "

Some text

Some more text

", result: "

Some text

Some more text

", message: "malformed HTML"}, + {config_input: {}, value: "

Some text

Some more text

", result: "

Some text

Some more text

", message: "HTML with comments; comments not allowed"}, + {config_input: {allowComments: true}, value: "

Some text

Some more text

", result: "

Some text

Some more text

", message: "HTML with comments; allowComments"}, + {config_input: {allowComments: false}, value: "

Some text

Some more text

", result: "

Some text

Some more text

", message: "HTML with comments; !allowComments"}, + {config_input: {}, value: "

commentintext

", result: "

commentintext

", message: "HTML with comments deeper in the tree"}, + {config_input: {allowComments: true}, value: "

commentintext

", result: "

commentintext

", message: "HTML with comments deeper in the tree, allowComments"}, + {config_input: {allowComments: false}, value: "

commentintext

", result: "

commentintext

", message: "HTML with comments deeper in the tree, !allowComments"}, + {config_input: {allowElements: ["svg"]}, value: "", result: "", message: "Unknown HTML names (HTMLUnknownElement instances) should not match elements parsed as non-HTML namespaces."}, + {config_input: {allowElements: ["div", "svg"]}, value: "
", result: "
", message: "Unknown HTML names (HTMLUnknownElement instances) should not match elements parsed as non-HTML namespaces when nested."}, + + // Case normalization (actually: lack of) + {config_input: {dropElements: ["I", "DL"]}, value: "
balabala
test
", result: "
balabala
test
", message: "dropElements list [\"I\", \"DL\"]}"}, + {config_input: {dropElements: ["i", "dl"]}, value: "
balabala
test
", result: "
balabala
", message: "dropElements list [\"i\", \"dl\"]}"}, + {config_input: {dropElements: ["i", "dl"]}, value: "
balabala
test
", result: "
balabala
", message: "dropElements list [\"i\", \"dl\"]} with uppercase HTML"}, + {config_input: {dropAttributes: {"ID": ["*"]}}, value: "

Click.

", result: "

Click.

", message: "dropAttributes list {\"ID\": [\"*\"]} with id attribute"}, + {config_input: {dropAttributes: {"ID": ["*"]}}, value: "

Click.

", result: "

Click.

", message: "dropAttributes list {\"ID\": [\"*\"]} with ID attribute"}, + {config_input: {dropAttributes: {"id": ["*"]}}, value: "

Click.

", result: "

Click.

", message: "dropAttributes list {\"id\": [\"*\"]} with ID attribute"}, + + // allowUnknownMarkup for elements (with and without) + {config_input: {dropElements: [123, [], "test", "i", "custom-element"]}, value: "
balabalatest
tcustom-element", result: "
balabala
", message: "dropElements with unknown elements and without allowUnknownMarkup"}, + {config_input: {blockElements: [123, [], "test", "i", "custom-element"]}, value: "
balabalatest
tcustom-element", result: "
balabalatest
", message: "blockElements with unknown elements and without allowUnknownMarkup"}, + {config_input: {allowElements: ["p", "test"]}, value: "
test
p
tt

div

test", result: "testptt

div

", message: "allowElements with unknown elements and without allowUnknownMarkup"}, + {config_input: {dropElements: [123, [], "test", "i", "custom-element"], allowUnknownMarkup: true}, value: "
balabalatest
tcustom-element", result: "
balabala
", message: "dropElements with unknown elements and with allowUnknownMarkup"}, + {config_input: {blockElements: [123, [], "test", "i", "custom-element"], allowUnknownMarkup: true}, value: "
balabalatest
tcustom-element", result: "
balabalatest
t", message: "blockElements with unknown elements and with allowUnknownMarkup"}, + {config_input: {allowElements: ["p", "test"], allowUnknownMarkup: true}, value: "
test
p
tt

div

test
", result: "testptt

div

test", message: "allowElements with unknown elements and with allowUnknownMarkup"}, + + // allowUnknownMarkup for attributes (with and without) + {config_input: {allowAttributes: {"hello": ["*"], "world": ["b"]}}, value: "
", result: "
", message: "allowAttributes unknown attributes and without allowUnknownMarkup"}, + {config_input: {allowAttributes: {"hello": ["*"], "world": ["b"]}, allowUnknownMarkup: true}, value: "
", result: "
", message: "allowAttributes unknown attributes and with allowUnknownMarkup"}, + {config_input: {dropAttributes: {"hello": ["*"], "world": ["b"]}}, value: "
", result: "
", message: "dropAttributes unknown attributes and without allowUnknownMarkup"}, + {config_input: {dropAttributes: {"hello": ["*"], "world": ["b"]}, allowUnknownMarkup: true}, value: "
", result: "
", message: "dropAttributes unknown attributes and with allowUnknownMarkup"}, +];