Skip to content

Commit

Permalink
lib,url: correct URL's argument to pass idlharness
Browse files Browse the repository at this point in the history
`url.idl` defines URL's constructor as:

```
constructor(USVString url, optional USVString base);
```

`idlharness.any.js` checks its length as `1`. So we should remove
constructor's second argument and use `arguments[1]` in constructor's
logic.

Refs: https://url.spec.whatwg.org/#idl-index
  • Loading branch information
XadillaX committed Aug 24, 2021
1 parent 28113ed commit 66def25
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 4 deletions.
2 changes: 1 addition & 1 deletion lib/internal/url.js
Expand Up @@ -621,7 +621,7 @@ function isURLThis(self) {
}

class URL {
constructor(input, base) {
constructor(input, base = undefined) {
// toUSVString is not needed.
input = `${input}`;
let base_context;
Expand Down
23 changes: 23 additions & 0 deletions test/common/wpt.js
Expand Up @@ -318,6 +318,29 @@ class WPTRunner {
this.initScript = script;
}

/**
* Pretend the runner is run in `name`'s environment (globalThis).
* @param {'Window'} name
* @see {@link https://github.com/nodejs/node/blob/24673ace8ae196bd1c6d4676507d6e8c94cf0b90/test/fixtures/wpt/resources/idlharness.js#L654-L671}
*/
pretendGlobalThisAs(name) {
switch (name) {
case 'Window': {
this.setInitScript(
'global.Window = Object.getPrototypeOf(globalThis).constructor;');
break;
}

// TODO(Xadillax): implement `ServiceWorkerGlobalScope`,
// `DedicateWorkerGlobalScope`, etc.
//
// e.g. `ServiceWorkerGlobalScope` should implement dummy
// `addEventListener` and so on.

default: throw new Error(`Invalid globalThis type ${name}.`);
}
}

// TODO(joyeecheung): work with the upstream to port more tests in .html
// to .js.
runJsTests() {
Expand Down
3 changes: 0 additions & 3 deletions test/wpt/status/url.json
Expand Up @@ -13,9 +13,6 @@
"urlencoded-parser.any.js": {
"fail": "missing Request and Response"
},
"idlharness.any.js": {
"fail": "getter/setter names are wrong, etc."
},
"urlsearchparams-constructor.any.js": {
"fail": "FormData is not defined"
},
Expand Down
1 change: 1 addition & 0 deletions test/wpt/test-url.js
Expand Up @@ -5,4 +5,5 @@ const { WPTRunner } = require('../common/wpt');

const runner = new WPTRunner('url');

runner.pretendGlobalThisAs('Window');
runner.runJsTests();

0 comments on commit 66def25

Please sign in to comment.