Skip to content

Monkey patch partial interface definitions #84

Open
@danyao

Description

@danyao

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions