Commit Graph

853 Commits

Author SHA1 Message Date
Emilio Cobos Álvarez
0d9373b571 Bug 1575138 - Do not schedule reconstruction for <slot> if there's no fallback. r=smaug
Just realized that we probably want this too.

Differential Revision: https://phabricator.services.mozilla.com/D46898
2019-09-24 15:13:34 +00:00
Emilio Cobos Álvarez
532f20c66a Bug 1575138 - Don't bother scheduling a reconstruct on <slot>s that have no fallback. r=smaug
So basically what's going on is that we remove all children from the popup here:

  https://searchfox.org/mozilla-central/rev/153feabebc2d13bb4c29ef8adf104ec1ebd246ae/browser/base/content/browser-places.js#687

This makes us schedule a reconstruct of the slot, in case it has fallback
content:

  https://searchfox.org/mozilla-central/rev/153feabebc2d13bb4c29ef8adf104ec1ebd246ae/dom/base/ShadowRoot.cpp#616

Then we insert frames for the items. They get inserted right away, because we
don't support lazy frame construction for XUL:

  https://searchfox.org/mozilla-central/rev/153feabebc2d13bb4c29ef8adf104ec1ebd246ae/layout/base/nsCSSFrameConstructor.cpp#6507

If this was normal HTML content, the insertion would've been lazy, and no
reconstruct would've happened.

The right fix is to support lazy frame construction for XUL. Now that there's
very little XBL it should be possible. This fixes it but it's a kind-of stop-gap
solution.

Differential Revision: https://phabricator.services.mozilla.com/D46825
2019-09-24 00:03:39 +00:00
Edgar Chen
9ce65d9730 Bug 1578355 - Part 1: Move user-activation code from EventStateManager to UserActivation; r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D45168
2019-09-20 20:51:25 +00:00
Daniel Varga
0c8477fc87 Backed out 3 changesets (bug 1578355) for build bustage at build/src/dom/base/nsSyncLoadService.h:48:21. On a CLOSED TREE
Backed out changeset d50ad759f129 (bug 1578355)
Backed out changeset 339ab54ca471 (bug 1578355)
Backed out changeset 284299dac42c (bug 1578355)
2019-09-20 14:05:12 +03:00
Edgar Chen
91a465e33d Bug 1578355 - Part 1: Move user-activation code from EventStateManager to UserActivation; r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D45168
2019-09-20 10:31:55 +00:00
Adam Gashlin
ae156905eb Bug 1561546 Part 2 - Update theme when nsXPLookAndFeel prefs change. r=dholbert,jmathies
Also causes removing a pref to take effect immediately, and prevents
losing all color pref overrides when the theme changes.

Differential Revision: https://phabricator.services.mozilla.com/D44416
2019-09-19 19:05:01 +00:00
Botond Ballo
0fca80d375 Bug 1577859 - Additional post container scrolling removal cleanup in Layout code. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D45596
2019-09-15 21:51:41 +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
Emilio Cobos Álvarez
de9679766e Bug 1577258 - Streamline the shrink-wrapping resize reflow code. r=botond
Now that this code path is on its own, we can write more straight-forward code.



Depends on D43799

Differential Revision: https://phabricator.services.mozilla.com/D43800
2019-09-12 21:27:06 +00:00
Emilio Cobos Álvarez
003c774a1b Bug 1577258 - Add a simpler resize reflow function for when we're not shrink-wrapping. r=bzbarsky
This is much easier than the existing ResizeReflowIgnoreOverride function, and
this will allow me to avoid flushing if needed (we already kinda do that
already with the "suppressResizeReflow" thing), which in turn allows me to
consolidate a bunch of the logic for resizes.

The function should be much easier to follow:

 * Set the new viewport (async, doesn't do any work).
 * Invalidate layout as needed due to the viewport change (that is, resize hint
   for the root frame, and invalidate isizes if needed). Also async and doesn't
   do any reflowing itself.
 * Flush layout / do the reflowing all at once. I think we can stop doing this
   much more often now, but that's follow-up work.



Depends on D43798

Differential Revision: https://phabricator.services.mozilla.com/D43799
2019-09-13 00:21:04 +00:00
shindli
95c232084a Backed out changeset 9ef1dd77e6b2 (bug 1561546) for causing frequent failures in dom/animation/test/mozilla/test_restyles.html CLOSED TREE 2019-09-11 23:21:46 +03:00
Adam Gashlin
a9948638c4 Bug 1561546 - Update theme when nsXPLookAndFeel prefs change. r=dholbert,jmathies
Also causes removing a pref to take effect immediately, and prevents
losing all color pref overrides when the theme changes.

Differential Revision: https://phabricator.services.mozilla.com/D44416
2019-09-11 18:35:44 +00:00
Emilio Cobos Álvarez
8456f2608c Bug 1577258 - early-return for noop resizes. r=botond
This avoids doing wasted work and sending spurious resize
events if this case would be hit.

In practice, it cannot be hit yet, I think, because
callers do check for this and bail out earlier. But
there's no assertion to that respect so this shouldn't
hurt.

Differential Revision: https://phabricator.services.mozilla.com/D43798
2019-08-28 22:03:26 +00:00
Dan Glastonbury
82f826a9d7 Bug 1571612 - P2: Collect flush req and flush telemetry. r=heycam
Collect telemetry for the number of pending style and layout flush requests per
flush and the number of style and layout flushes per nsRefreshDriver::Tick.  A
style flush reports only style requests, but a layout flush reports style and
layout requests since flushing layout implies a style flush also.

Differential Revision: https://phabricator.services.mozilla.com/D40756
2019-08-21 01:43:30 +00:00
Dan Glastonbury
501d41a22f Bug 1571612 - P1: Split FlushType::Style and FlushType::Frame. r=heycam
Differential Revision: https://phabricator.services.mozilla.com/D40755
2019-08-07 03:51:20 +00:00
Kristen Wright
8abefdf5a7 Bug 1573268 - Convert font.size.systemFontScale to static pref. r=njn
Converts font.size.systemFontScale to a static pref. Removes the function in nsLayoutUtils and does the float division directly in PresShell.

Differential Revision: https://phabricator.services.mozilla.com/D41824
2019-08-14 18:27:11 +00:00
kriswright
a446ad3aee Bug 1573268 - Convert two font.size.inflation.* prefs to static prefs. r=njn
Converts font.size.inflation.forceEnabled and font.size.inflation.disabledInMasterProcess to static prefs. Like previous revisions, I retained the member variables in PresShell and set them to the static prefs.

Differential Revision: https://phabricator.services.mozilla.com/D41664
2019-08-13 20:15:52 +00:00
kriswright
0264f2515e Bug 1573268 - Convert font.size.inflation.lineThreshold to a static pref. r=njn
Converts font.size.inflation.lineThreshold varcache pref to a static pref. Like previous revisions, this retains the member variable in PresShell.

Differential Revision: https://phabricator.services.mozilla.com/D41662
2019-08-13 18:23:54 +00:00
kriswright
0f87bb4e8e Bug 1573268 - Convert 3 font.size.inflation.* prefs to static prefs. r=njn
Converts font.size.inflation.minTwips, font.size.inflation.emPerLine, and font.size.inflation.mappingIntercept to static prefs and removes their associated functions from nsLayoutUtils. There are associated member variables in PresShell, but since documentation specified that these variables are set specifically to prevent changes to the cache from being read until page reload, I made the decision to leave these and set them to the static prefs.

Differential Revision: https://phabricator.services.mozilla.com/D41656
2019-08-13 18:19:33 +00:00
Brad Werth
360abd97a3 Bug 1523844 Part 3: Make the MVM set resolution only as an adjustment, not a restore resolution. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D41632
2019-08-12 22:23:34 +00:00
Kris Maglione
6c6f6fb7d9 Bug 1570773: Move browsingContext getter to nsIDocShellTreeItem and add notxpcom variant. r=nika
This also renames the existing infallible nsDocShell:GetBrowsingContext()
getter to BrowsingContextRef(), and changes the return type, since several
callers rely on it returning a raw pointer rather than an already_AddRefed.

Differential Revision: https://phabricator.services.mozilla.com/D40312
2019-08-07 16:59:30 +00:00
Emilio Cobos Álvarez
d64cbe93eb Bug 1528616 - Move PresShell::GetRectVisibility to nsTypeAheadFind.cpp. r=dholbert
nsTypeAheadFind.cpp contains all of the callsites to this function, so it seems like a logical place for it to live.

Differential Revision: https://phabricator.services.mozilla.com/D40696
2019-08-07 11:21:55 +00:00
Nicholas Nethercote
32d26dab54 Bug 1570212 - Convert layout.reflow.synthMouseMove to a static pref. r=heycam
Differential Revision: https://phabricator.services.mozilla.com/D40338
2019-08-02 11:59:06 +00:00
Emilio Cobos Álvarez
cb436953c8 Bug 1528616 - Back out changeset bf824987ef9f (bug 1528616) since it can clearly be hit. r=me
MANUAL PUSH: Backout of existing revision.
2019-07-26 21:26:23 +02:00
Kannan Vijayan
c690c1925f Bug 1559414 - Rename unaudited pre-fission methods with SameProcess for future audit burndown. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D39378
2019-07-26 16:48:31 +00:00
Nicholas Nethercote
c4aacd8403 Bug 1563139 - Remove StaticPrefs.h. r=glandium
This requires replacing inclusions of it with inclusions of more specific prefs
files.

The exception is that StaticPrefsAll.h, which is equivalent to StaticPrefs.h,
and is used in `Codegen.py` because doing something smarter is tricky and
suitable for a follow-up. As a result, any change to StaticPrefList.yaml will
still trigger recompilation of all the generated DOM bindings files, but that's
still a big improvement over trigger recompilation of every file that uses
static prefs.

Most of the changes in this commit are very boring. The only changes that are
not boring are modules/libpref/*, Codegen.py, and ServoBindings.toml.

Differential Revision: https://phabricator.services.mozilla.com/D39138
2019-07-26 01:10:23 +00:00
Emilio Cobos Álvarez
3e1ba77067 Bug 1567237 - Only use scroll range to select scrollable frames to scroll to, don't use scrollbar visibility. r=tnikkel
This is what other browsers do, and it does make sense to me, it's useless to
try to scroll a frame with no scroll range in a given direction.

I think all callers of this function should be treated like this, so this is
more like a RFC / feedback request than a patch per se.

The wheel handling code already checks scroll range, so there's no difference of
behavior in that case, if I'm reading the code right.

There are a few other functions that check the result of
GetPerceivedScrollingDirections(), but I think if we change this we should
change this consistently.

I also think that if we do this we should rename the method to something like
GetAvailableScrollingDirections() or such.

Anyhow, wdyt? I should also add a test for this if we go with this.

Differential Revision: https://phabricator.services.mozilla.com/D38991
2019-07-24 22:33:57 +00:00
Coroiu Cristina
655b3a5233 Backed out changeset 2fe42a3dda2c (bug 1567237) for causing leaks on a CLOSED TREE 2019-07-24 20:52:07 +03:00
Emilio Cobos Álvarez
5448a8bb6f Bug 1567237 - Only use scroll range to select scrollable frames to scroll to, don't use scrollbar visibility. r=tnikkel
This is what other browsers do, and it does make sense to me, it's useless to
try to scroll a frame with no scroll range in a given direction.

I think all callers of this function should be treated like this, so this is
more like a RFC / feedback request than a patch per se.

The wheel handling code already checks scroll range, so there's no difference of
behavior in that case, if I'm reading the code right.

There are a few other functions that check the result of
GetPerceivedScrollingDirections(), but I think if we change this we should
change this consistently.

I also think that if we do this we should rename the method to something like
GetAvailableScrollingDirections() or such.

Anyhow, wdyt? I should also add a test for this if we go with this.

Differential Revision: https://phabricator.services.mozilla.com/D38991
2019-07-24 13:17:11 +00:00
Emilio Cobos Álvarez
b6c96b49f1 Bug 1528616 - Make an assertion fatal to figure out how this can happen. r=dholbert
We shouldn't have a frame and a null root frame. This assertion failing is the
only way to get this to happen.

So assert it a bit harder so that we can hopefully find a way to repro it and
thus figure out what the right thing to do is. If it legitimately fails, chances
are we shouldn't be putting this function on PresShell in the first place.

Differential Revision: https://phabricator.services.mozilla.com/D39124
2019-07-24 05:08:18 +00:00
Narcis Beleuzu
d4669fe222 Backed out 3 changesets (bug 1567237) for ESlint and mochitest failures on test_scroll_space_no_range_overflow_scroll.html . CLOSED TREE
Backed out changeset 72699e27e033 (bug 1567237)
Backed out changeset 90048e3d6eb3 (bug 1567237)
Backed out changeset 5d602a56edc7 (bug 1567237)
2019-07-24 05:49:52 +03:00
Emilio Cobos Álvarez
023f16f5c1 Bug 1567237 - Only use scroll range to select scrollable frames to scroll to, don't use scrollbar visibility. r=tnikkel
This is what other browsers do, and it does make sense to me, it's useless to
try to scroll a frame with no scroll range in a given direction.

I think all callers of this function should be treated like this, so this is
more like a RFC / feedback request than a patch per se.

The wheel handling code already checks scroll range, so there's no difference of
behavior in that case, if I'm reading the code right.

There are a few other functions that check the result of
GetPerceivedScrollingDirections(), but I think if we change this we should
change this consistently.

I also think that if we do this we should rename the method to something like
GetAvailableScrollingDirections() or such.

Anyhow, wdyt? I should also add a test for this if we go with this.

Differential Revision: https://phabricator.services.mozilla.com/D38991
2019-07-23 22:04:31 +00:00
Nicholas Nethercote
462059ba06 Bug 1567329 - Append _AtStartup to once static pref getters. r=erahm
Currently it's completely unclear at use sites that the getters for `once`
static prefs return the pref value from startup, rather than the current pref
value. (Bugs have been caused by this.) This commit improves things by changing
the getter name to make it clear that the pref value obtained is from startup.

This required changing things within libpref so it distinguishes between the
"base id" (`foo_bar`) and the "full id" (`foo_bar` or
`foo_bar_DoNotUseDirectly` or `foo_bar_AtStartup` or
`foo_bar_AtStartup_DoNotUseDirectly`; the name used depends on the `mirror` and
`do_not_use_directly` values in the YAML definition.) The "full id" is used in
most places, while the "base id" is used for the `GetPrefName_*` and
`GetPrefDefault_*` functions.

(This is a nice demonstration of the benefits of the YAML file, BTW. Making
this change with the old code would have involved adding an entry to every
single pref in StaticPrefList.h.)

The patch also rejigs the comment at the top of StaticPrefList.yaml, to clarify
some things.

Differential Revision: https://phabricator.services.mozilla.com/D38604
2019-07-22 02:10:14 +00:00
Emilio Cobos Álvarez
cf8a7c1cfe Bug 1566783 - Make sure to clear mLastAnchorScrolledTo after calling PresShell::ScrollToAnchor(). r=dholbert
Seems we can leave this node alive for too long if the user scrolls between
domcontentloaded (where GoToAnchor is called) and onload (where ScrollToAnchor()
is called).

Though it seems we can leave it for too long if we don't end up calling
ScrollToAnchor(), the documentation of the method claims that it's cleared
unconditionally.

Differential Revision: https://phabricator.services.mozilla.com/D38398
2019-07-20 15:09:07 +00:00
Mirko Brodesser
23b4c95157 Bug 1566046: rename GetParentOrHostNode to GetParentOrShadowHostNode. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D38078
2019-07-16 09:25:02 +02:00
Mirko Brodesser
090d7efc5e Bug 1565584: move nsIContentUtils::ContentIsDescendantOf to nsINode::IsInclusiveDescendantOf. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D37880
2019-07-15 10:02:21 +02:00
Emilio Cobos Álvarez
2113328e15 Bug 1218456 - Allow navigating when there's no pres context. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D37404
2019-07-09 23:07:29 +02:00
Dorel Luca
7a5944a08d Backed out 5 changesets (bug 1218456) for Crashtest failures on dom/l10n/tests/mochitest/dom_localization/test_overlay.html. CLOSED TREE
Backed out changeset 31afe89c2d42 (bug 1218456)
Backed out changeset 8bd57ebc4528 (bug 1218456)
Backed out changeset e5d37afff36a (bug 1218456)
Backed out changeset e3da86278ecf (bug 1218456)
Backed out changeset 343046089f8e (bug 1218456)
2019-07-09 22:04:13 +03:00
Emilio Cobos Álvarez
851bb098fd Bug 1218456 - Allow navigating when there's no pres context. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D37404
2019-07-09 16:17:27 +00:00
Hiroyuki Ikezoe
be95008183 Bug 1553012 - Make PresShell::ScrollFrameRectIntoView work in fission world. r=mattwoodrow,nika,tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D36136
2019-07-09 05:34:27 +00:00
Hiroyuki Ikezoe
655366e3d9 Bug 1562503 - Create GeckoMVMContext and ZoomConstraintsClient only for the root top level document. r=botond
browserElement_ScrollEvent.js is affected by this change. Before this change
the document for iframe mozbrowser was not considered as the root content
document, but after this change, it's considered as the root content document.
Given the nature of iframe mozbrowser, I believe it's the right behavior.

The browser mochitest in this commit fails without this change since
the minimum-scale size is used in the out-of-process iframe so that the visual
viewport size gets 3x bigger than the expected size.

Differential Revision: https://phabricator.services.mozilla.com/D36547
2019-07-08 22:39:31 +00:00
Emilio Cobos Álvarez
08d46373ed Bug 1560188 - Fix and improve display list memory reporting. r=mattwoodrow,njn
I missed in bug 1487216 that the pres arena memory reporting assumes that the
entry indices are frame class ids, which means that we're reporting some display
list arena entries as frames, which is obviously wrong.

Cleanup a bit nsPresArena to remove the custom id concept, and report also
individual display item type memory usage.

Differential Revision: https://phabricator.services.mozilla.com/D35368
2019-07-02 02:46:09 +00:00
Hiroyuki Ikezoe
c78071d24e Bug 1562757 - Call ScrollToVisual for the pres shell of the given scrollable frame in ScrollToShowRect. r=botond
We should also check IsRootContentDocumentCrossProcess instead of
IsRootContentDocument there, it will be fixed in bug 1562505.

The test case in this commit is almost copied-n-pasted from
helper_scroll_into_view_bug1516056.html.

Differential Revision: https://phabricator.services.mozilla.com/D36556
2019-07-04 08:48:47 +00:00
Gerald Squelart
0088545108 Bug 1474771 - Propagate NS_FRAME_IS_DIRTY to descendants when marking as dirty rather than during reflow. r=dholbert
This simplifies dealing with frames that are pushed/pulled between
continuations during reflow, allows us to avoid the complexity of the
fix to 1459937, and hopefully fixes some of the regressions from bug
1308876.

This disables the changes from bug 1459937 by commenting out a single
line in ReparentFrameInternal in nsBlockFrame.cpp, but all the added
code will be removed in the following patch.

Co-authored-by: Gerald Squelart <gsquelart@mozilla.com>
Co-authored-by: L. David Baron <dbaron@dbaron.org>

Depends on D36423

Differential Revision: https://phabricator.services.mozilla.com/D36424
2019-07-01 21:56:43 +00:00
Mirko Brodesser
e8543e1b1b Bug 1562876: rename Selection::AddRange to Selection::AddRangeAndSelectFramesAndNotifyListeners. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D36602
2019-07-03 13:26:13 +02:00
Cosmin Sabou
ae7abc18f4 Merge mozilla-central to mozilla-inbound. 2019-06-28 19:16:36 +03:00
Masayuki Nakano
0af2378d06 Bug 1444847 - part 3: Create RangeUtils to place public static methods of nsRange r=smaug
Some `nsRange` static methods are useful in `StaticRange` and some of them
are used in a lot of places but not related to `nsRange` directly.  This
patch moves them into new static method only class, `mozilla::RangeUtils`.

Differential Revision: https://phabricator.services.mozilla.com/D35142
2019-06-28 07:48:07 +00:00
Coroiu Cristina
2f9dc56b76 Merge autoland to mozilla-central a=merge 2019-06-27 12:33:50 +03:00
Csoregi Natalia
09ee0c6189 Backed out 4 changesets (bug 1488953) for causing Bug 1559690. a=backout
Backed out changeset 6b9cfebe8076 (bug 1488953)
Backed out changeset 6759badeec0e (bug 1488953)
Backed out changeset 5555e12078d3 (bug 1488953)
Backed out changeset 2a638724408b (bug 1488953)
2019-06-27 01:03:50 +03:00
Hiroyuki Ikezoe
f9bc9ef982 Bug 1560237 - Introduce nsIScrollableFrame::IsSmoothScroll. r=botond
This is pretty much the same as ScrollStyles::IsSmoothScroll right now,
but in the next commit, we will no longer propagate scroll-behavior on <body> to
the root element so that nsIScrollableFrame::IsSmoothScroll will be changed
to reflect it.

Differential Revision: https://phabricator.services.mozilla.com/D35737
2019-06-26 20:59:01 +00:00