Auto merge of #24377 - saschanaz:record-support, r=nox

Support WebIDL `record<>`

<!-- Please describe your changes on the following line: -->

Rebased @taki-zaro's work (#20318).

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #15012 and closes #20318. Possibly also closes #21463.

<!-- Either: -->
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/24377)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2019-10-15 08:33:46 -04:00 committed by GitHub
commit c5d6bb604d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 316 additions and 249 deletions

View file

@ -4,7 +4,7 @@
// https://fetch.spec.whatwg.org/#headers-class
typedef (Headers or sequence<sequence<ByteString>> or record<DOMString, ByteString>) HeadersInit;
typedef (Headers or sequence<sequence<ByteString>> or record<ByteString, ByteString>) HeadersInit;
[Exposed=(Window,Worker)]
interface Headers {

View file

@ -461,33 +461,37 @@ interface TestBinding {
sequence<sequence<long>> returnSequenceSequence();
void passUnionSequenceSequence((long or sequence<sequence<long>>) seq);
void passMozMap(record<DOMString, long> arg);
void passNullableMozMap(record<DOMString, long>? arg);
void passMozMapOfNullableInts(record<DOMString, long?> arg);
void passOptionalMozMapOfNullableInts(optional record<DOMString, long?> arg);
void passOptionalNullableMozMapOfNullableInts(optional record<DOMString, long?>? arg);
void passCastableObjectMozMap(record<DOMString, TestBinding> arg);
void passNullableCastableObjectMozMap(record<DOMString, TestBinding?> arg);
void passCastableObjectNullableMozMap(record<DOMString, TestBinding>? arg);
void passNullableCastableObjectNullableMozMap(record<DOMString, TestBinding?>? arg);
void passOptionalMozMap(optional record<DOMString, long> arg);
void passOptionalNullableMozMap(optional record<DOMString, long>? arg);
void passOptionalNullableMozMapWithDefaultValue(optional record<DOMString, long>? arg = null);
void passOptionalObjectMozMap(optional record<DOMString, TestBinding> arg);
void passStringMozMap(record<DOMString, DOMString> arg);
void passByteStringMozMap(record<DOMString, ByteString> arg);
void passMozMapOfMozMaps(record<DOMString, record<DOMString, long>> arg);
void passRecord(record<DOMString, long> arg);
void passRecordWithUSVStringKey(record<USVString, long> arg);
void passRecordWithByteStringKey(record<ByteString, long> arg);
void passNullableRecord(record<DOMString, long>? arg);
void passRecordOfNullableInts(record<DOMString, long?> arg);
void passOptionalRecordOfNullableInts(optional record<DOMString, long?> arg);
void passOptionalNullableRecordOfNullableInts(optional record<DOMString, long?>? arg);
void passCastableObjectRecord(record<DOMString, TestBinding> arg);
void passNullableCastableObjectRecord(record<DOMString, TestBinding?> arg);
void passCastableObjectNullableRecord(record<DOMString, TestBinding>? arg);
void passNullableCastableObjectNullableRecord(record<DOMString, TestBinding?>? arg);
void passOptionalRecord(optional record<DOMString, long> arg);
void passOptionalNullableRecord(optional record<DOMString, long>? arg);
void passOptionalNullableRecordWithDefaultValue(optional record<DOMString, long>? arg = null);
void passOptionalObjectRecord(optional record<DOMString, TestBinding> arg);
void passStringRecord(record<DOMString, DOMString> arg);
void passByteStringRecord(record<DOMString, ByteString> arg);
void passRecordOfRecords(record<DOMString, record<DOMString, long>> arg);
void passMozMapUnion((long or record<DOMString, ByteString>) init);
void passMozMapUnion2((TestBinding or record<DOMString, ByteString>) init);
void passMozMapUnion3((TestBinding or sequence<sequence<ByteString>> or record<DOMString, ByteString>) init);
void passRecordUnion((long or record<DOMString, ByteString>) init);
void passRecordUnion2((TestBinding or record<DOMString, ByteString>) init);
void passRecordUnion3((TestBinding or sequence<sequence<ByteString>> or record<DOMString, ByteString>) init);
record<DOMString, long> receiveMozMap();
record<DOMString, long>? receiveNullableMozMap();
record<DOMString, long?> receiveMozMapOfNullableInts();
record<DOMString, long?>? receiveNullableMozMapOfNullableInts();
record<DOMString, record<DOMString, long>> receiveMozMapOfMozMaps();
record<DOMString, any> receiveAnyMozMap();
record<DOMString, long> receiveRecord();
record<USVString, long> receiveRecordWithUSVStringKey();
record<ByteString, long> receiveRecordWithByteStringKey();
record<DOMString, long>? receiveNullableRecord();
record<DOMString, long?> receiveRecordOfNullableInts();
record<DOMString, long?>? receiveNullableRecordOfNullableInts();
record<DOMString, record<DOMString, long>> receiveRecordOfRecords();
record<DOMString, any> receiveAnyRecord();
static attribute boolean booleanAttributeStatic;
static void receiveVoidStatic();