This patch series gave picture primitives the full anti-aliasing instead of just the inward half, some reftest references have to be changed accordingly.
Differential Revision: https://phabricator.services.mozilla.com/D146199
This patch adds a edge aa mask field in the common primitive data so that primitives can turn off anti-aliasing at their edges. There was some padding in the structure so it didn't change the size.
This will be use by a followup patch to turn off anti-aliasing between pieces of linear gradients when they are decomposed into simpler primitives.
Differential Revision: https://phabricator.services.mozilla.com/D145936
The Antialiasing code sets up the bounds of a rect to anti-alias in the vertex shader for the fragment shader to compute the AA via a distance approximation.
The modified mix call selects between the edges of the current instance (could be a primitive segment) and the edges of the primitive based on the anti-aliasing edge flags. If an edge does not have the AA flag, then the aa will be computed based on the distance to the primitive's edge. This usually works because we tend to want AA around the primitive but not along the internal edges of potential segments of a primitive. However it also means that if we take the anti-aliasing code path (for example under a non-axis-aligned transform) then the edges of the primitive are always anti-aliased. In some cases we want to disable the anti-aliasing along the primtive, though, for example when something is split into multiple primitive like the linear gradient optimization.
This patch changes this mix call so that it selects between the segment bounds and some very large rect. If the primitive is not segmented, then the segment bounds are the bounds of the primitive. The effect is that AA is only applied to edges that have the flag set rather than segment edges with the flag set as well as any edge at the border of the primitive.
Differential Revision: https://phabricator.services.mozilla.com/D145935
The problem with my previous solution for bug 1471546 was that bookmarkIndex is
not updated when a user sorts the list of bookmarks. So my solution is to always
use the treeIndex since its more reliable.
I've also added two tests: the first checks if the row the visible after clicking
a bookmark that's close to the bottom of the viewable area, and the second does the
same after re-sorting the list.
Differential Revision: https://phabricator.services.mozilla.com/D145509
This test always fails, and it should be always disabled, but for some reason
it is run in verify mode, on most (but not all) platforms.
Differential Revision: https://phabricator.services.mozilla.com/D146385
This patch series gave picture primitives the full anti-aliasing instead of just the inward half, some reftest references have to be changed accordingly.
Differential Revision: https://phabricator.services.mozilla.com/D146199
This patch adds a edge aa mask field in the common primitive data so that primitives can turn off anti-aliasing at their edges. There was some padding in the structure so it didn't change the size.
This will be use by a followup patch to turn off anti-aliasing between pieces of linear gradients when they are decomposed into simpler primitives.
Differential Revision: https://phabricator.services.mozilla.com/D145936
The Antialiasing code sets up the bounds of a rect to anti-alias in the vertex shader for the fragment shader to compute the AA via a distance approximation.
The modified mix call selects between the edges of the current instance (could be a primitive segment) and the edges of the primitive based on the anti-aliasing edge flags. If an edge does not have the AA flag, then the aa will be computed based on the distance to the primitive's edge. This usually works because we tend to want AA around the primitive but not along the internal edges of potential segments of a primitive. However it also means that if we take the anti-aliasing code path (for example under a non-axis-aligned transform) then the edges of the primitive are always anti-aliased. In some cases we want to disable the anti-aliasing along the primtive, though, for example when something is split into multiple primitive like the linear gradient optimization.
This patch changes this mix call so that it selects between the segment bounds and some very large rect. If the primitive is not segmented, then the segment bounds are the bounds of the primitive. The effect is that AA is only applied to edges that have the flag set rather than segment edges with the flag set as well as any edge at the border of the primitive.
Differential Revision: https://phabricator.services.mozilla.com/D145935
Lately nsIPrintSession was only used to pass around RemotePrintJobChild objects.
Now that we pass those objects explicitly where needed (part 1), this class
serves no purpose.
Another reason to want to get rid of this class is that having it as a member
of nsIPrintSettings made no sense and was confusing.
Differential Revision: https://phabricator.services.mozilla.com/D146381
Given how nsIPrintSettings is passed around, stored and copied all over the
place, it's very hard to reason about where and when a RemotePrintJobChild is
needed or valid. This patch avoids all that by explicitly passing a
RemotePrintJobChild when it's needed.
Another reason to make this change is because RemotePrintJobChild really does
not belong on nsIPrintSettings. That interface is supposed to represent a
collection of settings for laying out the document that is to be printed.
Differential Revision: https://phabricator.services.mozilla.com/D146380
Add a Geoclue (version 2) geolocation provider.
This way Firefox can make use of multiple location sources present in the
system, from GNSS provided by a cellular modem or the current network to
location based on visible WiFi networks and 3G tower data, all while
sharing them with other applications.
This is a pure D-Bus-based implementation using a proper state machine, it
does not require any additional dependencies.
Differential Revision: https://phabricator.services.mozilla.com/D145838
This is required to be done in WR rather than Gecko since a backdrop
filter may exist in a child iframe display list but sample from a
backdrop root in a parent iframe (if the iframe has transparency
enabled). In this case the parent display list has no knowledge
that a backdrop filter primitive is present.
Differential Revision: https://phabricator.services.mozilla.com/D146149
It's not possible to implement backdrop-filter with gecko adding
explicit boundaries for backdrop roots, since backdrop filters
can sample from a backdrop in a parent iframe. In this case, the
parent display list (in one process) doesn't see a backdrop filter,
so no root display item is added, even if there is a child display
list (in another process) that has a backdrop-filter.
This patch just removes the existing backdrop-filter root display
items from Gecko. A follow up patch will add implicit backdrop
root handling inside WR itself, where we have access to all of the
display lists.
Differential Revision: https://phabricator.services.mozilla.com/D146148
Although not needed right now (checkerboarding backgrounds get
a slice anyway due to being a different scroll root), this will
be important for the upcoming work to make backdrop filter
roots implicit. This allows WR to know when slicing up a content
slice if the prim is relevant to the backdrop root.
Differential Revision: https://phabricator.services.mozilla.com/D146145