jquery/test/unit
Michał Gołębiowski-Owczarek de5398a6ad
Core:Manipulation: Add basic TrustedHTML support
This ensures HTML wrapped in TrustedHTML can be used as an input to jQuery
manipulation methods in a way that doesn't violate the
`require-trusted-types-for` Content Security Policy directive.
This commit builds on previous work needed for trusted types support, including
gh-4642 and gh-4724.

One restriction is that while any TrustedHTML wrapper should work as input
for jQuery methods like `.html()` or `.append()`, for passing directly to the
`jQuery` factory the string must start with `<` and end with `>`; no trailing
or leading whitespaces are allowed. This is necessary as we cannot parse out
a part of the input for further construction; that would violate the CSP rule -
and that's what's done to HTML input not matching these constraints.

No trusted types API is used explicitly in source; the majority of the work is
ensuring we don't pass the input converted to string to APIs that would
eventually assign it to `innerHTML`. This extra cautiousness is caused by the
API being Blink-only, at least for now.

The ban on passing strings to `innerHTML` means support tests relying on such
assignments are impossible. We don't currently have such tests on the `main`
branch but we used to have many of them in the 3.x & older lines. If there's
a need to re-add such a test, we'll need an escape hatch to skip them for apps
needing CSP-enforced TrustedHTML.

See https://web.dev/trusted-types/ for more information about TrustedHTML.

Fixes gh-4409
Closes gh-4927
Ref gh-4642
Ref gh-4724
2021-09-30 16:00:24 +02:00
..
ajax.js Ajax: Don't auto-execute scripts unless dataType provided 2021-01-26 15:58:29 +01:00
animation.js Build: Update Sinon from 2.3.7 to 7.3.1, other updates 2019-04-04 16:53:38 +02:00
attributes.js Attributes: Drop the toggleClass(boolean|undefined) signature 2020-09-01 10:42:03 +02:00
basic.js Manipulation: Make jQuery.htmlPrefilter an identity function 2020-03-16 21:49:29 +01:00
callbacks.js Build:Tests: Fix custom build tests, verify on Travis 2020-01-07 23:59:08 +01:00
core.js Core: Report browser errors in parseXML 2020-12-08 11:22:21 +01:00
css.js CSS: Trim whitespace surrounding CSS Custom Properties values 2021-09-23 13:35:18 +02:00
data.js Core: Drop support for Edge Legacy (i.e. non-Chromium Microsoft Edge) 2020-09-22 17:49:28 +02:00
deferred.js Build:Tests: Fix custom build tests, verify on Travis 2020-01-07 23:59:08 +01:00
deprecated.js Deprecated: Remove jQuery.trim 2020-05-18 23:20:38 +02:00
dimensions.js Dimensions: Add offset prop fallback to FF for unreliable TR dimensions 2021-01-11 11:56:08 -05:00
effects.js Core: Drop support for Edge Legacy (i.e. non-Chromium Microsoft Edge) 2020-09-22 17:49:28 +02:00
event.js Event: Don't break focus triggering after .on(focus).off(focus) 2021-05-10 18:59:14 +02:00
exports.js Build: Update test code for compatibility with QUnit 2.x (#4297) 2019-02-18 19:03:26 +01:00
manipulation.js Core:Manipulation: Add basic TrustedHTML support 2021-09-30 16:00:24 +02:00
offset.js Build: Rename master to main across the repository 2021-02-05 22:00:56 +01:00
queue.js Build:Tests: Fix custom build tests, verify on Travis 2020-01-07 23:59:08 +01:00
ready.js Tests: Pass a number of necessary done() calls to assert.async() 2020-03-02 22:15:06 +01:00
selector.js Tests: Make more tests run natively in Chrome & Firefox 2021-04-13 22:11:45 +02:00
serialize.js Build:Tests: Fix custom build tests, verify on Travis 2020-01-07 23:59:08 +01:00
support.js Dimensions: Add offset prop fallback to FF for unreliable TR dimensions 2021-01-11 11:56:08 -05:00
traversing.js Manipulation: Make jQuery.htmlPrefilter an identity function 2020-03-16 21:49:29 +01:00
tween.js Build: Update Sinon from 2.3.7 to 7.3.1, other updates 2019-04-04 16:53:38 +02:00
wrap.js Tests: Remove remaining obsolete jQuery.cache references 2020-05-18 18:43:01 +02:00