Closed Bug 863954 Opened 11 years ago Closed 3 years ago

Can't have C++-implemented WebIDL interface inheriting from JS-implemented interface (or vice versa) when unforgeable members are present attributes

Categories

(Core :: DOM: Bindings (WebIDL), defect, P5)

x86
macOS
defect

Tracking

()

RESOLVED WONTFIX

People

(Reporter: bzbarsky, Unassigned)

References

(Blocks 1 open bug)

Details

The problem is that unforgeables get copied onto descendant interfaces.  But the signature is not the same for JS-implemented and C++-implemented, so this:

  [Unforgeable] readonly attribute long unforgeableAttr;

gives a "int32_t GetUnforgeableAttr(ErrorResult&)" member on the autogenerated C++ implementation for the JS-implemented interface but a call like:

  self->UnforgeableAttr();

in the binding for the C++-implemented interface.

And vice versa if the JS-implemented thing inherits from a C++-implemented thing.

The good news is that unforgeable stuff is rare...
The bad news is that we have JS-implemented events and want to make Event.isTrusted unforgeable.

I suppose we could flag copied unforgeable stuff so we don't munge its signature...  Any brighter ideas?
Blocks: 637248
Or I just make MozInterAppMessageEvent (which is currently the only JS implemented event) to use
webidl event codegen ;)
I removed some JS implementations few days ago, but apparently missed MozInterAppMessageEvent.
https://bugzilla.mozilla.org/show_bug.cgi?id=1472046

Move all DOM bugs that haven’t been updated in more than 3 years and has no one currently assigned to P5.

If you have questions, please contact :mdaly.
Priority: -- → P5
Component: DOM → DOM: Core & HTML
Component: DOM: Core & HTML → DOM: Bindings (WebIDL)

We're trying to deprecate JS implemented WebIDL, so no need to add new features to it (and Event.isTrusted was marked unforgeable ages ago).

Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.