Read-only Git mirror of the Mercurial gecko repositories at https://hg.mozilla.org. How to contribute: https://firefox-source-docs.mozilla.org/contributing/contribution_quickref.html
Go to file
Nika Layzell 0f6863aece Bug 1474369 - Part 4: Add support for Sequence<T> types to xpidl and XPConnect, r=mccr8
Summary:
This patch adds support for the `Sequence<T>` type. This is largely a
straightforward type propagation patch, but there are a few notable things:

 1. We allow `[iid_is(x)] Sequence<nsQIResult>`, so Sequence can be Dependent.

 2. `Sequence<T>` is reflected into C++ as a `nsTArray<T>`, which is different
    than WebIDL's `mozilla::dom::Sequence<T>` type. This decision was made for
    general ergonomics reasons, as `nsTArray<T>` is more prevailent throughout
    the codebase, and lengths in this case cannot be controlled by content, as
    XPConnect is only exposed to Chrome JS.

 3. Owned pointers in `Sequence<T>` are not reflected as their owned
    counterparts. For example, `Sequence<nsISupports>` is reflected as
    `nsTArray<nsISupports*>` rather than `nsTArray<RefPtr<nsISupports>>`. This
    was done to avoid depending on `RefPtr<T>` and `T*` having the same
    in-memory representation, however if that is considered an acceptable
    dependency, it would be nice to support that.

 4. We also don't reflect singly-owned pointers as their owned counterparts. For
    example, `nsTArray<nsIIDPtr>` would be reflected as `nsTArray<nsIID*>`
    rather than `nsTArray<mozilla::UniquePtr<nsIID>>`. If we are willing to
    depend on `mozilla::UniquePtr<T>`'s in-memory representation, we could also
    do this, however.

 5. There are no restrictions on what types can appear inside of a `Sequence<T>`
    or what can appear inside an `[array] T`. We may want to add restrictions
    either at the xpidl level or in XPConnect.

Depends On D2109

Reviewers: mccr8!

Tags: #secure-revision

Bug #: 1474369

Differential Revision: https://phabricator.services.mozilla.com/D2110
2018-07-30 11:28:08 -04:00
.cargo Bug 1468950 - Update serde_derive patch for changes in WR PR 2819. r=Gankro 2018-06-21 08:15:40 -04:00
.vscode
accessible Bug 1474369 - Part 3: Add generic type parsing support to xpidl, r=mccr8 2018-07-30 11:28:06 -04:00
browser Bug 1479385 - Disable stack instrumentation for Windows Nightly ASan builds. r=dmajor 2018-07-26 15:41:58 +02:00
build Backed out changeset 15ae37e7cea3 (bug 1476661) for breaking l10n locale tests 2018-07-30 01:59:11 +03:00
caps Bug 1476145 part 8. Stop using getInterface(nsIDOMWindowUtils) in various test code. r=kmag 2018-07-24 19:47:43 -04:00
chrome Bug 1469769 - Part 6: Replace non-failing NS_NOTREACHED with MOZ_ASSERT_UNREACHABLE. r=froydnj 2018-06-17 22:43:11 -07:00
config Bug 1478014 - Silence -Wgnu-include-next in msvc-stl-wrapper.template.h. r=froydnj 2018-07-25 08:07:56 -04:00
db Bug 1467121 - Upgrade to SQLite 3.24.0. r=mak 2018-06-06 09:52:32 -04:00
devtools Bug 1478990: Make NonCustomPropertyId <-> nsCSSPropertyId conversions fast. r=xidorn 2018-07-30 12:51:19 +02:00
docshell Bug 1445659 - Remove dangling BrowsingContexts left from closing process. r=Nika 2018-06-29 02:41:00 +03:00
dom Backed out 8 changesets (bug 1475228) for wpt failures e.g. html/semantics/scripting-1/the-script-element/execution-timing/088.html on a CLOSED TREE 2018-07-30 16:49:02 +03:00
editor Bug 1478564 - part 1: Optimize TextEditRules::HandleNewLines() r=m_kato 2018-07-24 17:46:12 +09:00
embedding
extensions Bug 1479405 - Remove comments related to pref network.cookie.lifetimePolicy == 1-dontUse, r=valentin 2018-07-30 14:16:21 +02:00
gfx Bug 1478570 - Fix ExternalImageId allocation of AsyncImagePipelineManager r=jrmuizel 2018-07-30 10:16:03 +09:00
gradle/wrapper Bug 1476165 - Part 2: Update Android Gradle plugin to version 3.1.0. r=nalexander,snorp 2018-07-17 13:20:19 +01:00
hal Bug 1465294 Part 7 - Don't send PHal message from middleman processes, r=gsvelto. 2018-07-23 14:52:33 +00:00
image Bug 1463291: Move docShell getter from Document to Window. r=bz 2018-05-21 16:58:23 -07:00
intl bug 1478343, update Fluent migration docs, r=stas 2018-07-26 11:17:57 +02:00
ipc Backed out 8 changesets (bug 1475228) for wpt failures e.g. html/semantics/scripting-1/the-script-element/execution-timing/088.html on a CLOSED TREE 2018-07-30 16:49:02 +03:00
js Bug 1474369 - Part 4: Add support for Sequence<T> types to xpidl and XPConnect, r=mccr8 2018-07-30 11:28:08 -04:00
layout Bug 1479092 - Fix comments and whitespace. r=me 2018-07-30 16:33:07 +02:00
media Merge mozilla-inbound to mozilla-central. a=merge 2018-07-28 01:32:38 +03:00
memory Bug 1474254 -- Disable test Jemalloc.JunkPoison for Windows ccov builds. 2018-07-27 22:48:14 +03:00
mfbt Backed out 11 changesets (bug 1478892, bug 1478587) for build bustages in ../../../dist/bin/gdb-tests on a CLOSED TREE 2018-07-29 13:33:00 +03:00
mobile Merge mozilla-inbound to mozilla-central. a=merge 2018-07-30 12:52:00 +03:00
modules Bug 1479405 - Remove comments related to pref network.cookie.lifetimePolicy == 1-dontUse, r=valentin 2018-07-30 14:16:21 +02:00
mozglue Merge mozilla-central to inbound. a=merge CLOSED TREE 2018-07-27 01:02:37 +03:00
netwerk Bug 1462019 - Part 1. Support abstract socket address on nsIServerSocket and nsISocketTransportService. r=mayhemer 2018-07-26 18:06:42 +09:00
nsprpub Bug 1477680, land NSPR 4.20 beta snapshot 607196c7ef66, r=me 2018-07-23 16:05:53 +02:00
other-licenses Bug 1478568 part 1: Update IAccessible2 so we can use new roles (IA2_ROLE_BLOCK_QUOTE, etc.). r=MarcoZ 2018-07-27 10:27:44 +10:00
parser Bug 1470795 Part 5 - Update content parse users for API movement, r=froydnj. 2018-07-23 21:45:33 +00:00
python Backed out changeset 15ae37e7cea3 (bug 1476661) for breaking l10n locale tests 2018-07-30 01:59:11 +03:00
security Bug 1470985 - s/PodEqual/ArrayEqual/ from ArrayUtils.h. - r=waldo 2018-07-27 14:11:18 -07:00
services Bug 1478336 - Reset sync status when new Remote Settings client is registered r=glasserc 2018-07-25 17:43:08 +02:00
servo Back out changeset 89fcb03e210c (Bug 1479398) because it's not reviewed yet. r=backout 2018-07-30 14:25:49 +02:00
startupcache Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj 2018-06-01 10:45:27 +02:00
storage Bug 1476009: Remove unnecessary initialization. r=mak 2018-07-16 17:56:02 +01:00
taskcluster Bug 1478883 - Tagging operations should use DONTBUILD in commit message r=Callek 2018-07-28 02:12:59 +05:30
testing Merge mozilla-inbound to mozilla-central. a=merge 2018-07-30 12:52:00 +03:00
third_party Bug 1476408 - Only build stats code if examples are enabled; r=TD-Linux 2018-07-24 10:37:28 -04:00
toolkit Merge inbound to mozilla-central. a=merge 2018-07-29 00:48:22 +03:00
tools Backed out 8 changesets (bug 1476405) for causing frequent failures in bug 1479022. a=backout 2018-07-28 01:25:25 +03:00
uriloader Bug 1477579: Part 3 - Avoid duplicating static strings in category manager entries. r=froydnj 2018-07-23 17:41:06 -07:00
view Backed out 18 changesets (bug 1462784) for failures in devtools/client/performance/test/unit/test_tree-model-08.js on a CLOSED TREE 2018-06-01 01:06:29 +03:00
widget Merge inbound to mozilla-central. a=merge 2018-07-27 00:58:11 +03:00
xpcom Bug 1474369 - Part 4: Add support for Sequence<T> types to xpidl and XPConnect, r=mccr8 2018-07-30 11:28:08 -04:00
xpfe/appshell Bug 1478421 - make fingerprint resistance not resize window before onDOMContentLoaded and detect browser windows better, r=timhuang,bz 2018-07-20 17:32:30 +01:00
.arcconfig Bug 1460463 - Update .arcconfig to make history mutable; r=gps 2018-05-09 23:49:52 +00:00
.clang-format
.clang-format-ignore Bug 1464452 - Add richtext to the list of thirdparties r=andi 2018-05-25 09:01:11 -07:00
.cron.yml Bug 1477021 - Schedule pipfile updates to run once per week. r=sfraser 2018-07-27 15:12:36 +00:00
.eslintignore Bug 1474414 - Move most of browser/extensions/activity-stream to browser/components/newtab r=Mardak 2018-07-26 20:50:49 -07:00
.eslintrc.js Bug 1436303 - Enable mozilla/no-define-cc-etc for some DevTools files;r=ochameau,standard8 2018-06-08 16:46:59 +02:00
.flake8 Backed out changeset 4738f8111a82 (bug 1478338) for linting failure at builds/worker/checkouts/gecko/build/moz.configure/android-ndk.configure:8 on a CLOSED TREE 2018-07-25 16:56:19 +03:00
.gdbinit
.gdbinit_python
.gitignore Bug 1475904 - Add .swp files (for open, unnamed vim buffers) to .gitignore. r=froydnj 2018-07-16 12:26:13 +10:00
.hgignore Bug 1469801 - Add gcov-related files to .hgignore. r=jmaher (DONTBUILD) 2018-06-20 11:05:46 +01:00
.hgtags No bug - Tagging mozilla-central 4f6e597104dabedfecfafa2ab63dc79fd7f8bc7a with FIREFOX_NIGHTLY_62_END a=release DONTBUILD CLOSED TREE 2018-06-25 09:31:32 -07:00
.inferconfig
.lldbinit
.mailmap NO BUG - Use ato's new address. r=me 2018-02-26 15:59:29 +00:00
.taskcluster.yml Bug 1470886 - only produce tasks for recognized tasks_for; r=tomprince 2018-07-03 18:07:42 +00:00
.yamllint
.ycm_extra_conf.py
aclocal.m4
AUTHORS Bug 1459852 - Get rid of the AUTHORS list r=mossop 2018-05-08 10:37:41 +02:00
build.gradle Bug 1476165 - Part 2: Update Android Gradle plugin to version 3.1.0. r=nalexander,snorp 2018-07-17 13:20:19 +01:00
Cargo.lock Backed out changeset 72b855b514f9 (bug 1477628) for rusttests build bustages CLOSED TREE 2018-07-27 07:00:56 +03:00
Cargo.toml Bug 1474871 - Link dump_syms against rustc-demangle. r=ted 2018-07-12 10:23:12 +09:00
client.mk Bug 1461836 - Write out complete configure dependencies from configure for consumption by make and non-make backends. r=mshal 2018-05-21 14:01:50 -07:00
client.py
CLOBBER Bug 1435409 - use our own clang rather than the NDK clang to build Android; r=nalexander 2018-07-27 09:52:53 -05:00
configure.in
configure.py Bug 1461836 - Write out complete configure dependencies from configure for consumption by make and non-make backends. r=mshal 2018-05-21 14:01:50 -07:00
GNUmakefile
gradle.properties Bug 1453413 - Use aapt2 to build Firefox for Android. r=mcomella 2018-04-11 09:59:22 -07:00
gradlew
LEGAL
LICENSE
mach
Makefile.in Bug 1473423: Allow test symbols to be included in full symbol archive in try builds; r=ted 2018-07-11 17:38:37 -06:00
moz.build Bug 1346026 - Vendor pipenv 2018.5.18 and transient dependencies; r=ahal 2018-05-17 19:06:20 +01:00
moz.configure Bug 1476427 - part 1 - move bindgen configure bits to a separate file; r=chmanchester 2018-07-26 17:37:56 -04:00
mozilla-config.h.in Bug 1463637: Remove mozilla-config.h hacks for Hunspell extra includes. r=ted 2018-05-22 20:36:39 -07:00
old-configure.in Bug 1477744 - Re-enable -Werror in clang-cl for Spidermonkey. r=froydnj 2018-07-26 16:14:27 -04:00
package-lock.json Bug 1471540 - Update eslint-plugin-react to 7.10.0. r=ahal 2018-07-25 18:09:41 +00:00
package.json Bug 1471540 - Update eslint-plugin-react to 7.10.0. r=ahal 2018-07-25 18:09:41 +00:00
Pipfile Bug 1472201 - Vendor pytest 3.6.2 and dependencies; r=ahal 2018-06-29 15:37:31 +01:00
Pipfile.lock Bug 1472201 - Vendor pytest 3.6.2 and dependencies; r=ahal 2018-06-29 15:37:31 +01:00
README.txt Bug 1460030 - Update the nightly URL in the README.txt file r=kohei 2018-05-08 21:22:10 +02:00
settings.gradle Bug 1444546 - Part 2: Build annotationProcessors with Gradle. r=jchen 2018-02-22 16:11:14 -08:00
test.mozbuild

An explanation of the Mozilla Source Code Directory Structure and links to
project pages with documentation can be found at:

    https://developer.mozilla.org/en/Mozilla_Source_Code_Directory_Structure

For information on how to build Mozilla from the source code, see:

    https://developer.mozilla.org/en/docs/Build_Documentation

To have your bug fix / feature added to Mozilla, you should create a patch and
submit it to Bugzilla (https://bugzilla.mozilla.org). Instructions are at:

    https://developer.mozilla.org/en/docs/Creating_a_patch
    https://developer.mozilla.org/en/docs/Getting_your_patch_in_the_tree

If you have a question about developing Mozilla, and can't find the solution
on https://developer.mozilla.org, you can try asking your question in a
mozilla.* Usenet group, or on IRC at irc.mozilla.org. [The Mozilla news groups
are accessible on Google Groups, or news.mozilla.org with a NNTP reader.]

You can download nightly development builds from the Mozilla FTP server.
Keep in mind that nightly builds, which are used by Mozilla developers for
testing, may be buggy. Firefox nightlies, for example, can be found at:

    https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/
            - or -
    https://www.mozilla.org/firefox/channel/desktop/#nightly