author Kris Maglione <maglione.k@gmail.com>
Wed, 12 Jun 2019 16:06:40 -0700
changeset 540535 61fa2745733f3631488a3ecccc144823683b7b6d
parent 538835 239ad0c20bda6a9f317dbcb076312a703b236775
child 543081 9fc6f2b939d4edc7d09f10e096d46fb4e01ce382
permissions -rw-r--r--
Bug 1541557: Part 1 - Use correct globals for JSWindowActors not in the shared JSM global. r=nika The current JSWindowActor code assumes that all actors will be created in the shared JSM global. This has a few problems: 1) For actors in other scopes, it enters the wrong compartment before decoding messages, which leads to a compartment checker error when trying to call message handlers. That could be fixed by just wrapping the result for the caller, but that would lead to other problems. Aside from the efficiency concerns of having to deal with cross-compartment wrappers, SpecialPowers in particular would not be able to pass the resulting objects to unprivileged scopes, since only SpecialPowers compartments have permissive CCWs enabled. 2) It also leads to the prototype objects for the actor instances being created in the shared JSM scope, even when the actors themselves are defined in other compartments. Again, aside from CCW efficiency issues, this prevents the SpecialPowers instances from being accessed by the unprivileged scopes that they're exposed to, since the prototype objects live in privileged scopes which don't have permissive CCWs enabled. This patch changes child actors to always create their objects in the global of their constructors. The parent objects are still created in the shared JSM global, but they now wrap values for the appropriate compartment before trying to call message handlers. Differential Revision: https://phabricator.services.mozilla.com/D35051

# .hgignore - List of filenames hg should ignore

# Filenames that should be ignored wherever they appear

# Vim swap files.

# Emacs directory variable files.

# User files that may appear at the root

# Empty marker file that's generated when we check out NSS

# Build directories

# gecko.log is generated by various test harnesses

# Ignore newtab component build assets

# Build directories for js shell

# SpiderMonkey configury
# SpiderMonkey test result logs
# SpiderMonkey clone of the webassembly spec repository

# Java HTML5 parser classes

# SVN directories

# Ignore the files and directory that Eclipse IDE creates

# Ignore the files and directory that JetBrains IDEs create.
# Android Monitor in Android Studio creates a captures/ directory.

# Gradle cache.

# Local Gradle configuration properties.

# Python stuff installed at build time.

# Git repositories

# Ignore chrome.manifest files from the devtools loader

# Ignore node_modules directories in devtools

# git checkout of libstagefright

# Tag files generated by GNU Global

# Git clone directory for updating web-platform-tests

# Third party metadata for web-platform-tests

# Android Gradle artifacts.

# XCode project cruft

# Rust/Cargo output from running `cargo` directly

# Ignore mozharness execution files

# Ignore tox generated dir

# Ignore ESLint and other tool's node_modules.

# Ignore talos virtualenv and tp5n files.
# The tp5n set is supposed to be decompressed at
# testing/talos/talos/tests/tp5n in order to run tests like tps
# locally. Similarly, running talos requires a Python package virtual
# environment. Both the virtual environment and tp5n files end up littering
# the status command, so we ignore them.

# Ignore talos webkit benchmark files; source is copied from in-tree /third_party
# into testing/talos/talos/tests/webkit/PerformanceTests/ when run locally
# i.e. speedometer, motionmark, stylebench

# Ignore toolchains.json created by tooltool.

# Ignore files created when running a reftest.

# tup database

# Ignore sync tps logs and reports

# Ignore Visual Studio Code workspace files.

# Ignore Infer output

# https://bz.mercurial-scm.org/show_bug.cgi?id=5322

# Ignore various raptor performance framework files

# Ignore browsertime output directory

# Ignore the build directories of WebRender standalone builds.