]> source.dussan.org Git - jquery.git/log
jquery.git
2 years agoBuild: Updating the 3.x-stable version to 3.6.2-pre.
Timmy Willison [Fri, 26 Aug 2022 17:54:28 +0000 (13:54 -0400)]
Build: Updating the 3.x-stable version to 3.6.2-pre.

2 years agoRelease: update AUTHORS.txt
Timmy Willison [Mon, 15 Aug 2022 15:54:39 +0000 (11:54 -0400)]
Release: update AUTHORS.txt

2 years agoDeprecated: Improve $.trim performance for strings with lots of whitespace
Vladimir Sitnikov [Wed, 20 Jul 2022 08:51:13 +0000 (11:51 +0300)]
Deprecated: Improve $.trim performance for strings with lots of whitespace

Regex imp implementation takes `O(N^2)` time to trim the string when
multiple adjacent spaces were present.

The new expression require that the "whitespace run" starts from
a non-whitespace to avoid `O(N^2)` behavior when the engine would
try matching `\s+$` at each space position.

Closes gh-5068

2 years agoDocs: Update webpack website in README
Simon Legner [Tue, 12 Jul 2022 15:16:24 +0000 (17:16 +0200)]
Docs: Update webpack website in README

Webpack has migrated to https://webpack.js.org/ since version 2.

Closes gh-5037

(cherry picked from commit 01819bc3bcc44282e5bb9301c3478d837d1e5152)

2 years agoTests: Exclude tests based on compilation flags, not API presence (3.x version)
Michał Gołębiowski-Owczarek [Tue, 12 Jul 2022 15:12:27 +0000 (17:12 +0200)]
Tests: Exclude tests based on compilation flags, not API presence (3.x version)

Introduces a new test API, `includesModule`. The method returns whether
a particular module like "ajax" or "deprecated" is included in the current
jQuery build; it handles the slim build as well. The util was created so that
we don't treat presence of particular APIs to decide whether to run a test as
then if we accidentally remove an API, the tests would still not fail.

Closes gh-5071
Fixes gh-5069
Ref gh-5046

(partially cherry picked from commit fae5fee8b435cc20352d28b0a384b9784b1ad9ed)

2 years agoBuild: Update GitHub Actions
Michał Gołębiowski-Owczarek [Mon, 27 Jun 2022 16:53:31 +0000 (18:53 +0200)]
Build: Update GitHub Actions

* Build(deps): Bump actions/cache from 2 to 3

Bumps [actions/cache](https://github.com/actions/cache) from 2 to 3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

* Build(deps): Bump actions/setup-node from 2.1.2 to 3.3.0

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 2.1.2 to 3.3.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v2.1.2...v3.3.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-major
...

* Build(deps): Bump actions/checkout from 2 to 3

Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Closes gh-5067

(cherry picked from commit 52f452b2e8881e5ec5c9e880e277c8ecf633e8dc)

2 years agoBuild: Add dependabot.yml config (GitHub Actions)
Christian Oliff [Mon, 27 Jun 2022 16:33:41 +0000 (01:33 +0900)]
Build: Add dependabot.yml config (GitHub Actions)

This makes dependabot issue automated PRs to update
GitHub Action versions monthly.

Closes gh-5057

(cherry picked from commit 3f8bb2a46daf76f1427f49810d06a210ffbc7016)

2 years agoBuild: Test on Node 17, update Grunt & `karma-*` packages
Michał Gołębiowski-Owczarek [Mon, 14 Mar 2022 16:58:41 +0000 (17:58 +0100)]
Build: Test on Node 17, update Grunt & `karma-*` packages

This adds testing on Node.js 17 in addition to the currently tested 10, 12, 14
and 16 versions.

Also, update Grunt & `karma-*` packages.

Testing in Karma on jsdom is broken in Node 17 at the moment; until we find
a fix, this change disables such testing on Node 17 or newer.

Node smoke tests & promises aplus tests are disabled on Node.js 10 as they
depend on jsdom and the latest jsdom version doesn't run properly on Node 10.

Closes gh-5023

(cherry picked from commit 2525cffc42934c0d5c7aa085bc45dd6a8282e840)

2 years agoTests: Workaround an XML parsing bug in Firefox
Michał Gołębiowski-Owczarek [Mon, 28 Feb 2022 17:26:53 +0000 (18:26 +0100)]
Tests: Workaround an XML parsing bug in Firefox

See https://bugzilla.mozilla.org/show_bug.cgi?id=1751796

Closes gh-5018

(cherry picked from commit af1cd6f218f699abc34b1582a910c0df00312aee)

2 years agoDocs: add link to preview the new CLAs
Timmy Willison [Mon, 7 Feb 2022 17:09:55 +0000 (12:09 -0500)]
Docs: add link to preview the new CLAs

Closes gh-5010

2 years agoCSS: Skip falsy values in `addClass( array )`, compress code
Michał Gołębiowski-Owczarek [Mon, 24 Jan 2022 17:56:49 +0000 (18:56 +0100)]
CSS: Skip falsy values in `addClass( array )`, compress code

This change makes jQuery skip falsy values in `addClass( array )`
& `removeClass( array )` instead of stopping iteration when the first falsy
value is detected. This makes code like:
```js
elem.addClass( [ "a", "", "b" ] );
```
add both the `a` & `b` classes.

The code was also optimized for size a bit so it doesn't increase the
minified gzipped size.

Fixes gh-4998
Closes gh-5003

(partially cherry picked from commit a338b407f2479f82df40635055effc163835183f)

2 years agoDocs: Replace `#NUMBER` Trac issue references with `trac-NUMBER`
Michał Gołębiowski-Owczarek [Wed, 12 Jan 2022 22:23:10 +0000 (23:23 +0100)]
Docs: Replace `#NUMBER` Trac issue references with `trac-NUMBER`

This is a version of gh-4993 for the `3.x-stable` branch.

The GitHub UI treats `#NUMBER` as referring to its own issues which is confusing
when in jQuery source it's usually referring to the old deprecated Trac instance
at https://bugs.jquery.com. This change replaces all such Trac references with
`trac-NUMBER`.

A few of the references came with the Sizzle integration and referred to the
Sizzle GitHub bug tracker. Those have been replaced with full links instead.

A new entry describing issue reference conventions has been added to README.

Closes gh-4994
Ref gh-4993
Ref 5d5ea015114092c157311c4948f7cc3d8c8e7f8a

2 years agoTests: lock colors version to 1.4.0
Timmy Willison [Mon, 10 Jan 2022 20:40:24 +0000 (15:40 -0500)]
Tests: lock colors version to 1.4.0

2 years agoDocs: remove expired links from old jquery source 4999/head
Timmy Willison [Fri, 7 Jan 2022 17:41:21 +0000 (12:41 -0500)]
Docs: remove expired links from old jquery source

Ref gh-4981
Ref gh-4991

2 years agoDocs: Remove links to Web Archive from source
Michał Gołębiowski-Owczarek [Tue, 4 Jan 2022 15:33:43 +0000 (16:33 +0100)]
Docs: Remove links to Web Archive from source

Neither of the removed links is crucial; one of them refers to a site that has
since started being malicious; while the Web Archive links remain safe, some
scanners warn about such links. Removing them is the safest thing to do.

Fixes gh-4981
Closes gh-4991

(cherry picked from commit e24f2dcf3f6bda1a672502e0233c732065cbbe89)

2 years agoBuild: Separate the install step from running tests in GitHub Actions
Michał Gołębiowski-Owczarek [Tue, 4 Jan 2022 15:27:42 +0000 (16:27 +0100)]
Build: Separate the install step from running tests in GitHub Actions

Also, update the "Run test" label to "Run tests".

Closes gh-4992

(cherry picked from commit eef972508c8be6cc3cd0039d34dc9fe16bac916c)

2 years agoCSS: Justify use of rtrim on CSS property values
Richard Gibson [Mon, 3 Jan 2022 12:28:49 +0000 (07:28 -0500)]
CSS: Justify use of rtrim on CSS property values

CSS does not acknowledge carriage return or form feed characters
as whitespace but it does replace them with whitespace, making it
acceptable to use `rtrim`.

Closes gh-4956

(cherry picked from commit 655c0ed5e204b1f6427e09d615a49586a7bc84eb)

2 years agoBuild: remove travis.yml and travis mentions from core (#4984)
Timmy Willison [Mon, 13 Dec 2021 17:22:34 +0000 (12:22 -0500)]
Build: remove travis.yml and travis mentions from core (#4984)

We've migrate jquery core to GH actions and have already disabled core builds on travis

2 years agoTests: Skip ETag AJAX tests on TestSwarm
Michał Gołębiowski-Owczarek [Wed, 1 Dec 2021 11:46:33 +0000 (12:46 +0100)]
Tests: Skip ETag AJAX tests on TestSwarm

TestSwarm is now proxied via Cloudflare which cuts out headers relevant for
ETag tests, failing them. We're still running those tests in Karma on Chrome
& Firefox (including Firefox ESR).

Closes gh-4974

(cherry picked from commit 00c060d1619d472a2d8c5b104ed76fa3afc2ce97)

2 years agoTests: Allow statusText to be "success" in AJAX tests
Michał Gołębiowski-Owczarek [Wed, 1 Dec 2021 11:46:17 +0000 (12:46 +0100)]
Tests: Allow statusText to be "success" in AJAX tests

In HTTP/2, status message is not supported and whatever is reported as
statusText differs between browsers. In Chrome & Safari it's "success", in
Firefox & IE it's "OK". So far "success" wasn't allowed. This made the tests
pass locally if you're running an HTTP/1.1 server but on TestSwarm which is
now proxied via an HTTP/2-equipped Cloudflare, the relevant test started failing
in Chrome & Safari.

Allow "success" to resolve the issue.

Closes gh-4973

(cherry picked from commit 19ced963c63372eae5aca9e1a4baec80b78a2b8e)

2 years agoBuild: Migrate CI to GitHub Actions 4979/head
ygj6 [Tue, 30 Nov 2021 23:02:57 +0000 (00:02 +0100)]
Build: Migrate CI to GitHub Actions

Closes gh-4800

(cherry picked from commit e23190e63cb121da79b92e6641a81a44dcea9252)

3 years agoDocs: Update the URL to the latest jQuery build in CONTRIBUTING.md
Michał Gołębiowski-Owczarek [Thu, 18 Nov 2021 21:54:34 +0000 (22:54 +0100)]
Docs: Update the URL to the latest jQuery build in CONTRIBUTING.md

It used to say https://code.jquery.com/jquery.js but that's a frozen URL
to jQuery 1.11.1. Let's switch that to the URL to the Git build, i.e.
https://releases.jquery.com/git/jquery-git.js.

Closes gh-4972

(cherry picked from commit 9bdb16cd19097da67950a707baac3980bda873f3)

3 years agoTests: Disable CSS Custom Properties tests in old Safari/iOS
Michał Gołębiowski-Owczarek [Mon, 15 Nov 2021 17:40:58 +0000 (18:40 +0100)]
Tests: Disable CSS Custom Properties tests in old Safari/iOS

Safari 9.1 & iOS 9.3 support CSS custom properties but that support
is buggy which crashes our tests. Disable those tests there.

See https://caniuse.com/css-variables

Closes gh-4966

3 years agoTests: Make Karma browser timeout larger than the QUnit one
Michał Gołębiowski-Owczarek [Fri, 29 Oct 2021 22:56:31 +0000 (00:56 +0200)]
Tests: Make Karma browser timeout larger than the QUnit one

Since the default Karma browser no activity timeout was lower than the QUnit
timeout, a single timing out test was interrupting the whole test run of
a browser.

The QUnit timeout is set to 1 minute so I set the Karma one to 2 minutes.

Closes gh-4943

(cherry picked from commit 4fd6912bfd8fffbfabc98a9b0789d28f10af0914)

3 years agoCSS: Remove a redundant extension from rtrimCSS inclusion in curCSS
Michał Gołębiowski-Owczarek [Mon, 18 Oct 2021 22:31:49 +0000 (00:31 +0200)]
CSS: Remove a redundant extension from rtrimCSS inclusion in curCSS

This breaks the AMD mode.

3 years agoCSS: Trim whitespace surrounding CSS Custom Properties values
fecore1 [Thu, 23 Sep 2021 11:35:18 +0000 (19:35 +0800)]
CSS: Trim whitespace surrounding CSS Custom Properties values

The spec has recently changed and CSS Custom Properties values are trimmed now.
This change makes jQuery polyfill that new behavior for all browsers.

Ref w3c/csswg-drafts#774
Fixes gh-4926
Closes gh-4930

(partially cherry picked from commit efadfe991a5c287af561a9326bf1427d726c91c1)

3 years agoDocs: Remove the CLA checkbox in the pull request template
Michał Gołębiowski-Owczarek [Mon, 18 Oct 2021 16:09:04 +0000 (18:09 +0200)]
Docs: Remove the CLA checkbox in the pull request template

The EasyCLA status check is required so this won't get missed. The old JSF CLA
is dead, the provided link doesn't return meaningful information. There's no
good replacement link for the old CLA; PR authors are just supposed to sign the
new CLA by clicking on a link posted by the EasyCLA bot when they submit their
first PR since EasyCLA was enabled for the repo.

Closes gh-4937

(cherry picked from commit e124893132d7a979d7987f978e968a1f889348b6)

3 years agoTests: Don't remove csp.log in the cspClean action of mock.php 4954/head
Michał Gołębiowski-Owczarek [Wed, 29 Sep 2021 22:08:47 +0000 (00:08 +0200)]
Tests: Don't remove csp.log in the cspClean action of mock.php

For some reason the current setup worked fine with Apache but broke for me when
I migrated to nginx.

Closes gh-4936

(cherry picked from commit 1019074f7b1df96ee9d6409ada3dc0562046f6c7)

3 years agoTests: Load the TestSwarm listener via HTTPS
Michał Gołębiowski-Owczarek [Wed, 29 Sep 2021 13:28:52 +0000 (15:28 +0200)]
Tests: Load the TestSwarm listener via HTTPS

(cherry picked from commit d225639a8ea62863482bd20249077688f60235db)

3 years agoManipulation: Don't remove HTML comments from scripts
Michał Gołębiowski-Owczarek [Mon, 19 Jul 2021 17:15:27 +0000 (19:15 +0200)]
Manipulation: Don't remove HTML comments from scripts

When evaluating scripts, jQuery strips out the possible wrapping HTML comment
and a CDATA section. However, all supported browsers are already doing that
when loading JS via appending a script tag to the DOM which is how we've been
doing `jQuery.globalEval` since jQuery 3.0.0. jQuery logic was imperfect, e.g.
it just stripped the `<!--` and `-->` markers, respectively at the beginning or
the end of the script contents. However, browsers are also stripping everything
following those markers in the same line, treating them as single-line comments
delimiters; this is now also mandated by ECMAScript 2015 in Annex B. Instead
of fixing the jQuery logic, just let the browser do its thing.

We still need to strip CDATA sections for backwards compatibility. This
shouldn't be needed as in XML documents they're already not visible when
inspecting element contents and in HTML documents they have no meaning but
we're preserving that logic for backwards compatibility. This will be removed
completely in 4.0.

Fixes gh-4904
Closes gh-4905
Ref gh-4906

3 years agoBuild: Test on Node.js 16 instead of 15
Michał Gołębiowski-Owczarek [Mon, 12 Jul 2021 16:34:56 +0000 (18:34 +0200)]
Build: Test on Node.js 16 instead of 15

Node.js 10 is kept for now despite being EOL'd as that's what our current
infrastructure relies on.

Closes gh-4902

(cherry picked from commit 0f623fdc8db128657716290cb7d57430e224c977)

3 years agoTests: Switch background image from online file to local 1x1.jpg
Timo Tijhof [Mon, 24 May 2021 16:23:50 +0000 (17:23 +0100)]
Tests: Switch background image from online file to local 1x1.jpg

Also, remove unused `expected` property in `css` test cases.

Closes gh-4866

(cherry picked from commit 482f846203e82b1c2620f580e483bf41d11f9f49)

3 years agoEvent: Don't break focus triggering after `.on(focus).off(focus)`
Michał Gołębiowski-Owczarek [Mon, 10 May 2021 16:59:14 +0000 (18:59 +0200)]
Event: Don't break focus triggering after `.on(focus).off(focus)`

The `_default` function in the special event settings for focus/blur has
always returned `true` since gh-4813 as the event was already being fired
from `leverageNative`. However, that only works if there's an active handler
on that element; this made a quick consecutive call:

```js
elem.on( "focus", function() {} ).off( "focus" );
```

make subsequent `.trigger( "focus" )` calls to not do any triggering.

The solution, already used in a similar `_default` method for the `click` event,
is to check for the `dataPriv` entry on the element for the focus event
(similarly for blur).

Fixes gh-4867
Closes gh-4885

(cherry picked from commit e539bac79e666bba95bba86d690b4e609dca2286)

3 years agoBuild: Take core-js from the external directory as well
Michał Gołębiowski-Owczarek [Tue, 13 Apr 2021 20:10:09 +0000 (22:10 +0200)]
Build: Take core-js from the external directory as well

All the other files were already taken from the external directory.
The fact core-js was taken from node_modules broke IE core tests on TestSwarm.

Ref gh-4865
Ref gh-4870

(partially cherry picked from 345cd22e5664655ed315958ed2056610607c12ef)

3 years agoTests: Strip untypical callback parameter characters from mock.php
Michał Gołębiowski-Owczarek [Tue, 13 Apr 2021 20:13:48 +0000 (22:13 +0200)]
Tests: Strip untypical callback parameter characters from mock.php

Only allow alphanumeric characters & underscores for callback parameters.
The change is done both for the PHP server as well as the Node.js-based version.
This is only test code so we're not fixing any security issue but it happens
often enough that the whole jQuery repository directory structure is deployed
onto the server with PHP enabled that it makes is easy to introduce security
issues if this cleanup is not done.

Ref gh-4764
Closes gh-4871

(cherry picked from a70274632dc19ff4a64d7bb7657a2cc647ff38b9)

3 years agoBuild: Updating the 3.x-stable version to 3.6.1-pre.
Timmy Willison [Tue, 2 Mar 2021 17:12:18 +0000 (12:12 -0500)]
Build: Updating the 3.x-stable version to 3.6.1-pre.

3 years agoRelease: remove the need to install grunt globally
Timmy Willison [Mon, 1 Mar 2021 22:48:55 +0000 (17:48 -0500)]
Release: remove the need to install grunt globally

3 years agoRelease: update version to 3.6.0-pre
Timmy Willison [Mon, 1 Mar 2021 22:44:10 +0000 (17:44 -0500)]
Release: update version to 3.6.0-pre

3 years agoRelease: drop the need for npm as a local dependency
Timmy Willison [Mon, 1 Mar 2021 22:41:18 +0000 (17:41 -0500)]
Release: drop the need for npm as a local dependency

- Not meant to be used like that anymore

3 years agoRelease: upgrade release dependencies
Timmy Willison [Mon, 1 Mar 2021 21:48:41 +0000 (16:48 -0500)]
Release: upgrade release dependencies

3 years agoRelease: update AUTHORS.txt
Timmy Willison [Mon, 1 Mar 2021 19:40:03 +0000 (14:40 -0500)]
Release: update AUTHORS.txt

3 years agoSelector: Update Sizzle from 2.3.5 to 2.3.6
Michał Gołębiowski-Owczarek [Wed, 17 Feb 2021 21:19:56 +0000 (22:19 +0100)]
Selector: Update Sizzle from 2.3.5 to 2.3.6

Fixes gh-4782
Close gh-4846

3 years agoSupport: ensure display is set to block for the support div (#4844)
Timmy Willison [Tue, 16 Feb 2021 19:34:14 +0000 (14:34 -0500)]
Support: ensure display is set to block for the support div (#4844)

- Fixes an issue with the support test in iframes in Android 8 Chrome 86+,
  where display: inline resulted in unexpected height values.

Fixes gh-4832

3 years agoBuild: Rename master to main across the repository
Michał Gołębiowski-Owczarek [Fri, 5 Feb 2021 21:00:56 +0000 (22:00 +0100)]
Build: Rename master to main across the repository

The default branch was updated, this updates the remaining occurrences in code
& comments.

Closes gh-4838

(cherry picked from commit 8ae477a432f0924cd4bd3bdeaef2c4c15e483a8f)

3 years agoDeferred: Rename master to primary
Michał Gołębiowski-Owczarek [Tue, 12 Jan 2021 19:56:51 +0000 (20:56 +0100)]
Deferred: Rename master to primary

Closes gh-4828

(cherry picked from a32cf6324f8f2190e66a687e94be9687ebf840b7)

3 years agoTests: Fix tests for not auto-executing scripts without dataType
Michał Gołębiowski-Owczarek [Mon, 11 Jan 2021 17:20:36 +0000 (18:20 +0100)]
Tests: Fix tests for not auto-executing scripts without dataType

Two issues are fixed in testing for responses with a script Content-Type not
getting auto-executed unless an explicit `dataType: "script"` is provided:
* the test is now using a correct "text/javascript" Content-Type; it was using
  "text/html" until now which doesn't really check if the fix works
* the Node.js based version of the tests didn't account for an empty `header`
  query string parameter

Closes gh-4824
Ref gh-2432
Ref gh-2588
Ref 39cdb8c9aa0fde68f733553ba050a2ba9d86474c

(cherry picked from commit d38528b17a846b7ca4513b41150a05436546292d)

3 years agoDimensions: Modify reliableTrDimensions support test to account for FF
Timmy Willison [Mon, 11 Jan 2021 16:56:38 +0000 (11:56 -0500)]
Dimensions: Modify reliableTrDimensions support test to account for FF

Firefox incorrectly (or perhaps correctly) includes table borders in computed
dimensions, but they are the only one. Workaround this by testing for it and
falling back to offset properties

Fixes gh-4529
Closes gh-4807

3 years agoTests: Skip the jQuery.parseXML error reporting test in Legacy Edge
Michał Gołębiowski-Owczarek [Tue, 8 Dec 2020 13:27:05 +0000 (14:27 +0100)]
Tests: Skip the jQuery.parseXML error reporting test in Legacy Edge

Legacy Edge, similarly to IE, doesn't report XML parsing errors but just tries
to render the invalid document. Skip the error reporting test there, Edge Legacy
will return a generic "Invalid XML" error, just like IE.

Ref gh-4816

3 years agoTests: Fix the jQuery.parseXML error reporting test
Michał Gołębiowski-Owczarek [Tue, 8 Dec 2020 11:02:10 +0000 (12:02 +0100)]
Tests: Fix the jQuery.parseXML error reporting test

Changes:
* Remove incorrect `QUnit.testUnlessIE` usage as that util is only available
  on `master`, not here.
* Change `firstCall.lastArg` to `firstCall.args[ 0 ]` as the former API is not
  available in older Sinon versions.

3 years agoCore: Report browser errors in parseXML
Michał Gołębiowski-Owczarek [Tue, 8 Dec 2020 10:22:21 +0000 (11:22 +0100)]
Core: Report browser errors in parseXML

Fixes gh-4784
Closes gh-4816

(cherry picked from commit 8969732518470a7f8e654d5bc5be0b0076cb0b87)

3 years agoEvent: Make focus re-triggering not focus the original element back
Michał Gołębiowski-Owczarek [Mon, 7 Dec 2020 19:28:44 +0000 (20:28 +0100)]
Event: Make focus re-triggering not focus the original element back

If during a focus handler another focus event is triggered:

```js
elem1.on( "focus", function() {
elem2.trigger( "focus" );
} );
```

due to their synchronous nature everywhere outside of IE the hack added in
gh-4279 to leverage native events causes the native `.focus()` method to be
called last for the initial element, making it steal the focus back. Since
the native method is already being called in `leverageNative`, we can skip that
final call.

This aligns with changes to the `_default` method for the `click` event that
were added when `leverageNative` was introduced there.

A side effect of this change is that now `focusin` will only propagate to the
document for the last focused element. This is a change in behavior but it also
aligns us better with how this works with native methods.

Fixes gh-4382
Closes gh-4813
Ref gh-4279

(cherry picked from commit dbcffb396c2db61ff96edc4162602e850797d61f)

4 years agoBuild: Fix Travis build on Node.js 15 with npm 7
Michał Gołębiowski-Owczarek [Tue, 17 Nov 2020 16:05:41 +0000 (17:05 +0100)]
Build: Fix Travis build on Node.js 15 with npm 7

The `grunt-karma` version we used required Karma 3.x and it's now enforced
in npm 7. Update a few Karma & Grunt-related packages to resolve the issue.

Closes gh-4810

4 years agoBuild: Test on Node.js 15
Michał Gołębiowski-Owczarek [Wed, 11 Nov 2020 22:02:22 +0000 (23:02 +0100)]
Build: Test on Node.js 15

Also, run browser tests on Node 14 instead of 12.

Closes gh-4802

(cherry-picked from 6984d1747623dbc5e87fd6c261a5b6b1628c107c)

4 years agoEvent: Don't crash if an element is removed on blur
Michał Gołębiowski-Owczarek [Mon, 19 Oct 2020 19:17:51 +0000 (21:17 +0200)]
Event: Don't crash if an element is removed on blur

In Chrome, if an element having a `focusout` handler is blurred by
clicking outside of it, it invokes the handler synchronously. If
that handler calls `.remove()` on the element, the data is cleared,
leaving private data undefined. We're reading a property from that
data so we need to guard against this.

Fixes gh-4417
Closes gh-4799

(cherry picked from commit 5c2d08704e289dd2745bcb0557b35a9c0e6af4a4)

4 years agoTests: Recognize callbacks with dots in the Node.js mock server
Michał Gołębiowski-Owczarek [Wed, 2 Sep 2020 16:42:52 +0000 (18:42 +0200)]
Tests: Recognize callbacks with dots in the Node.js mock server

This aligns the Node.js server with the previous PHP one in sending `mock.php`
as a callback if there's no `callback` parameter in the query string which is
triggered by a recently added test. This prevents the request crashing on that
Node.js server and printing a JS error:
```
TypeError: Cannot read property '1' of null
```

Closes gh-4764
Ref gh-4754

(cherry picked from commit df6858df2ed3fc5c424591a5e09b900eb4ce0417)

4 years agoTests: Skip the "jQuery.ajax() on unload" test in Safari
Michał Gołębiowski-Owczarek [Wed, 2 Sep 2020 16:04:44 +0000 (18:04 +0200)]
Tests: Skip the "jQuery.ajax() on unload" test in Safari

The test has been already skipped in Chrome as it dropped support for such
requests and now Safari has joined the squad.

This will resolve AJAX test errors we've had for a while in Safari 13 & iOS 13.

Closes gh-4779

(cherry picked from commit c18dc49699bc27481a4af36ed1a0ee1b19c6eb03)

4 years agoEvent: Remove the event.which shim
Michał Gołębiowski-Owczarek [Wed, 26 Aug 2020 12:10:33 +0000 (14:10 +0200)]
Event: Remove the event.which shim

All supported browsers implement this property by themselves. The shim was only
needed for IE <9.

Fixes gh-3235
Closes gh-4765
Ref gh-4755

(cherry picked from commit 1a5fff4c169dbaa2df72c656868bcf60ed4413d0)

4 years agoAjax: Execute JSONP error script responses
Dallas Fraser [Tue, 25 Aug 2020 19:41:06 +0000 (15:41 -0400)]
Ajax: Execute JSONP error script responses

Issue gh-4379 was meant to be a bug fix but the JSONP case is a bit special:
under the hood it's a script but it simulates JSON responses in an environment
without a CORS setup and sending JSON payloads on error responses is quite
typical there.

This commit makes JSONP error responses still execute the payload. The regular
script error responses continue to be skipped.

Fixes gh-4771
Closes gh-4773

(cherry picked from commit a1e619b03a557b47c3e26a5e74af12b63a0d5e73)

4 years agoTests: Remove an unused local variable
Wonhyoung Park [Thu, 13 Aug 2020 11:24:30 +0000 (20:24 +0900)]
Tests: Remove an unused local variable

Closes gh-4769

(cherry picked from commit 82b87f6f0e45ca4e717b4e3a4a20a592709a099f)

4 years agoCore: Bring back QtWebKit support for jQuery 3.x
Natalia Sroka [Mon, 27 Jul 2020 20:01:55 +0000 (22:01 +0200)]
Core: Bring back QtWebKit support for jQuery 3.x

Allow jQuery to recognize that DOM types such as HTMLCollection
or NodeList are not functions.

Fixes gh-4756
Closes gh-4757

4 years agoRevert "Offset: Send px-ed strings to .css()"
Michał Gołębiowski-Owczarek [Mon, 20 Jul 2020 19:29:40 +0000 (21:29 +0200)]
Revert "Offset: Send px-ed strings to .css()"

The way warning against number values in `.css()` setters was done in
jquery/jquery-migrate#337 and later refined in jquery/jquery-migrate#348
there's no need to send px-ed strings for `top` & `left` as they already
don't get the "px" suffix.

This reverts commit 57038faebc6ece5bd666c28303f8a91ff59153eb.

Closes gh-4753
Ref jquery/jquery-migrate/pull/337
Ref jquery/jquery-migrate/pull/348

4 years agoBuild: Fix commitplease husky config
Beatriz Rezener [Mon, 20 Jul 2020 17:06:39 +0000 (14:06 -0300)]
Build: Fix commitplease husky config

Fixes gh-4735
Closes gh-4737

(cherry picked from commit 3a1b338a7a579a45543b031a003abdce4dc6ac67)

4 years agoBuild: Update eslint-config-jquery, fix linting violations
Michał Gołębiowski-Owczarek [Mon, 18 May 2020 20:25:49 +0000 (22:25 +0200)]
Build: Update eslint-config-jquery, fix linting violations

Closes gh-4696
Ref jquery/eslint-config-jquery#15
Ref jquery/eslint-config-jquery#16

(cherry picked from commit ef4d6ca6c3a1b276fedc27b1f3a18823276f01a3)

4 years agoTests: Remove remaining obsolete jQuery.cache references
Michał Gołębiowski-Owczarek [Mon, 18 May 2020 16:43:01 +0000 (18:43 +0200)]
Tests: Remove remaining obsolete jQuery.cache references

PR gh-4586 removed some of those but not all.

Closes gh-4715
Ref gh-4586

(cherry picked from commit d96111e18b42ae1bc7def72a8a0d156ea39e4d0e)

4 years agoTests: Remove obsolete jQuery data tests
Michał Gołębiowski-Owczarek [Mon, 13 Jan 2020 18:23:01 +0000 (19:23 +0100)]
Tests: Remove obsolete jQuery data tests

The tests relied on `jQuery.cache` so they only ever worked in jQuery 1.x.

Closes gh-4586

(cherry picked from commit eb35be528fdea40faab4d89ac859d38dfd024271)

4 years agoDocs: Change JS Foundation mentions to OpenJS Foundation
Michał Gołębiowski-Owczarek [Mon, 18 May 2020 16:41:32 +0000 (18:41 +0200)]
Docs: Change JS Foundation mentions to OpenJS Foundation

Closes gh-4711

(cherry picked from 11611967adf2bd9ff4304132f917629ec1134049)

4 years agoBuild: Correct code indentations based on jQuery Style Guide
Wonseop Kim [Tue, 5 May 2020 08:49:27 +0000 (17:49 +0900)]
Build: Correct code indentations based on jQuery Style Guide

1. Correct code indentations based on jQuery Style Guide
   (contribute.jquery.org/style-guide/js/#spacing).
2. Add rules to "src/.eslintrc.json" to enable "enforcing consistent
   indentation", with minimal changes to the current code.

Closes gh-4672

(cherry picked from 3d62d5704989f17d3a20ae7521d52e9c8c60b4ee)

4 years agoBuild: Updating the 3.x-stable version to 3.5.2-pre.
Timmy Willison [Mon, 4 May 2020 22:51:05 +0000 (18:51 -0400)]
Build: Updating the 3.x-stable version to 3.5.2-pre.

4 years agoRelease: update AUTHORS.txt
Timmy Willison [Mon, 4 May 2020 21:51:40 +0000 (17:51 -0400)]
Release: update AUTHORS.txt

4 years agoTests: Workaround failures in recent XSS tests in iOS 8 - 12
Michał Gołębiowski-Owczarek [Thu, 30 Apr 2020 19:25:29 +0000 (21:25 +0200)]
Tests: Workaround failures in recent XSS tests in iOS 8 - 12

iOS 8-12 parses `<noembed>` tags differently, executing this code. This is no
different to native behavior on that OS, though, so just accept it.

Ref gh-4685
Closes gh-4694

(cherry picked from commit 11066a9e6ac183dd710d1bc7aa74a3f809757136)

4 years agoDocs: Fix typos
Pierre Grimaud [Wed, 29 Apr 2020 19:18:23 +0000 (21:18 +0200)]
Docs: Fix typos

Closes gh-4686

(cherry picked from commit 1a7332ce83cdee7d6cd9d45c2a4b83067f53f14b)

4 years agoTests: Add tests for recently fixed manipulation XSS issues
Michał Gołębiowski-Owczarek [Wed, 29 Apr 2020 14:39:04 +0000 (16:39 +0200)]
Tests: Add tests for recently fixed manipulation XSS issues

Closes gh-4685
Ref gh-4642
Ref gh-4647

(cherry picked from commit dc06d68bdc4c2562b5cc530f21e668a17d78ee2d)

4 years agoTests: Cleanup `window` & `document` handlers in a new event test
Michał Gołębiowski-Owczarek [Mon, 27 Apr 2020 19:37:06 +0000 (21:37 +0200)]
Tests: Cleanup `window` & `document` handlers in a new event test

The "focusin on document & window" test didn't cleanup `focusout` handlers
on `window` & `document`. This has been fixed.

Ref gh-4657

4 years agoTests: Fix flakiness in the "jQuery.ajax() - JSONP - Same Domain" test
Michał Gołębiowski-Owczarek [Mon, 27 Apr 2020 18:22:39 +0000 (20:22 +0200)]
Tests: Fix flakiness in the "jQuery.ajax() - JSONP - Same Domain" test

The "jQuery.ajax() - JSONP - Same Domain" test is firing a request with
a duplicate "callback" parameter, something like (simplified):
```
mock.php?action=jsonp&callback=jQuery_1&callback=jQuery_2
```

There was a difference in how the PHP & Node.js implementations of the jsonp
action in the mock server handled situations like that. The PHP implementation
was using the latest parameter while the Node.js one was turning it into an
array but the code didn't handle this situation. Because of how JavaScript
stringifies arrays, while the PHP implementation injected the following code:
```js
jQuery_2(payload)
```
the Node.js one was injecting the following one:
```js
jQuery_1,jQuery_2(payload)
```
This is a comma expression in JavaScript; it so turned out that in the majority
of cases both callbacks were identical so it was more like:
```js
jQuery_1,jQuery_1(payload)
```
which evaluates to `jQuery_1(payload)` when `jQuery_1` is defined, making the
test go as expected. In many cases, though, especially on Travis, the callbacks
were different, triggering an `Uncaught ReferenceError` error & requiring
frequent manual re-runs of Travis builds.

This commit fixes the logic in the mock Node.js server, adding special handling
for arrays.

Closes gh-4687

(cherry picked from commit 7b0864d0539bbfbb01d88d9bc95369580ffd99bc)

4 years agoDocs: Update the link to the jsdom repository
Michał Gołębiowski-Owczarek [Sat, 25 Apr 2020 18:47:25 +0000 (20:47 +0200)]
Docs: Update the link to the jsdom repository

Closes gh-4684

(cherry picked from commit a62309e01b3c76d2b73560ca666c454b7bbfcb77)

4 years agoBuild: Test on Node.js 14, stop testing on Node.js 8 & 13
Michał Gołębiowski-Owczarek [Thu, 23 Apr 2020 11:24:35 +0000 (13:24 +0200)]
Build: Test on Node.js 14, stop testing on Node.js 8 & 13

Closes gh-4678

(cherry picked from commit 88eb22e0599d546f98f6145c53deb086e1d82857)

4 years agoBuild: Enable reportUnusedDisableDirectives in ESLint
Ed S [Mon, 20 Apr 2020 17:01:20 +0000 (18:01 +0100)]
Build: Enable reportUnusedDisableDirectives in ESLint

This forbids unnecessary `eslint-disable` comments.

Ref gh-4095
Closes gh-4520

(cherry picked from 46f9810b73a7ad446d7c3711faf92f56b67df3c1)

4 years agoData: Make the data object a regular object again
Michał Gołębiowski-Owczarek [Mon, 20 Apr 2020 16:11:18 +0000 (18:11 +0200)]
Data: Make the data object a regular object again

The change in gh-4603 made the object returned by `elem.data()`
a prototype-less object. That's a desired change to support keys
colliding with `Object.prototype` properties but it's also a breaking
change so it has to wait for jQuery 4.0.0.

A 3.x-only test was added to avoid breaking it in the future on this
branch.

Fixes gh-4665
Ref gh-4603
Closes gh-4666

4 years agoDocs: Use https for hyperlinks in README
Jonathan [Fri, 17 Apr 2020 09:46:49 +0000 (11:46 +0200)]
Docs: Use https for hyperlinks in README

Closes gh-4673

(cherry picked from commit 73415da25d964ee31ec1804d55f5af0199a1378e)

4 years agoBuild: Updating the 3.x-stable version to 3.5.1-pre.
Michał Gołębiowski-Owczarek [Fri, 10 Apr 2020 15:47:07 +0000 (17:47 +0200)]
Build: Updating the 3.x-stable version to 3.5.1-pre.

4 years agoRelease: Update AUTHORS.txt
Michał Gołębiowski-Owczarek [Fri, 10 Apr 2020 14:45:30 +0000 (16:45 +0200)]
Release: Update AUTHORS.txt

4 years agoAjax: Do not execute scripts for unsuccessful HTTP responses
Sean Robinson [Fri, 26 Apr 2019 14:25:08 +0000 (07:25 -0700)]
Ajax: Do not execute scripts for unsuccessful HTTP responses

The script transport used to evaluate fetched script sources which is
undesirable for unsuccessful HTTP responses. This is different to other data
types where such a convention was fine (e.g. in case of JSON).

(cherry picked from 50871a5a85cc802421b40cc67e2830601968affe)

Fixes gh-4250
Fixes gh-4655
Closes gh-4379

4 years agoAjax: Overwrite s.contentType with content-type header value, if any
Christian Wenz [Mon, 6 Apr 2020 19:15:55 +0000 (21:15 +0200)]
Ajax: Overwrite s.contentType with content-type header value, if any

This fixes the issue of "%20" in POST data being replaced with "+"
even for requests with content-type different from
"application/x-www-form-urlencoded", e.g. for "application/json".

Fixes gh-4119
Closes gh-4650

(cherry picked from 7fb90a6beaeffe16699800f73746748f6a5cc2de)

Co-authored-by: Richard Gibson <richard.gibson@gmail.com>
Co-authored-by: Michał Gołębiowski-Owczarek <m.goleb@gmail.com>
4 years agoTests: Blacklist one focusin test in IE
Michał Gołębiowski-Owczarek [Mon, 6 Apr 2020 18:56:02 +0000 (20:56 +0200)]
Tests: Blacklist one focusin test in IE

The main part of the test was checking that focusin handling in an iframe works
and that's still checked. The test was also checking that it doesn't propagate
to the parent document, though, and, apparently, in IE it does. This one test
is now blacklisted in IE.

4 years agoEvent: Use only one focusin/out handler per matching window & document
Michał Gołębiowski-Owczarek [Mon, 6 Apr 2020 18:34:40 +0000 (20:34 +0200)]
Event: Use only one focusin/out handler per matching window & document

The `doc` variable in:
https://github.com/jquery/jquery/blob/3.4.1/src/event/focusin.js#L30
matched `document` for `document` & `window` for `window`, creating two
separate wrapper event handlers & calling handlers twice if at least one
`focusout` or `focusin` handler was attached on *both* `window` & `document`,
or on `window` & another regular node.

Also, fix the "focusin from an iframe" test to actually verify the behavior
from commit 1cecf64e5aa415367a7dae0b55c2dd17b591442d - the commit that
introduced the regression - to make sure we don't regress on either front.

Fixes gh-4652
Closes gh-4656

4 years agoManipulation: Skip the select wrapper for <option> outside of IE 9
Michał Gołębiowski-Owczarek [Mon, 30 Mar 2020 18:15:09 +0000 (20:15 +0200)]
Manipulation: Skip the select wrapper for <option> outside of IE 9

Closes gh-4647

4 years agoManipulation: Make jQuery.htmlPrefilter an identity function
Michał Gołębiowski-Owczarek [Mon, 16 Mar 2020 20:49:29 +0000 (21:49 +0100)]
Manipulation: Make jQuery.htmlPrefilter an identity function

Closes gh-4642

(cherry picked from 90fed4b453a5becdb7f173d9e3c1492390a1441f)

4 years agoSelector: Update Sizzle from 2.3.4 to 2.3.5
Michał Gołębiowski-Owczarek [Mon, 16 Mar 2020 16:34:27 +0000 (17:34 +0100)]
Selector: Update Sizzle from 2.3.4 to 2.3.5

Fixes gh-4424
Fixes gh-4435
Fixes gh-4441
Fixes gh-4453
Closes gh-4641

4 years agoBuild: Resolve Travis config warnings
Michał Gołębiowski-Owczarek [Fri, 13 Mar 2020 16:16:07 +0000 (17:16 +0100)]
Build: Resolve Travis config warnings

Travis reports warnings in our config:
* root: deprecated key sudo (The key `sudo` has no effect anymore.)
* root: missing os, using the default linux
* root: key matrix is an alias for jobs, using jobs

They are all now resolved.

Closes gh-4636

(cherry picked from commit 5b94a4f847fe2328b1b8f2340b11b6031f95d2d1)

4 years agoData:Event:Manipulation: Prevent collisions with Object.prototype
Michał Gołębiowski-Owczarek [Mon, 2 Mar 2020 22:02:42 +0000 (23:02 +0100)]
Data:Event:Manipulation: Prevent collisions with Object.prototype

Make sure events & data keys matching Object.prototype properties work.
A separate fix for such events on cloned elements was added as well.

Fixes gh-3256
Closes gh-4603

(cherry picked from commit 9d76c0b163675505d1a901e5fe5249a2c55609bc)

4 years agoRelease: Use an in-repository dist README fixture
Michał Gołębiowski-Owczarek [Mon, 2 Mar 2020 21:42:38 +0000 (22:42 +0100)]
Release: Use an in-repository dist README fixture

Use a dist README fixture kept in the jQuery repository instead of modifying
an existing one. This makes the jQuery repository the single source of truth
when it comes to jQuery releases and it makes it easier to make changes to
README without worrying how it will affect older jQuery lines.

The commit also ES6ifies build/release.js & build/release/dist.js

Closes gh-4614

(cherry picked from commit 358b769a00c3a09a8ec621b8dcb2d5e31b7da69a)

4 years agoBuild: Enable ESLint one-var rule for var declarations in browser code
Michał Gołębiowski-Owczarek [Mon, 2 Mar 2020 21:25:35 +0000 (22:25 +0100)]
Build: Enable ESLint one-var rule for var declarations in browser code

Node.js code is written more & more commonly in ES6+ so it doesn't make sense
to enable it there. There are many violations in test code so it's disabled
there as well.

Closes gh-4615

(cherry picked from commit 4a7fc8544e2020c75047456d11979e4e3a517fdf)

4 years agoTests: Pass a number of necessary done() calls to assert.async()
Michał Gołębiowski-Owczarek [Mon, 2 Mar 2020 21:15:06 +0000 (22:15 +0100)]
Tests: Pass a number of necessary done() calls to assert.async()

It is no longer needed to create `done` wrappers in tests that require
multiple async operations to complete.

Closes gh-4633

(cherry picked from commit 364476c3dc1231603ba61fc08068fa89fb095e1a)

4 years agoBuild: Test the no-Sizzle build on Travis
Michał Gołębiowski-Owczarek [Mon, 2 Mar 2020 19:43:11 +0000 (20:43 +0100)]
Build: Test the no-Sizzle build on Travis

Closes gh-4635

4 years agoBuild: Update .mailmap & AUTHORS.txt
Michał Gołębiowski-Owczarek [Mon, 24 Feb 2020 21:25:43 +0000 (22:25 +0100)]
Build: Update .mailmap & AUTHORS.txt

Partially based on gh-4613.

Ref gh-4613
Ref 721744a9fab5b597febea64e466272eabfdb9463

4 years agoCore:Ajax: Align nonce & global with master, fix an AMD issue
Michał Gołębiowski-Owczarek [Mon, 24 Feb 2020 18:10:03 +0000 (19:10 +0100)]
Core:Ajax: Align nonce & global with master, fix an AMD issue

This commit aligns the `3.x-stable` branch with `master` in two aspects:
1. It migrates the nonce module to return an object instead of a primitive
variable. This had to be changed on `master` as in ES modules you export
live read-only bindings to variables, meaning you can't increment the nonce
directly. Also, the way it was done so far was working differently in AMD & the
single built file - in the built file one nonce variable was declared, accessed
and incremented. In AMD mode separate instances were create for each module
that depend on the nonce module, creating unintended nonce clashes.
2. Whether the `noGlobal` parameter was set to `true` is now checked using the
typeof operator to align with `master`.

Closes gh-4612
Ref gh-4541
Ref d0ce00cdfa680f1f0c38460bc51ea14079ae8b07

4 years agoCore: Fire iframe script in its context, add doc param in globalEval
Michał Gołębiowski-Owczarek [Mon, 10 Feb 2020 18:17:22 +0000 (19:17 +0100)]
Core: Fire iframe script in its context, add doc param in globalEval

1. Support passing custom document to jQuery.globalEval; the script will be
   invoked in the context of this document.
2. Fire external scripts appended to iframe contents in that iframe context;
   this was already supported & tested for inline scripts but not for external
   ones.

Fixes gh-4518
Closes gh-4601

(cherry picked from commit 4592595b478be979141ce35c693dbc6b65647173)

4 years agoBuild:Tests: Fix custom build tests, verify on Travis; name Travis jobs
Michał Gołębiowski-Owczarek [Mon, 27 Jan 2020 17:54:47 +0000 (18:54 +0100)]
Build:Tests: Fix custom build tests, verify on Travis; name Travis jobs

This commit fixes unit tests for the following builds:

1. The no-deprecated build: `custom:-deprecated`
2. The current slim build: `custom:-ajax,-effects`
3. The 4.0 (#4553) slim build: `custom:-ajax,-callbacks,-deferred,-effects`

It also adds separate Travis jobs for the no-deprecated & slim builds.

Apart from that, add intuitive names to Travis jobs. Otherwise it's hard to see
at a glance that a particular job is running on Firefox ESR, for example.

Ref gh-4577
Ref gh-4596
Closes gh-4600

4 years agoAjax: Deprecate AJAX event aliases, inline event/alias into deprecated
Michał Gołębiowski-Owczarek [Tue, 21 Jan 2020 13:12:35 +0000 (14:12 +0100)]
Ajax: Deprecate AJAX event aliases, inline event/alias into deprecated

A new `src/deprecated` directory makes it possible to exclude some deprecated
APIs from a custom build when their respective "parent" module is excluded
without keeping that module outside of the `src/deprecated` directory or
the `src/deprecated.js` file.

Closes gh-4572

(cherry picked from 23d53928f383b0e7440bf4b08b7524e6af232fad)

4 years agoBuild: Lint the minified jQuery file as well
Michał Gołębiowski-Owczarek [Tue, 21 Jan 2020 12:51:03 +0000 (13:51 +0100)]
Build: Lint the minified jQuery file as well

While we have absolutely no style-related expectations to our minified file,
we do care that it's valid ES 5.1. This is now verified.

Also, update grunt-eslint as a newer ESLint version is required to be able
to use "extends" inside of the "overrides" section.

Fixes gh-3075
Closes gh-4594
Ref gh-4598