Граф коммитов

67768 Коммитов

Автор SHA1 Сообщение Дата
shindli 1be0a5d3ce Merge inbound to mozilla-central. a=merge 2019-03-05 23:41:05 +02:00
Daniel Holbert e2f3884dca Bug 1530048 part 1: Remove quirks-mode-only UA stylesheet rule that made table borders gray. r=dbaron
This quirk was originally for compatibility with IE, but IE doesn't have this
special behavior anymore (in quirks-mode or in standards-mode).
And Blink/WebKit have yet another set of behaviors, which are also not
quirks-mode-dependent, and vary depending on the part of the table:
 https://bugs.chromium.org/p/chromium/issues/detail?id=935708
 https://bugs.chromium.org/p/chromium/issues/detail?id=935729

Differential Revision: https://phabricator.services.mozilla.com/D21175

--HG--
extra : moz-landing-system : lando
2019-03-04 23:33:50 +00:00
Neil Deakin 68ec31a473 Bug 1530594, generate frames before setting the active child in a menulist, so that menulists with sizetopopup='none' will still allow keyboard navigation when the menulist has not yet been opened, updated to get popup type earlier to avoid possible crash, r=tnikkel
--HG--
extra : rebase_source : 953446ea44e48966fa41f8623aae259aed032ca0
2019-03-05 04:32:40 -05:00
Bogdan Tara 3e0f1d95fc Merge inbound to mozilla-central. a=merge 2019-03-05 11:27:18 +02:00
Matt Woodrow 7132aa2044 Bug 1531532: Remove incorrect reftest fuzzy annotation. r=bustage 2019-03-05 18:36:39 +13:00
Ciure Andrei 698d0759ec Merge mozilla-central to mozilla-inbound. a=merge CLOSED TREE 2019-03-05 06:24:16 +02:00
Jeff Muizelaar 4febae72fc Bug 1495170. Use CreateClippedDrawTarget more. r=mstange
This lets us restrict the size of the mask surface that we allocate
to the destination tile size. This gives a large performance
improvement.

It also includes some miscelanous fixes to the CreateClippedDrawTarget
code path.

Differential Revision: https://phabricator.services.mozilla.com/D21750
2019-03-04 22:30:09 -05:00
Jeff Muizelaar 967d03ef66 Bug 1531532. Use preTranslate instead of postTranslate when correcting for the mask offset. r=mattwoodrow
DTO = DrawTargetOffset = (-Origin.x, -Origin.y)
CTM = CurrentTransform
MASKT = MaskTransform = Inv(CurrentTransform)
MASKO = MaskOffset = (GetRect().x, GetRect().y)

The transform to device space is:

MASKT * CTM * DTO

Currently we do:
MASKT = MASKT * MASKO

Which gives us MASKT * MASKO * CTM * DTO. This works fine if there's no scale but
will not properly cancel out if there is.

I believe we want:
MASKO * MASKT * CTM * DTO

To get this we need to preTranslate instead of postTranslate.

Differential Revision: https://phabricator.services.mozilla.com/D21604
2019-03-04 22:30:06 -05:00
Hiroyuki Ikezoe 2fcc3c784e Bug 1532477 - Return BEnd() from LogicalRect::YMost() in the case of non vertical. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D22035

--HG--
extra : moz-landing-system : lando
2019-03-05 01:22:06 +00:00
Brian Birtles 8ed54f03c6 Bug 1527210 - Drop KeyframeEffect::MaybeUpdateFrameForCompositor; r=hiro
Since bug 1524480 we set the NS_FRAME_MAY_BE_TRANSFORMED frame bit when needed
in RestyleManager::ProcessRestyledFrames so that it is now redundant to also set
it from KeyframeEffect.

Furthermore, setting frame bits from KeyframeEffect is a little fragile since it
depends on the life cycle of the KeyframeEffect which is independent of the
nsFrame. If we can avoid doing that, we probably should.

Differential Revision: https://phabricator.services.mozilla.com/D21885

--HG--
extra : moz-landing-system : lando
2019-03-05 03:09:48 +00:00
Brian Birtles d83da99f63 Bug 1527210 - Fix handling of animation of opacity on display:table; r=hiro
As with the previous patch in this series, we need to pay particular attention
to how we handle display:table content when detecting animations on a element.
Please see the extended description in that patch for an explanation of
different frame types involved.

As with transforms, our handling of opacity is also inconsistent.  In
particular, we fail to return true from nsIFrame::HasOpacityInternal for
display:table content with opacity animations applied due to the conflicting
requirements for a primary frame and having opacity animations (which are stored
on the style frame).

Unlike transforms, however, we do not inherit the opacity to the table wrapper.
Instead we leave it on the inner table frame. As a result, we should not check
for a primary frame, but instead we should check for the style frame for the
primary frame.

This patch adjusts this handling to check instead for the appropriate style
frame as opposed to requiring a primary frame. It includes a reftest that fails
without the code changes in this patch.

Differential Revision: https://phabricator.services.mozilla.com/D21884

--HG--
extra : moz-landing-system : lando
2019-03-05 03:09:33 +00:00
Brian Birtles 4264e3210a Bug 1527210 - Be more consistent about only applying transforms to primary frames; r=hiro
For display:table content we generate two frames: a table wrapper frame and an
inner table frame. The styles are applied to the inner frame (referred to as the
style frame), whilst the wrapper frame is the primary frame for the content.

However, in order to make tables with transforms behave as a container for
abspos/fixed-pos content as required by the spec, we apply the transform to the
wrapper frame (bug 722777) by inheriting the transform from inner to wrapper and
then ignoring the transform on the inner frame (bug 722777 and bug 816458).

When handling animations on table elements we need to be careful of this
distinction. in particular, css animations[1] and web animations[2] require that
when we have an unfinished transform animation targetting an element, the
element acts as if it had `will-change: transform` applied and therefore
generates a stacking context. As a result we need to accurately detect when
a frame should be considered as having transform animations applied to it or not
for the purpose of creating a stacking context.

Previously our handling of display:table content was quite inconsistent and
contradictory. For example, `nsIFrame::HasAnimationOfTransform` would check for
a primary frame AND for animations on that frame, despite the fact that we only
ever store animations on the style frame. As a result it could never return true
for either a table wrapper or inner table frame.

This patch attempts to make this handling at least a little more consistent,
producing the following result:

Outer table frame (primary frame):

    nsIFrame::IsTransformed → true
    nsIFrame::IsCSSTransformed → true
    nsIFrame::HasAnimationOfTransform → true
    nsLayoutUtils::HasAnimationOfProperty(frame, eCSSProperty_transform) → false

Inner table frame (style frame):

    nsIFrame::IsTransformed → false
    nsIFrame::IsCSSTransformed → false
    nsIFrame::HasAnimationOfTransform → false
    nsLayoutUtils::HasAnimationOfProperty(frame, eCSSProperty_transform) → true

We maintain that the NS_FRAME_MAY_BE_TRANSFORMED bit is only set on the primary
frame whilst the mMayHaveTransformAnimation flag is only set on the style frame.

Note that we don't simply always put everything on the primary frame because for
other property types (e.g. opacity) the default setup of putting all styles and
animations on the style frame is simpler and correct. So far it is only
transforms that require special handling to apply the effect to the wrapper
frame.

This patch adds a reftest that fails without the code changes included in this
patch.


[1] https://drafts.csswg.org/css-animations/#animations
[2] https://drafts.csswg.org/web-animations-1/#side-effects-section

Differential Revision: https://phabricator.services.mozilla.com/D21883

--HG--
extra : moz-landing-system : lando
2019-03-05 03:09:19 +00:00
Masayuki Nakano f410998652 Bug 1466208 - part 30: Create PresShell::EventHandler::AutoCurrentEventInfoSetter class r=smaug
With splitting `HandleEvent()` a lot, it becomes more difficult to keep
managing each set of calling `PushCurrentEventInfo()` and
`PopCurrentEventInfo()`.  So, `EventHandler` should have a helper class
to push and pop current event info into/from the stack.

Differential Revision: https://phabricator.services.mozilla.com/D21198

--HG--
extra : moz-landing-system : lando
2019-03-04 06:12:22 +00:00
Dan Glastonbury ff5c70a292 Bug 1530584 - Correct placeholder overflow calculation. r=miko,mattwoodrow
The calculation of aOverflow rect for a placeholder contained in a transformed
stacking context didn't take the transform into account, leading to an incorrect
rect which artificially inflated the calculated rebuild region.

Differential Revision: https://phabricator.services.mozilla.com/D21168

--HG--
extra : moz-landing-system : lando
2019-03-04 12:26:49 +00:00
Daniel Holbert f87df579d4 Bug 1531025 part 2: Skip an unnecessary border-radius calculation if the radii are 0 (to avoid division by 0). r=boris
This patch avoids a potential division by 0 (one that's unlikely to be
triggered by real content), for correctness and robustness.

This patch isn't really changing the logic, because the newly-guarded code is
already guarded by a "length < sum" check, and "length" is expected to be
nonnegative [1], which means "sum" would already have been nonzero in cases
where the existing strict less-than comparison returned true.

[1] One special case where we can have negative `length` values here:
if this is an outline with an `outline-offset` that is sufficiently negative
to entirely cancel out the outlined element's border-box size, then that can
produce a negative `length` (i.e. the outline box will have a negative size,
conceptually). In that scenario, we were previously dividing by 0 here and
working with bogus huge/infinite negative values as a result, but we should
not do that.

Depends on D21578

Differential Revision: https://phabricator.services.mozilla.com/D21579

--HG--
extra : moz-landing-system : lando
2019-03-04 19:24:01 +00:00
Daniel Holbert 88cd5203ba Bug 1531025 part 1: Add braces around conditions in nsIFrame::ComputeBorderRadii(). r=boris
This patch doesn't change any logic/behavior -- it's just adding braces for clarity.

Differential Revision: https://phabricator.services.mozilla.com/D21578

--HG--
extra : moz-landing-system : lando
2019-03-04 19:23:56 +00:00
Kartikaya Gupta fecd1d365c Bug 1511740 - Use nsDisplayAsyncZoom items to insert zooming animations in WR. r=jrmuizel,botond
The way we control APZ zooming in WebRender is by inserting an animation
property placeholder on a WR stacking context, and then having APZ
update the animation transform value with the proper matrix at composite
time.

Previously, the stacking context being used was the rootmost
stacking context in the content process. However this doesn't work for
zoomable content in the UI process (e.g. about:support), and after
recent changes, also wraps display items that should not be affected by
zoom (e.g. scrollbars or the background color item).

This patch moves the animation property placeholder so that it
corresponds to the newly added nsDisplayAsyncZoom display item, which
corrects both of the above problems and is conceptually in line with the
desired behaviour.

Differential Revision: https://phabricator.services.mozilla.com/D21795

--HG--
extra : moz-landing-system : lando
2019-03-04 20:55:46 +00:00
Emilio Cobos Álvarez 25098daaaa Bug 1532122 - Make word-spacing, letter-spacing, and line-height use Rust lengths. r=boris
This also adopts the resolution from [1] while at it, making letter-spacing
compute to a length, serializing 0 to normal rather than keeping normal in the
computed value, which matches every other engine.

This removes the SMIL tests for percentages from letter-spacing since
letter-spacing does in fact not support percentages, so they were passing just
by chance.

[1]: https://github.com/w3c/csswg-drafts/issues/1484

Differential Revision: https://phabricator.services.mozilla.com/D21850

--HG--
extra : moz-landing-system : lando
2019-03-04 18:19:40 +00:00
Geoff Brown a908bb5504 Bug 1531611 - Check for ANR and tombstone files in all android tests; r=bc
The existing ANR and tombstone checks in remoteautomation are used
by mochitests and reftests but are awkward for other harnesses like cppunit
that do not use remoteautomation...and easily missed. This patch moves that
code to the mozharness AndroidMixin, treating ANRs and tombstones like the
logcat: Make sure any old logs are deleted when the mozharness script starts,
then move any logs found at the end of the run to the upload directory.
https://treeherder.mozilla.org/#/jobs?repo=try&tier=1%2C2%2C3&revision=f3de1e9836da2b0c9232f5d92c751b979459e19b
demonstrates tombstone artifacts for the Android 7.0 cppunit tests.

Differential Revision: https://phabricator.services.mozilla.com/D21774

--HG--
extra : moz-landing-system : lando
2019-03-05 14:22:45 +00:00
Tim Nguyen fa021187df Bug 1513343 - Remove textarea binding and replace usages with html:textarea. r=bgrins,dao
Differential Revision: https://phabricator.services.mozilla.com/D15001

--HG--
extra : moz-landing-system : lando
2019-03-05 11:41:42 +00:00
Sam Sneddon f392bc3d20 Bug 1531740 - make reftest-analyzer.xhtml stricter finding images r=dbaron
Depends on D21688

Differential Revision: https://phabricator.services.mozilla.com/D21689

--HG--
extra : moz-landing-system : lando
2019-03-05 00:23:49 +00:00
Sam Sneddon 565ef75673 Bug 1530008 - make reftest-analyzer.xhtml work with local WPT output r=dbaron
Differential Revision: https://phabricator.services.mozilla.com/D21688

--HG--
extra : moz-landing-system : lando
2019-03-05 10:03:52 +00:00
Bogdan Tara e264b82244 Merge mozilla-central to autoland. a=merge CLOSED TREE 2019-03-05 11:30:19 +02:00
Emilio Cobos Álvarez f1c235dc68 Bug 1512993 - Get rid of XBL display usage for buttons and toolbarbuttons. r=mats
This is the last use of them!

Differential Revision: https://phabricator.services.mozilla.com/D21924

--HG--
extra : moz-landing-system : lando
2019-03-04 17:20:29 +00:00
Masayuki Nakano 47ef72825f Bug 1466208 - part 29: Create PresShell::EventHandler::ComputeFocusedEventTargetElement() r=smaug
Most remaining code in `PresShell::EventHandler::HandleEvent()` is what computes
event target of the event which should be handled on focused content.  This
patch moves the part to the new method.

Additionally, moves `nsIPresShell::gKeyDownTarget` to
`EventHandler::sLastKeyDownEventTargetElement` and make it use `StaticRefPtr`.

Finally, for using `Element*` instead of `nsIContent*`, changes the result type
of `Document::GetUnfocusedKeyEventTarget()` to `Element*`.

Differential Revision: https://phabricator.services.mozilla.com/D21195

--HG--
extra : moz-landing-system : lando
2019-03-04 06:11:41 +00:00
Miko Mynttinen c0ca483df6 Bug 1526958 - Cache dom::TouchEvent::PrefEnabled in nsDisplayListBuilder r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D20326

--HG--
extra : moz-landing-system : lando
2019-03-04 13:22:05 +00:00
Makoto Kato a312b63f3e Bug 1212398 - Extend timeout value for test_parse_rule.html. r=emilio
Although debug build of Android/arm runs on emulator, test_parse_rule.html
sometimes runs over 5 min. So we should extend timeout value for this.

Differential Revision: https://phabricator.services.mozilla.com/D21663

--HG--
extra : moz-landing-system : lando
2019-03-04 06:12:50 +00:00
Emilio Cobos Álvarez 37d6170f7f Bug 1530177 - Downgrade an assertion to a diagnostic assert since it exposes pre-existing bugs. r=dholbert
nsIconChannel (for moz-icon:// images) is unsound, see bug 1438939.

nsMenuPopupFrame::Init is also unsound on mac, looks like...

I'll try to get them fixed on trunk, but it's not worth crashing release for
this IMO, given it's pre-existing. The assert in PresShell::~PresShell hopefully
avoids exploitable issues.

Differential Revision: https://phabricator.services.mozilla.com/D20945

--HG--
extra : moz-landing-system : lando
2019-02-28 23:37:44 +00:00
violet 3f63d086cd Bug 1528635 - Check urlExtraReferrer not null before dereference to avoid crash r=longsonr
urlExtraReferrer could be null, we should check before dereference.  Otherwise
it will cause crash when webrender is enabled by gfx.webrender.enabled=true
and gfx.webrender.all=true,

Differential Revision: https://phabricator.services.mozilla.com/D20805

--HG--
extra : moz-landing-system : lando
2019-03-03 19:35:42 +00:00
Masayuki Nakano 3ea27c2fd8 Bug 1466208 - part 28: Make PresShell::EventHandler::HandleEvent() handle non-using-coordinates events without frame before with frame case r=smaug
When the event is not handled with coordinates and there is no frame for
`mPresShell`, `PresShell::EventHandler::HandleEvent()` handles the events
simpler than the case there is a frame.  Therefore, this patch moves the
`else` block of `if (aFrame)` and reduce the indent of `if (aFrame)` case.

Differential Revision: https://phabricator.services.mozilla.com/D21194

--HG--
extra : moz-landing-system : lando
2019-03-02 20:35:21 +00:00
Hiroyuki Ikezoe f0fc35f1b8 Bug 1531470 - Use nsLayoutUtils::GetNearestScrollableFrame with SAME_DOC and INCLUDE_HIDDEN flags to get position:sticky target scrollable frame. r=kats
Differential Revision: https://phabricator.services.mozilla.com/D21835

--HG--
extra : moz-landing-system : lando
2019-03-03 00:33:55 +00:00
Emilio Cobos Álvarez f02f6a3545 Bug 1218257 - Use rust lengths for the SVG lengths. r=boris
As it turns out we need this to avoid losing precision both during painting and
during serialization.

This patch also changes to serialize `context-value` if it's the computed value.

I could keep the previous behavior, but it makes no sense to serialize the
initial value. We're the only ones to support this value anyway, and I couldn't
find a definition or spec for this.

Also update tests and expectations for:

 * New unexpected passes.
 * Always serializing the unit in getComputedStyle.
 * Calc and interpolation support.

Chrome also always serializes the unit in getComputedStyle, so I'm pretty sure
this is compatible with them. Chrome is inconsistent and keeps numbers in
specified style, but that's inconsistent with itself and with other quirky
lengths, so I updated the tests instead.

Differential Revision: https://phabricator.services.mozilla.com/D21819
2019-03-03 00:16:24 +01:00
Emilio Cobos Álvarez 7e10c7b612 Bug 1218257 - Cleanup and fix interpolation of SVG lengths. r=boris
Instead of storing them as LengthPercentage | Number, always store as
LengthPercentage, and use the unitless length quirk to parse numbers instead.

Further cleanups to use the rust representation can happen as a followup, which
will also get rid of the boolean argument (since we can poke at the rust length
itself). That's why I didn't bother to convert it to an enum class yet.

Differential Revision: https://phabricator.services.mozilla.com/D21804
2019-03-03 00:16:13 +01:00
Jeff Muizelaar 70f8b5c221 Bug 1532088. Use ImageMask directly instead of duplicating it as WrImageMask. r=kats
WrImageMask is a relic from before we had good bindings generation.

Differential Revision: https://phabricator.services.mozilla.com/D21845

--HG--
extra : moz-landing-system : lando
2019-03-02 21:48:06 +00:00
Masayuki Nakano 291457b9da Bug 1466208 - part 27: Create PresShell::EventHandler::HandleEventUsingCoordinates() r=smaug
Now, the block in HandleEvent(), which handles event using coordinates is
less than 200 lines.  Perhaps, this is good amount to be split to a method.

This patch just moves the block to a new method.

Differential Revision: https://phabricator.services.mozilla.com/D21193

--HG--
extra : moz-landing-system : lando
2019-03-02 00:03:01 +00:00
Razvan Maries cfdc9fc660 Merge mozilla-central to autoland. a=merge on a CLOSED TREE 2019-03-02 12:06:27 +02:00
Razvan Maries c51046f730 Merge mozilla-inbound to mozilla-central a=merge 2019-03-02 11:41:18 +02:00
Daniel Varga 65ee224091 Backed out changeset 2e63fa41257b (bug 1530594) for mochitest failure use-after-poison /builds/worker/workspace/build/src/layout/xul/nsMenuPopupFrame.h:280:42 in PopupType 2019-03-02 06:45:31 +02:00
Dorel Luca db32a5e766 Bug 1456855 - Fix syntax for test layout/inspector/tests/chrome/test_fontVariationsAPI.xul r=aryx 2019-03-02 01:16:36 +02:00
Neil Deakin 986bb46eaa Bug 1530594, generate frames before setting the active child in a menulist, so that menulists with sizetopopup='none' will still allow keyboard navigation when the menulist has not yet been opened, r=tnikkel 2019-03-01 22:07:58 -05:00
Masayuki Nakano fcb0072133 Bug 1466208 - part 26: Create PresShell::EventHandler::EventTargetData::UpdateTouchEventTarget() r=smaug
After dispatching pointer events, `PresShell::EventHandler::HandleEvent()`
updates event target only when the event is a touch event.  We should do it in
a new method of `EventTargetData`.

Although I don't know why this is done in
`PresShell::EventHandler::DispatchPrecedingPointerEvent()`.

Differential Revision: https://phabricator.services.mozilla.com/D21192

--HG--
extra : moz-landing-system : lando
2019-03-02 00:02:10 +00:00
Boris Chiou 192a13d12f Bug 1526850 - Part 4: Add nsCSSPropertyIDSet::IsSubsetOf() for checking the restrictions of some arguments. r=hiro
We restrict the argument (i.e. `nsCSSPropertyIDSet`) of some functions is
the subset of other property set (e.g. transform-like properties), so
add this function for better readability.

Depends on D19629

Differential Revision: https://phabricator.services.mozilla.com/D21598

--HG--
extra : moz-landing-system : lando
2019-03-01 21:13:07 +00:00
Boris Chiou a47dc39197 Bug 1526850 - Part 3: Use DisplayItemType as the input of AddTransitionsAndAnimationsToLayer. r=hiro
Transform display item may have multiple properties, so it's better to
use display item type as the input.

Also, factor some code out of AddAnimationsForProperty, so we can easier
to extend this for multiple properties.

We will pass a list of layers::Animation to the compositor thread. In
this list, the animations belonging to the same property are grouped together,
so we can easily separate the animations by property and sample the animations
for each property on the compositor thread. (Will do this in Bug 1425837.)

Depends on D19628

Differential Revision: https://phabricator.services.mozilla.com/D19629

--HG--
extra : moz-landing-system : lando
2019-03-01 21:13:05 +00:00
Boris Chiou 97ae508f2d Bug 1526850 - Part 2: Let FindAnimationsForCompositor take nsCSSPropertyIDSet. r=hiro
We use DisplayItemType as the input of HasAnimationsForCompositor, and
nsCSSPropertyIDSet as the input of GetAnimationsForCompositor.

The caller of HasAnimationsForCompositor just wants to check if there is
any compositor animation for a display item, so we can replace it by the
display item, and get the properties from this display item.

However, the caller of GetAnimationsForCompositor may use a subset of
transform-like properties for getting scale factors, or use all the
transform-like properties for sending all transform animations to the
compositor thread.

Depends on D19630

Differential Revision: https://phabricator.services.mozilla.com/D19628

--HG--
extra : moz-landing-system : lando
2019-03-01 21:13:03 +00:00
Boris Chiou 55287b9a0b Bug 1526850 - Part 1: Add a function which sets RunningOnCompositor by DisplayItemType. r=hiro
FrameLayerBuilder needs to clear this flag by DisplayItemType, so we add
a new function for it.

Differential Revision: https://phabricator.services.mozilla.com/D19630

--HG--
extra : moz-landing-system : lando
2019-03-01 21:13:01 +00:00
Joel Maher d99950f9a4 Bug 1456855 - adjust manifests for tests that now run with the new linux64 FreeType. r=ahal
Depends on D21559

Differential Revision: https://phabricator.services.mozilla.com/D21560

--HG--
extra : moz-landing-system : lando
2019-03-01 20:35:47 +00:00
Botond Ballo 83a64ce389 Bug 1519621 - Make sure ScrollToRestoredPosition() restores both the layout and visual scroll positions. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D18367

--HG--
extra : moz-landing-system : lando
2019-03-01 20:18:35 +00:00
Masayuki Nakano 72ca6260c0 Bug 1466208 - part 25: Create PresShell::EventHandler::DispatchPrecedingPointerEvent() r=smaug
Now, we can move the block dispatching preceding pointer event to separated
method.  Then, we can hide the complicated retarget process after dispatching
a pointer event from HandleEvent().

Differential Revision: https://phabricator.services.mozilla.com/D21191

--HG--
extra : moz-landing-system : lando
2019-03-01 02:02:31 +00:00
Gurzau Raul a218f01445 Merge mozilla-central to autoland. a=merge CLOSED TREE 2019-03-01 15:14:00 +02:00
Gurzau Raul cdf9392948 Merge inbound to mozilla-central. a=merge 2019-03-01 15:01:31 +02:00