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
# Definitions for jobs that run periodically. For details on the format, see
# `taskcluster/taskgraph/cron/schema.py`. For documentation, see
# `taskcluster/docs/cron.rst`.
---
jobs:
- name: nightly-desktop
job:
type: decision-task
treeherder-symbol: Nd
target-tasks-method: nightly_desktop
include-push-tasks: true
run-on-projects:
- mozilla-central
when:
by-project:
# Match buildbot starts for now
mozilla-central: [{hour: 10, minute: 0}, {hour: 22, minute: 0}]
# No default
- name: nightly-desktop-linux
job:
type: decision-task
treeherder-symbol: Nd-Ln
target-tasks-method: nightly_linux
include-push-tasks: true
run-on-projects:
- mozilla-central
when: [] # never (hook only)
- name: nightly-desktop-osx
job:
type: decision-task
treeherder-symbol: Nd-OSX
target-tasks-method: nightly_macosx
include-push-tasks: true
run-on-projects:
- mozilla-central
when: [] # never (hook only)
- name: nightly-desktop-win32
job:
type: decision-task
treeherder-symbol: Nd-win32
target-tasks-method: nightly_win32
include-push-tasks: true
run-on-projects:
- mozilla-central
when: [] # never (hook only)
- name: nightly-desktop-win64
job:
type: decision-task
treeherder-symbol: Nd-win64
target-tasks-method: nightly_win64
include-push-tasks: true
run-on-projects:
- mozilla-central
when: [] # never (hook only)
- name: nightly-desktop-win64-aarch64
job:
type: decision-task
treeherder-symbol: Nd-win64-aarch64
target-tasks-method: nightly_win64_aarch64
include-push-tasks: true
run-on-projects:
- mozilla-central
when: [] # never (hook only)
- name: nightly-geckoview
job:
type: decision-task
treeherder-symbol: Ngv
target-tasks-method: nightly_geckoview
include-push-tasks: true
run-on-projects:
- mozilla-central
when:
by-project:
# Match buildbot starts for now
mozilla-central: [{hour: 10, minute: 0}]
# No default
- name: tp6m-fennec-v64
job:
type: decision-task
treeherder-symbol: f64
target-tasks-method: fennec_v64
include-push-tasks: true
run-on-projects:
- mozilla-central
when:
- {weekday: 'Saturday', hour: 5, minute: 0}
- name: searchfox-index
job:
type: decision-task
treeherder-symbol: Searchfox
target-tasks-method: searchfox_index
run-on-projects:
- mozilla-central
- mozilla-beta
- mozilla-release
when:
- {hour: 10, minute: 0}
- name: customv8-update
job:
type: decision-task
treeherder-symbol: customv8
target-tasks-method: customv8_update
optimize-target-tasks: false
run-on-projects:
- mozilla-central
when:
by-project:
mozilla-central: [{hour: 10, minute: 30}]
- name: chromium-update
job:
type: decision-task
treeherder-symbol: Chromium
target-tasks-method: chromium_update
optimize-target-tasks: false
run-on-projects:
- mozilla-central
when:
by-project:
mozilla-central: [{hour: 10, minute: 30}]
- name: bouncer-check
job:
type: decision-task
treeherder-symbol: Rel
target-tasks-method: cron_bouncer_check
run-on-projects:
- mozilla-beta
- mozilla-release
when:
by-project:
# No default branch
mozilla-beta:
- {hour: 7, minute: 0}
- {hour: 19, minute: 0}
mozilla-release:
- {hour: 7, minute: 0}
- {hour: 19, minute: 0}
mozilla-esr60:
- {hour: 7, minute: 0}
- {hour: 19, minute: 0}
- name: periodic-update
job:
type: decision-task
treeherder-symbol: Nfile
target-tasks-method: file_update
run-on-projects:
- mozilla-central
- mozilla-beta
- mozilla-release
- mozilla-esr60
when:
by-project:
# No default branch
mozilla-central:
- {weekday: 'Monday', hour: 10, minute: 0}
- {weekday: 'Thursday', hour: 10, minute: 0}
mozilla-beta:
- {weekday: 'Monday', hour: 10, minute: 0}
- {weekday: 'Thursday', hour: 10, minute: 0}
mozilla-release:
- {weekday: 'Monday', hour: 10, minute: 0}
- {weekday: 'Thursday', hour: 10, minute: 0}
mozilla-esr60:
- {weekday: 'Monday', hour: 10, minute: 0}
- {weekday: 'Thursday', hour: 10, minute: 0}
- name: pipfile-update
job:
type: decision-task
treeherder-symbol: Nfile
target-tasks-method: pipfile_update
run-on-projects:
- mozilla-central
when:
by-project:
# No default branch
mozilla-central:
- {weekday: 'Monday', hour: 10, minute: 0}