This is mostly edge-casey, but see bug 1757156 for an example where it's
causing some issues (granted, they could use `href="#"` or something
instead of an empty href).
It feels weird if a link looks like a link (because the CSS definition
of a link matches, which is "has an href") but then mostly doesn't
behave as a link.
We can't navigate anywhere if we don't have a valid URI but maybe JS
handles the relevant events as in bug 1757156.
Use the CSS definition (has href) since that's interoperable across
browsers. This should also make some stuff much faster (since checking
'is link' is now just a bit check instead of a virtual call).
(Awaiting try results, if no tests need adjustments then I need to write
some)
Differential Revision: https://phabricator.services.mozilla.com/D142107
Instead of reasoning about whether items should be active with a yes/no granularity, we consider whether it could/should be and have some logic to weight that against the risk of causing extra layerization when making containers active.
For example a small image *could* be made active, but we might not make it so if it causes extra layerization in cases where larger images would have been made active.
Differential Revision: https://phabricator.services.mozilla.com/D142213
nsDisplayTransform::HitTest clips the rect it passes to its children,
and thus intersecting the whole area isn't relevant.
Depends on D141300
Differential Revision: https://phabricator.services.mozilla.com/D141301
Now that we don't include overflow in outlines (bug 1739894) the
overwhelmingly common case is that innerRect == GetRectRelativeToSelf(),
except on a couple special cases.
Avoid storing the property in those cases. The test introduced in the
patch above still ensures we invalidate rendering correctly even without
the presence of the assert.
Depends on D141320
Differential Revision: https://phabricator.services.mozilla.com/D141321
We need them for SVG primitives.
This patch adds a bit of plumbing to disable snapping some of the primitives and forcing the antialiasing shader feature where needed, and uses it for SVG solid rectangles and images.
Differential Revision: https://phabricator.services.mozilla.com/D139024
Bug 1285857 changed from using CreateSimilarDrawTarget on D2D to using a
software DrawTarget because of the need to convert the result to
luminance. However, after that bug 1417903 changed the luminance
conversion to use the IntoLuminanceSource which is supported directly by
D2D which removed the need for a software DrawTarget.
This will let us use a recording DrawTarget which will avoid serializing
the image data and is step toward switching to CreateClippedDrawTarget.
Differential Revision: https://phabricator.services.mozilla.com/D139046
Build errors fixed here:
layout/painting/DottedCornerFinder.cpp:33:1: error: no template named 'nsTHashMap'
(and similar for layout/painting/DashedCornerFinder.cpp)
* Fixed by including nsTHashMap.h
layout/painting/WindowRenderer.cpp:186:38: error: use of undeclared identifier 'Rect'; did you mean 'gfx::Rect'?
layout/painting/WindowRenderer.cpp:111:18: error: unknown type name 'PersistentBufferProvider'; did you mean 'layers::PersistentBufferProvider'?
(and more similar errors for e.g. `PersistentBufferProviderBasic::Create`, etc.)
* Fixed by adding 'using' statements.
layout/painting/WindowRenderer.cpp:117:8: error: use of undeclared identifier 'gfxPlatform'
layout/painting/WindowRenderer.cpp:148:57: error: member access into incomplete type 'mozilla::dom::AnimationEffect'
layout/painting/WindowRenderer.cpp:150:16: error: incomplete type 'mozilla::EffectSet' named in nested name specifier
layout/painting/WindowRenderer.cpp:211:26: error: member access into incomplete type 'mozilla::nsDisplayList'
* Fixed by including these types' headers.
layout/painting/HitTestInfo.cpp:67:32: error: use of undeclared identifier 'CompositorHitTestFlags'; did you mean 'gfx::CompositorHitTestFlags'?
* Fixed by adding 'using' statement.
layout/painting/nsCSSRenderingGradients.cpp:772:26: error: incomplete type 'nsLayoutUtils' named in nested name specifier
* Fixed by including nsLayoutUtils.h
layout/painting/nsCSSRenderingGradients.h:106:29: error: unknown type name 'gfxPattern'
* Fixed with a forward-decl.
layout/painting/nsCSSRenderingGradients.h:107:30: error: unknown type name 'gfxRect'
* Fixed with an include (can't use a forward-decl here; gfxRect is a typedef and hence can't really be forward-declared).
Differential Revision: https://phabricator.services.mozilla.com/D138219
Previously, we would get the wrong bounds on HiDPI displays.
This matches what's done in ComputeClipForMaskItem and makes things a bit
more explicit by using typed units.
Differential Revision: https://phabricator.services.mozilla.com/D137880
This prevents opacity from being set on large images sent to WebRender.
Instead, opacity will be handled in the parent layer, which is less efficient,
but correct for these large images.
This can be a temporary fix until WR supports opacity on arbitrarily large
images.
Differential Revision: https://phabricator.services.mozilla.com/D137360
We call MaybeApplyAdditionalOffset a few lines up when setting *aOffset, but it
looks like we missed this particular codepath. This was causing content to
render properly during print-preview (which takes the upper codepath) but not
during actual printing (which takes the lower codepath, the one where I'm
adding the new call).
Differential Revision: https://phabricator.services.mozilla.com/D137199
This was added in bug 1201330 but with WR isn't really needed anymore and the code causes the expiration timer to fire until the scroll frame becomes inactive (the most common scroll frames stay active, ie root scroll frames).
Differential Revision: https://phabricator.services.mozilla.com/D136806