Commit Graph

2424 Commits

Author SHA1 Message Date
Oleg Gaidarenko
6d43dc4233 Effects: stabilize rAF logic & align timeout logic with it
rAF logic was introduced almost three years ago relative to this commit,
as a primary method for scheduling animation (see gh-1578 pull).

With it there was two substantial changes - one was explicitly mentioned
and the other was not.

First, if browser window was hidden aka `document.hidden === true`
it would immediately execute all scheduled animation without waiting
for time pass i.e. tick time become `0` instead of 13 ms of a default value.

Which created possibility for circular executions in case if `complete`
method executed the same animation (see gh-3434 issue).

And the second one - since then there was two ways of scheduling animation:
with `setInterval` and `requestAnimationFrame`, but there was a
difference in their execution.

In case of `setInterval` it waited default `jQuery.fx.interval` value before
actually starting the new tick, not counting the first step which wasn't
set to be executed through tick method (aka `jQuery.fx.tick`).

Whereas `requestAnimationFrame` first scheduled the call and executed
the `step` method right after that, counting the first call of
`jQuery.fx.timer`, `tick` was happening twice in one frame.

But since tests explicitly disabled rAF method i.e.
`requestAnimationFrame = null` and checking only `setInterval` logic,
since it's impossible to do it otherwise - we missed that change.

Faulty logic also was presented with `cancelAnimationFrame`, which couldn't
clear any timers since `raf` scheduler didn't define new `timerId` value.

Because that change was so subtle, apparently no user noticed it proving
that both `cancelAnimationFrame` and `clearInterval` code paths are redundant.

Since `cancelAnimationFrame` didn't work properly and rAF is and was a primary
used code path, plus the same approach is used in other popular animation libs.

Therefore those code paths were removed.

These changes also replace two different functions which schedule the animation
with one, which checks what type of logic should be used and executes it
appropriatley, but for secondary path it now uses `setTimeout` making it more
consistent with rAF path.

Since ticks are happening globally we also don't require to listen
`visibilitychange` event.

It also changes the way how first call is scheduled so execution of
animation will not happen twice in one frame.

No new tests were not introduced, since now `setTimeout` logic should be
equivalent to the rAF one, but one test was changed since now we actually
execute animation at the first tick.

Fixes gh-3434
Closes gh-3559
2017-03-06 19:17:14 +01:00
karan-96
ac9e301664 Core: Deprecate jQuery.nodeName
Fixes gh-3475
Closes gh-3505
2017-03-01 11:48:11 +01:00
南漂一卒
3e3b09d68d Traversing: $.fn.contents() supports HTMLTemplateElement
Fixes gh-3436
Closes gh-3462
2017-01-29 23:32:15 +01:00
Alex Padilla
5f35b5b406 Event: Add radio click triggering tests
Ref b442abacbb
Ref gh-3423
2017-01-19 17:27:35 -05:00
Richard Gibson
3c89329cb2 Effects: Resolve issues revealed by recent Callbacks fix
Notify full progress before resolving empty animations
Register animation callbacks before their ticker
Remove the right timer when immediately-done animations spawn more

Ref 9d822bc1c1
Fixes gh-3502
Fixes gh-3503
Closes gh-3496
2017-01-16 10:18:49 -08:00
Richard Gibson
efdb8a46e4 Manipulation: Restrict the tbody search to child nodes
For performance, use a querySelectorAll path instead of Javascript iteration.
http://codepen.io/anon/pen/vywJjx?editors=1010

Fixes gh-3439
Closes gh-3463
2017-01-09 11:37:12 -08:00
Richard Gibson
9d822bc1c1 Callbacks: Prevent add() from unlocking with-memory lists
Fixes gh-3469
Closes gh-3470
2017-01-09 11:33:39 -08:00
Richard Gibson
14b393d0d6 Tests: Update the loader so test pages always get jQuery
Pages used for iframe tests will now successfully load jQuery, even when
opened directly in the browser.

Closes gh-3489
2017-01-09 11:23:47 -08:00
David Broder-Rodgers
bd9145fa15 Tests: Added tests for symbol-separated tag names
Fixes gh-2006
Closes gh-3473
2016-12-29 15:02:12 -05:00
Richard Gibson
8cb4cd71ef Build: Use valid ecmaVersion
Fixes Node smoke tests

Ref gh-3385
Closes gh-3460
2016-12-19 11:58:48 -05:00
Michał Gołębiowski
cbc8638c38 Build: ESLint setup improvements
1. Use the short name of the preset in the config.
2. Run ESLint first on non-minified files.
3. Explicitly specify environments in every config file (those settings cascade
which means we've been assuming a Node.js environment where we shouldn't have).
2016-12-19 02:07:03 +01:00
Richard Gibson
5d79c64663 Deferred: Stop inventing jQuery.when() resolution values
Fixes gh-3442
Closes gh-3445
2016-12-16 11:45:35 -05:00
Jason Bedard
1777899a74 Offset: report offset for 0 sized elements
Fixes gh-3267
Closes gh-3367
2016-12-12 22:32:11 -08:00
Manoj Kumar
1b9575b9d1 Core: Deprecate jQuery.isArray
Fixes gh-2961
Closes gh-3278
2016-11-30 12:22:24 +01:00
Michał Gołębiowski
223ed99f4a Tests: Add test results for Safari 10/iOS 10, remove for Safari 8 2016-09-19 18:55:12 +02:00
Timmy Willison
3bbcce68d7
Core: rnotwhite -> rhtmlnotwhite and jQuery.trim -> stripAndCollapse
- Renames and changes rnotwhite to focus on HTML whitespace chars
- Change internal use of jQuery.trim to more accurate strip and collapse
- Adds tests to ensure HTML space characters are retained where valid
- Doesn't add tests where the difference is inconsequential and
  existing tests are adequate.

Fixes gh-3003
Fixes gh-3072
Close gh-3316
2016-09-15 10:40:27 -04:00
Michał Gołębiowski
3f5f5433d5 Tests: Disable a whitespace-setting test in Edge 14
Working around this problem would require us to skip setting whitespace-only
values except when they're valid which would be very fragile. Another option
would be to set the value and see if it succeeded and then react to that.

We've tried something like that in the past to be able to overwrite !important
styles (see 24e5879) but it broke the CSS cascade (see
https://bugs.jquery.com/ticket/14836#comment:5) and was triggering
MutationObserver callbacks too often so it was reverted in PR gh-1532.

Ref gh-3204
Ref gh-1532
2016-09-12 18:36:48 +02:00
Timmy Willison
52e24471c8
Core: expose noConflict in AMD mode
- For compability reasons, we had already added the global
  in AMD mode, but without noConflict. This adds back noConflict
  to AMD (which fixes noConflict mode in the tests).

Fixes gh-2930
2016-08-15 11:54:55 -04:00
Dave Methvin
560c0c6f99 Traversing: Let .not(arraylike) pass non-element nodes
Fixes gh-3226
Closes gh-3261
2016-08-10 10:04:24 -04:00
Dave Methvin
cd4ad00478 Ajax: Don't mangle the URL when removing the anti-cache param
Fixes gh-3229
Closes gh-3253
2016-08-08 12:13:22 -04:00
Oleg Gaidarenko
6acf4a7946 Build: .eslintrc -> .eslintrc.json
`.eslintrc` format is deprecated -
http://eslint.org/docs/user-guide/configuring#configuration-file-formats

Fixes gh-3248
Closes gh-3247
2016-08-02 21:16:20 +03:00
Oleg Gaidarenko
e4fd41f8fa Build: Update eslint config and fix associated errors 2016-07-15 21:42:25 +04:00
Oleg Gaidarenko
522f546d96 Build: More ESLint related changes 2016-07-09 00:49:43 +03:00
Michał Gołębiowski
ad6a94c3f1 Core: Re-throw errors that happened in callbacks wrapped in jQuery ready
Also, expose jQuery.readyException that allows to overwrite the default
ready error handler.

Fixes gh-3174
Closes gh-3210
2016-07-07 10:23:06 +02:00
Oleg Gaidarenko
58c6ca9822 Build: ESLint details
Use eslint pragmas, fix new errors, etc

Closes gh-3148
2016-06-11 10:41:33 +03:00
Oleg Gaidarenko
a4474c9a00 Tests: Move promise/A+ adapters for tests to dedicated folder 2016-06-11 10:39:51 +03:00
Oleg Gaidarenko
f80ae67c53 Build: Switch from jscs+jshint to eslint 2016-06-11 10:39:51 +03:00
Michał Gołębiowski
d5dae259eb Deferred: Propagate progress correctly from unwrapped promises
Progress parameters are now correctly propagated from a deferred to which
another deferred resolved unwrapping it.

Thanks to @gibson042 for the report and a clear description of the problem
and the needed fix.

Fixes gh-3062
Closes gh-3150
2016-06-09 14:53:34 +02:00
Michał Gołębiowski
e06fda69f0 Attributes: Avoid infinite recursion on non-lowercase attribute getters
Attribute hooks are determined for the lowercase versions of attribute names
but this has not been reflected in the bool attribute hooks. The code that
temporarily removed a handler to avoid an infinite loop was removing an
incorrect handler causing stack overflow.

Fixes gh-3133
Refs gh-2914
Refs gh-2916
Closes gh-3134
2016-06-03 22:48:43 +02:00
Michał Gołębiowski
f9ea869ab5 Tests: Remove side-effects of one attributes test
One test in the attribute module was overwriting jQuery.expr.attrHandle.checked
and wasn't restoring the original state after it finished. It started causing
issues for another checked-related test.
2016-06-03 11:51:33 +02:00
Dave Methvin
2df590e4ec Event: Allow constructing a jQuery.Event without a target
Fixes gh-3139
Closes gh-3140
2016-06-02 20:56:47 -04:00
Oleg Gaidarenko
94efb79929 Events: don't execute native stop(Immediate)Propagation from simulation
In Firefox, called `stop(Immediate)Propagation` methods,
in capturing phase prevents receiving focus

Fixes gh-3111
2016-05-19 21:56:39 +04:00
Christophe Tafani-Dereeper
69db408d82 CSS: Remove units from a 0 width/height element
Close gh-3122
2016-05-16 10:46:47 -04:00
Dave Methvin
07c11c03cc Deferred: Give better stack diagnostics on exceptions
Ref gh-2736

The exception stack has the name of the immediately outer function where the
exception occurred, which can be very handy for tracing errors. Since we already
have the exception object we might as well use it.
2016-05-11 20:21:04 -04:00
Richard Gibson
de71e9755f Deferred: Make jQuery.when synchronous when possible
Closes gh-3102
Fixes gh-3100
Closes gh-3105
2016-05-09 12:14:22 -04:00
Richard Gibson
e8825a529b Event: Cover invalid delegation selector edge cases
Ref 7fd36ea145
2016-05-06 22:12:53 -04:00
Felipe Sateler
7fd36ea145 Event: Evaluate delegate selectors at add time
This ensures that invalid selectors throw right away.

Fixes gh-3071
Closes gh-3097
2016-05-06 22:12:20 -04:00
Jason Bedard
e61fccb9d7 Event: Remove fixHooks, propHooks; switch to ES5 getter with addProp
Fixes gh-3103
Fixes gh-1746
Closes gh-2860

- Removes the copy loop in jQuery.event.fix
- Avoids accessing properties such as client/offset/page/screen X/Y
  which may cause style recalc or layouts
- Simplifies adding property hooks to event object
2016-05-04 15:57:25 -04:00
Michał Gołębiowski
7f2ebd2c4d Tests: Make the regex catching Safari 9.0/9.1 more resilient
The word boundary character will prevent iOS from being a false positive.
2016-05-02 23:05:56 +02:00
Michał Gołębiowski
234a2d8280 Tests: take Safari 9.1 into account
Safari 9.1 shares its support test results with Safari 9.0 but it's been
excluded from the regex catching Safari 9.0. This has been fixed.
2016-05-02 22:49:17 +02:00
Richard Gibson
356a3bccb0 Deferred: Separate the two paths in jQuery.when
Single- and no-argument calls act like Promise.resolve.
Multi-argument calls act like Promise.all.

Fixes gh-3029
Closes gh-3059
2016-05-02 12:30:31 -04:00
Oleg Gaidarenko
d6e99d9b5e Revert "Effects: Remove additional parameters of easings"
This reverts commit b7a7dea95f.

Fixes #3064
2016-04-27 23:21:56 +03:00
Richard Gibson
7f1e59343b Deferred: Provide explicit undefined context for jQuery.when raw casts
Fixes gh-3082
Closes gh-3084
2016-04-27 15:33:12 -04:00
Dave Methvin
df2051cf59 Ajax: Ensure ajaxSettings.traditional is still honored
Fixes gh-3023
Closes gh-3081

Since .param() no longer looks at this setting we need unit tests
to ensure it is still honored by $.ajax().
2016-04-27 09:06:43 -04:00
Alexander K
4f270427d2 Serialize: .param - don't use ajaxSettings.traditional
Ref gh-3023
Closes gh-3030
2016-04-27 09:05:30 -04:00
Richard Gibson
f496182216 Tests: Weaken sync-assumption from jQuery.when to jQuery.ready.then 2016-04-26 10:14:53 -04:00
Richard Gibson
76084372c2 Deferred: Remove default callback context
Employs strict mode to simplify Deferred callback context handling.

Fixes gh-3060
Closes gh-3061
2016-04-23 00:30:48 -04:00
Dave Methvin
e5ffcb0838 Tests: Refactor testIframe() to make it DRYer and more consistent
Ref gh-3040
Closes gh-3049
2016-04-11 13:32:51 -04:00
Dave Methvin
08d73d7f9c Tests: Make iframe tests wait after checking isReady
Ref gh-3040
2016-04-11 13:29:11 -04:00
Richard Gibson
755e7ccf01 CSS: Toggle detached elements as visible unless they have display: none
Fixes gh-2863
Closes gh-3037
2016-04-11 13:21:11 -04:00
Oleg Gaidarenko
ce6c83f710 Core: add test for jQuery.isPlainObject(localStorage)
Ref gh-3045
2016-04-08 13:54:23 +03:00
Joe Trumbull
9fdbdd393a Serialize: Treat literal and function-returned null/undefined the same
Fixes gh-3005

Closes gh-3007
2016-04-05 10:38:56 -04:00
Oleg Gaidarenko
5d20a3c3f1 Ajax: execute jQuery#load callback with correct context
Thanks @blq (Fredrik Blomqvist)

Fixes gh-3035
Close gh-3039
2016-04-04 16:22:35 -04:00
Oleg Gaidarenko
c158f5761a Tests: do not run IE9 effect tests if inside testswarm
That test doesn't work properly in such environment

Ref e04e246552
Fixes gh-2888
Closes gh-3034
2016-04-04 21:58:33 +03:00
Richard Gibson
e0d3bfa770 Core: Simplify isPlainObject
Fixes gh-2986
Close gh-2998
2016-04-04 12:02:13 -04:00
Timmy Willison
10fc59007d Core: set the base href of the context in parseHTML
Fixes gh-2965
Close gh-3022
2016-04-04 11:30:27 -04:00
Timmy Willison
5cbb234dd3 Core: implement ready without Deferred
- Make jQuery.ready promise-compatible
- Gives up sync guarantee for post-ready callbacks

Fixes gh-1778
Fixes gh-1823
Close gh-2891
2016-04-04 11:26:22 -04:00
Michał Gołębiowski
6072d150d6 Docs: Update support comments to follow the new syntax
The changes follow the spec proposed in:
https://github.com/jquery/contribute.jquery.org/issues/95#issuecomment-69379197
2016-03-30 23:45:17 +02:00
Michał Gołębiowski
622db29d9c Docs:Tests: Remove legacy code & add support comments where needed
This commits backports some changes done in the patch to the then-existing
compat branch that removed support for old browsers and added some support
comments.

Refs 90d7cc1d8b
2016-03-30 11:21:36 +02:00
Timmy Willison
7052698191 Attributes: strip/collapse whitespace for set values on selects
Fixes gh-2978
Close gh-3002
2016-03-17 12:24:51 -04:00
Richard Gibson
0c1f72667d Core: Restore 1.x isPlainObject constructor checks
- Guard isPlainObject against inherited scalar constructors

Fixes gh-2982
Close gh-2985
2016-03-14 11:45:07 -04:00
Oleg Gaidarenko
728ea2f277 Tests: add additional test for jQuery.isPlainObject
Ref 00575d4d8c
Also see discussion in
https://github.com/jquery/jquery/pull/2970#discussion_r54970557
2016-03-12 16:43:02 +03:00
Alexander Lisianoi
59ec78e602 Tests: Restrict "p > * > *" selection in selector.js to #qunit-fixture
Add `match` and `QUnit.assert.selectInFixture` functions that
mimic `QUnit.assert.t`.

Ref gh-2880
Closes gh-2973
2016-03-09 14:09:20 -05:00
Michał Gołębiowski
9b086888b8 Docs:Tests: Remove obsolete code from tests, update support comments
Support comments that were lacking the final IE/Edge version that exhibits
the bug were checked & updated. Links to the Chromium bug tracker were updated.
Code in tests related to unsupported browsers (like Android 2.3 in non-basic
tests) has been removed.

Fixes gh-2868
Closes gh-2949
2016-03-08 23:26:46 +01:00
Timmy Willison
00575d4d8c Core: restore enumeration behavior in isPlainObject
Fixes gh-2968
Close gh-2970
2016-03-07 11:12:47 -05:00
Michał Gołębiowski
93a8fa6bfc Core: Deprecate jQuery.parseJSON
Fixes gh-2800
Closes gh-2948
2016-03-02 13:12:35 +01:00
Vitaliy Terziev
f00dd0f0b2 Dimensions: Add tests for negative borders & paddings
Closes gh-2869
2016-02-24 14:27:19 +01:00
Alexander Lisianoi
ddb2c06f51 Tests: limit selection to #qunit-fixture in attributes.js
Ref gh-2880
Close gh-2921
2016-02-22 11:56:04 -05:00
William Robinet
12038c7234 Tests: fix typos
Closes gh-2927
2016-02-17 14:13:45 -05:00
Oleg Gaidarenko
fc50791469 Tests: use jQuery variable instead of $
For some reason that works with `amd` but not with builded version

Fixes gh-2909
2016-02-13 21:22:15 +03:00
Oleg Gaidarenko
a2f63ffd96 Tests: test element position outside view
Ref 49833f7795
Ref gh-2828
Ref gh-2836
Fixes gh-2909
2016-02-11 22:59:09 +03:00
Timmy Willison
5943f1d7ff Build: use hard-coded path to sizzle in selector-sizzle
Fixes gh-2898
2016-02-10 13:47:25 -08:00
Oleg Gaidarenko
f52fa81811 Tests: account for new offset tests
Ref 49833f7795
2016-02-09 00:27:03 +03:00
Oleg Gaidarenko
49833f7795 Revert "Offset: account for scroll when calculating position"
This reverts commit 2d715940b9.

This commit provoked new issues: gh-2836, gh-2828.

At the meeting, we decided to revert offending commit
(in all three branches - 2.2-stable, 1.12-stable and master)
and tackle this issue in 3.x.

Fixes gh-2828
2016-02-09 00:24:22 +03:00
Oleg Gaidarenko
f1300f1887 Tests: fix another traverse test
Tricky test - if isolated, was executed fine, but falling
if runned with other tests

Ref b97c8d30c5
2016-01-31 12:09:48 +03:00
Oleg Gaidarenko
b97c8d30c5 Tests:Build: update qunit and fix incorrect test
* Update QUnit to the latest version (1.20.0)

* Corrected test was dependent on QUnit UI, which is always a bad idea
2016-01-29 21:22:52 +03:00
Timmy Willison
25068bf2c6 Selector: add jQuery.escapeSelector
Fixes gh-1761
Close gh-2878
2016-01-28 17:25:41 -05:00
Timmy Willison
a8c0194d3d CSS: Add test for gh-2867 2016-01-27 11:36:34 -05:00
Michał Gołębiowski
67c96a59f5 Build: Update npm deps, fix Sinon npmcopy config
All deps were updated except:
 * jsdom - tests using a Symbol polyfill are hacky and break with newer jsdom;
   we need to re-do them properly first
 * qunitjs - versions 1.19.0 & 1.20.0 introduce race conditions to the tests,
   making the fail randomly

Those two packages will be updated once issues related to them get resolved.

Fixes gh-2877
2016-01-27 12:54:39 +01:00
Michał Gołębiowski
dda87f6b16 Build: enable JSCS for test/unit/support.js, fix styling issues 2016-01-27 12:14:17 +01:00
Zack Hall
28f0329a02 Tests: Set Edge's expected support for clearCloneStyle to true
This is done for a version 13 or newer as the bug still exists in Edge 12.

Closes gh-2857
2016-01-27 12:14:04 +01:00
Michał Gołębiowski
0b0d4c634a Tests: Fix manipulation tests in Android 4.4
Chromium < 35 incorrectly upper-cases µ; Android 4.4 uses such a version by
default (and its WebView, being un-updatable, will use it for eternity) so we
need to blacklist that one for the tests to pass.
2016-01-27 12:02:00 +01:00
Richard Gibson
2868db0d41 Core: Update isNumeric tests for pre-ES2015 safety
Ref 7103d8ef47
2016-01-24 19:51:06 -05:00
Steve Mao
7103d8ef47 Core: Improve isNumeric logic and test coverage
Also add back accidentally deleted comments about the implementation.

Fixes gh-2780
Ref gh-2663
Ref gh-2781
Closes gh-2827
2016-01-24 19:07:09 -05:00
Michał Gołębiowski
5c01cb1cc4 Tests: Fix Deferred tests in Android 5.0's stock Chrome browser & Yandex.Browser
Some Chrome versions newer than 30 but older than 42 display the "undefined is
not a function" error, not mentioning the function name. This has been fixed
in Chrome 42. Relax two tests to allow for this divergence in older Chromoiums.

This affects our Android 5.0 & Yandex.Browser testing.
2016-01-20 13:54:31 +01:00
Devin Wilson
17f0e26ad9 Event: Fix chaining .on() with null handlers
Fixes gh-2846
2016-01-19 12:27:58 -05:00
Timmy Willison
780cac802b Attributes: fix setting selected on an option in IE<=11
Fixes gh-2732
Close gh-2840
2016-01-19 11:36:47 -05:00
Timmy Willison
10c1254d15 Docs: remove compat references 2016-01-14 12:22:45 -05:00
Richard Gibson
dba93f79c4 CSS: Restore cascade-override behavior in .show
Fixes gh-2654
Fixes gh-2308
Close gh-2810
Ref 86419b10bf
2016-01-13 16:05:09 -05:00
Richard Gibson
a268f5225c Traversing: Never let .closest() match positional selectors
Fixes gh-2796
Close gh-2818
2016-01-13 13:37:11 -05:00
Martijn W. van der Lee
0e2f8f9eff Traversing: .not/.filter consistency with non-elements
Fixes gh-2808
Close gh-2809
2016-01-13 13:33:01 -05:00
Jon Dufresne
b0b280cd61 Docs: Updated links to https where they are supported.
Close gh-2746
2016-01-13 13:26:10 -05:00
Henry Wong
1712457fbc Tests: fixed grammar in comment
Close gh-2757
2016-01-13 13:20:20 -05:00
Josh Soref
aae44111e2 Docs: Fix various spelling errors
Closes gh-2761
2016-01-13 13:11:11 -05:00
Dave Methvin
36a7cf9b1e Deferred: Warn on exceptions that are likely programming errors
Fixes gh-2736
Closes gh-2737
2016-01-13 12:39:58 -05:00
Dave Methvin
bdf1b8f317 Deferred: Remove undocumented progress notifications in $.when
Fixes gh-2710
Closes gh-2816
2016-01-13 12:21:17 -05:00
Leonardo Braga
fb9472c7fb Manipulation: Bring tagname regexes up to spec
Fixes gh-2005
Closes gh-2634
2016-01-07 16:48:49 -05:00
Jun Sun
df822caff0 CSS: Add animation-iteration-count to cssNumber, fix tests
Fixes gh-2792
Closes gh-2793
2016-01-07 21:46:22 +01:00
Timmy Willison
a4d16a26ab Revert "Attributes: Remove undocumented .toggleClass( boolean ) signature"
This reverts commit 53f798cf4d.

- Turns out this is documented, even if not fully. Need to deprecate before removal.
2016-01-07 14:06:41 -05:00
Timmy Willison
fbf829b724 Attributes: exclusively lowercase A-Z in attribute names
Fixes gh-2730
Close gh-2749
2015-12-02 10:39:02 -05:00