Commit Graph

157 Commits

Author SHA1 Message Date
Kirk Steuber
8f7a03110f Bug 1365092 - Moves side effects of HTMLImageElement's SetAttr function to the corresponding BeforeSetAttr and AfterSetAttr functions r=bz
This is necessary to facilitate the transition to cloning attributes instead of reparsing them.

HTMLImageElement's side effects proved to be a bit trickier than those of many other classes because HTMLImageElement::SetAttr intentionally forces an image reload, even if the attribute value has not been changed. Element::SetAttr, on the other hand, usually ignores attribute changes that do not change the attribute value, exiting before BeforeSetAttr is even called. In order to preserve this behavior, another virtual function |OnAttrSetButNotChanged| was added to the Element class. This function will be called in the case that Element::SetAttr exits early, allowing a forced reload to take place at that time.

MozReview-Commit-ID: 4CrH30bo5GT
2017-06-01 15:38:45 -07:00
Kirk Steuber
fe43804c94 Bug 1365092 - Moves side effects of nsGenericHTMLElement and Element's SetAttr, UnsetAttr, and ParseAttribute functions to the corresponding BeforeSetAttr and AfterSetAttr functions r=bz
This is necessary to facilitate the transition to cloning attributes instead of reparsing them.

MozReview-Commit-ID: HzB3f1sr9y9
2017-05-31 11:01:47 -07:00
Brad Werth
9b0738b4c3 Bug 1355675 Part 3: Add some Chrome-only getTransformTo... methods to Element. r=mattwoodrow,smaug
MozReview-Commit-ID: 5H2DXKJzE8H
2017-05-30 09:42:25 -07:00
Boris Zbarsky
9eb1270871 Bug 1364360 part 2. Make Element::GetScrollFrame take a flush type, not a "should I flush?" boolean. r=ehsan 2017-05-25 13:39:44 -04:00
Emilio Cobos Álvarez
9e9730c5c3 Bug 1366474: While we're here, devirtualize GetSMILOverrideStyle too. r=birtles
Also, update an outdated comment that was leftover.

MozReview-Commit-ID: CC865rj3o3S
2017-05-20 13:02:43 +02:00
Emilio Cobos Álvarez
52256167eb Bug 1366474: Devirtualize Element::{Get,Set}SMILOverrideStyleDeclaration. r=birtles
MozReview-Commit-ID: JYLt6lE0bZt
2017-05-20 12:59:33 +02:00
Kirk Steuber
e2ea33731f Bug 1363481 - Add the old attribute value as a parameter to Element::AfterSetAttr r=bz
In order to facilitate the movement of code with side-effects called by Element::SetAttr to Element::BeforeSetAttr and Element::AfterSetAttr, Element::AfterSetAttr should have access to the old value of the attribute. This includes information about whether there was previously a value set or not.

Accomplishing this involved passing an additional argument through functions that find and change the old attribute value in order to ensure that we can differentiate between an empty old value and an absent old value (attribute was not set).

Note that while I tried to ensure that accurate values (and their absence) are reported to Element::AfterSetAttr, I largely ignored SVG. While the old value reported for SVG values should be however accurate the value already being reported to SetAttrAndNotify was, SVG elements do not currently report unset values properly because they will never pass a null pointer to SetAttrAndNotify.

MozReview-Commit-ID: K1mha8CNFZP
2017-05-18 14:09:01 -07:00
Bobby Holley
45926d6eb7 Bug 1363375 - Pack nsINode better on 64-bit and stop conditionally compiling mServoData. r=smaug 2017-05-11 13:51:28 +02:00
Emilio Cobos Álvarez
726660f3e7 Bug 1355343: Move node restyle bits to Element, and add bits for snapshot handling. r=bholley
MozReview-Commit-ID: 6OrUKX5RcBq
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-04-16 08:16:24 +02:00
Emilio Cobos Álvarez
855ec0b9db Bug 1361078: Remove unnecessary fast path in Element::GetPseudoElementType. r=dbaron
A more general fast path was added in bug 1355353.

MozReview-Commit-ID: HGe9WaojoYw
2017-05-01 18:12:06 +02:00
Kirk Steuber
9386a2f3e1 Bug 1359556 - Optimize cloneNode by preinitializing attribute and child arrays r=bz
Currently, attribute and child arrays (implemented in dom/base/nsAttrAndChildArray.h) start out empty. When cloning, the array ends up being resized multiple times in order to add the attributes and children that are being cloned from the original node. This would be quicker if the array was initialized to the correct size in the first place so that resizes are not necessary.

However, preallocating space for children is only necessary when performing a deep clone. Therefore, an additional parameter is being added to the Clone, CopyInnerTo, and CloneDocHelper methods to indicate whether preallocation of children should happen. Attributes are copied either way, so that part of the array is preallocated in both cases.

MozReview-Commit-ID: 3iVezeAKXnI
2017-04-20 12:57:48 -07:00
Olli Pettay
1a7d96f92a Bug 1355540, use SegmentedVector for pending links to avoid slow hashtable lookups in hot codepaths, r=bz 2017-04-15 18:55:05 +03:00
Olli Pettay
7705130cb4 Bug 1352898, add a cache for nsMappedAttributes to reduce malloc/free and bind nsMappedAttributes always to nsHTMLStyleSheet if owner document has such, r=bz 2017-04-07 19:21:48 +03:00
Brian Birtles
42687f63b9 Bug 1353208 - Use UniquePtr for handling heap-allocated nsISMILAttr objects; r=dholbert
MozReview-Commit-ID: 10lA0ZaXChj
2017-03-30 13:10:07 +09:00
Sebastian Hengst
8a5ccc785d merge mozilla-central to mozilla-inbound. r=merge a=merge 2017-04-01 13:12:04 +02:00
Olli Pettay
1ea6ce17c0 Bug 1352389, don't push extra script blocker on stack when setting attributes, r=bz 2017-03-31 22:54:41 -04:00
Olli Pettay
36866509cd backout Bug 1352389, r=backout 2017-03-31 16:59:06 -04:00
Olli Pettay
b9520e8c63 Bug 1352389, don't push extra script blocker on stack when setting attributes, r=bz 2017-03-31 13:13:52 -04:00
Manish Goregaokar
0de0989a14 Bug 1341647 - stylo: Move HTMLBodyElement::WalkContentStyleRules to the mapped attr functionality; r=bz
MozReview-Commit-ID: 90qDHl0Ane4
2017-03-29 12:10:00 -07:00
Manish Goregaokar
cbde7ac997 Bug 1330051; Reparse style attribute when adopting across style backends; r=bz
MozReview-Commit-ID: LWN57KApiMu
2017-03-24 15:28:19 -07:00
Bobby Holley
aacbfde69f Bug 1350115 - Squelch post-traversal generated by additional animation traversals when we're styling a fresh subtree. r=heycam,r=birtles
This patch exists to avoid a crash in layout/style/test/test_animations.html. We end up
generating some ::before content, which causes us to style the new subtree at [1]. In
StyleNewSubtree, we fail the !postTraversalRequired assertion because
PrepareAndTraverseSubtree decided to traverse the tree twice (once to style it, and again
to restyle it for animations), and return that a post-traversal is needed.

The reason this issue happens with my NAC patches and not without is that we were previously
filtering out generated ::before content from the servo traversal, so the servo traversal
wouldn't have reached it and (presumably) the animation restyle wouldn't have happened and
we wouldn't have returned true for needing a post-traversal.

[1] http://searchfox.org/mozilla-central/rev/c48398abd9f0f074c69f2223260939e30e8f99a8/layout/base/nsCSSFrameConstructor.cpp#1918

MozReview-Commit-ID: 8tgzLjV8B3A
2017-03-24 09:40:30 -07:00
Edgar Chen
c0bad72da1 Bug 1347634 - GetCustomElementData and SetCustomElementData don't need to be virtual; r=smaug 2017-03-16 12:21:12 +08:00
Boris Zbarsky
d40e452ea9 Bug 656197 part 1. Remove the generic attr preparsing mechanism from BeforeSetAttr and just preparse class attributes directly in the one place that needs to do it. r=smaug
This removes the requirement that BeforeSetAttr comes before AttributeWillChange
(which needs the preparsed new value).

MozReview-Commit-ID: 87C6Mjc7ARh
2017-03-16 14:50:41 -04:00
Manish Goregaokar
be24bd2d60 Bug 1329093 - Part 4: stylo: Delay SVG mapped attr resolution till later; r=bz
MozReview-Commit-ID: 2GvHPg1egjS
2017-03-09 17:46:26 -08:00
Cameron McCormack
430363e69e Bug 1341230 - Part 2: Add C++ API to add/remove manually managed EventStates bits. r=smaug
MozReview-Commit-ID: 11886pRRXSq
2017-03-06 10:44:13 +08:00
Cameron McCormack
9cfc1f4068 Bug 1341230 - Part 1: Rename ESM_MANAGED_STATES to EXTERNALLY_MANAGED_STATES. r=smaug
Since it's not just the EventStateManager that has access to modify
these EventStates bits.

MozReview-Commit-ID: 17EpfQT5M40
2017-03-06 10:44:13 +08:00
Iris Hsiao
fe774f3435 Backed out changeset 41bd2eefc823 (bug 1341230) 2017-03-06 11:48:58 +08:00
Iris Hsiao
f23cc7da5f Backed out changeset f879b73eb504 (bug 1341230) 2017-03-06 11:48:52 +08:00
Cameron McCormack
dc9092915a Bug 1341230 - Part 2: Add C++ API to add/remove manually managed EventStates bits. r=smaug
MozReview-Commit-ID: 11886pRRXSq
2017-03-06 10:44:13 +08:00
Cameron McCormack
22026a5583 Bug 1341230 - Part 1: Rename ESM_MANAGED_STATES to EXTERNALLY_MANAGED_STATES. r=smaug
Since it's not just the EventStateManager that has access to modify
these EventStates bits.

MozReview-Commit-ID: 17EpfQT5M40
2017-03-06 10:44:13 +08:00
Tobias Schneider
18718b4035 Bug 1337936 - (intersection-observer) Revise lifetime management. r=smaug
MozReview-Commit-ID: 4pzm00igBLR
2017-02-22 10:45:13 -08:00
Sebastian Hengst
71f8399713 Backed out changeset 5f93d62d9229 (bug 1337936) for asserting in crashtest 869038.html. r=backout 2017-02-22 14:06:26 +01:00
Tobias Schneider
6c083f71b2 Bug 1337936 - (intersection-observer) Revise lifetime management. r=smaug
MozReview-Commit-ID: AvdDJaRELXm
2017-02-21 03:13:39 -08:00
cam@mcc.id.au
0115c32212 Bug 1331322 - Allow tagging of pseudo-implementing native anonymous content with the pseudo type at creation time, and eliminate explicit style contexts in nsIAnonymousContentCreator::ContentInfo. r=bholley
MozReview-Commit-ID: LO0t92orjWZ
2017-01-13 03:21:11 +00:00
Bobby Holley
3f43a691db Bug 1331322 - Move MAY_HAVE_CLASS to mBoolFlags. r=bholley
This fits a bit better with the other stuff, and allows us to add our new NAC
bit with the other NAC related bits, which also happens to be a field that
Servo already has easy access to.
2017-01-20 18:24:41 -08:00
Phil Ringnalda
a6b8226a11 Backed out 4 changesets (bug 1331322) for Android reftest failures in 1169331-1.html and forced-bg-color-outside-visible-region.html
Backed out changeset 96c6b5a11284 (bug 1331322)
Backed out changeset 15877d32de7d (bug 1331322)
Backed out changeset 841d608704d7 (bug 1331322)
Backed out changeset 02096c5eb029 (bug 1331322)
2017-02-15 21:24:00 -08:00
cam@mcc.id.au
c0b99199c1 Bug 1331322 - Allow tagging of pseudo-implementing native anonymous content with the pseudo type at creation time, and eliminate explicit style contexts in nsIAnonymousContentCreator::ContentInfo. r=bholley
MozReview-Commit-ID: LO0t92orjWZ
2017-01-13 03:21:11 +00:00
Bobby Holley
eee1ffbb7b Bug 1331322 - Move MAY_HAVE_CLASS to mBoolFlags. r=bholley
This fits a bit better with the other stuff, and allows us to add our new NAC
bit with the other NAC related bits, which also happens to be a field that
Servo already has easy access to.
2017-01-20 18:24:41 -08:00
Boris Zbarsky
04a6827ac6 Bug 1338725 part 2. Move GetClasses/DoGetClasses from nsIContent to Element. r=baku 2017-02-13 16:06:45 -05:00
Cameron McCormack
8e21d528cb Bug 1331294 - Part 6: Remove RestyleManager::HasPendingRestyles and Servo_Element_ShouldTraverse. r=bholley
MozReview-Commit-ID: 2ST5i7M4QZ4
2017-02-10 10:42:30 +08:00
Bobby Holley
dbb8cff5e0 Bug 1335303 - Add a virtual method to avoid QI to nsIMozBrowserFrame. r=smaug 2017-02-08 17:04:47 -08:00
Boris Zbarsky
e7ae250672 Bug 1332812. Remove some more unused or nearly-unused nsIDOMElement bits. r=froydnj 2017-02-02 10:32:58 -05:00
Sebastian Hengst
7e11a9fec6 Backed out changeset c724fbd9c326 (bug 1332812) for build bustage. r=backout on a CLOSED TREE 2017-02-02 16:58:52 +01:00
Boris Zbarsky
391a68c2da Bug 1332812. Remove some more unused or nearly-unused nsIDOMElement bits. r=froydnj 2017-02-02 10:32:58 -05:00
Manish Goregaokar
9f16c02625 Bug 1330041 - Basic handling framework for presentation attributes in Stylo, with handling for font-size and color; r=bz,emilio
This introduces a basic framework for servo's style system to be able
to query the style of presentation attributes which it can then insert
into the cascade. It uses that framework to implement the size and
color attributes on <font>.

There are a number of improvements that can be done on top of this:

 - Implement all other properties
 - Abstractify the ruledata parameter of the mappers using templates or virtual dispatch so that it can be a Servo decl block instead
 - Implement aforementiond abstraction over Servo decl blocks (this obsoletes the code in the first item above, so it might just be better to skip that and directly do this)
 - Replace uses of nsHTMLStyleSheet with an abstract base class containing common elements between Servo and Gecko

I'd prefer for these to be done in separate steps.

MozReview-Commit-ID: GO60qfeZOfl
2017-01-19 15:56:53 -08:00
Jared Wein
d082f94cb9 Bug 1323618 - Allow locking off of psuedo-classes through inIDOMUtils. r=heycam
MozReview-Commit-ID: DppYTmILpwy
2017-01-12 12:10:07 -05:00
Sebastian Hengst
2c0af86386 Backed out changeset 6c4807171f00 (bug 1323618) on jaws' request. r=backout 2017-01-12 18:45:39 +01:00
Jared Wein
4da6b820c7 Bug 1323618 - Allow locking off of psuedo-classes through inIDOMUtils. r=heycam
This patch doesn't currently work. The test fails in two test cases. Right now the styles for a 'locked-off' psuedo class are still being applied.

MozReview-Commit-ID: DppYTmILpwy
* * *
[mq]: temp

MozReview-Commit-ID: 74iIOQumfrw
2017-01-12 12:10:07 -05:00
Boris Zbarsky
b159c3dbc3 Bug 1330060 part 1. Move GetInlineStyleDeclaration up to Element so it doesn't have to be virtual. r=bkelly 2017-01-11 19:03:16 -05:00
Cameron McCormack
5f9911da79 Bug 1328832 - Part 2: Rename mozFlushType to mozilla::FlushType and make it an enum class. r=bzbarsky
MozReview-Commit-ID: D3fIngSHSsl
2017-01-05 15:31:56 +08:00