This change is tested by `test_nsITableEditor_getFirstRow.html` and
`test_nsITableEditor_insertTableColumn.html`.
Depends on D146361
Differential Revision: https://phabricator.services.mozilla.com/D146362
It refers the layout information for getting row/column index of selected cell
element or a cell element which contains selection. However, it can stop
referring it if all callers can specify insertion point of new cells, and it's
possible. Therefore, we can make it free from layout information.
Note that this blocks legacy mutation events during inserting table cell
elements, but perhaps this does not cause problems in the wild.
`DOMNodeInserted` will be fired after all cell elements are inserted, so
from point of view of the event listeners, editor content is different from
traditional behavior, but this works only when user uses inline table editor
which is disabled by default. I.e., in the wild, this path is rarely run.
Note that the changes are tested by `test_nsITableEditor_insertTableColumn.html`
and `test_nsITableEditor_insertTableCell.html`.
Depends on D146360
Differential Revision: https://phabricator.services.mozilla.com/D146361
Our table editor depends on layout information for getting raw/column position
of a cell, checking rawspan/colspan information and table size. Therefore,
they require the latest information, but they don't flush pending layout by
themselves. Therefore, this patch makes them do it by themselves and deleting
unnecessary hack from their tests.
Differential Revision: https://phabricator.services.mozilla.com/D146359
nsIFactory is binary compatible with Windows COM's IClassFactory,
but nothing seems to depend on it. This patch removes the test
for compatibility, TestCOM, and removes the lockFactory
method that isn't otherwise needed.
Differential Revision: https://phabricator.services.mozilla.com/D146386
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
Note that these tests only ensure that the pin is properly added to the update URL and to the telemetry. They do not test that the update applied will be of the correct version. This is because we are not attempting to have Firefox check if the update provided is valid given the pin, we are leaving it to the update server (Balrog) to find and serve the correct version.
Differential Revision: https://phabricator.services.mozilla.com/D143788
This patch also adds the capability for Policy implementations (in Policies.jsm) to have a `validate` function. If it returns `false`, the Enterprise Policy engine will consider the policy's parameter to be invalid and the policy will not be activated. This capability is used to validate the update pin policy's parameter to make sure that it takes the expected format ("X." or "X.Y.", where X is the pinned major version and Y is the pinned minor version).
Differential Revision: https://phabricator.services.mozilla.com/D143785
Currently if the pref for using content sig checks with GMP updates is missing
we will use cert pinning. I.e. the default behaviour in the absence of a pref
value is cert pinning. This changes that so that we use content sig by default.
This is done as we're moving to content signatures as default behaviour, so it
makes sense to have it be the default if the pref is missing.
Differential Revision: https://phabricator.services.mozilla.com/D146260
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
This allows us to replace a number of magic numbers in the
WebRequestError code with automatically generated constants which are
guaranteed to be kept up to date.
This build script is able to run early enough during the build step as
generated files which take a `.jinja` file as an argument are hard-coded
to be run during the pre-export phase for Android builds. As it is just
as simple python script with no other dependencies, this shouldn't
impact geckoview build performance even when using build artifacts.
Differential Revision: https://phabricator.services.mozilla.com/D146356