Fission Android: eventDispatcher is not available in xorigin iframes
Categories
(GeckoView :: Sandboxing, defect, P1)
Tracking
(firefox98 disabled, firefox99 disabled, firefox100 disabled, firefox101 disabled, firefox102 fixed)
People
(Reporter: agi, Assigned: agi)
References
(Blocks 1 open bug)
Details
(Whiteboard: [fission:android:m2] [geckoview:m99] [geckoview:m100] [geckoview:m101] [geckoview:m102])
Attachments
(5 files)
IIUC cpmm
is not available on xorigin iframes (and shouldn't be used in general). We need to rewrite Messaging.jsm
to use the child Actor`s messaging instead. https://searchfox.org/mozilla-central/rev/fc4d4a8d01b0e50d20c238acbb1739ccab317ebc/mobile/android/modules/geckoview/Messaging.jsm#23
Assignee | ||
Updated•3 years ago
|
Assignee | ||
Comment 1•3 years ago
|
||
To do this we need to remove all instances of the message manager, which in particular means that we have to migrate GeckoViewPermission to actor.
Updated•3 years ago
|
Assignee | ||
Updated•3 years ago
|
Assignee | ||
Comment 2•3 years ago
|
||
The existing EventDispatcher messaging infrastracture uses cpmm (content
process message manager) which is deprecated and will be removed for Fission.
The current behavior with fission is that cpmm is available only on in-frame
frames, so on any oop frame we're not able to send or receive eventDispatcher
messages.
To allow OOP frames actors to send messages, this patch implements a new type
of dispatcher, called ChildActorDispatcher which routes messages through the
actor messaging system.
We then catch these messages on the parent actor side and send them to Java.
To be able to reroute messages from the Parent actor we need to make sure that
each actor that we define extends GeckoViewActorParent, so we define an actor
parent for each missing child actor.
In the future we could consider moving GeckoViewActorParent to a native
implementation for performance reasons.
Updated•3 years ago
|
Updated•3 years ago
|
Updated•3 years ago
|
Assignee | ||
Comment 3•3 years ago
|
||
This needs some depending bugs to land together with.
Assignee | ||
Comment 4•3 years ago
|
||
ActorDispatcher does not support receiving multiple callbacks for one message
so we need to change the strategy a little bit.
We need to centralize handling actions are each sequential ID is incremented
independently for each child, so it won't work for iframes.
To avoid this problem in the future, the sequential ID is no just a
randomly-generated UUID.
We also do all the checking on the parent process, so we don't need to check in
the child again whether we got a message that was out-of-date.
Updated•3 years ago
|
Comment 5•3 years ago
|
||
There are some r+ patches which didn't land and no activity in this bug for 2 weeks.
:agi, could you have a look please?
If you still have some work to do, you can add an action "Plan Changes" in Phabricator.
For more information, please visit auto_nag documentation.
Assignee | ||
Comment 6•3 years ago
|
||
This allows waiting for an arbitrary condition in waitUntilCalled
. To make
this happen, we need to execute delegate calls as they happen, rather than
replaying them all at the end, this is why we need to change a little bit more
code than expected in GeckoSessionTestRule.
This also fixes some weird behavior when calling waitUntilCalled
while
waiting on a condition that depends on the behavior of the delegate in
waitUntilCalled
.
Assignee | ||
Comment 7•3 years ago
|
||
This is a minor API fix wherby we call onSessionStart
, onNodeAdd
instead of
having a single onAutofill
call that passes in the type of call. This aligns
the API with all our other delegates.
Note that because this API is normally implemented inside GeckoView itself,
we dont expect any action on embedders for this change.
Assignee | ||
Comment 8•3 years ago
|
||
Before this patch, the autofill tree was mutable, which makes it hard to follow
updates and reason about state.
This change makes the autofill tree immutable and adds a separate HashMap
to
track mutable values like value
, callback
.
This change also modifies the way we track nodes internally, using exclusevely
the UUID of the node rather then the int autofill ID which is now only used at
the boundary of the Autofill API.
Updated•3 years ago
|
Updated•3 years ago
|
Comment 10•3 years ago
|
||
bugherder |
Comment 11•3 years ago
|
||
Since the status are different for nightly and release, what's the status for beta?
For more information, please visit auto_nag documentation.
Assignee | ||
Comment 12•3 years ago
|
||
Forgot to set leave-open
Updated•3 years ago
|
Comment 13•3 years ago
|
||
Comment 14•3 years ago
|
||
Backed out for causing lint failures in Autofill
Backout link: https://hg.mozilla.org/integration/autoland/rev/1254448a9518995f5922080912755262c984bdfd
Comment 15•3 years ago
|
||
Comment 16•3 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/63a68fd79bfd
https://hg.mozilla.org/mozilla-central/rev/1c1defb1f014
https://hg.mozilla.org/mozilla-central/rev/cce65aa3dddd
https://hg.mozilla.org/mozilla-central/rev/b50f41d22259
Comment 17•2 years ago
|
||
Moving Android Fission bugs to the new GeckoView::Sandboxing component.
Description
•