1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-20 07:08:08 +02:00
pdf.js/test
Tim van der Meij 7128b95d29
Fix a race condition involving the waitForEvent integration test helper function
Debugging #17931 uncovered a race condition in the way we use the
`waitForEvent` function. Currently the following happens:

1. We call `waitForEvent`, which starts execution of the function body
   and immediately returns a promise.
2. We do the action that triggers the event.
3. We await the promise, which resolves if the event is triggered or
   the timeout is reached.

The problem is in step 1: function body execution has started, but not
necessarily completed. Given that we don't await the promise, we
immediately trigger step 2 and it's not unlikely that the event we
trigger arrives before the event listener is actually registered in the
function body of `waitForEvent` (which is slower because it needs to be
evaluated in the page context and there is some other logic before the
actual `addEventListener` call).

This commit fixes the issue by passing the action to `waitForEvent` as
a callback so `waitForEvent` itself can call it once it's safe to do so.
This should make sure that we always register the event listener before
triggering the event, and because we shouldn't miss events anymore we
can also remove the retry logic for pasting.
2024-06-26 15:25:33 +02:00
..
chromium Enable the import/no-commonjs ESLint plugin rule 2023-10-14 12:49:17 +02:00
font Convert the TTX driver code to promises 2024-04-05 13:34:54 +02:00
fuzz [api-minor] Remove the image-related error message prefixes 2024-04-20 12:51:45 +02:00
images [Editor] Support svg images in the stamp annotation 2023-07-07 15:59:13 +02:00
integration Fix a race condition involving the waitForEvent integration test helper function 2024-06-26 15:25:33 +02:00
pdfs Fix the computation of unitsPerEm when the fontMatrix has some negative coefficients 2024-06-24 16:40:07 +02:00
resources Enable the declaration-block-no-redundant-longhand-properties Stylelint rule 2023-03-25 10:08:27 +01:00
stats Enable the import/no-commonjs ESLint plugin rule 2023-10-14 12:49:17 +02:00
types Format json files in using prettier 2024-01-16 19:40:25 +01:00
unit Don't ignore errors in the Jasmine suite start/end stages 2024-06-23 20:59:48 +02:00
.eslintrc Prevent duplicate names in unit/integration tests 2024-02-11 11:45:09 +01:00
.gitignore Ignore test snapshots directory. 2013-03-15 11:24:08 -07:00
add_test.mjs [ESM] Convert *most* of test-folder to use standard modules 2023-07-08 13:13:04 +02:00
annotation_layer_builder_overrides.css Use CSS nesting in the annotationLayer 2023-10-27 18:46:47 +02:00
downloadutils.mjs Modernize the rewriteWebArchiveUrl test helper function 2023-12-17 21:53:50 +01:00
draw_layer_test.css [Editor] Add a way to extract the outlines of a union of rectangles 2023-11-20 18:45:19 +01:00
driver.js [api-minor] Re-factor the basic textLayer-functionality 2024-05-17 14:20:20 +02:00
integration-boot.mjs Don't ignore errors in the Jasmine suite start/end stages 2024-06-23 20:59:48 +02:00
test.mjs Disable system addon updates for Firefox in testing mode 2024-06-23 11:58:55 +02:00
test_manifest.json Fix the computation of unitsPerEm when the fontMatrix has some negative coefficients 2024-06-24 16:40:07 +02:00
test_slave.html [api-minor] Move to Fluent for the localization (bug 1858715) 2023-10-19 11:20:41 +02:00
testutils.mjs Remove the rimraf dependency in favor of the built-in Node.js fs.rmSync in the test folder 2024-04-14 16:41:59 +02:00
text_layer_test.css Use CSS nesting in the textLayer 2023-10-27 17:38:01 +02:00
webserver.mjs Improve the webserver's constructor 2024-02-17 16:22:10 +01:00
xfa_layer_builder_overrides.css Remove unnecessary alpha-value from CSS rgb colors 2023-10-06 09:50:03 +02:00