Commit Graph

452 Commits

Author SHA1 Message Date
Cameron McCormack
88db878b39 Bug 931668 - Part 18: Add a function to swap style structs between style contexts. r=dbaron 2014-09-05 13:48:46 +10:00
Cameron McCormack
8ee45efe25 Bug 931668 - Part 14: Add functions to move style contexts to a new parent. r=dbaron 2014-09-05 13:48:45 +10:00
Cameron McCormack
c189f0c941 Bug 931668 - Part 13 (no part 12): Add expensive (commented out) debug checks that destroyed style structs aren't still used in the style context tree. r=dbaron 2014-09-05 13:48:45 +10:00
Cameron McCormack
5f380619fa Bug 931668 - Part 9 (no part 8): Make nsStyleContext::CalcStyleDifference compare all structs and return a bitfield of which changed. r=dbaron 2014-09-05 13:48:44 +10:00
Cameron McCormack
d29d41f15f Bug 931668 - Part 7: Add helper functions looking at cached struct pointer values on style contexts. r=dbaron
Two functions are added:

  * HasSameCachedStyleData, which compares a style struct pointer in two
    style contexts, and
  * HasCachedInheritedStyleData, which checks to see if the bit in mBits
    is set.
2014-09-05 13:48:44 +10:00
Cameron McCormack
e5fd7dc76e Bug 931668 - Part 6: Add helper function to check if a style context has any children with the NS_STYLE_USES_GRANDANCESTOR_STYLE bit. r=dbaron 2014-09-05 13:48:44 +10:00
Cameron McCormack
b60370358c Bug 931668 - Part 5 (no part 4): Record whether a style context is shared. r=dbaron 2014-09-05 13:48:44 +10:00
Cameron McCormack
125a2add86 Bug 931668 - Part 1: Add a change hint that represents a style data change that requires no processing. r=dbaron 2014-09-05 13:48:43 +10:00
Susanna Bowen
3df1d81881 Bug 1021952 - Ensure that direct children of ruby elements are inline. r=bz 2014-07-22 19:08:13 -07:00
Brian Birtles
d2db522bc3 Bug 1010067 part 2 - Rename nsStyleAnimation.{h,cpp} to StyleAnimationValue.{h,cpp}; r=dbaron 2014-06-24 15:29:54 +09:00
Brian Birtles
8fe87f4a81 Bug 1010067 part 1 - Rename nsStyleAnimation::Value to mozilla::StyleAnimationValue; r=dbaron
This patch also moves the static methods defined on nsStyleAnimation so that
they are part of StyleAnimationValue class.

Renaming nsStyleAnimation.h to StyleAnimationValue.h is performed in a separate
patch to simplify the diff (since some tools may not handle file renames
elegantly).
2014-06-24 15:29:54 +09:00
Cameron McCormack
133e4c5834 Bug 1026345 - Remove the now unused nsStyleContext allocation functions. r=dbaron 2014-06-19 13:19:11 +10:00
Susanna Bowen
1c51e9400a Bug 1025308 - Rename the variables associated with skipping style fixups for children element's based on parent display value. r=mats 2014-06-16 09:55:00 -04:00
Victor Porof
298ca2ed1b Bug 1007203 - Always add categories when pushing to the pseudostack, r=djvj 2014-05-23 17:12:29 -04:00
Mats Palmgren
281aa20a08 Bug 1000376 - part 3, s/FlexItemStyleFixup/FlexOrGridItemStyleFixup/ and corresponding comment changes. r=dholbert 2014-05-03 13:42:33 +00:00
Simon Sapin
5a5e262d51 Bug 975501 part 2: Add display:{inline-,}grid behind a pref, and a stub nsGridContainerFrame. r=dholbert 2014-02-26 23:45:29 -08:00
Daniel Holbert
39b0077abb Bug 969460 part 2: Use EnsureBlockDisplay to determine the 'display' of the root node, and let nsCSSFrameConstructor::ConstructDocElementFrame create flex containers. r=bz 2014-02-15 10:42:37 -08:00
Cameron McCormack
51bd9b75f5 Bug 897763 - Take into account nsChangeHint_{NeedReflow,ClearAncestorIntrinsics} never being inherited for difference calculations on certain style structs. r=dbaron 2014-01-03 13:39:54 +11:00
Cameron McCormack
8649532794 Bug 773296 - Part 19: Compare style structs even for the same rule node when variables have changed. r=dbaron
This makes updates work correctly when variable values change.
Rather than handling nsStyleVariables with a DO_STRUCT_DIFFERENCE,
we explicitly compare the two nsStyleVariables objects in
nsStyleContext::CalcStyleDifference before looking at the other
style structs.  This is because we need to force those other
style structs to be compared if variable values are changing.
nsStyleVariables::CalcDifference still returns 0, since the change in
variable values themselves doesn't require any updates.
2013-12-12 13:09:45 +11:00
Cameron McCormack
8523edfdf5 Bug 773296 - Part 4: Add style struct to store CSS variables. r=dbaron
This adds an nsStyleVariables on which computed variable values
will be stored.  We don't actually have any properties assigned to
nsStyleVariables; eCSSPropertyExtra_Variables which we added earlier
isn't a real property.  To avoid compiler errors for gVariableFlags
being a zero length array, we stick a dummy entry in there.

nsRuleNode::ComputeVariablesData does nothing for the moment.

nsStyleVariable nsChangeHint calculations always return 0, as later
we will compare the actual properties that reference variables to
see what changes are required for them.
2013-12-12 13:09:40 +11:00
Cameron McCormack
7667edd554 Bug 773296 - Part 3: Allow more than 27 style structs. r=dbaron
This bumps up nsStyleContext::mBits to a uint64_t so that it can fit
another style struct.  If we're going to need to keep at least 27 style
structs, it might be better to split mBits up into two uint32_ts: one
for the flags and one for the style struct bits.
2013-12-12 13:09:40 +11:00
Cameron McCormack
ab7786ee6a Comment typo fix; no bug. (DONTBUILD) 2013-11-07 15:33:26 +11:00
Ehsan Akhgari
1ab9c7bcb4 Bug 895322 - Part 1: Replace the usages of MOZ_STATIC_ASSERT with C++11 static_assert; r=Waldo
This patch was mostly generated by running the following scripts on the codebase, with some
manual changes made afterwards:

# static_assert.sh
#!/bin/bash
# Command to convert an NSPR integer type to the equivalent standard integer type

function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
       ! -wholename "*security/nss*" \
       ! -wholename "*/.hg*" \
       ! -wholename "obj-ff-dbg*" \
       ! -name nsXPCOMCID.h \
       ! -name prtypes.h \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.cc" \
         -o -iname "*.mm" \) | \
    xargs -n 1 `dirname $0`/assert_replacer.py #sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_STATIC_ASSERT static_assert
hg rev --no-backup mfbt/Assertions.h \
                   media/webrtc/signaling/src/sipcc/core/includes/ccapi.h \
                   modules/libmar/src/mar_private.h \
                   modules/libmar/src/mar.h


# assert_replacer.py
#!/usr/bin/python

import sys
import re

pattern = re.compile(r"\bMOZ_STATIC_ASSERT\b")

def replaceInPlace(fname):
  print fname
  f = open(fname, "rw+")
  lines = f.readlines()
  for i in range(0, len(lines)):
    while True:
      index = re.search(pattern, lines[i])
      if index != None:
        index = index.start()
        lines[i] = lines[i][0:index] + "static_assert" + lines[i][index+len("MOZ_STATIC_ASSERT"):]
        for j in range(i + 1, len(lines)):
          if lines[j].find("                 ", index) == index:
            lines[j] = lines[j][0:index] + lines[j][index+4:]
          else:
            break
      else:
        break
  f.seek(0, 0)
  f.truncate()
  f.write("".join(lines))
  f.close()

argc = len(sys.argv)
for i in range(1, argc):
  replaceInPlace(sys.argv[i])
2013-07-18 13:59:53 -04:00
Cameron McCormack
547df58f1f Bug 876127 - Assert if we do not look at all style structs in nsStyleContext::CalcStyleDifference. r=dbaron 2013-05-27 16:48:19 +10:00
Daniel Holbert
a80d1a2bbd Bug 864553 part 1: Remove ifdefs for MOZ_FLEXBOX and configure.in MOZ_FLEXBOX chunk. r=dbaron 2013-05-22 11:44:25 +08:00
Jeff Muizelaar
3dfda05c88 Bug 868557. Explicitly unalias list in nsStyleContext::AddChild() r=dbaron
Clang and GCC probably MSVC are not able to unalias list because they don't
realize that mEmptyChild and mChild can't alias mNextSibling and mPrevSibling.
If we explicitly dereference list we get better code, saving 3 instructions
with clang.
2013-05-06 11:05:44 -04:00
Aryeh Gregor
6714817176 Bug 859817 - Remove implicit conversions from raw pointer to already_AddRefed; r=Ms2ger 2013-04-22 14:15:59 +03:00
Benoit Girard
f4b3710284 Bug 851611 - Part 3: Rename headers. r=jrmuizel 2013-03-18 15:25:50 +01:00
Benoit Girard
4146042cfd Bug 851611 - Part 2: Update profiler calls. r=jrmuizel 2013-03-16 00:47:02 -04:00
Ed Morley
90c9bf415e Backed out changeset c75481a07302 (bug 851611) 2013-03-18 14:10:35 +00:00
Ed Morley
627fcd7895 Backed out changeset d195190adc48 (bug 851611) 2013-03-18 14:10:30 +00:00
Benoit Girard
0b880319f3 Bug 851611 - Part 3: Rename headers. r=jrmuizel 2013-03-18 14:41:02 +01:00
Benoit Girard
6d0dfa5b89 Bug 851611 - Part 2: Update profiler calls. r=jrmuizel 2013-03-16 00:47:02 -04:00
David Zbarsky
1c27c4d045 [Bug 847110] Fix up includes in layout/style r=dbaron 2013-03-02 19:31:48 -05:00
Daniel Holbert
48da2bbf1f Bug 812822 part 1: Add flag 'eSkipFlexItemStyleFixup' to let our nsStyleContext creation functions skip the flex-item-specific chunk of ApplyStyleFixups(). r=bz 2013-02-20 23:34:58 -08:00
L. David Baron
ce4e1b1b22 Bug 781360 patch 4: Remove the Get from nsStyleContext::GetStyleData and nsIFrame::GetStyleDataExternal, which never return null. r=dholbert 2013-02-16 13:51:03 -08: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
L. David Baron
aac304acbb Bug 781360 patch 2: Rename nsRuleNode::GetPresContext to PresContext, since it can never return null. r=dholbert 2013-02-16 13:04:54 -08:00
L. David Baron
a23c632b48 Bug 781360 patch 1: Rename nsStyleContext::GetRuleNode to RuleNode, 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".

nsStyleContext's rule node is never null because we require a rule node
in order to construct a style context.
2013-02-16 13:04:53 -08: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
L. David Baron
9c06e44b1f Bug 809533, patch 3: Stop handling allocation failures in the style system that no longer need to be handled. r=bzbarsky 2012-11-09 10:30:28 -08:00
L. David Baron
5cf955e8bd Bug 572200, part 1: Make rule nodes know whether they're used directly by a style context. r=bzbarsky 2012-11-07 11:55:53 -08:00
Daniel Holbert
988508f1b2 Bug 783415 part 1: Make "display" value of flex items compute to their blockified forms. r=dbaron 2012-11-07 11:28:59 -08:00
Isaac Aggrey
990e90e88a Bug 791906: Replace NSPR integer limit constants with stdint ones; r=ehsan 2012-09-28 01:57:33 -05:00
L. David Baron
1c76cae9f7 Remove aPresContext parameter to nsStyleContext constructor and document parameters to constructor. (Bug 791416) r=bzbarsky 2012-09-18 11:37:13 -07:00
L. David Baron
96f9601525 Add more profile labels for the separate parts of restyle processing. (Bug 790379) rs=cjones 2012-09-14 14:12:34 -07:00
L. David Baron
030c2309b1 Remove ForceCompare methods from style structs. (Bug 779968, patch 7) r=bzbarsky 2012-09-07 10:13:36 -07:00
L. David Baron
00e70298e5 Make nsStyleContext::CalcStyleDifference force comparison based on the parent's hint instead of the style struct ForceCompare methods. (Bug 779968, patch 6, the main patch) r=bzbarsky
This propagates the non-inherited (in the nsChangeHint sense, not the
CSS inheritance sense) parts of the parent's change hint through
ReResolveStyleContext so that we can use them in
nsStyleContext::CalcDifference.  In the cases where we don't know the
parent's hint, we assume the worst, that all the non-inherited hints
were present in the parent's style change.

This should be a significant performance improvement handling simple
style changes (such as a style attribute change setting a non-inherited
property) on elements with large numbers of descendants that have data
in ForceCompare structs that can't be stored in the rule tree (for
example, margins or widths in em or rem units).
2012-09-07 10:13:36 -07:00
L. David Baron
26e8080ebd Abstract nsChangeHint_NonInherited_Hints into a function so that it accurately reports the reflow cases to all callers. (Bug 779968, patch 4) r=bzbarsky
This is in preparation for adding an additional caller.

nsChangeHint_NonInherited_Hints will be reintroduced in patch 6, but as
the maximum set of such hints rather than the minimal set, and with the
less confusing name nsChangeHint_Hints_NotHandledForDescendants.
2012-09-07 10:13:36 -07:00
L. David Baron
e474cab6f2 Remove maxHint from nsStyleContext::CalcStyleDifference. (Bug 779968, patch 3) r=bzbarsky 2012-09-07 10:13:36 -07:00