Previously, the LibWeb bindings generator would output multiple per
interface files like Prototype/Constructor/Namespace/GlobalMixin
depending on the contents of that IDL file.
This complicates the build system as it means that it does not know
what files will be generated without knowledge of the contents of that
IDL file.
Instead, for each IDL file only generate a single Bindings/<IDLFile>.h
and Bindings/<IDLFile>.cpp.
This implements the following AO:
- Create a FederatedCredential from FederatedCredentialInit.
Which corresponds to this FederatedCredential ctor:
- constructor(FederatedCredentialInit)
This implements the following AOs:
- Create a PasswordCredential from PasswordCredentialData.
- Create a PasswordCredential from an HTMLFormElement.
Which corresponds to these PasswordCredential ctors:
- constructor(PasswordCredentialData)
- constructor(HTMLFormElement)
Previously the attributes for the mixin CredentialUserData was added to
the Credential implementation. Now they are moved to the
CredentialUserData implementation, and any *Credential implementations
which includes this mixin in IDL can now instead inherit from the
CredentialUserData class.
Aligning with the Chromium implementation, deviating from the spec we
remove the 'origin' attribute from FederatedCredentialInit and
PasswordCredentialData.
Before this change, we were going through the chain of base classes for
each IDL interface object and having them set the prototype to their
prototype.
Instead of doing that, reorder things so that we set the right prototype
immediately in Foo::initialize(), and then don't bother in all the base
class overrides.
This knocks off a ~1% profile item on Speedometer 3.