Closed Bug 1565183 (marionette-actor) Opened 5 years ago Closed 3 years ago

[meta] Migrate to JSWindowActor API in Marionette

Categories

(Remote Protocol :: Marionette, task, P3)

Version 3
task

Tracking

(Fission Milestone:Future, firefox86 fixed)

RESOLVED FIXED
86 Branch
Fission Milestone Future
Tracking Status
firefox86 --- fixed

People

(Reporter: ato, Unassigned)

References

Details

(Keywords: meta)

Attachments

(1 obsolete file)

As mentioned in bug 1565162, the message manager API is deprecated.
Marionette must be ported to use the new JSWindowActor model to continue working.

Priority: -- → P3
See Also: → 1565162

How much work do we think that this will be? A rough guesstimate

Flags: needinfo?(ato)

I met with whimboo yesterday and we think there are two ways we
could go about this, depending what the priority is for moving
Marionette off the message manager.

The purpose of JSWindowActor is to load less JS code to improve
the memory footprint of Firefox in an increasingly multiprocess
architecture. The actor model also organises code so that it will
be easier to support in a post-Fission world.

We theorise that moving the entire Marionette content frame script to
a single actor will let us move off the message manager relatively
quicly, but that this approach will not give us any of the Fission
or memory reduction benefits that the actor model offers. We estimate
this will take three man-months.

If we consider applying the principles of the actor model more
rigorously to Marionette, we need to bear in mind the monolithic
nature of the code base. To effectively employ the actor model in
Marionette, we would likely have to move the known web element cache
from the content process to the parent process. The same applies
to session and capabilities state. This is becaue child actors are
typically meant to be short-lived and action-driven, and web elements
in particular is being used throughout different types of action-actors.

It is harder to estimate a large refactoring project, but significant
progress could be made in ~six man-months.

Flags: needinfo?(ato)

Tentatively moving all bugs whose summaries mention "Fission" (or other Fission-related keywords) but are not assigned to a Fission Milestone to the "?" triage milestone.

This will generate a lot of bugmail, so you can filter your bugmail for the following UUID and delete them en masse:

0ee3c76a-bc79-4eb2-8d12-05dc0b68e732

Fission Milestone: --- → ?

Tracking for Fission milestone M6 because we want to be able to run Marionette tests with Fission before enabling in Nightly.

Fission Milestone: ? → M6

As suggested by the Fission team it would be better to first get all the navigation commands migrated from the content to the parent process. I filed bug 1612831 for that.

Depends on: 1612831
Fission Milestone: M6 → M6b
Assignee: nobody → hskupin
Status: NEW → ASSIGNED
Keywords: meta
Summary: Migrate to JSWindowActor API instead of message manager in Marionette → [meta] Migrate to JSWindowActor API in Marionette

We need the Marionette tests working for Fission and desired but not necessarily ported to JSWindowActor framework.

Fission Milestone: M6b → Future
No longer depends on: 1658928
No longer depends on: 1660426

Meta bugs shouldn't be assigned.

Assignee: hskupin → nobody
Status: ASSIGNED → NEW
No longer depends on: 1612831
Assignee: nobody → hskupin
Status: NEW → ASSIGNED
Assignee: hskupin → nobody
Status: ASSIGNED → NEW
Depends on: 1667323
Blocks: 1660168
No longer depends on: 1660168
Alias: marionette-actor

Just to give an update here. Today I pushed a try build with actors enabled for both Fission and non-Fission builds:

https://treeherder.mozilla.org/#/jobs?repo=try&revision=c91d5773c8d01ca7b0d2bf27a4b14c262052b654

As you can see there are still lots of failures. But most of these actually for non-Fission jobs. We will continue with enabling actors for Fission jobs first over on bug 1660168. Once those are stable we will add new blockers here.

No longer blocks: 1660168
Depends on: 1660168
Depends on: 1676283
Regressions: 1676283
No longer regressions: 1676283

This is now done. All the code in Marionette goes through the JSWindowActors now, and the framescript is no longer used.

Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 86 Branch
Attachment #9162184 - Attachment is obsolete: true
No longer depends on: 1683755
Product: Testing → Remote Protocol
You need to log in before you can comment on or make changes to this bug.