Commit Graph

577 Commits

Author SHA1 Message Date
Neil Deakin
2f5fea237e Bug 1482389, replace TreeBoxObject with XULTreeElement inherited from XULElement, r=peterv,paolo 2018-12-04 11:25:30 -05:00
Cameron McCormack
f111c08be6 Bug 1519296 - Part 3: Make PresShell::AddOverrideStyleSheet append its sheet rather than prepend r=emilio
We only ever add a single sheet (EditorOverride.css) there anyway.

Depends on D16282

Differential Revision: https://phabricator.services.mozilla.com/D16283
2019-01-12 06:45:52 +00:00
Cameron McCormack
836359028d Bug 1519296 - Part 2: Make PresShell::AddUserSheet just find the right place to insert r=emilio
Depends on D16281

Differential Revision: https://phabricator.services.mozilla.com/D16282
2019-01-12 06:46:00 +00:00
Boris Zbarsky
d8defde5aa Bug 1519193 part 4. Convert AssertNoFramesInSubtree to using ShadowIncludingTreeIterator. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D16245
2019-01-12 03:20:05 +00:00
Noemi Erli
034297a992 Backed out 5 changesets (bug 1519193) for build bustages in Document.cpp CLOSED TREE
Backed out changeset e118466df64d (bug 1519193)
Backed out changeset 12d89a7fe296 (bug 1519193)
Backed out changeset 08b0f2b9a96a (bug 1519193)
Backed out changeset 1caa462e7f08 (bug 1519193)
Backed out changeset aae6e06aa88b (bug 1519193)
2019-01-12 00:29:37 +02:00
Boris Zbarsky
77aec42c48 Bug 1519193 part 4. Convert AssertNoFramesInSubtree to using ShadowIncludingTreeIterator. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D16245
2019-01-10 22:24:24 +00:00
Jan Henning
907a103ee7 Bug 1498812 - Part 10: Return whether SetVisualViewportOffset was a no-op. r=botond
So that the caller doesn't have to retrieve and compare the previous viewport
offset himself.

Differential Revision: https://phabricator.services.mozilla.com/D15785
2019-01-11 19:50:17 +00:00
Razvan Maries
c8747156b8 Merge mozilla-central to autoland. a=merge on a CLOSED TREE 2019-01-11 11:36:24 +02:00
Daniel Varga
6406ac0729 Merge mozilla-central to mozilla-inbound. a=merge on a CLOSED TREE 2019-01-11 06:23:02 +02:00
Masayuki Nakano
67508411d2 Bug 181137 - part 8: Make ContentIteratorBase and its subclasses non-refcountable r=smaug
This patch makes ContentIteratorBase, PostContentIterator, PreContentIterator
and ContentSubtreeIterator classes non-refcountable because most users can
create their instances in stack and such users may be in a hot path.  So,
we can save a lot of cost of instantiation.

Unfortunately, only ScriptableContentIterator creates one of the concrete
classes and needs to destroy it properly.  Therefore, its
EnsureContentIterator(), destructor, traverse and unlink code becomes messy.
However, ScriptableContentIterator was designed for automated tests and we
need to maintain it not so many times.  Therefore, improvement of other
users must be worthwhiler than this demerit.

Differential Revision: https://phabricator.services.mozilla.com/D15928
2019-01-11 01:52:26 +00:00
Masayuki Nakano
7999b49986 Bug 181137 - part 3: Make all users of ContentSutreeIterator treat it directly rather than via nsIContentIterator r=smaug
Now, all users of ContentSubtreeIterator can access it directly.  This patch
makes them use the concrete class directly.

Differential Revision: https://phabricator.services.mozilla.com/D15920
2019-01-11 01:49:00 +00:00
Botond Ballo
dae45663b6 Bug 1507279 - Add a mechanism for the main thread to set a visual viewport offset. r=kats
Differential Revision: https://phabricator.services.mozilla.com/D16141
2019-01-10 20:59:13 +00:00
Jeff Muizelaar
eca4405235 Bug 1509182. Switch from using WrFilterOp to using FilterOp directly. r=nical
This avoids code duplication and simplifies push_stacking_context

Differential Revision: https://phabricator.services.mozilla.com/D16050
2019-01-10 19:41:08 +00:00
Cosmin Sabou
199c8bac19 Backed out changeset 10dedfde1015 (bug 1509182) for causing build bustages. 2019-01-10 20:52:49 +02:00
Jeff Muizelaar
d39e0bb1d1 Bug 1509182. Switch from using WrFilterOp to using FilterOp directly. r=nical
This avoids code duplication and simplifies push_stacking_context

Differential Revision: https://phabricator.services.mozilla.com/D16050
2019-01-10 18:40:56 +00:00
Csoregi Natalia
30efca58e6 Backed out changeset 8e078c86db82 (bug 1509182) for bustage on WebRenderTypes.h:789. CLOSED TREE 2019-01-10 18:15:42 +02:00
Jeff Muizelaar
3cebb8d71e Bug 1509182. Switch from using WrFilterOp to using FilterOp directly. r=nical
This avoids code duplication and simplifies push_stacking_context

Differential Revision: https://phabricator.services.mozilla.com/D16050
2019-01-10 14:20:21 +00:00
Csoregi Natalia
ec11d4a214 Backed out 8 changesets (bug 181137) for bustage on FragmentOrElement.cpp:1751. CLOSED TREE
Backed out changeset 99a977d519a0 (bug 181137)
Backed out changeset 65a4b245e851 (bug 181137)
Backed out changeset 5385d5fd9b8b (bug 181137)
Backed out changeset 83bec02c21d9 (bug 181137)
Backed out changeset b7ab59bf545e (bug 181137)
Backed out changeset b6fc7a332db7 (bug 181137)
Backed out changeset 654fdbad67db (bug 181137)
Backed out changeset 90a1ff49b6b1 (bug 181137)
2019-01-10 11:42:27 +02:00
Masayuki Nakano
e3bc6266ea Bug 181137 - part 8: Make ContentIteratorBase and its subclasses non-refcountable r=smaug
This patch makes ContentIteratorBase, PostContentIterator, PreContentIterator
and ContentSubtreeIterator classes non-refcountable because most users can
create their instances in stack and such users may be in a hot path.  So,
we can save a lot of cost of instantiation.

Unfortunately, only ScriptableContentIterator creates one of the concrete
classes and needs to destroy it properly.  Therefore, its
EnsureContentIterator(), destructor, traverse and unlink code becomes messy.
However, ScriptableContentIterator was designed for automated tests and we
need to maintain it not so many times.  Therefore, improvement of other
users must be worthwhiler than this demerit.

Differential Revision: https://phabricator.services.mozilla.com/D15928
2019-01-10 08:50:41 +00:00
Masayuki Nakano
602d7d0153 Bug 181137 - part 3: Make all users of ContentSutreeIterator treat it directly rather than via nsIContentIterator r=smaug
Now, all users of ContentSubtreeIterator can access it directly.  This patch
makes them use the concrete class directly.

Differential Revision: https://phabricator.services.mozilla.com/D15920
2019-01-10 08:45:07 +00:00
Masayuki Nakano
ef44e52a83 Bug 1499430 - Make PresShell::PageMove() use result of nsFrameSelection::GetFrameToPageSelect() when PresShell::GetScrollableFrameToScroll() returns nullptr r=smaug
If there is no scrollable frame, PresShell::GetScrollableFrameToScroll() returns
nullptr.  However, even when we don't expand selection, we need to move caret
in current selection root.  Therefore, it should call
nsFrameSelection::CommonPageMove() with the result of
nsFrameSelection::GetFrameToPageSelect() to move caret.

Differential Revision: https://phabricator.services.mozilla.com/D16020
2019-01-10 05:02:56 +00:00
Ryan Hunt
b17f28bf78 Bug 1305957 part 7 - Adjust scroll offset to match change in relative position of scroll anchor after reflow. r=hiro,dbaron
This commit implements anchor offset adjustment. When the position of a frame
that is an anchor is changed during reflow, we notify the anchor container. The
anchor container will then post a reflow callback.

Then when reflow is completed, the anchor container will perform a scroll to
keep the anchor node in the same relative position.

Differential Revision: https://phabricator.services.mozilla.com/D13270
2018-12-21 10:26:10 -06:00
Ryan Hunt
38ce27aabb Bug 1305957 part 6 - Select scroll anchors when flushing notifications in PresShell. r=hiro
This commit adds a mechanism for scroll anchor containers to request an anchor
node selection at a future time. Currently this is before styling so that anchor
adjustment suppression will have current anchor nodes.

Differential Revision: https://phabricator.services.mozilla.com/D13269
2018-11-27 15:32:47 -06:00
Brian Hackett
dac5347478 Bug 1177346 Part 1 - Add setSuppressedEventListener interface, r=smaug. 2019-01-03 06:39:12 -10:00
Emilio Cobos Álvarez
dc336a73ba Bug 1517241 - Rename nsIDocument to mozilla::dom::Document. r=smaug
Summary: Really sorry for the size of the patch. It's mostly automatic
s/nsIDocument/Document/ but I had to fix up in a bunch of places manually to
add the right namespacing and such.

Overall it's not a very interesting patch I think.

nsDocument.cpp turns into Document.cpp, nsIDocument.h into Document.h and
nsIDocumentInlines.h into DocumentInlines.h.

I also changed a bunch of nsCOMPtr usage to RefPtr, but not all of it.

While fixing up some of the bits I also removed some unneeded OwnerDoc() null
checks and such, but I didn't do anything riskier than that.
2019-01-03 17:48:33 +01:00
Emilio Cobos Álvarez
e461afa617 Bug 1516853 - Merge nsIDocument and nsDocument. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D15498
2018-12-31 14:10:19 +00:00
Cosmin Sabou
8611221cab Merge mozilla-inbound to mozilla-central. a=merge 2018-12-30 11:31:03 +02:00
Hiroyuki Ikezoe
97cf67b161 Bug 1516368 - De-virtualize nsIPresShell::IsResolutionUpdated and SetResolutionUpdated. r=botond
Depends on D15342

Differential Revision: https://phabricator.services.mozilla.com/D15343
2018-12-30 02:17:30 +00:00
Hiroyuki Ikezoe
113b89b8e9 Bug 1516368 - Align boolean members in nsIPresShell. r=botond
Depends on D15341

Differential Revision: https://phabricator.services.mozilla.com/D15342
2018-12-30 02:17:12 +00:00
Hiroyuki Ikezoe
356d17d57d Bug 1516368 - Change SetResolutionAndScaleTo to take an enum instead of an nsAtoms*. r=botond
There is no reason to use nsAtoms*, it's error prone, i.e. the function
can take arbitrary nsAtoms*.

Depends on D15339

Differential Revision: https://phabricator.services.mozilla.com/D15340
2018-12-30 02:16:42 +00:00
Emilio Cobos Álvarez
b26d7730f0 Bug 1516366 - Move base classes from nsDocument to nsIDocument. r=smaug
This is a big step in order to merge both.

Also allows to remove some very silly casts, though it causes us to add some
ToSupports around to deal with ambiguity of casts from nsIDocument to
nsISupports, and add a dummy nsISupports implementation that will go away later
in the series.

Differential Revision: https://phabricator.services.mozilla.com/D15352
2018-12-29 20:41:28 +01:00
Bogdan Tara
c52f86d3e0 Merge inbound to mozilla-central. a=merge 2018-12-28 23:50:12 +02:00
Sylvestre Ledru
3ece000f7a Bug 1516555 - Reformat everything to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D15426
2018-12-28 15:48:06 +00:00
Jan Henning
58d160ff3c Bug 1478776 - Part 10: Add internal VisualViewport resize/scroll events. r=botond,nika
The VisualViewport events are all nice and shiny, but unfortunately not quite
what is needed for the session store.

Firstly, the spec wants the "scroll" event to be fired only when the *relative*
offset between visual and layout viewport changes. The session store however
records the absolute offset and as such is interested in when *that* changes.

Secondly, again as per the spec the events don't bubble, and with the default
DOMEventTargetHelper implementation they don't escape the VisualViewport during
capturing, either. This means that any event listener must be added directly on
the VisualViewport itself in order to capture any events.

This might have been intended because the events use the same names as the
normal "scroll"/"resize" events, and as such you cannot specify separate event
listeners for VisualViewport and non-VisualViewport "scroll" events if both
events end up being dispatched to the same element (you can only try to filter
after the fact by looking at the originalTarget of the event).

At the same time, the VisualViewport is attached to the inner Window, and so
each time you navigate, you also get a different VisualViewport object.
All of this might be totally fine from the perspective of a page script, because
in that case you won't care anyway about what happens when the current page goes
away.

From the session store perspective on the other hand (especially Fennec's non-
e10s session store design), this is rather unfortunate because we don't want to
have to keep registering event listeners
a) manually for each subframe
b) each time the page navigates

The event target chain problem could be solved by letting the scroll events
escape the VisualViewport during the capturing phase (which the spec doesn't say
anything about), but this would mean that any scroll listener attached to a
window/browser/... that uses capturing will now catch both layout and visual
viewport scroll events.

In some cases this might even be beneficial, but in others (e.g. bug 1498812
comment 21) I'd like to specifically decide which kind of scroll event to
capture. Having to look at event.originalTarget to distinguish the two kinds
might be defensible in test code, but in case this distinction would be needed
in production code as well, given the existence of a C++-based filtering helper
in nsSessionStoreUtils for another use case where (scroll) events need to be
filtered, JS-based scroll event filtering might be a bad idea.

Additionally, in any case this wouldn't solve the fundamental conflict between
the spec and the session store about *when* the "scroll" event should be fired
in the first place.

Hence I'd like to introduce a separate set of events with distinct event names,
which will be dispatched according to the requirements of our internal users
(i.e. currently the session store). To avoid potential web compatibility issues
down the road, for now these events will be dispatched only to event listeners
registered in the system group (allowing *all* Chrome event listeners cannot be
done because checking the Chrome status of each event target might be too
expensive for frequently dispatched events).

Differential Revision: https://phabricator.services.mozilla.com/D14046
2018-12-20 22:14:42 +00:00
Jan Henning
aa4c05b124 Bug 1478776 - Part 9: Helper function for layout viewport scroll position in PresShell. r=botond
This changes the semantics of the relative visual viewport offset calculation in
the PresShell slightly, in that a missing root scroll frame will no longer
force the relative offset to zero, even if the visual viewport itself has a non-
zero scroll position [1].
On the other hand, the visual viewport's own relative offset calculations
already work that way today, in that layout and visual viewport scroll positions
are retrieved separately and then subtracted from one another regardless of
whether those values are actually valid or merely a fallback because the
PresShell/scroll frame weren't available.

[1] Though I'm not sure under what circumstances this could really be relevant.

Differential Revision: https://phabricator.services.mozilla.com/D14686
2018-12-20 21:35:55 +00:00
Jan Henning
05d693a03b Bug 1478776 - Part 7: Tune scroll events to only fire when the *relative* offset changes. r=botond
Internally, Gecko stores and updates the *absolute* offset between the visual
viewport and the page, however the spec demands that the scroll event be fired
whenever the *relative* offset between visual and layout viewport changes.

Differential Revision: https://phabricator.services.mozilla.com/D14044
2018-12-20 21:35:38 +00:00
Jan Henning
6a946415f7 Bug 1478776 - Part 6: Initial Visual Viewport event implementation. r=botond
The event rate throttling mechanism is modelled on the logic for "scroll" events
in nsGfxScrollFrame.cpp.

That is
1. When a request to fire an event is posted to the VisualViewport, we create a
   new runnable for this and register it with the RefreshDriver. If we already
   have a pending runnable, calling VisualViewport->Post...Event() becomes a
   no-op.
2. When the RefreshDriver is ready, it executes the runnable, which in turn
   fires the actual event and then cleans itself up.

To keep this patch manageable, we simply fire a scroll event every time the
stored visual viewport offset is changed. Because we are storing the absolute
offset of the viewport relative to the page, this behaviour doesn't match the
spec, which demands that scroll events are fired only when the relative offset
between visual and layout viewport changes. We'll fix this up in the next patch.

Differential Revision: https://phabricator.services.mozilla.com/D14043
2018-12-20 21:35:26 +00:00
Margareta Eliza Balazs
30a7b0ba82 Merge inbound to mozilla-central. a=merge 2018-12-19 17:46:11 +02:00
Brian Hackett
f838866ec0 Bug 1044074 - Don't run resize or scroll events while documents have events suppressed, r=smaug. 2018-12-18 15:38:45 -10:00
Ting-Yu Lin
8b74d2a54d Bug 1515192 - Replace handcrafted FrameChildListIDs class with EnumSet. r=mats
The following APIs are changed.
1. Contains() needs to become contains(). (EnumSet's methods have lowercase names.)
2. Use list constructor rather than "|" like a plain enum.
3. Use operator+= instead of operator|=.

Differential Revision: https://phabricator.services.mozilla.com/D14908
2018-12-19 00:50:09 +00:00
Andrea Marchesini
ab2f923d5e Bug 1513895 - Unify PopupBlocker algorithm in 1 single file, r=smaug 2018-12-16 10:21:16 +01:00
longsonr
84b5d4231e Bug 1516411 - Move nsSMILAnimationController into the mozilla namespace and rename it as SMILAnimationController r=birtles 2018-12-28 11:47:58 +00:00
L. David Baron
cdb8d67727 Bug 1159042 - p6. Use NS_FRAME_DYNAMIC_REFLOW_ROOT - r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D9492
2018-12-11 20:34:09 +00:00
Gerald Squelart
e53a07cfcd Bug 1159042 - p4. Make mDirtyRoots manage roots in preferred depth order - r=dbaron
When popping a dirty root, take the shallowest one first (so we reflow from
outer frames first, to avoid potential duplicate reflow of inner frames).

Prevent duplicate roots (to be reworked in a future bug).

Differential Revision: https://phabricator.services.mozilla.com/D9490
2018-12-11 20:32:56 +00:00
Gerald Squelart
addd5497bb Bug 1159042 - p3. Refactor mDirtyRoots type into a class - r=dbaron
As mDirtyRoots will be accessed through a more cohesive API, this patch hides
the storage details (nsTArray) -- but provides almost the same API for now.

Differential Revision: https://phabricator.services.mozilla.com/D9489
2018-12-11 20:32:14 +00:00
L. David Baron
f9e1d8a484 Bug 1159042 - p2. Allow reflow roots to have overflow, and allow that overflow to change during reflow - r=dbaron,dholbert
Differential Revision: https://phabricator.services.mozilla.com/D9488
2018-12-11 20:31:09 +00:00
L. David Baron
fe25220621 Bug 1159042 - p1. Replace rootFrame variable with isRoot boolean in PresShell::DoReflow - r=dbaron,dholbert
Differential Revision: https://phabricator.services.mozilla.com/D9487
2018-12-11 20:30:00 +00:00
Emilio Cobos Álvarez
afcff875f7 Bug 1513012 - Move overflow to use cbindgen. r=heycam
It's one of the most annoying / hacky mako bits we have.

Differential Revision: https://phabricator.services.mozilla.com/D14084
2018-12-11 03:07:08 +01:00
Brindusan Cristian
edc519260f Merge mozilla-central to autoland. a=merge CLOSED TREE 2018-12-11 00:10:08 +02:00
Neil Deakin
c4e382df7d Bug 1492326, use Element helper methods in dom/layout instead of QueryInterface to get interface implementations that might be implemented by custom elements, r=paolo 2018-12-04 11:33:05 -05:00