Commit Graph

1509 Commits

Author SHA1 Message Date
Mats Palmgren
435ab4653e Bug 847208 - Make RemoveFloat() check the PushedFloatsList too. r=dbaron 2013-03-14 14:39:26 +01:00
Trevor Saunders
f0513dc537 bug 846487 - remove remaining usage of some nsIDOMFooElement r=Ms2Ger 2013-02-14 10:33:16 -05:00
Mats Palmgren
60e6895c7e Bug 847130 - Do DestroyOverflowLines() if the last line was removed instead of always RemoveOverflowLines() and SetOverflowLines() when there's lines remaining. r=dbaron 2013-03-04 00:46:56 +01:00
Mats Palmgren
fcd1b3da79 Bug 843332 - Pass 'false' to ReparentFloats since we only added one frame ('true' only works because the added frame never has any siblings in this case). r=bzbarsky 2013-02-28 00:05:46 +01:00
Mats Palmgren
d3ab74cd13 Bug 843332 - Don't pass the nsBlockReflowState to PullFrameFrom that doesn't use it. Add some assertions. r=bzbarsky 2013-02-28 00:05:46 +01:00
Mats Palmgren
fcc69f12a6 Bug 843332 - Make PullFrame drain the overflow list before calling PullFrameFrom that can then be simplified to only deal with mList/mFrames (should be minor perf win too). r=bzbarsky 2013-02-28 00:05:45 +01:00
Mats Palmgren
8d94c2f916 Bug 840818 - Simplify PullFrameFrom when the last frame was removed from an overflow list (avoiding an assertion). r=bzbarsky 2013-02-28 00:05:45 +01:00
Mats Palmgren
6b76097b34 Bug 838688 - Optimize CollectFloats by doing an early return if this block doesn't have any floats. r=bzbarsky 2013-02-28 00:05:45 +01:00
Mats Palmgren
69c777f14a Bug 838688 - Make ReparentFloats/CollectFloats not require a priori knowledge of which child list a float is expected to be on. r=bzbarsky 2013-02-28 00:05:45 +01:00
Mats Palmgren
a45f86c424 Bug 838671 - Make nsBlockFrame::RemoveFloat O(1) and make it just do the frame removal bit and let DoRemoveOutOfFlowFrame do the Destroy part (with the intent of making RemoveFloat reusable for other code). r=bzbarsky 2013-02-28 00:05:45 +01:00
Mats Palmgren
d4deaee2e3 Bug 838642 - Introduce nsFrameList::StartRemoveFrame/ContinueRemoveFrame that can be used in concert to remove a frame in O(1) time from a set of frame lists when its exact frame list is unknown. Use them to make nsContainerFrame::StealFrame O(1). r=bzbarsky 2013-02-28 00:05:44 +01:00
L. David Baron
84b52575a8 Bug 839809: Make counter-increments and list counting that would go past our internal (int32_t) limit keep the counter at its current value rather than wrapping. r=dholbert
Per CSS WG resolution regarding counter-styles-3, afternoon of 2013-02-05:
http://krijnhoetmer.nl/irc-logs/css/20130205#l-1590
http://lists.w3.org/Archives/Public/www-style/2013Feb/0392.html
2013-02-22 10:13:37 -08:00
L. David Baron
d8aca86a74 Backout changeset b968708558b9 (bug 839809) for reftest failures. 2013-02-21 19:25:54 -08:00
L. David Baron
04f47a6a65 Bug 839809: Make counter-increments and list counting that would go past our internal (int32_t) limit keep the counter at its current value rather than wrapping. r=dholbert
Per CSS WG resolution regarding counter-styles-3, afternoon of 2013-02-05:
http://krijnhoetmer.nl/irc-logs/css/20130205#l-1590
http://lists.w3.org/Archives/Public/www-style/2013Feb/0392.html

Note that this patch depends on signed integer overflow behavior in C++,
which I believe is portable despite being unspecified.
2013-02-21 18:10:59 -08:00
Mats Palmgren
f3775ec7ad Bug 822910. r=roc 2013-02-19 02:44:14 +01:00
L. David Baron
ca6c366dc6 Bug 781360 patch 3: Rename {nsIFrame,nsStyleContext,nsComputedDOMStyle}::GetStyle* to Style*, since they can never return null. r=dholbert
Except for the changes in:
  layout/generic/nsIFrame.h (part)
  layout/style/nsComputedDOMStyle.h (all)
  layout/style/nsRuleNode.cpp (part)
  layout/style/nsStyleContext.cpp (part)
  layout/style/nsStyleContext.h (part)
(see patch 3b in the bug), this patch was written with the sed script:
s/\<GetStyle\(Font\|Color\|List\|Text\|Visibility\|Quotes\|UserInterface\|TableBorder\|SVG\|Background\|Position\|TextReset\|Display\|Content\|UIReset\|Table\|Margin\|Padding\|Border\|Outline\|XUL\|SVGReset\|Column\)\>/Style\1/g
2013-02-16 13:51:02 -08:00
Robert O'Callahan
b18cd55753 Bug 840902. Part 2: Remove nsresults from various display list methods. r=mattwoodrow 2013-02-15 00:12:27 +13:00
Robert O'Callahan
3ac2cf9858 Bug 840902. Part 1: Stop checking the results of various display list methods. r=mattwoodrow 2013-02-15 00:08:08 +13:00
L. David Baron
3c5d51984d Bug 841789, patch 1: Rename nsIFrame::GetStyleContext() to nsIFrame::StyleContext() since it can never return null. r=dholbert
This makes it conform to our convention that getters returning pointers
that can never be null do not begin with "Get".
2013-02-15 21:38:33 -08:00
Cameron McCormack
91d7ae5119 Bug 655877 - Part 45: Fixes for DLBI. r=roc,jwatt 2013-02-11 17:22:20 +11:00
Daniel Holbert
1bb0486195 Bug 839302: Simplify logic in nsBlockFrame::DrainSelfOverflowList, and replace delete w/ nsAutoPtr. r=mats 2013-02-07 17:19:57 -08:00
Mats Palmgren
9a3dedd955 Bug 837007 - Make CollectFloats ignore floats that belong to some other block. r=roc 2013-02-07 02:13:34 +01:00
Daniel Holbert
6d3d0f7af5 Bug 836899: Remove nsBlockReflowState constructor unused parameter 'aMetrics'. r=dbaron 2013-01-31 14:40:05 -08:00
Mats Palmgren
7532b4e736 Bug 786533 - Replace NS_MIN/NS_MAX with std::min/std::max and #include <algorithm> where needed. r=ehsan 2013-01-15 13:22:03 +01:00
David Zbarsky
506bcc0ab0 Bug 827149 - Remove some uses of nsIDOMHTMLBodyElement r=bz 2013-01-12 16:53:01 -05:00
L. David Baron
e9cea807e6 Bug 588237, patch 5: remove the optimization of skipping FlowAndPlaceFloat for some pushed floats, simply because the optimization looks fishy to me. r=roc 2013-01-11 14:51:21 -08:00
L. David Baron
94304bc9b0 Bug 588237, patch 4: Pull pushed floats back from the next-in-flow at the start of reflow. r=roc 2013-01-11 14:51:21 -08:00
L. David Baron
e269c569f6 Bug 588237, patch 2: Fix comment that is now incorrect due to work in bug 563584 or followups. r=roc 2013-01-11 14:51:21 -08:00
Mats Palmgren
52949061d3 Bug 734777 - Call NoteFrameRemoved also when it's the last frame on the line to avoid an assertion. r=roc 2013-01-06 03:04:59 +01:00
Robert O'Callahan
ae130ef998 Bug 825866. Part 8: Mass-rename of nsIView to nsView. r=tnikkel
This was autogenerated by basically replacing all occurrences of the word "nsIView" with nsView.
2013-01-04 02:23:11 +13:00
Alexander Surkov
9ab34aa2a6 Bug 810572, part 2.5 - rename AccType constants again, r=tbsaunde, sr=roc 2012-12-18 10:25:52 +09:00
Jeff Walden
8a6657de57 Bug 820570 - Move mozilla::DebugOnly into DebugOnly.h to pare down the grab-baggish Util.h. r=Ms2ger 2012-12-14 18:58:45 -05:00
Trevor Saunders
3f8f49e192 bug 781409 - remove nsITableLayout r=roc,davidb 2012-08-08 09:05:17 -04:00
Alexander Surkov
7b6a8051eb Bug 810572, part2 - remove 'Accessible' postfix from AccTypes constants, r=tbsaunde, sr=roc 2012-12-12 19:04:12 +09:00
Mats Palmgren
d97eb9922e Bug 806284 - Resizing a RTL block with text-align:left does not reposition the lines. r=roc 2012-12-05 23:26:28 +01:00
Daniel Holbert
64cf5b7836 Bug 815972: Remove unneeded nsDisplayListCollection from nsBlockFrame.cpp's DisplayLine() helper-function. r=roc 2012-11-28 00:08:30 -08:00
Ehsan Akhgari
ce141d03d3 Bug 810355 - Convert nsDidReflowStatus into an enum class; r=dholbert 2012-11-13 22:47:33 -08:00
Mats Palmgren
ab4069cbd7 Bug 685012 - Implement page-break-inside:avoid in layout. r=fantasai,sr=roc 2012-11-08 17:09:38 +01:00
Ehsan Akhgari
d690d46c48 Bug 775350 - Update the overflow areas of the lines containing floats based on the overflow areas of the floats in the containing block; r=dbaron 2012-11-06 12:11:50 -05:00
L. David Baron
3aabaa641b Bug 809533, patch 2: Don't null-check inside NS_New*Frame. r=roc 2012-11-07 11:55:53 -08:00
Jacek Szpot
09f9b9a1c3 Bug 792180 - Replace NS_{UN,}LIKELY with MOZ_{UN,}LIKELY; r=ehsan 2012-10-26 15:32:10 +02:00
Andrew Quartey
60612201d1 Bug 792581 - part 22: Replace LL_ZERO and LL_Zero() macros with 0. r=ehsan 2012-10-25 19:25:59 -04:00
Trevor Saunders
ef05b16386 bug 542039 - accessible object types r=surkov, roc 2012-09-28 17:53:44 -04:00
Robert O'Callahan
fece33de51 Bug 786740. When destroying all the frames in a line list, keep the line list and frame list valid at each step in case someone tries to walk the frame tree during frame destruction. r=mats 2012-10-15 14:34:23 +13:00
Andrew Quartey
3c46b00d0f Bug 792581 - part 19: Replace LL_I2L macro with int64_t cast. r=ehsan 2012-10-12 13:29:11 -04:00
David Zbarsky
b22e7c6a8e [Bug 799407] Fix build warnings in layout r=roc 2012-10-10 01:00:05 -04:00
Andrew Quartey
c70ace2203 Bug 792581 - part 12: Replace LL_DIV with division operator. r=ehsan 2012-10-05 01:05:28 -04:00
Andrew Quartey
67710b7ed5 Bug 792581 - part 10: Replace LL_SUB macro with mathematical minus operator. r=ehsan 2012-10-05 01:05:27 -04:00
Kyle Huey
0ee82049a5 Bug 760331: Coalesce data for inline style across nodes. r=bz
This patch enables sharing of an nsAttrValue's MiscContainer between nodes for style rules.  MiscContainers of type eCSSStyleRule are now refcounted (with some clever struct packing to ensure that the amount of memory allocated for MiscContainer remains unchanged on 32 and 64 bit).  This infrastructure can be used to share most MiscContainer types in the future if we find advantages to sharing other types than just eCSSStyleRuley.  A cache mapping strings to MiscContainers has been added to nsHTMLCSSStyleSheet.  MiscContainers can be shared between nsAttrValues when one nsAttrValue is SetTo another nsAttrValue or when there is a cache hit in this cache.  This patch also adds the ability to tell a style rule that it belongs to an nsHTMLCSSStyleSheet, with appropriate accessor functions to separate that from the existing case of belonging to an nsCSSStyleSheet.

The primary use case is to reduce memory use for pages that have lots of inline style attributes with the same value.  This can happen easily with large pages that are automatically generated.  An (admittedly pathological) testcase in Bug 686975 sees over 250 MB of memory savings with this change.  Reusing the same MiscContainer for multiple nodes saves the overhead of maintaining separate copies of the string containing the serialized value of the style attribute and of creating separate style rules for each node.  Eliminating duplicate style rules enables further savings in layout through style context sharing.  The testcase sees the amount of memory used by style contexts go from over 250 MB to 10 KB.

Because the cache is based on the text value of the style attribute, it will not handle attributes that have different text values but are parsed into identical style rules.  We also do not attempt to share MiscContainers when the node's base URI differs from the document URI.  The effect of these limitations is expected to be low.
2012-09-30 09:40:24 -07:00
Isaac Aggrey
990e90e88a Bug 791906: Replace NSPR integer limit constants with stdint ones; r=ehsan 2012-09-28 01:57:33 -05:00