tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

feature_checklist.md (5374B)


JavaScript Language Feature Checklist

So you're working on a new JavaScript feature in SpiderMonkey: Congratulations! Here's a set of checklists and guidelines to help you on your way.

High Level Feature Ship Checklist.

(Note: Some of these pieces can happen in parallel, so it's not necessary to work directly top-down)

Exposure Guidelines process. We historically haven't been amazing at sending intent-to-prototype emails, but we can always get better.

disabled by default.

and a command line option in js/src/shell/js.cpp.

already imported. (See js/src/test/Readme.txt for guidance)

- ☐ If the feature introduces a new syntax, it may require a lot of work in the fuzzing engine to support it. Notify the fuzzing team early with the details.

fuzzers as well that the feature is ready for fuzzing. Note that this makes the code eligible for bug bounties and should only be done once sufficient internal fuzzing has happened. This is only necessary if we want to have external fuzzing on the feature prior to enabling the feature on Nightly.

Exposure Guidelines process.

- ☐ First, ping the fuzzing team to make sure sufficient fuzzing has occurred. - ☐ Default the preference to true. - ☐ Double check for any code that is currently NIGHTLY_BUILD that should now be built unconditionally, e.g. in js/src/vm/JSObject.cpp. You may want to run a central as beta simulation to make sure you've caught any lingering NIGHTLY_BUILD parts. Note you don't need the --stage-changes flag. - ☐ Update js/xpconnect/tests/chrome/test_xrayToJS.xhtml for any changes to existing global objects. This is a mochitest, you need to run mach test js/xpconnect/tests/chrome/test_xrayToJS.xhtml. - ☐ For new globals, the following tests also need updates: dom/serviceworkers/test/test_serviceworker_interfaces.js, tests/mochitest/general/test_interfaces.js, and dom/workers/test/test_worker_interfaces.js. These are mochitests, you need to run, e.g. mach test dom/serviceworkers/test/test_serviceworker_interfaces.html.

Supplemental Checklists

Shipping Consideration Checklist

consider shipping NIGHTLY_ONLY for a cycle or two, to use nightly as an attempt to shake out potential webcompat issues.

Web Platform Integration Checklist

Sometimes Complexity of the web-platform leaks into JS Feature works

option set than main thread, and it's easy to forget them!) You may want to write a mochitest.

Syntax Features Checklist

- Reflect.parse tests are interesting as well, because they can be written for new syntax before bytecode emission is done. - ☐ Are the locations correct for the new syntax entries in the parse tree?

Testing Consideration Checklist

_There's lots of complexity in SpiderMonkey that isn't always captured by the specification, so the below is some useful guidance to behaviour to pay attention to that may not be tested by a feature's test262 tests_

references happen across compartments, or if this is a CrossCompartmentWrapper?

correct prototype?

resolved? If so, does the feature correctly handle [the .then property behaviour of promise resolution?](https://www.stefanjudis.com/today-i-learned/promise-resolution-with-objects-including-a-then-property/)

handling is correct?

Web Platform Testing Considerations

happens when your feature interacts with the very exotic objects on the web platform, such as WindowProxy, Location (cross-origin objects).

X-rays?