fix: use non-symbols in isURLInstance check (#24831)
This commit is contained in:
parent
a2c82f2342
commit
6cb23e1d36
3 changed files with 40 additions and 0 deletions
|
@ -40,3 +40,4 @@ update_tests_after_increasing_typed_array_size.patch
|
||||||
darwin_work_around_clock_jumping_back_in_time.patch
|
darwin_work_around_clock_jumping_back_in_time.patch
|
||||||
fix_do_not_register_the_esm_loader_in_renderer_processes.patch
|
fix_do_not_register_the_esm_loader_in_renderer_processes.patch
|
||||||
fix_allow_preventing_setpromiserejectcallback.patch
|
fix_allow_preventing_setpromiserejectcallback.patch
|
||||||
|
lib_use_non-symbols_in_isurlinstance_check.patch
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Shelley Vohr <shelley.vohr@gmail.com>
|
||||||
|
Date: Tue, 4 Aug 2020 09:17:06 -0700
|
||||||
|
Subject: lib: use non-symbols in isURLInstance check
|
||||||
|
|
||||||
|
This slightly changes the conditional used to determine whether or
|
||||||
|
not something is a URL instance. Since Node.js adds symbols to the URL
|
||||||
|
not specified by the WHATWG, those symbols are not present in other
|
||||||
|
implementations (like Blink's) and therefore can cause false negatives.
|
||||||
|
|
||||||
|
This fixes that by slightly changing the check to properties present
|
||||||
|
in all URL instances as specified in the WHATWG spec.
|
||||||
|
|
||||||
|
Upstreamed at: https://github.com/nodejs/node/pull/34622.
|
||||||
|
|
||||||
|
diff --git a/lib/internal/url.js b/lib/internal/url.js
|
||||||
|
index 78f5b32745a0436337233e8a4b57b89263effad6..ace274501f2c1f6bb06f600abb850e737c988338 100644
|
||||||
|
--- a/lib/internal/url.js
|
||||||
|
+++ b/lib/internal/url.js
|
||||||
|
@@ -1394,8 +1394,8 @@ function pathToFileURL(filepath) {
|
||||||
|
}
|
||||||
|
|
||||||
|
function isURLInstance(fileURLOrPath) {
|
||||||
|
- return fileURLOrPath != null && fileURLOrPath[searchParams] &&
|
||||||
|
- fileURLOrPath[searchParams][searchParams];
|
||||||
|
+ return fileURLOrPath != null && fileURLOrPath['href'] &&
|
||||||
|
+ fileURLOrPath['origin'];
|
||||||
|
}
|
||||||
|
|
||||||
|
function toPathIfFileURL(fileURLOrPath) {
|
|
@ -174,6 +174,15 @@ describe('node feature', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('URL handling in the renderer process', () => {
|
||||||
|
it('can successfully handle WHATWG URLs constructed by Blink', () => {
|
||||||
|
const url = new URL('file://' + path.resolve(fixtures, 'pages', 'base-page.html'));
|
||||||
|
expect(() => {
|
||||||
|
fs.createReadStream(url);
|
||||||
|
}).to.not.throw();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('error thrown in main process node context', () => {
|
describe('error thrown in main process node context', () => {
|
||||||
it('gets emitted as a process uncaughtException event', () => {
|
it('gets emitted as a process uncaughtException event', () => {
|
||||||
const error = ipcRenderer.sendSync('handle-uncaught-exception', 'hello');
|
const error = ipcRenderer.sendSync('handle-uncaught-exception', 'hello');
|
||||||
|
|
Loading…
Reference in a new issue