This is a kind of bug 1263887 for GeckoView.
We should update the prompt when child nodes in `<select>` element is modified.
I add `PromptInstanceDelegate.onPromptUpdate` to update the prompt's content.
Browser application should implement it if <select> element is updated during
showing the prompt.
Differential Revision: https://phabricator.services.mozilla.com/D144538
This instrumentation is used to build test cases and help with fuzzing, by
selecting a custom delazification type as the default mode for the top-level.
Differential Revision: https://phabricator.services.mozilla.com/D145993
Adds a delazification mode, which spawn a concurrent depth-first delazification
of all function to fill the stencil cache, to later compare cached results with
stencils produced by on-demand delazification.
The delazification mode also works when being used from a main-thread top-level
compilation, in which case the delazification tasks are created and potentially
blocking the main thread, while the delazification is happening.
This way of doing help comparing on-demand delazification, based on instantiated
stencils with concurrent delazification, based on stencils. Which is a good
mode for fuzzing purposes.
Differential Revision: https://phabricator.services.mozilla.com/D145992
Previously, we only had a single mode of delazification, then we added the
concurrent delazification, which could be mixed with on-demand delazification,
by always checking for cached entries.
Now, with the addition of a third mode which attempt to compare the outputs of
on-demand delazification with concurrent delazification, we need to distinguish
and carry this difference to the function responsible for running the
delazification. However, this information is only available when we first run
the delazification.
This patch adds the JS::DelazificationOption (uint8_t) to the ScriptSource
class, such that we can communicate the selected mode to the functions in charge
of the delazification.
Differential Revision: https://phabricator.services.mozilla.com/D145991
This patch adds a cron job that runs daily and triggers the backfill-all-browsertime action task for the revisions containing commits that were reviewed by #perftest for the daay before the job is running.
Differential Revision: https://phabricator.services.mozilla.com/D144713
Future releases of git cinnabar may not have a "git cinnabar" command
running out of the box, and the future-proof way to download the
cinnabar helper is to use download.py.
Differential Revision: https://phabricator.services.mozilla.com/D146526
If a IPCDataTransferItem fails to be converted, the subsequent IPCDataTransferItems
will be ignored, and the data in Shmem won't be deallocated properly if any.
Differential Revision: https://phabricator.services.mozilla.com/D145940
Enable Geoclue2 geolocation provider by default.
This provider will actually only be considered if Geoclue is available on
D-Bus.
Then it is preferred over particular single location sources (like GPSD)
since its location is based on an aggregation of them, and, additionally,
will be consistent with other applications in the system that are using
the location service.
Differential Revision: https://phabricator.services.mozilla.com/D146519
The test was only waiting for addTab to resolve, waiting for the proper toolbox-ready event could reduce intermittent issues.
Differential Revision: https://phabricator.services.mozilla.com/D146530
This was causing a performance regression.
We now only do this for text leaf and image Accessibles, which gets us back to where we were before bug 1395181.
This means we can't support "click ancestor" on ATK.
There weren't requests for this on ATK anyway.
In future, we can probably support this using the information in the cache.
Differential Revision: https://phabricator.services.mozilla.com/D146528
A previous patch introduced an inner loop within the desktop capture run
loop. The PlatformUIThread always does a single execution of the run
loop before it goes into its alertable sleep -> dispatch -> repeat
cycle. We should not be looping within the desktop capture impl and
should allow the platform UI thread to repeated dispatch to the capture
impl instead. Additionally the startup code was racy with the shutdown
code. Fixing the former caused lock ups durring shutdown while startup
was still happening. Static analysis guards were added in this patch
to help reduce the fragility of this code.
Differential Revision: https://phabricator.services.mozilla.com/D141937
If the walker actor was initialized, we assume the document is ready enough and a root node can be returned if available.
A new test was added for a slow loading document.
Differential Revision: https://phabricator.services.mozilla.com/D146464
Change to derive from nsDisplayEffectsBase, since the backdrop-filter
can still have a visual bounds (and effect) even if the child
stacking context has no items. Also use the same approach to get
the bounding rect and implement GetBounds as nsDisplayFilters uses.
Differential Revision: https://phabricator.services.mozilla.com/D145295
With Fission, `pageshow` and `pagehide` are not guaranteed to happen in order,
e.g. we might get the following order of events:
pageshow -- navigate to example.org
pageshow -- navigate to google.com
pagehide -- example.org is now hidden
which would break the previous assumption that we could rely on the order of
show and hide events.
To handle that, we keep track of the most-recent-added session and we assume
that that is the session bening displayed.
In the future, we might consider keeping state of all sessions until a
`pagehide` event for the specific session arrives.
Differential Revision: https://phabricator.services.mozilla.com/D143961
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.
We also simplify the API by only providing the necessary information about the
node rather than the entire tree structure.
Differential Revision: https://phabricator.services.mozilla.com/D143960
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.
Differential Revision: https://phabricator.services.mozilla.com/D143959
The test failure in the bug is failing because the eventDispatcher in the actor
was previously only available in the top-level-frame.
In addition to adjusting for ActorDispatcher, this patch also makes every actor
handle its own frame (rather than handling all the in-process children) which
simplifies the code a bit.
We also modify the test to use a third-party iframe so that the OOP iframe case
is covered.
Differential Revision: https://phabricator.services.mozilla.com/D141647
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.
Differential Revision: https://phabricator.services.mozilla.com/D141645
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.
Differential Revision: https://phabricator.services.mozilla.com/D139073
Since primitives are not passed through the backdrop-filter chain
they may be part of during update_prim_dependencies, they may not
expand their coverage rect to the entire coverage rect of the
backdrop-filter primitive that they affect.
In rare cases, this can result in incorrect invalidation where the
edges of a blurred primitive may not invalidate a (partial) tile
when the primitive no longer intersects with that tile.
To handle this correctly, we defer checks on the backdrop filter
validity until we've calculated the dirty rects for all tiles
that are affected by that filter. Then, if any of those regions
are dirty, we invalidate the backdrop-filter primitive region.
In future, it may be better to pass the primitive through both
its standard surface chain, and also the surface chain of the
backdrop-filter. However, this would be quite an involved change
to make, and it's not clear right now if it would be better than
just deferring and invalidating the backdrop-filter prim.
Differential Revision: https://phabricator.services.mozilla.com/D146388