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.