Commit Graph

2663 Commits

Author SHA1 Message Date
Markus Stange
eefe6a25fe Bug 1601306 - When partial update fails, make sure that mIsOpaque and mForceTransparentSurface on the root display list are false. r=tnikkel
These values start out false in the other two ways display lists can be build:
 - Without retained display lists, a new nsDisplayList object is created which starts out with these values being false.
 - When partial update succeeds (or at least gets far enough to run PreProcessDisplayList), RestoreState() is called on the root display list which sets these values to false.

But when partial update fails, we have an old nsDisplayList object and we were not clearing those values.

Differential Revision: https://phabricator.services.mozilla.com/D55866
2019-12-04 21:51:57 +00:00
jeffin143
f0fe02928c Bug 1600484 : convert NS_STYLE_TEXT_SIZE_ADJUST_* to an enum class in nsStyleConsts.h r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D55382
2019-12-02 05:09:33 +00:00
Timothy Nikkel
2084406340 Bug 1583380. Refactor a helper out of nsLayoutUtils::SetFixedPositionLayerData to get the SideBits. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D54401
2019-11-29 23:06:26 +00:00
jeffin143
f27c98bf48 Bug 1598528 : convert NS_STYLE_TEXT_ORIENTATION_* to an enum class in nsStyleConsts.h r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D54252
2019-11-26 04:50:04 +00:00
jeffin143
96580d1c30 Bug 1598348 : convert NS_STYLE_OBJECT_FIT_* to an enum class in nsStyleConsts.h r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D54153
2019-11-25 15:40:50 +00:00
Hiroyuki Ikezoe
f0987efb21 Bug 1586986 - Fire visual viewport resize events and flush position:fixed elements' layout in the same way what Chrome does. r=botond
On Chrome, visual viewport resize event is fired repeatedly during dynamic
toolbar transitions and visual viewport height obtained by the VisualViewport
API is also changed, but in terms of layout the height value is never used
until the dynamic toolbar height reaches to zero or is changed from zero.
The height used at the time is the height for vh units when the toolbar height
reaches to zero and the ICB height when the toolbar height is changed from zero.
To do so, we need to have another visual viewport size in parallel to the
original one and use them depending on situations.

Differential Revision: https://phabricator.services.mozilla.com/D52338
2019-11-21 21:36:59 +00:00
Ting-Yu Lin
dfe559f45c Bug 1598132 - Add GetPrevContinuationOrIBSplitSibling() and improve GetNextContinuationOrIBSplitSibling() in nsLayoutUtils. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D54037
2019-11-20 22:31:31 +00:00
Botond Ballo
a5613062e6 Bug 1589022 - Ignore displayport properties in GetDisplayPortImpl() if APZ is disabled. r=tnikkel
This facilitates disabling APZ "live", such as when moving a tab from an APZ
window into a non-APZ window.

Depends on D51468

Differential Revision: https://phabricator.services.mozilla.com/D51469
2019-11-11 09:23:45 +00:00
Micah Tigley
e8a16eb704 Bug 1593708 - Part 2: Get inRDMPane value from BrowsingContext instead of Document. r=smaug
Depends on D52214

Differential Revision: https://phabricator.services.mozilla.com/D52216
2019-11-14 20:32:02 +00:00
James Hooks
ba8488e17f Bug 1585806 - Make SideBits an enum class, add casting where necessary. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D51291
2019-11-16 20:59:34 +00:00
Hiroyuki Ikezoe
cdfee3dfa8 Bug 1596494 - Call UpdateCompositionBoundsForRCDRSF only if we are in the top level content document. r=tnikkel
Though there is another call site of UpdateCompositionBoundsForRCDRSF in
nsLayoutUtils::CalculateRootCompositionSize, it's not clear to me whether it is
necessary or not since we early return from the function in the case where
|aIsRootContentDocRootScrollFrame| argument is true. We will audit it later
in bug 1562505.

Differential Revision: https://phabricator.services.mozilla.com/D53117
2019-11-15 01:54:05 +00:00
Hiroyuki Ikezoe
c02830b3ac Bug 1586144 - Expand the FrameMetrics.mLayoutViewport to the size for viewport units. r=botond
Note that this FrameMetrics.mLayoutViewport doesn't represent exact size of
the layout viewport on the main thread, it means the maximum layout viewport
in future on the compositor thread once after the dynamic toolbar is completely
hidden.  During the dynamic toolbar transition we don't update any information
on the main thread, which means it's possible that the visual viewport on the
compositor gets bigger than the layout viewport at the time when we send it
to the compositor thread, we have to avoid the situation.

Depends on D50419

Differential Revision: https://phabricator.services.mozilla.com/D50420
2019-11-14 06:00:42 +00:00
Hiroyuki Ikezoe
5c30994474 Bug 1586144 - Factor dynamic toolbar max height into layout metrics. r=emilio,botond
Now
* nsPresContext::mVisibleArea is excluding the toolbar max height so that
  ICB is now static regardless of the dynamic toolbar transition
* nsPresContext::mSizeForViewportUnits is introduced to resolve viewport units
  which is including the toolbar max height

That means that with the dynamic toolbar max height;

  mVisibleArea < mSizeForViewportUnits

See https://github.com/bokand/URLBarSizing for more detail backgrounds of this
change.

Depends on D50417

Differential Revision: https://phabricator.services.mozilla.com/D50418
2019-11-14 06:00:05 +00:00
Boris Chiou
8d68be5653 Bug 1592787 - Don't run compositor animations if offset-path is not animating and is none. r=hiro
So, we don't create a stacking context for this case. Besides, we also
make sure FindAnimationsForCompositor() work properly for motion-path if
offset-path is not effective (i.e. none and no animations).

Differential Revision: https://phabricator.services.mozilla.com/D51895
2019-11-06 20:17:07 +00:00
alaskanemily
5c30d7831a Bug 1588017 - Clean up nsIFrame::IntrinsicISizeOffsetData r=TYLin,dholbert
Update the comments, name, and fields to show it is agnostic of isize/bsize.

Differential Revision: https://phabricator.services.mozilla.com/D51739
2019-11-05 18:52:03 +00:00
Ting-Yu Lin
52de06803a Bug 1526268 Part 3 - Disable APZ if AccessibleCaret is in position:fixed subtree or its position is changed. r=botond,mats
In common cases where the caret is in a position:static frame subtree,
the caret's position (relative to canvas frame's custom content
container) should not be changed during scrolling.

However, when the caret is in a position:fixed or "stuck"
position:sticky frame subtree, the caret's position will change during
scrolling. We need to disable APZ to avoid jumpy carets.

Differential Revision: https://phabricator.services.mozilla.com/D51351
2019-11-02 03:05:28 +00:00
Boris Chiou
5eed5bf1a8 Bug 1429305 - Move motion path utils into a separate file. r=hiro
I'd like to add some new data type for motion path, so it'd be great to
put all of them in an independent file.

Differential Revision: https://phabricator.services.mozilla.com/D50008
2019-10-31 20:07:28 +00:00
Miko Mynttinen
3f5b05efbf Bug 1567889 - Part 3: Cleanup will change budgeting r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D38853
2019-10-28 14:11:45 +00:00
Daniel Holbert
8c838d6ac1 Bug 1590639 part 2: Fix non-unified build issues in layout/base. r=TYLin
Changes here:
- Adding a "dom::" prefix in GeckoMVMContext.cpp (could've also added
  a "using" decl, but I'm just adding a one-off prefix to match "dom::Document"
  usage elsewhere in this file).
- Giving nsLayoutUtils an include for ViewportFrame.h since it uses that type.
- Giving nsPresArena.cpp an include for nsDisplayList.h to provide the
  DisplayListArenaObjectId enum type.

Depends on D50163

Differential Revision: https://phabricator.services.mozilla.com/D50164
2019-10-23 22:10:11 +00:00
Emilio Cobos Álvarez
13b4932da8 Bug 1590281 - Don't propagate overscroll-behavior from body to viewport. r=hiro
Differential Revision: https://phabricator.services.mozilla.com/D50024
2019-10-22 12:16:13 +00:00
Hiroyuki Ikezoe
98ba90c02e Bug 1588675 - Use nsPresContext::IsRootContentDocumentCrossProcess instead of IsRootContentDocument for places where we call nsLayoutUtils::ComputeScrollMetadata. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D49272
2019-10-16 21:34:45 +00:00
Oana Pop Rus
c3a8682347 Backed out changeset 77357e0aa88e (bug 1584859) for wpt and mochitest failures. on a CLOSED TREE 2019-10-13 14:06:44 +03:00
Emilio Cobos Álvarez
639b406c76 Bug 1584859 - Make smooth scrolling conditional on reduced motion settings. r=dbaron
We could put this change itself behind a pref too, if we considered that worth
it. But probably not so.

Differential Revision: https://phabricator.services.mozilla.com/D48010
2019-10-13 09:16:26 +00:00
Botond Ballo
3170867050 Bug 1552608 - Use SideBits rather than int32_t to represent fixed-position sides in the Layers API. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D48374
2019-10-07 21:03:52 +00:00
Sylvestre Ledru
49802d0a8e Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D47737
2019-10-06 18:29:55 +00:00
Timothy Nikkel
60bf9bddeb Bug 1582288. Don't get the display port in nsLayoutUtils::SetDisplayPortMargins when we don't need it because we don't have a frame. r=botond
It will generate a warning and is useless as explained in the code comment.

Differential Revision: https://phabricator.services.mozilla.com/D46626
2019-09-20 18:36:30 +00:00
Hiroyuki Ikezoe
8b9665c0d8 Bug 1541256 - Returns an empty screen rect from GetFrameVisibleRectOnScreen if the given nsIFrame is in out-of-process even if the corresponding iframe is totally invisbile. r=tnikkel
We need to distinguish between the out-of-process iframe is totally invisible and
the given nsIFrame is not in out-of-process iframes.

Differential Revision: https://phabricator.services.mozilla.com/D46553
2019-09-20 11:33:00 +00:00
Andreea Pavel
7e74ac4841 Backed out 2 changesets (bug 1541256) for failing browser_deck_has_out_of_process_iframe.js on a CLOSED TREE
Backed out changeset 691c50b5729a (bug 1541256)
Backed out changeset fc785139655e (bug 1541256)
2019-09-20 18:15:15 +03:00
Hiroyuki Ikezoe
fdd69afed2 Bug 1541256 - Returns an empty screen rect from GetFrameVisibleRectOnScreen if the given nsIFrame is in out-of-process even if the corresponding iframe is totally invisbile. r=tnikkel
We need to distinguish between the out-of-process iframe is totally invisible and
the given nsIFrame is not in out-of-process iframes.

Differential Revision: https://phabricator.services.mozilla.com/D46553
2019-09-20 11:33:00 +00:00
Boris Chiou
dae75d71e4 Bug 1480665 - Implement the contain flag for ray() function. r=birtles
Basically, the math calculation logic is from the github repo of the spec
author, Eric:
20b7403d85/ray.py (L311-L363)

Differential Revision: https://phabricator.services.mozilla.com/D42722
2019-09-16 23:24:50 +00:00
Boris Chiou
7c6d8a74b2 Bug 1480665 - Support ray() in offset-path and make it animatable. r=emilio,birtles
1. Add `generics::motion::OffsetPath`, and use specified `Angle` and
   computed `Angle` to define specified `OffsetPath` and computed `OffsetPath`.
2. Add `ray` function into `OffsetPath`.

We also tweak the degree from 150deg to 135deg in wpt (e.g.
offset-path-ray-001.html and others) to avoid floating point precision issues.
For example:
```
// offset-path: ray(150deg ...);
// offset-distance: 20px;
matrix:
{
  {0.500000 0.866025 0.000000 0.000000},
  {-0.866025 0.500000 0.000000 0.000000},
  {0.000000 0.000000 1.000000 0.000000},
  {10.000000 17.320509 0.000000 1.000000}
}

// rotate(60deg) translate(20px)
matrix:
{
  {0.500000 0.866025 0.000000 0.000000},
  {-0.866025 0.500000 0.000000 0.000000},
  {0.000000 0.000000 1.000000 0.000000},
  {10.000000 17.320507 0.000000 1.000000}
}
```
Their translate parts, 17.320509 vs 17.320507, are almost the same (only
tiny difference), which may cause the reftest failed.

Differential Revision: https://phabricator.services.mozilla.com/D42721
2019-09-16 23:24:48 +00:00
Botond Ballo
5bfd3d4250 Bug 1577859 - Remove the layout.scroll.root-frame-containers pref and code that depends directly on it. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D45198
2019-09-15 17:01:22 +00:00
Andrew Osmond
985dac6203 Bug 1574493 - Part 3. Stop rounding rects/clips during display list building. r=jrmuizel
Rounding in layout pixels is very close to snapping in raster pixels if
there are no transforms involved. This is why it worked most of the time
and fell flat in many edge cases. In future parts of this series, we
will trust scene building and frame building to do the heavy lifting for
snapping purposes.

Differential Revision: https://phabricator.services.mozilla.com/D45058
2019-09-14 16:17:04 +00:00
Ciure Andrei
c5f80130da Backed out 6 changesets (bug 1574493) for causing nested-sticky-2.html to perma fail CLOSED TREE
Backed out changeset 358746636448 (bug 1574493)
Backed out changeset 34aef5498237 (bug 1574493)
Backed out changeset 1f88e2031c76 (bug 1574493)
Backed out changeset 07c588b5ea10 (bug 1574493)
Backed out changeset 0685e8d3510e (bug 1574493)
Backed out changeset 15d4390220c4 (bug 1574493)
2019-09-13 19:26:50 +03:00
Andrew Osmond
56529c6d35 Bug 1574493 - Part 3. Stop rounding rects/clips during display list building. r=jrmuizel
Rounding in layout pixels is very close to snapping in raster pixels if
there are no transforms involved. This is why it worked most of the time
and fell flat in many edge cases. In future parts of this series, we
will trust scene building and frame building to do the heavy lifting for
snapping purposes.

Differential Revision: https://phabricator.services.mozilla.com/D45058
2019-09-13 14:03:23 +00:00
Ciure Andrei
604db60afa Backed out 6 changesets (bug 1574493) for causing nested-sticky-1.html to perma fail CLOSED TREE
Backed out changeset fdc25a90b0ef (bug 1574493)
Backed out changeset 0ce3c48c1f79 (bug 1574493)
Backed out changeset 326b9f96614b (bug 1574493)
Backed out changeset b0817c0aee77 (bug 1574493)
Backed out changeset 70d99c264df9 (bug 1574493)
Backed out changeset e5217ab4b668 (bug 1574493)
2019-09-13 16:17:47 +03:00
Andrew Osmond
b46396996b Bug 1574493 - Part 3. Stop rounding rects/clips during display list building. r=jrmuizel
Rounding in layout pixels is very close to snapping in raster pixels if
there are no transforms involved. This is why it worked most of the time
and fell flat in many edge cases. In future parts of this series, we
will trust scene building and frame building to do the heavy lifting for
snapping purposes.

Differential Revision: https://phabricator.services.mozilla.com/D45058
2019-09-13 10:48:31 +00:00
Gurzau Raul
286937ae26 Backed out 6 changesets (bug 1574493) for wrench failures at stacking-context-clip.yaml on a CLOSED TREE.
Backed out changeset 8a8736ac4e25 (bug 1574493)
Backed out changeset 4a3294e88823 (bug 1574493)
Backed out changeset 0c26ecdc1ddc (bug 1574493)
Backed out changeset 11257f7b3ad3 (bug 1574493)
Backed out changeset dcedc286ad9d (bug 1574493)
Backed out changeset 87f216e0753d (bug 1574493)
2019-09-12 18:34:07 +03:00
Andrew Osmond
407ca7b579 Bug 1574493 - Part 3. Stop rounding rects/clips during display list building. r=jrmuizel
Rounding in layout pixels is very close to snapping in raster pixels if
there are no transforms involved. This is why it worked most of the time
and fell flat in many edge cases. In future parts of this series, we
will trust scene building and frame building to do the heavy lifting for
snapping purposes.

Differential Revision: https://phabricator.services.mozilla.com/D45058
2019-09-12 12:42:41 +00:00
Sylvestre Ledru
5f38e5ac64 Bug 1577236 - clang-10: Fix -Wimplicit-int-float-conversion warnings in /layout/ r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D43784
2019-09-12 12:32:12 +00:00
Hiroyuki Ikezoe
ed10cdb442 Bug 1541705 - Introduce nsLayoutUtils::FrameIsMostlyScrolledOutOfViewInCrossProcess. r=botond
This will be used for accessibility stuff.

Differential Revision: https://phabricator.services.mozilla.com/D44422
2019-09-12 08:09:09 +00:00
Hiroyuki Ikezoe
10ad1ff89f Bug 1541705 - Introduce nsLayoutUtils::FrameIsScrolledOutOfViewInCrossProcess and use it for the check whether animating element is scrolled out of view or not. r=botond,boris
Differential Revision: https://phabricator.services.mozilla.com/D44421
2019-09-12 08:08:57 +00:00
Mihai Alexandru Michis
7c9fb6ecfa Backed out changeset 7876583b2407 (bug 1577236) for causing failures in calc-rounding-001.html CLOSED TREE 2019-09-11 18:48:22 +03:00
Sylvestre Ledru
c94a95df75 Bug 1577236 - clang-10: Fix -Wimplicit-int-float-conversion warnings in /layout/ r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D43784
2019-09-11 13:50:36 +00:00
Kristen Wright
c101eea4b5 Bug 1573268 - Convert layout.css.outline-style-auto.enabled to static pref. r=njn
Converts layout.css.outline-style-auto.enabled to a static pref and removes nsLayoutUtils::isOutlineStyleAutoEnabled().

Differential Revision: https://phabricator.services.mozilla.com/D41861
2019-08-14 00:26:02 +00:00
Kristen Wright
cc515f0c37 Bug 1573268 - Convert two layout.idle-period.* prefs to static prefs. r=njn
Converts layout.idle_period.required_quiescent_frames and layout.idle_period.time_limit to static prefs. These are the last prefs in nsLayoutUtils::initialize(), but since the function still calls nsComputedDOMStyle::RegisterPrefChangeCallbacks() the commit retains it.

Differential Revision: https://phabricator.services.mozilla.com/D41856
2019-08-14 19:36:46 +00:00
Kristen Wright
94d9650269 Bug 1573268 - remove the varcache definition for svg.transform-box.enabled. r=njn
svg.transform-box.enabled is already a static pref, so I removed the varcache definition of it in nsLayoutUtils.

Differential Revision: https://phabricator.services.mozilla.com/D41850
2019-08-14 00:17:04 +00:00
Kristen Wright
3272b98afe Bug 1573268 - Convert layout.interruptible-reflow.enabled to static pref. r=njn
Converts layout.interruptible-reflow.enabled to a static pref and updates its usage.

Differential Revision: https://phabricator.services.mozilla.com/D41849
2019-08-14 00:01:27 +00:00
Kristen Wright
925f06df13 Bug 1573268 - Convert nglayout.debug.invalidation to static pref. r=njn
Converts nglayout.debug.invalidation to a static pref. Retains the old getter function from the old static bool, because it makes an additional comparison.

Differential Revision: https://phabricator.services.mozilla.com/D41845
2019-08-13 23:47:48 +00:00
Kristen Wright
b416e51363 Bug 1573268 - Convert zoom.maxPercent and zoom.minPercent to static prefs. r=njn
Converts zoom.maxPercent and zoom.minPercent to static prefs, which creates a new "zoom" category on StaticPrefList.yaml.

Differential Revision: https://phabricator.services.mozilla.com/D41835
2019-08-14 18:29:55 +00:00