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

Monkey patch partial interface definitions #84

Open
danyao opened this issue Oct 11, 2017 · 4 comments
Open

Monkey patch partial interface definitions #84

danyao opened this issue Oct 11, 2017 · 4 comments

Comments

@danyao
Copy link
Contributor

danyao commented Oct 11, 2017

When a spec defines a partial addition to an existing interface, it will be useful if webidl2js can generate the monkey patch required to implement the addition.

For example, from the Credential Management Level 1 spec:

partial interface Navigator {
  [SecureContext, SameObject] readonly attribute CredentialsContainer credentials;
};

Currently webild2js assumes that Navigator is defined somewhere else in the provided webidl and errors out in parsing as it's not found:

TypeError: Cannot read property 'idl' of undefined
    at Transformer._parse (/Users/danyao/sandbox/webidl2js/e2e/node_modules/webidl2js/lib/transformer.js:143:58)
    at Transformer.<anonymous> (/Users/danyao/sandbox/webidl2js/e2e/node_modules/webidl2js/lib/transformer.js:250:12)
    at Generator.next (<anonymous>)
    at onFulfilled (/Users/danyao/sandbox/webidl2js/e2e/node_modules/co/index.js:65:19)
    at <anonymous>

What we need is probably something like this:

const CredentialsContainer = require("./CredentialsContainer");
navigator.credentials = Object.create(CredentialsContainer.interface.prototype);

We might need to also account for the fact that CredentialsContainer may be provided natively by the UA, so may not have the interface attribute (see #81).

@Sebmaster
Copy link
Member

Can you work around this by adding all the necessary dependent idl interfaces and throwing away the output of the unnecessary files?

@Sebmaster
Copy link
Member

Oh, if you're monkey patching anyways, do you even need the partial Navigator idl at all?

@domenic
Copy link
Member

domenic commented Oct 12, 2017

It seems to me that between this and #81 there's room for a "assume existing globals" mode (or "polyfill mode") which makes this sort of thing seamlessly work.

@danyao
Copy link
Contributor Author

danyao commented Oct 12, 2017 via email

stevedorries pushed a commit to stevedorries/webidl2js that referenced this issue Jan 27, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants