Also, fix a bug when copying back the planned limits after
updating it for the first span group. It should only copy
back track sizes that were actaully spanned by those items,
other content-sized tracks' limits should remain at "infinity".
* Deserialization now only happens via a mutator
* The CID for URI implementations actually returns the nsIURIMutator for each class
* The QueryInterface of mutators implementing nsISerializable will now act as a finalizer if passed the IID of an interface implemented by the URI it holds
MozReview-Commit-ID: H5MUJOEkpia
--HG--
extra : rebase_source : 8ebb459445cab23288a6c4c86e4e00c6ee611e34
To correctly apply pixel snapping during display list construction we would need to snap each tile of a repeated gradient individually. It's preferrable to do this in WebRender rather than decompose gradients into many display items.
We no longer support legacy extensions with e10s shims, and the only remaining
uses that matter are in-tree test harnesses, which have been fixed. This flag
no longer serves a purpose.
MozReview-Commit-ID: EdCNqF4MttN
--HG--
extra : rebase_source : 0fef334354faa7541628614cb964a29faaa9df41
Now that nsGkAtoms is in xpcom/, we can call nsGkAtoms::AddRefAtoms() from
NS_InitAtomTable(), which removes the need for DefaultAtoms, and also removes a
duplicate static atom.
MozReview-Commit-ID: CyfvnvZomzZ
--HG--
extra : rebase_source : 53ead62323a340038c1b4594b1a3eb225aa19626
PresShell only uses performane.now to track refresh times, and notify internal
observers. We can provide more accurate times by not clamping and jittering
these numbers.
MozReview-Commit-ID: FkDGJhrLeAy
--HG--
extra : rebase_source : 99c571d1e5df53f51b4be0304df3818c161d2972
There are only a handful of them, and two of them are duplicates of atoms
within nsGkAtoms anyway.
MozReview-Commit-ID: Cb90STdeGdK
--HG--
extra : rebase_source : 6ebc6996b129e70907f634e1876725c9e5da41ab
In each case, the atom had an obvious name and a weird name. Where possible, I
kept the obvious name and commented out the weird name, viz:
- `mixed` over `_mixed` for "mixed"
- `el` over `el_` for "el"
- `other` over `other_` for "other"
- `remote` over `Remote` for "remote"
But for several of them I didn't do that, because the weird name is used
within the HTML5 parser -- which is a huge pain to modify because it involves
code generated by code from another repo -- so I kept the weird name and
commented out the obvious name, viz:
- `list_` over `list` for "list"
- `svgSwitch` over `_switch` for "switch"
- `set_` over `set` for "set"
MozReview-Commit-ID: Jp3CpdWXNDm
--HG--
extra : rebase_source : 421ce5316772f1951488307e81f2ceee696d363d
The atoms in nsHTMLTags are a subset of nsGkAtoms, which means that
sTagAtomTable[] currently ends up holding duplicate pointers to the same static
atoms.
This patch removes sTagAtomTable[]. The only place that used sTagAtomTable[]
was nsHTMLTags::AddRefTable(). It now instead calls NS_GetStaticAtom() to get
the static atoms registered by nsGkAtoms.
The patch also moves some checking of sTagNames from RegisterAtoms() (which is
removed) to AddRefTable().
All this reduces the number of duplicate static atoms from 148 to 12.
MozReview-Commit-ID: 14qXYeoorFr
* * *
[mq]: foo
MozReview-Commit-ID: AgQbXlcvWrt
The font face set is owned by the document now, and the shell knows about
refresh driver ticks. There's no reason for it to live in the pres context.
MozReview-Commit-ID: I8gtimok7VG
--HG--
extra : rebase_source : a3216a2efe4bdddbbd83751f3ad2299372232409
We flushed the style of the original doc, but not layout, and thus the iframe
resize wasn't noticed, and the style flush on the child presShell wasn't
sufficient.
Do a style flush on the child document instead, so that it flushes layout on the
parent document too if needed.
MozReview-Commit-ID: 5ZhBuxpKIUg
GetBoxShadowRectForFrame is called while we're calculating the visual
overflow bounds for a frame. So it is not valid for it to use the frame's
"current" visual overflow rect (which may be uninitialized or stale).
MozReview-Commit-ID: J52dxIMrMg5
For now, we are going to make _all_ CSS Animations related timer fuzzing
only applicable in Resist Fingerprinting Mode (addressing the last couple
that had not already been configured that way.)
We hardcode their content mix-ins as zero, but leave comments indicating
how they should behave.
MozReview-Commit-ID: KhmV7wO8Pt5
--HG--
extra : rebase_source : 3b087d40b6332d447b442b435ed6fee8993e0145
In nsFrame::ComputeSize and nsFrame::ComputeSizeWithIntrinsicDimensions, the
following expressions
isFlexItem && usingFlexBasisForISize
isFlexItem && !usingFlexBasisForISize
are sometimes compiled by recent gcc/clang in the opposite order, viz
[!]usingFlexBasisForISize && isFlexItem. In this case the transformation is
correct as can be seen by analysing code earlier in these functions.
Unfortunately this causes Valgrind/Memcheck to report a branch on undefined
data which, in this case, is a false positive.
A simple fix is simply to initialise usingFlexBasisForISize to false at its
declaration point.
--HG--
extra : rebase_source : 39877e4ea8ec678288e6b49af120445c96ef8c0a
The new struct is in LayersTypes.h, all the rest of the changes are just
replacing existing uint64_t instances with the new LayersId struct.
Note that there is one functional change, in
CompositorBridgeParent::DeallocPWebRenderBridgeParent, where we now
correctly convert the PipelineId to a LayersId before using it to index
into sIndirectLayerTrees, whereas before we were incorrectly just using
the mHandle part of the PipelineId.
MozReview-Commit-ID: GFHZSZiwMrP
--HG--
extra : rebase_source : d2b274f63aaee2ee9bba030297e0a37a19af0d6c
Summary:
Also, make stuff sound in presence of CSSOM and what not.
The dirty: false thing is reverting an accidental change that landed in the
de-XBL stuff, which was harmless, but now wouldn't let me assert stuff properly.
Reviewers: xidorn
Bug #: 1445682
Differential Revision: https://phabricator.services.mozilla.com/D748
MozReview-Commit-ID: K0W2Rv0qK8X
* Deserialization now only happens via a mutator
* The CID for URI implementations actually returns the nsIURIMutator for each class
* The QueryInterface of mutators implementing nsISerializable will now act as a finalizer if passed the IID of an interface implemented by the URI it holds
MozReview-Commit-ID: H5MUJOEkpia
--HG--
extra : rebase_source : 01c8d16f7d31977eda6ca061e7889cedbf6940c2
When we fail to generate an image key for an image, it is likely because
the image container is empty. This is not a fatal error, it just means
we haven't produced a frame yet. We should be using NOT_READY instead of
BAD_IMAGE as a result. This is important because reftests rely upon
these error codes to know whether or not they should wait; it could
cause intermittent failures.
If an image container is empty, it will not produce an image key for use
with WebRender. This is generally not a sign of failure because the
producer likely has yet to populate the container with data. As such, we
should not immediately attempt to fallback. In fact, fallback can make
things worse in this situation, as we will create an image client to
send over the data, but then find that there is no data to share (or
find that there is, due to a race with the producer thread, and use
image clients when we could use shared surfaces).
Summary: It uses two node bits that can be better suited for something else.
Reviewers: xidorn, smaug
Bug #: 1444905
Differential Revision: https://phabricator.services.mozilla.com/D709
MozReview-Commit-ID: HIPDtHm6xpM
This code was originally added to debug the frame visibility code.
However it wasn't architected correctly and makes the compositor use an
untrusted layers id from content. Instead of fixing this I'd rather just
delete it, since it's a big pile of code that is basically a debugging
tool that nobody owns anymore.
MozReview-Commit-ID: nPZqVeYsFp
As with an earlier patch in this series, we rename the file_* test content files
to test_*_to_rename.html in this patch, and then in a subsequent patch drop the
_to_rename suffix so that we can trace the history of the test_* files back to
their file_* equivalents.
MozReview-Commit-ID: Jes8xSQzkCF
--HG--
rename : layout/style/test/file_animations_effect_timing_duration.html => layout/style/test/test_animations_effect_timing_duration_to_rename.html
rename : layout/style/test/file_animations_effect_timing_enddelay.html => layout/style/test/test_animations_effect_timing_enddelay_to_rename.html
rename : layout/style/test/file_animations_effect_timing_iterations.html => layout/style/test/test_animations_effect_timing_iterations_to_rename.html
rename : layout/style/test/file_animations_iterationstart.html => layout/style/test/test_animations_iterationstart_to_rename.html
rename : layout/style/test/file_animations_pausing.html => layout/style/test/test_animations_pausing_to_rename.html
rename : layout/style/test/file_animations_playbackrate.html => layout/style/test/test_animations_playbackrate_to_rename.html
rename : layout/style/test/file_animations_reverse.html => layout/style/test/test_animations_reverse_to_rename.html
rename : layout/style/test/file_animations_styles_on_event.html => layout/style/test/test_animations_styles_on_event_to_rename.html
rename : layout/style/test/file_transitions_replacement_on_busy_frame.html => layout/style/test/test_transitions_replacement_on_busy_frame_to_rename.html
These files only use references to string types, e.g. "nsAString&", so they
only need forward-declarations of these types -- not the full definition.
Note that the last file here (nsStyleUtil.h) already has an #include for
nsStringFwd.h, which is why that files change is just a pure removal (of the
unnecessary nsString.h #include).
MozReview-Commit-ID: 9sLSyeBS49M
--HG--
extra : rebase_source : 683a2c621f7b7cae754f129effabd9defe7ba665
nsStyleConsts.h doesn't use anything from gfxRect.h or nsFont.h, so this patch
removes those #includes from it. However, it does need some other headers that
it was pulling in indirectly via those #includes, which I'm now making it
*directly* #include. Specifically, it needs:
- inttypes.h for "uint8_t"
- gfxFontConstants.h for NS_FONT_WEIGHT_BOLD and related constants.
On its own, the above changes cause build errors in nsStyleCoord.h, because
that other header has an #include for nsStyleConsts.h, which it was
inadvertently depending on (very indirectly) to provide some definitions (via
the aforementioned removed #includes). So we need to give nsStyleCoord.h some
new #includes to directly provide what it needs & keep it
compiling. Specifically:
- mozilla/gfx/Types.h for the mozilla::Side type
- nsISupportsImpl.h for the NS_INLINE_DECL_THREADSAFE_REFCOUNTING macro
MozReview-Commit-ID: BDlaIIOQiPE
--HG--
extra : rebase_source : a16f85f030330ff009461c4d48028327cc4ba0cf
Should pass fine.
Was disabled in Bug 1380053, presumably because it asserted or what not at that
point? Who knows.
MozReview-Commit-ID: LSH6ZId9Ezj
--HG--
extra : rebase_source : fb1bfeae35442d2acc65b8f5ceb8ee1f75f33303
This is consistent with most other methods that take a drawTarget parameter r=dholbert
--HG--
extra : amend_source : 77aa7f7d9cb19f9aa08014fff3b209dc151b75f3
Because (a) that name better indicates that it's a pointer to a pointer, and
(b) because nsStaticAtom::mString is going to be renamed as mAtom in bug
1411469.
MozReview-Commit-ID: D5tuNOstMgr
--HG--
extra : rebase_source : 9344eeea0288c8c52c069ce21e8bc55f6e0f3f6f
This switches `nsNodeInfoHash` to a nsDataHashTable. The hash function and
equality operator are moved to NodeInfoInner so that they can be easily reused.
--HG--
extra : rebase_source : d2e42447a77ffdde620508da28554528ebd78bf8
The test that we are updating the fuzzy annotation for is the W3C copy. There is an *existing* local copy of this test that
was created as part of Bug 1295466 (copy of test is here->https://searchfox.org/mozilla-central/source/layout/reftests/bugs/1295466-1.xhtml)
and this copy is the stricter modified version which makes it ok for us to have this extremely permissive annotation on the W3C copy.
MozReview-Commit-ID: 2qXSbVONl64
--HG--
extra : rebase_source : f8b1eb2f79a9bc60155f0b8f2eaedc248fba38d8
When CSS animation playState is changed, we should call RequestRestyle(Layer)
to reflect the new state to the compositor just like when animation timing
params are changed.
MozReview-Commit-ID: JNDBco5uuK2
--HG--
extra : rebase_source : cc7de301efdb18a97597d94682ff2329ee1f60d6
So that we don't need to include nsStyleStruct.h in gfx any more.
MozReview-Commit-ID: 6nOaAbssLCz
--HG--
extra : rebase_source : 9c195c90277a4584dc14a6949e9eea53bcd8487c
Summary:
* Remove unnecessary virtual, since we also override.
* Remove unnecessary mozilla:: qualification, since we are in the mozilla
namespace already.
* Avoid inconsistently-followed member-variable indentation.
* Make the destructor not virtual, since it doesn't override anything and this
is a final class (the destructor is called from the virtual Release()).
Reviewers: dholbert
Bug #: 1443753
Differential Revision: https://phabricator.services.mozilla.com/D690
MozReview-Commit-ID: Hy2aKuhoOKd
Unfortunately this means that we need to export a couple more headers, but that
should be ok.
In particular, we have to export some headers that are #included by
nsCSSFrameConstructor.h, because nsCSSFrameConstructor.h itself will now be
included in more places outside of layout/, by .cpp files that don't necessarily
have the ability to indirectly #include its other headers, unless we export
them.
MozReview-Commit-ID: 2n9KHW6Yjrd
Most of them just want GetRootFrame(), and there's no need to explicitly go
through the frame manager for that, we have a handy alias in the shell.
MozReview-Commit-ID: GriEqkasidY
Instead move UndisplayedNode to its own file, which is what causes the include
hell due to requiring nsIContent / nsStyleContext.
MozReview-Commit-ID: 1opiajueZNb
This also includes unified build fixes that were needed as a result of
the shuffling around.
MozReview-Commit-ID: 1AGG3DHnN1m
--HG--
extra : rebase_source : 7399cea6dff2bd91ab305dee22d93b32382cc0be
-Wmissing-prototypes is a new optional warning available in clang ToT. It warns about global functions that have no previous function declaration (e.g. from an #included header file). These functions can probably be made static (allowing the compiler to better optimize them) or they may be unused.
Confusingly, clang's -Wmissing-prototypes is equivalent to gcc's -Wmissing-declarations, not gcc's -Wmissing-prototypes. A function prototype is a function declaration that specifies the function's argument types. C++ requires that all function declarations specify their argument types, but C does not. As such, gcc's -Wmissing-prototypes is a C-only warning about C functions that have no previous function *prototypes* (with argument types), even if a previous function *declaration* (without argument types) was seen.
MozReview-Commit-ID: FGKVLzeQ2oK
--HG--
extra : rebase_source : 81e62163bf41a5d5dd87abf5397e6e8c62ed4096
extra : source : 653a9fc279e2f6a6d066474a94a70d65ac703d6b
mNeedStyleFlush is also set by animation restyle request. So it's possible
that the flag is set again in PostRestyleForThrottledAnimations() or in
sequential tasks for updating animations after the flag is cleared at the top
DoFlushPendingNotifications().
MozReview-Commit-ID: KPSS6cJb4HX
--HG--
extra : rebase_source : 31d839f12b654d52b352cd50e19bc1953c46b7c2
Summary:
FlushTarget wants to decide whether we should flush the parent document or all
of them. However, the only point of flushing parent documents is that media
query changes could affect the document we really want to flush.
That's completely pointless if we actually don't flush the subdocument, so just
skip doing that. This case is already checked (see the DocumentNeedsRestyle
stuff, which is also somewhat poorly named, which walks up the document chain).
Reviewers: xidorn
Bug #: 1443483
Differential Revision: https://phabricator.services.mozilla.com/D682
MozReview-Commit-ID: LiI7IrUBeqq
This fixes PrintTargetWindows::BeginPrinting to detect when the
user cancels and have it return NS_ERROR_ABORT in that case.
The rest of the changes are simply making sure that the various
call points up the call stack don't print a warning message if
NS_ERROR_ABORT is returned up from
PrintTargetWindows::BeginPrinting.
MozReview-Commit-ID: 6xZ5SPje6TT
The old style system can't find the appropriate style to inherit from when
::first-line and display: contents are involved...
MozReview-Commit-ID: 98t1ABgLulQ
Because the scrollable parent might be transformed by its ancestors.
MozReview-Commit-ID: FuCPLg54z7h
--HG--
extra : rebase_source : 7c11c5384d2aed6c663b915fcacae7c627052a43
It doesn't make sense, since they have no frame themselves, and it breaks
invariants other code relies on. Use the parent frame instead.
The stack overflow happens because we give the first-letter frame to the
display: contents element, then we reframe it.
Removing a display: contents node calls ContentRemoved on all the children. One
of these children is this text-node inside the first-letter frame. Since it was
split by bidi resolution we go ahead and reframe the parent in:
https://searchfox.org/mozilla-central/rev/d2b4b40901c15614fad2fa34718eea428774306e/layout/base/nsCSSFrameConstructor.cpp#9688
But the parent is the display: contents node, which results in infinite
recursion.
The usage of GetParent() is wrong anyway too, since it doesn't handle XBL or
Shadow DOM in any way.
MozReview-Commit-ID: JFD16at316V
--HG--
extra : rebase_source : e485b45bc146a70c26f8534f760899218da07500
Combing the two clips as-is should always be correct, and since they're frequently identical, we can usually make IntersectClip a no-op.
MozReview-Commit-ID: 3xxMyZjwPvJ
--HG--
extra : rebase_source : 8ae4891b88d7229a685771c13a98d3578ffb8767
The display items are almost certainly gone from the cache at this point, so dereferencing them can take a while.
This moves the DisplayItemData lookup, and the IsReused/HasMergedFrames checks into the ProcessDisplayItems pass (where we already use the items), and then just uses the AssignedDisplayItem entry for everything.
MozReview-Commit-ID: 8udcE0bmyF3
--HG--
extra : rebase_source : 594513ef2c7d68b42e56b0536f8f6372fa9de90f
These two structs store very similar state (including duplicating the mask layer common clip count), and the former uses an expensive hashtable for lookups.
This patch combines the two, and uses a vector of entries instead of the hashtable so we can do the cleanup pass.
* * *
[mq]: fix
MozReview-Commit-ID: KamhbGAIqpD
--HG--
extra : rebase_source : 2d4c1522b04018dfab5cd4eabde828349548548c
Some included headers for source code in layout directory are left unused. This
patch merely removes these redundant headers. All of these headers are still
found in use for other code, so all of them and their related cpp files are kept
still.
MozReview-Commit-ID: KCleuWyOV8Z
--HG--
extra : rebase_source : 6e892dcd8ad8c1f56069d4d93bc7124641361232
Combing the two clips as-is should always be correct, and since they're frequently identical, we can usually make IntersectClip a no-op.
MozReview-Commit-ID: EKHdPogzd3t
--HG--
extra : rebase_source : 13dede364b603ff5dd889141430d5d4cd7e51e17
The display items are almost certainly gone from the cache at this point, so dereferencing them can take a while.
This moves the DisplayItemData lookup, and the IsReused/HasMergedFrames checks into the ProcessDisplayItems pass (where we already use the items), and then just uses the AssignedDisplayItem entry for everything.
MozReview-Commit-ID: JrRshEyZncb
--HG--
extra : rebase_source : 280bda37cba3f9dc5a5ba3dadec5e09848b7321c
These two structs store very similar state (including duplicating the mask layer common clip count), and the former uses an expensive hashtable for lookups.
This patch combines the two, and uses a vector of entries instead of the hashtable so we can do the cleanup pass.
* * *
[mq]: fix
MozReview-Commit-ID: KamhbGAIqpD
--HG--
extra : rebase_source : 5da2d922f1ae6f47e7e82928f878c7810630ac22
Combing the two clips as-is should always be correct, and since they're frequently identical, we can usually make IntersectClip a no-op.
MozReview-Commit-ID: AzqvbQJAytp
--HG--
extra : rebase_source : cc7e401af1dab029fa1519164c6a4e97eb8b70e9
The display items are almost certainly gone from the cache at this point, so dereferencing them can take a while.
This moves the DisplayItemData lookup, and the IsReused/HasMergedFrames checks into the ProcessDisplayItems pass (where we already use the items), and then just uses the AssignedDisplayItem entry for everything.
MozReview-Commit-ID: 3NibNGSVsax
--HG--
extra : rebase_source : b5b4d82798404ad4c8d84ca33bfb30d4afa55fb6