This changes the way the extended attribute [LenientFloat] behaves, so
that overloading functions can match extended attributes while not
having restricted float type arguments themselves.
Microtasks, resolved Promises and Observers are handled after the sync
task that caused them, in the order they were generated.
Also simplifies reentrancy handling.
Based-on: m-c 1193394
There are a few minor differences between this and Mozilla's implementation:
(a) The type error messages were not hardcoded to the Performance class and were moved to Errors.msg or domerr.msg instead.
(b) Resist fingerprinting-pref changes were skipped.
Partially based on https://bugzilla.mozilla.org/show_bug.cgi?id=1724645
There are a few minor differences between this and Mozilla's implementation:
(a) The type error messages were not hardcoded to the Performance class and were moved to Errors.msg instead.
(b) PerformanceMeasureOptions is used directly and doesn't use the the Maybe<> container class. I haven't found the reason yet, but PerformanceMeasureOptions is disallowed from having a copy constructor and without that, it isn't possible to use it with Maybe<>... There doesn't seem to be any problem with using it directly, though.
(c) Resist fingerprinting-pref changes were skipped.
Partially based on https://bugzilla.mozilla.org/show_bug.cgi?id=1762482
Turns out we have a duplicate VoidFunction callback in the WebIDLs. Per
Mozilla bug 1324169, we should remove this callback from
RTCPeerConnection.webidl and let Function.webidl handle it instead.
The AttributeError faced by the new Basilisk dev wasn't helpful at all;
and turns out Mozilla had this exact same issue on bug 1505504. We're
also backporting that just in case we encounter another case of
callback duplication.
Also doing a minor fix in the MicroTaskRunnable class which Moonchild
forgot to do while working on Issue #1895.
This removes some restrictions on whether an interface that implements
QueryInterface can have a non-abstract ancestor.
This restriction was put in place back when we automatically added
QueryInterface to all rootmost non-abstract interfaces (~Pale Moon 24).
At the time, we needed to make sure it did NOT end up on EventTarget, because
back then WebIDL quickstubs would replace the QI implementation on non-WebIDL
EventTargets with the WebIDL one, which would not work for them.
Since then, we have removed WebIDL quickstubs and we now explicitly list which
interfaces get QueryInterface, so this check is no longer needed.
This adds the later spec revision's contentBoxSize and borderBoxSize, and the
inlineSize and blockSize concepts.
The older spec contentRect remains functional as well for backwards
compatibility with the earlier spec (that was IMHO perfectly fine as it was...)
Since these are just interpreted comments, there's 0 impact on actual code.
This removes all lines that match /* vim: set(.*)tw=80: */ with S&R -- there are
a few others scattered around which will be removed manually in a second part.