Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"create an event" does not work with required members #600

Open
annevk opened this issue Mar 14, 2018 · 3 comments
Open

"create an event" does not work with required members #600

annevk opened this issue Mar 14, 2018 · 3 comments

Comments

@annevk
Copy link
Member

annevk commented Mar 14, 2018

In particular as defined today step 3

Let defaultEventInitDict be the result of converting the JavaScript value undefined to the dictionary type accepted by eventInterface’s constructor. (This dictionary type will either be EventInit or a dictionary that inherits from it.)

would throw, which is a problem as https://searchfox.org/mozilla-central/search?q=required&path=Event.webidl suggests there's various events out there that have a required dictionary member.

We can deal with it failing, but that does seem to suggest that if you have a required dictionary member, you need to supply defaults in some other way than IDL. Alternatively we need to allow passing these members in some way to "fire an event" et al which would be the second refactoring to that whole operation within a rather sad short time period.

@marcoscaceres
Copy link
Member

marcoscaceres commented Aug 27, 2018

Why not let "create an event" just take a dictionary override:

  1. let initDict be a new SomeKindOfEventInitDict.
  2. Set initDict["requiredThing"] be "the required thing".
  3. "Create an event" with MyEventInteface ... deal with optional realm ... and initDict, and set ev to the resulting event.

And then change:

If dictionary was not passed, let dictionary be the result of converting the JavaScript value undefined to the dictionary type accepted by eventInterface’s constructor. (This dictionary type will either be EventInit or a dictionary that inherits from it.)

So then it just use the passes dictionary?

@annevk
Copy link
Member Author

annevk commented Aug 27, 2018

That would probably work, but then you can't use "fire an event" for those events. And if we wanted to enable that, which would make sense, we'd have to redefine how the IDL attributes are initialized and refactor all callers.

(Multiple optional arguments also gets a little ugly and might warrant some refactoring of the callers.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

3 participants
@marcoscaceres @annevk and others