Commit Graph

564 Commits

Author SHA1 Message Date
J. Ryan Stinnett
be0216f27c Bug 1359603 - Set text combined bit on the context for Servo as well. r=heycam
We want to set style bits on `nsStyleContext` regardless of which engine is
providing the style source.  The moves the bit set up to `SetStyleBits` which
runs for both sources.

MozReview-Commit-ID: 8N6oUyxz1Xs
2017-04-27 13:01:28 -05:00
cku
5b4f0a3ba9 Bug 1343139 - Part 2. (Main) Add nsChangeHint_UpdateContainingBlock hint when HasMask state changed. r=heycam
Look into the test case on bugzilla attachment:
o1.animate([{"mask": "linear-gradient(red,blue)", "transform": "none"}], 100);

If I replace mask by a filter effect, we won't hit that assertion. Then I looked
into nsStyleStruct, compared nsStyleSVGReset::CalcDifference with
nsStyleEffects::CalcDifference, and noticed that we miss a hint in nsStyleSVGReset:
nsStyleEffects::CalcDifference(const nsStyleEffects& aNewData) const
{
  //....
  if (HasFilters() != aNewData.HasFilters()) {
    // A change from/to being a containing block for position:fixed.
    hint |= nsChangeHint_UpdateContainingBlock;
  }
}

MozReview-Commit-ID: KeViMShnMAK
2017-03-07 13:39:15 +08:00
Cameron McCormack
757b14f5d7 Bug 1302054 - Part 2: Remove no longer useful nsStyleContext::CalcDifference optimization that handles the same-rule-node case. r=dbaron
nsStyleContext::CalcDifference had an optimization where, when we knew
that the old and new style context have the same rule node, we knew that
the only change hints that would need to be handled are those in the
"not handled for descendants" category, generated due to explicit
'inherit' values on reset properties.  This was because any changes due
to differences in inherited properties should only have generated
"handled for descendants" change hints (and thus would already have been
handled on an ancestor).

Before bug 931668, this let us avoid calling CalcDifference on structs
that only would have generated hints that we knew we already would have
handled.  However, after bug 931668, we compare all structs anyway so
that we can set the aEqualStructs outparam, so we don't gain anything
from this optimization.  We can still return these change hints we know
will not need to be handled, and rely on ElementRestyler::CaptureChange
to filter them out.

MozReview-Commit-ID: Ld1s2Js0i6r
2017-03-21 16:33:05 +08:00
Cameron McCormack
61828f2975 Bug 1302054 - Part 1: Avoid computing style differences when we just want to ensure structs are cached on the new context. r=dbaron
MozReview-Commit-ID: DLhHcCD4GQS
2017-03-21 16:33:05 +08:00
Boris Zbarsky
b26328d6e6 Bug 1345362 part 3. Introduce CSSPseudoElementType::NonInheritingAnonBox to represent non-inheriting anon boxes. r=heycam
The idea is to be able to call the right function during style resolution time
without doing a linear walk via nsCSSAnonBoxes::IsNonInheritingAnonBox.

MozReview-Commit-ID: JKt33GggTjz
2017-03-08 23:41:04 -05:00
Boris Zbarsky
f6afedf162 Bug 1343078 part 2. Restrict the "is a root" blockification behavior in nsStyleContext to non-pseudos and a limited set of anonymous boxes that want the behavior. r=dbaron
MozReview-Commit-ID: IdUKYbM1i8F
2017-03-08 00:18:39 -05:00
Xidorn Quan
dac6cc5e35 Bug 1345074 - Add MOZ_FOR_EACH_SEPARATED which adds separator between items. r=Waldo
MozReview-Commit-ID: IWqs17MLhHD
2017-03-07 22:28:49 +11:00
Bobby Holley
159e8e4461 Bug 1343388 - Assert against the servo traversal when analyzing visited-link style contexts. r=emilio
MozReview-Commit-ID: 1SJlS4PwBoy
2017-02-28 18:07:49 -08:00
Emilio Cobos Álvarez
a2cee39cab Bug 1322317: Fix CalcStyleDifference assumptions and PeekStyleContext semantics. r=heycam
For the reasoning for this change, please see the related bugs and:

http://logs.glob.uno/?c=mozilla%23layout&s=22+Feb+2017&e=22+Feb+2017#c27236

Mainly, before this change, there was nothing forcing style structs computed in
a style context to remain computed for the new style context after a call to
CalcStyleDifference. This can make us skip change hints when a style change
doesn't force to recompute one of these structs.

MozReview-Commit-ID: FoWbLjt97Uu
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-02-21 16:56:43 +01:00
Bobby Holley
04d7f3cd0e Bug 1340339 - Generalize the mechanism for accessing servo style structs without side effects and use it in CalcStyleDifferenceInternal. r=heycam
MozReview-Commit-ID: 54cL2ePc0OF
2017-02-16 21:57:48 -08:00
Daniel Holbert
d74b889d67 Bug 1339546 part 2: Make layout/style/*.cpp include corresponding .h file as the first header. r=xidorn
MozReview-Commit-ID: 2rZ9z0BgRvN
2017-02-14 11:23:11 -08:00
Emilio Cobos Álvarez
149696300c Bug 1335987: stylo: Don't use the change hint to decide whether to recreate style contexts. r=bholley
MozReview-Commit-ID: 11Yyq8UE3LP
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-02-03 22:03:34 +01:00
Emilio Cobos Álvarez
136ce44587 Bug 1330874: Preserve neutral style changes for stylo. r=heycam
Since we use the presence of a change hint to determine whether we should
recreate a style context, we can't just strip them out on CalcStyleDifference.

MozReview-Commit-ID: GLhbTc2W3d7
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-01-15 16:10:01 +01:00
Xidorn Quan
db94c3e82c Bug 1303241 part 2 - Make GetVisitedDependentColor use style structs directly. r=dbaron
I think there are three advantages of this change:
1. removes some dependencies from layout / painting code to pre-computed
   value stuff in the style system;
2. makes it easier to audit usage of specific fields in style structs
   (which is probably a side effect of the first one);
3. potentially improves performance since it doesn't go through the
   unnecessary general logic in ExtractComputedValue.

Also, combined with the part before, we get a unified list for visited-
dependent properties so that we can ensure the assertion here and the
style difference calc code are consistent.

MozReview-Commit-ID: 5B9aN7CfRgI
2016-12-31 00:57:37 +11:00
Xidorn Quan
26f85fd399 Bug 1303241 part 1 - Move visited-dependent style fields into a list file. r=dbaron
MozReview-Commit-ID: K4kc8ByNGoT
2017-01-05 11:22:36 +11:00
Andrew McCreight
209d4ee048 Bug 1323042 - forbid MOZ_COUNT_{CTOR,DTOR} for nsISupports classes; r=froydnj 2016-12-12 09:27:58 -05:00
Nathan Froyd
f2d50c26f4 Backout aba6c73511a2 (bug 1307961) for massive test bustage resulting in a CLOSED TREE; r=alltheorange 2016-12-12 08:45:46 -05:00
Andrew McCreight
2f93d6e48d Bug 1307961 - require consistent bloatview reporting for nsISupports classes; r=froydnj 2016-12-12 07:58:33 -05:00
Daniel Holbert
e73b560488 Bug 1321495 part 3: Add needed #includes to various .cpp files in layout/style, to preemptively fix unified-build bustage. r=TYLin
MozReview-Commit-ID: GEjKZqc06FO
2016-12-01 10:40:04 -08:00
Bobby Holley
3775205e64 Bug 1317016 - Basic infrastructure for RestyleHint-driven traversal. r=emilio
MozReview-Commit-ID: 7wH5XcILVmX
2016-11-25 10:06:39 -08:00
Cameron McCormack
c4eac967b3 Bug 1288302 - Part 4: Perform final main thread work on style structs sourced from ServoComputedValues. r=xidorn
MozReview-Commit-ID: D6nQQ3yI4sx
2016-11-02 16:58:32 +08:00
Cameron McCormack
5d59a3458e Merge backout. 2016-11-01 08:43:23 +08:00
Cameron McCormack
1fc3436c96 Back out a0488e9c0024..5ebcedea1fa5 (bug 1288302 and bug 1310463) for Talos RSS regressions.
MozReview-Commit-ID: JB5uwDeO0We
2016-11-01 08:42:49 +08:00
Cameron McCormack
a91abf741d Bug 1288302 - Part 4: Perform final main thread work on style structs sourced from ServoComputedValues. r=xidorn
MozReview-Commit-ID: D6nQQ3yI4sx
2016-10-20 08:36:23 +08:00
Xidorn Quan
b8a48e579e Bug 1309868 part 3 - Make NonOwningStyleContextSource store const ServoComputedValues. r=heycam
MozReview-Commit-ID: G84fYXLbQyt
2016-10-18 15:29:03 +11:00
Xidorn Quan
67bf03b873 Bug 1311598 part 2 - Declare Servo_GetStyle* functions in nsStyleContext.h. r=heycam
MozReview-Commit-ID: 5i3rX4ateH3
2016-10-24 20:16:46 +11:00
Xidorn Quan
1cfc0298d4 Bug 1266621 part 5 - Convert border-color to store complex color. r=heycam
MozReview-Commit-ID: 19sl9f3EVgt
2016-09-27 20:16:35 +10:00
Xidorn Quan
793cd1a575 Bug 1266621 part 3 - Convert outline-color to store complex color. r=heycam
MozReview-Commit-ID: 70tre2pYqi3
2016-09-27 20:44:19 +10:00
Xidorn Quan
af621198c0 Bug 1266621 part 2 - Convert column-rule-color to store complex color. r=heycam
MozReview-Commit-ID: AB2b5CPABOZ
2016-09-27 20:12:08 +10:00
Xidorn Quan
0e32e46079 Bug 1266621 part 1 - Convert text-decoration-color to store complex color. r=heycam
MozReview-Commit-ID: LEGICgvgQDY
2016-09-27 20:19:48 +10:00
Carsten "Tomcat" Book
ff5b25e2c0 merge mozilla-inbound to mozilla-central a=merge 2016-09-21 12:03:31 +02:00
Andrea Marchesini
694032d66a Bug 1301249 - nsIDocument::GetDocumentURI() should be fallible, r=smaug 2016-09-20 14:03:05 +02:00
Xidorn Quan
dcfa696ded Bug 1299741 part 11 - Change text-{emphasis,fill,stroke}-color to using StyleComplexColor. r=dbaron
MozReview-Commit-ID: 1MlgGAkdPn8
2016-09-16 14:40:45 +10:00
Xidorn Quan
26ac6d8c33 Bug 1299741 part 10 - Make nsStyleContext.cpp:ExtractColor return a Maybe so that ExtractColorLenient can reuse that. r=birtles
MozReview-Commit-ID: HtqoWoJW8i6
2016-08-31 17:37:34 +10:00
Hiroyuki Ikezoe
e63da2b1c6 Bug 1216843 - Part 3: Use nsCSSValue instead of nscolor to store over 1.0 color components as an accumulated value so that we can correctly calculate intermediate values in interpolation. r=dholbert
MozReview-Commit-ID: GYdqYZA4xXf
2016-09-13 11:48:44 +09:00
Manish Goregaokar
49b3b83008 Bug 1300337 - Replace None_ variants from nsStyleConsts.h with None; r=heycam,TYLin
MozReview-Commit-ID: CxHzbEzjLxT
2016-09-04 00:16:58 +05:30
Emilio Cobos Álvarez
2efcfaad38 Bug 1299066: Make NS_STYLE_DISPLAY_* an enum class. Prefer indexing instead of linear search in the frame constructor r=heycam,bz
The main renaming was generated with the following python script:

```

import sys
import re

CAMEL_CASE_REGEX = re.compile(r"(^|_|-)([A-Z])([A-Z]+)")
DISPLAY_REGEX = re.compile(r"\bNS_STYLE_DISPLAY_([^M][A-Z_]+)\b")

def to_camel_case(ident):
  return re.sub(CAMEL_CASE_REGEX,
                lambda m: m.group(2) + m.group(3).lower(), ident)

def constant_to_enum(constant):
  return "StyleDisplay::" + to_camel_case(constant) + ("_" if constant == "NONE" else "")

def process_line(line):
  return re.sub(DISPLAY_REGEX,
                lambda m: constant_to_enum(m.group(1)), line)

lines = []
with open(sys.argv[1], "r") as f:
  for line in f:
    lines.append(process_line(line))

with open(sys.argv[1], "w") as f:
  for line in lines:
    f.write(line)
```

And the following shell commands:

```
find . -name '*.cpp' -exec python display.py {} \;
find . -name '*.h' -exec python display.py {} \;
```

MozReview-Commit-ID: 91xYCbLC2Vf
2016-09-01 20:41:17 -07:00
Neerja Pancholi
6ae194574b Bug 1295271 - Remove all _moz_ prefixes from all instances of _moz_column r=dbaron
Command used:
find -E ./* -iregex '.*(\.cpp|\.h)' | xargs egrep -l '.*_moz_column.*' | xargs sed -i '' 's/_moz_column/column/g'


MozReview-Commit-ID: CJbSfDfhmle
2016-08-30 17:21:03 -07:00
L. David Baron
3cc8a0cc39 Bug 1251075 - Optimize away nsChangeHint_UpdateContainingBlock in nsStyleContext::CalcStyleDifference when possible. r=bz
MozReview-Commit-ID: 4Owobm1vZLn
2016-08-29 11:43:29 -07:00
Bobby Holley
9b4e3f5d9a Bug 1297572 - Prevent HasPseudoElementData from erroneously tracking anonymous boxes. r=heycam
The layout inspector ends up traversing into the root scroll frame in the next patch. If we don't
fix this, we erroneously enter this code here:

http://searchfox.org/mozilla-central/rev/44f6964ba95b8ddd8ebf70c55b34cd2323afeef4/layout/style/nsComputedDOMStyle.cpp#682

in this test:

devtools/client/inspector/markup/test/browser_markup_anonymous_04.js
2016-08-25 21:34:21 -07:00
Jeremy Chen
201ce63ade Bug 1296561 - calculate initial-letter's size according to specification. r=jfkthame
MozReview-Commit-ID: AtuY2UHCGaR
2016-08-23 09:40:14 +08:00
Nathan Froyd
404078d785 Bug 1295192 - part 1 - remove CPP_THROW_NEW on layout struct operator new overloads that forward to nsPresShell::AllocateByObjectID; r=dholbert
Structs in our style system use an arena-style allocation system,
managed by the presshell to which they belong.  All of the relevant
overloads that forward allocation requests to the presshell declare
themselves as CPP_THROW_NEW, which indicates that they do not throw
exceptions.  The C++ specification states that operator new overloads
that declare themselves to not throw exceptions require a null check on
their return value.  However, the relevant presshell allocation method,
AllocateByObjectID, is infallible and will never return a null pointer.

The callers of all of these methods are therefore doing useless
(compiler-generated) null checks.  Let's get rid of those useless checks
by removing the CPP_THROW_NEW annotations.  This change declares these
methods will return non-null pointers and throw exceptions in case of
errors--but as we don't use exceptions, and AllocateByObjectID will
abort on OOM, everything works out OK.
2016-08-17 15:28:45 -04:00
Jonathan Chan
e201b93c16 Bug 1293739 - Part 1: Rename nsCSSProperty to nsCSSPropertyID. r=dholbert
This patch is generated by the following commands (note: if you're running
using OS X's sed, which accepts slightly different flags, you'll have to
specify an actual backup suffix in -i, or use gsed from Homebrew):

  hg stat -c \
  | cut -c 3-  \
  | tr '\n' '\0' \
  | xargs -0 -P 8 gsed --follow-symlinks 's/\bnsCSSProperty\b/nsCSSPropertyID/g' -i''

Then:

  hg mv layout/style/nsCSSProperty.h layout/style/nsCSSPropertyID.h

... and finally, manually renaming nsCSSProperty in the include guard in
nsCSSProperty.h.

MozReview-Commit-ID: ZV6jyvmLfA
2016-08-16 18:37:48 -07:00
Gregory Szorc
3bcd02ebea Backed out changesets dcdb85fc5517, 702bca0deee2, 9cKX8gC1ATA (bug 1293739) for build bustage; a=bustage
The merge from inbound to central conflicted with the merge from
autoland to central, it appears. Per tree rules, the commit from the
autoland repo wins and the inbound commit gets backed out.

CLOSED TREE
2016-08-16 17:50:40 -07:00
Wes Kocher
bb9e0744e6 Merge inbound to central, a=merge
a=release to get around the webidl hook for a comment-only change
2016-08-16 17:05:30 -07:00
Wes Kocher
63041461e3 Backed out 4 changesets (bug 1295192) for being a possible cause of crashtest assertions CLOSED TREE
Backed out changeset 7f10779fe019 (bug 1295192)
Backed out changeset e683dce4197a (bug 1295192)
Backed out changeset 67d12eaa8074 (bug 1295192)
Backed out changeset 44f143a01f78 (bug 1295192)
2016-08-16 11:22:04 -07:00
Xidorn Quan
fae04c117a Bug 1295111 part 2 - Add static_assert to ensure that is updated properly. r=dbaron
MozReview-Commit-ID: G2RNUcXs4yQ
2016-08-15 20:52:05 +10:00
Nathan Froyd
dabc06ebd0 Bug 1295192 - part 1 - remove CPP_THROW_NEW on layout struct operator new overloads that forward to nsPresShell::AllocateByObjectID; r=dholbert
Structs in our style system use an arena-style allocation system,
managed by the presshell to which they belong.  All of the relevant
overloads that forward allocation requests to the presshell declare
themselves as CPP_THROW_NEW, which indicates that they do not throw
exceptions.  The C++ specification states that operator new overloads
that declare themselves to not throw exceptions require a null check on
their return value.  However, the relevant presshell allocation method,
AllocateByObjectID, is infallible and will never return a null pointer.

The callers of all of these methods are therefore doing useless
(compiler-generated) null checks.  Let's get rid of those useless checks
by removing the CPP_THROW_NEW annotations.  This change declares these
methods will return non-null pointers and throw exceptions in case of
errors--but as we don't use exceptions, and AllocateByObjectID will
abort on OOM, everything works out OK.
2016-08-16 17:05:39 -04:00
Julian Seward
801a89d336 Bug 1289098 - Fixes to avoid Valgrind false positives with gcc-5.4 -O2 builds. r=dbaron. 2016-08-16 11:05:08 +02:00
Jonathan Chan
23ccd0531f Bug 1293739 - Part 1: Rename nsCSSProperty to nsCSSPropertyID. r=dholbert
This patch is generated by the following commands (note: if you're running
using OS X's sed, which accepts slightly different flags, you'll have to
specify an actual backup suffix in -i, or use gsed from Homebrew):

  hg stat -c \
  | cut -c 3-  \
  | tr '\n' '\0' \
  | xargs -0 -P 8 gsed --follow-symlinks 's/\bnsCSSProperty\b/nsCSSPropertyID/g' -i''

Then:

  hg mv layout/style/nsCSSProperty.h layout/style/nsCSSPropertyID.h

... and finally, manually renaming nsCSSProperty in the include guard in
nsCSSProperty.h.

MozReview-Commit-ID: ZV6jyvmLfA
2016-08-09 16:28:19 -07:00