| "use strict"; |
| // RegExps used to be special-cased in Web IDL, but that was removed in |
| // https://github.com/heycam/webidl/commit/bbb2bde. These tests check that implementations no longer |
| // do any such special-casing. |
| |
| test(() => { |
| const regExp = new RegExp(); |
| regExp.message = "some message"; |
| |
| const errorEvent = new ErrorEvent("type", regExp); |
| |
| assert_equals(errorEvent.message, "some message"); |
| }, "Conversion to a dictionary works"); |
| |
| test(() => { |
| const messageChannel = new MessageChannel(); |
| const regExp = new RegExp(); |
| regExp[Symbol.iterator] = function* () { |
| yield messageChannel.port1; |
| }; |
| |
| const messageEvent = new MessageEvent("type", { ports: regExp }); |
| |
| assert_array_equals(messageEvent.ports, [messageChannel.port1]); |
| }, "Conversion to a sequence works"); |
| |
| promise_test(async () => { |
| const regExp = new RegExp(); |
| |
| const response = new Response(regExp); |
| |
| assert_equals(await response.text(), "/(?:)/"); |
| }, "Can convert a RegExp to a USVString"); |
| |
| test(() => { |
| let functionCalled = false; |
| |
| const regExp = new RegExp(); |
| regExp.handleEvent = () => { |
| functionCalled = true; |
| }; |
| |
| self.addEventListener("testevent", regExp); |
| self.dispatchEvent(new Event("testevent")); |
| |
| assert_true(functionCalled); |
| }, "Can be used as an object implementing a callback interface"); |