Commit Graph

1124 Commits

Author SHA1 Message Date
Emilio Cobos Álvarez
ba2bc15c9c Bug 1496008 - Serialize a bunch of image properties with Servo. r=heycam
I had to fix the conversion for BackgroundSize too, hopefully we can
simplify all this using cbindgen in the future instead of CalcValue.

Differential Revision: https://phabricator.services.mozilla.com/D7580
2018-10-05 20:08:55 +00:00
Brad Werth
de954a2152 Bug 1481192 Part 1: Change computed style to use correct pseudo element selection. r=emilio
In order to handle nsTableWrapperFrames correctly, this code is changed
to use the code in nsLayoutUtils::GetBeforePseudo and ::GetAfterPseudo,
and then finding the styling frames from those elements.

Differential Revision: https://phabricator.services.mozilla.com/D6730
2018-09-28 20:20:28 +00:00
Noemi Erli
bfa6534edb Backed out 2 changesets (bug 1481192) for build bustages in workspace/build/src/layout/style/nsComputedDOMStyle CLOSED TREE
Backed out changeset 7697665841ca (bug 1481192)
Backed out changeset 2f0c8d5a75d6 (bug 1481192)
2018-09-28 22:33:47 +03:00
Brad Werth
e619073b12 Bug 1481192 Part 1: Change computed style to use correct pseudo element selection. r=emilio
In order to handle nsTableWrapperFrames correctly, this code is changed
to use the code in nsLayoutUtils::GetBeforePseudo and ::GetAfterPseudo,
and then finding the styling frames from those elements.

Differential Revision: https://phabricator.services.mozilla.com/D6730
2018-09-28 19:12:17 +00:00
Emilio Cobos Álvarez
7f4643372c Bug 1494622 - Simplify CSSValue and co a bit more. r=xidorn
Just remove the useless stuff.

Differential Revision: https://phabricator.services.mozilla.com/D7071
2018-09-27 16:11:45 +02:00
Emilio Cobos Álvarez
400f5d131c Bug 1494622 - Remove nsDOMCSSRect. r=xidorn
Differential Revision: https://phabricator.services.mozilla.com/D7070
2018-09-27 16:11:44 +02:00
Emilio Cobos Álvarez
09b1105f40 Bug 1494622 - Serialize -moz-image-region and clip with Servo. r=xidorn
This changes the serialization of -moz-image-region to be consistent with that
of clip(), but it's an internal property and the specified value is already
serialized by servo so I think it's the right thing to do.

There are also no internal callers of the getter.

Differential Revision: https://phabricator.services.mozilla.com/D7069
2018-09-27 16:11:43 +02:00
Emilio Cobos Álvarez
e63840174f Bug 1494622 - Remove nsDOMCSSRGBColor. r=xidorn
Differential Revision: https://phabricator.services.mozilla.com/D7068
2018-09-27 16:11:42 +02:00
Emilio Cobos Álvarez
b85071edf5 Bug 1492567 - Back out bug 1481866. r=dbaron
Summary:
The behavior the WG proposed is way more subtle than what that bug implements,
including:

 * Implementing two logical overflow longhands.
 * Expanding the overflow shorthand to different longhands depending on the
   syntax of that.

Meanwhile, Blink hasn't done the swap and will ship the same behavior that we
shipped in Firefox 61 (bug 1453148), that is, overflow-x, then overflow-y.

So I think lacking a clear way forward we should revert this change and preserve
our shipped behavior.

Reviewers: dbaron!

Tags: #secure-revision

Bug #: 1492567

Differential Revision: https://phabricator.services.mozilla.com/D6317
2018-09-20 01:27:55 +02:00
Xidorn Quan
73fdf6c586 Bug 1483075 - Merge the two scrollbar color properties into scrollbar-color. r=heycam,hiro
Differential Revision: https://phabricator.services.mozilla.com/D6115
2018-09-19 05:33:12 +00:00
Mats Palmgren
fd2fb8ea94 Bug 1478485 - Use the stored CB on abs.pos. grid items when calculating used offset values. r=dholbert 2018-09-11 00:57:53 +02:00
Emilio Cobos Álvarez
fde9ff1ddc Bug 1484316: Serialize clip-path and shape-outside using Servo. r=xidorn
Differential Revision: https://phabricator.services.mozilla.com/D3653
2018-08-22 11:20:41 +02:00
Boris Chiou
aeb006d62c Bug 1429298 - Part 2: Define offset-path and implement it in style system. r=emilio
Define OffsetPath & SVGPathData on the servo-side, and StyleMotion &
StyleSVGPath on the gecko-side. We parse the SVG Path string into a
vector of PathCommand. To build the gfx::Path, we will convert it into
gfx::Path later in a different patch.

The basic flow is:
* Parse SVG Path String into SVGPathData (in Rust).
* Use cbindgen to make sure the layout of PathCommand and StylePathCommand,
  and then set the Box[PathCommand] into nsTArray<StylePathCommand>.
* Try to convert nsTArray<StylePathCommand> into gfx::Path. (This part
  will be implemented in a different patch.)

Finally, we use the gfx::Path to create a motion path transform.
The layout implementation is in the later patch.

Differential Revision: https://phabricator.services.mozilla.com/D2963
2018-08-21 22:41:38 -07:00
Cameron McCormack
eb1c77b263 Bug 1482782 - Part 4: Move CSS pseudo-element atoms to nsGkAtoms. r=njn,emilio
Summary: Depends On D3282

Reviewers: njn!, emilio!

Tags: #secure-revision

Bug #: 1482782

Differential Revision: https://phabricator.services.mozilla.com/D3283
2018-08-15 15:46:00 +10:00
Narcis Beleuzu
ace8b010f2 Backed out 8 changesets (bug 1483121, bug 1482782) for build bustages on nsDirectoryService.cpp. CLOSED TREE
Backed out changeset 0a8334bbcf45 (bug 1483121)
Backed out changeset cb2dcb859071 (bug 1482782)
Backed out changeset c834d4ca2eef (bug 1482782)
Backed out changeset 887de0efbb67 (bug 1482782)
Backed out changeset 018fdb50a6be (bug 1482782)
Backed out changeset 33a8aa8096c9 (bug 1482782)
Backed out changeset e3632354f16e (bug 1482782)
Backed out changeset 46f8319bee82 (bug 1482782)
2018-08-15 09:14:41 +03:00
Cameron McCormack
a3c0cd4850 Bug 1482782 - Part 4: Move CSS pseudo-element atoms to nsGkAtoms. r=njn,emilio
Summary: Depends On D3282

Reviewers: njn!, emilio!

Tags: #secure-revision

Bug #: 1482782

Differential Revision: https://phabricator.services.mozilla.com/D3283
2018-08-15 15:46:00 +10:00
Xidorn Quan
1e77bd0b24 Bug 1483090 - Rename StyleUserInterface to StyleUI. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D3276
2018-08-14 08:37:37 +00:00
L. David Baron
cb835eba9b Bug 1481866: Swap order of values in 'overflow' shorthand property. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D3069
2018-08-10 02:20:53 +00:00
Daniel Holbert
0144ce95fb Bug 1480222 part 3: Add includes to fix unified bustage in ArenaRefPtrInlines.h and nsComputedDOMStyle.cpp. r=TYLin
* ArenaRefPtrInlines.h calls nsPresArena::RegisterArenaRefPtr()
  and hence needs nsPresArena.h.
* nsComputedDOMStyle.cpp calls nsCSSProps::PropHasFlags()
  and hence needs nsCSSProps.h.

Differential Revision: https://phabricator.services.mozilla.com/D2631
2018-08-01 15:09:54 -07:00
Emilio Cobos Álvarez
765b78561b Bug 1479450: Implement nsCSSProps::LookupProperty using Rust. r=xidorn
Always assume allowed-for-all-content. There are a couple callers which weren't
doing that:

 * A unit test -> removed.

 * ComputeAnimationDistance: Used for testing (in transitions_per_property), and
   for the animation inspector. The animation inspector shouldn't show
   non-enabled properties. The transitions_per_property test already relies on
   getComputedStyle stuff which only uses eForAllContent.

 * GetCSSImageURLs: I added this API for the context menu page and such. It
   doesn't rely on non-enabled-everywhere properties, it was only using
   eInChrome because it was a ChromeOnly API, but it doesn't really need this.

Differential Revision: https://phabricator.services.mozilla.com/D2514

MozReview-Commit-ID: 4VOi5Su3Bos
2018-07-31 12:00:15 +02:00
Emilio Cobos Álvarez
b6d2dbb4fa Bug 1478391: Autogenerate StyleAppearance. r=jwatt
This builds on bug 1428676 and introduces StyleAppearance, which replaces the
NS_THEME_* constants.

Really sorry for the size of the patch.

There's a non-trivial change in the gtk theme, which I submitted separately as
bug 1478385.

Differential Revision: https://phabricator.services.mozilla.com/D2361

MozReview-Commit-ID: DiSmMWK7Krp
2018-07-26 17:06:17 +02:00
Ting-Yu Lin
97574b3cb6 Bug 1477533 - Use static const class variable to represent column-count: auto. r=heycam
NS_STYLE_COLUMN_COUNT_UNLIMITED is unused, so I remove it.

MozReview-Commit-ID: HLHLn9ZbkUY
2018-07-20 17:09:31 -07:00
Kris Maglione
3a415ff082 Bug 1473631: Part 0a - Make preference callbacks typesafe. r=njn
I initially tried to avoid this, but decided it was necessary given the number
of times I had to repeat the same pattern of casting a variable to void*, and
then casting it back in a part of code far distant from the original type.

This changes our preference callback registration functions to match the type
of the callback's closure argument to the actual type of the closure pointer
passed, and then casting it to the type of our generic callback function. This
ensures that the callback function always gets an argument of the type it's
actually expecting without adding any additional runtime memory or
QueryInterface overhead for tracking it.

MozReview-Commit-ID: 9tLKBe10ddP
2018-07-06 12:24:41 -07:00
Kris Maglione
6681e54f0b Bug 1473634: Part 3 - Update nsDOMComputedStyle to use RegisterCallbacks. r=bz
nsComputedDOMStyle is currently one of the biggest sources of pref callback
memory overhead. It currently registers about 5KB of callbacks per process. A
lot of that has to do with it registering multiple callbacks for the same
preference. But even with that problem fixed, we can do better by registering
a single callback for all observed preferences.

This patch does that, but also adds the optimization of deduplicating the list
of observed preferences to avoid wasted cycles needlessly matching against
many identical strings.

MozReview-Commit-ID: LZNgd7cAwo2
2018-07-04 19:07:28 -07:00
Dan Glastonbury
3e9def79c3 Bug 1467622 - P1: nsStyleSVGPaint - Change nscolor to StyleComplexColor. r=xidorn
MozReview-Commit-ID: 1bbQzOoOuBe
2018-06-27 17:07:37 +10:00
Brindusan Cristian
0ca98f8f72 Backed out 5 changesets (bug 1467622) for reftest failures on layout/reftests/svg/smil/style/anim-css-fill-1-from-by-curcol-hex.svg. CLOSED TREE
Backed out changeset 8694fe928b04 (bug 1467622)
Backed out changeset 74533cad9479 (bug 1467622)
Backed out changeset e1dbee410e98 (bug 1467622)
Backed out changeset 56142038cc7f (bug 1467622)
Backed out changeset 90cede21bad1 (bug 1467622)
2018-07-11 09:37:26 +03:00
Dan Glastonbury
55a767c104 Bug 1467622 - P1: nsStyleSVGPaint - Change nscolor to StyleComplexColor. r=xidorn
MozReview-Commit-ID: 1bbQzOoOuBe
2018-06-27 17:07:37 +10:00
Cameron McCormack
cebd37ab1f Bug 1473450 - Remove angle values from image-orientation. r=emilio
MozReview-Commit-ID: FB74ILJM6Fm
2018-07-05 12:04:58 +10:00
Andreea Pavel
20adb881e6 Backed out changeset 641b02da5961 (bug 1473450) for failing xpchsell and mochitest on a CLOSED TREE 2018-07-10 09:28:59 +03:00
Cameron McCormack
2232a7f1b1 Bug 1473450 - Remove angle values from image-orientation. r=emilio
MozReview-Commit-ID: FB74ILJM6Fm
2018-07-05 12:04:58 +10:00
Ciure Andrei
a55b661b04 Merge inbound to mozilla-central. a=merge 2018-07-05 12:51:41 +03:00
Kris Maglione
faabba2e6f Bug 1472523: Part 1 - Avoid string copies in preference callbacks. r=njn
Most preference callbacks use literal strings for their domain filters, which
means that there's no need to make copies of them at all. Currently, however,
every preference observer node makes a separate heap-allocated copy of its
domain string.

This patch switches the domain string storage to nsCString instances, which
dramatically reduces the amount of unnecessary copies, at the expense of
making the callback nodes slightly larger.

MozReview-Commit-ID: 8NA3t2JS2UI
2018-06-30 23:06:17 -07:00
Emilio Cobos Álvarez
c90fe62ec8 Bug 1473225 - Serialize a few more lengths with Servo. r=xidorn
Differential Revision: https://phabricator.services.mozilla.com/D1934
2018-07-04 06:42:38 +00:00
Emilio Cobos Álvarez
65942fcd2c Bug 1472551 - Serialize font properties using Servo. r=xidorn
Differential Revision: https://phabricator.services.mozilla.com/D1905
2018-07-01 23:00:18 +00:00
Emilio Cobos Álvarez
fc60c3b2e7 Bug 1472497 - Serialize list-style-type / list-style-image using Servo. r=xidorn
Differential Revision: https://phabricator.services.mozilla.com/D1903
2018-07-01 00:44:26 +00:00
Emilio Cobos Álvarez
d596bad293 Bug 1472443: Serialize content properties using Servo. r=xidorn
... and cleanup unused keywords / getters using the scripts in
layout/style/tools

Differential Revision: https://phabricator.services.mozilla.com/D1901

MozReview-Commit-ID: BRUGcje7X0q
2018-06-30 17:14:12 +02:00
Emilio Cobos Álvarez
8d181f4ca3 Bug 1472443: Make StyleContentType an enum class. r=xidorn
Most of it is automated by:

  %s/eStyleContentType_/StyleContentType::/g
  %s/nsStyleContentType/StyleContentType/g

But I removed some parentheses by hand.

Differential Revision: https://phabricator.services.mozilla.com/D1900

MozReview-Commit-ID: 3IcirjIYX5p
2018-06-30 17:13:07 +02:00
Emilio Cobos Álvarez
5d358548d7 Bug 1116638: Expose logical props in computed style. r=xidorn
Differential Revision: https://phabricator.services.mozilla.com/D1862
2018-06-30 13:45:43 +00:00
Dorel Luca
a16f2f280d Merge mozilla-inbound to mozilla-central. a=merge 2018-06-27 13:26:49 +03:00
Xidorn Quan
53f38b6f36 Bug 1471114 part 4 - Remove unused getter functions from nsComputedDOMStyle. r=emilio
This is done with the following script:
```python
#!/usr/bin/env python3

import re
import sys

from pathlib import Path

if len(sys.argv) != 2:
    print("Usage: {} objdir".format(sys.argv[0]))
    exit(1)

generated = Path(sys.argv[1]) / "layout" / "style"
generated = generated / "nsComputedDOMStyleGenerated.cpp"
RE_GENERATED = re.compile(r"DoGet\w+")
keeping = set()
with generated.open() as f:
    for line in f:
        m = RE_GENERATED.search(line)
        if m is not None:
            keeping.add(m.group(0))

HEADER = "layout/style/nsComputedDOMStyle.h"
SOURCE = "layout/style/nsComputedDOMStyle.cpp"

# We need to keep functions invoked by others
RE_DEF = re.compile(r"nsComputedDOMStyle::(DoGet\w+)\(\)")
RE_SRC = re.compile(r"\b(DoGet\w+)\(\)")
with open(SOURCE, "r") as f:
    for line in f:
        m = RE_DEF.search(line)
        if m is not None:
            continue
        m = RE_SRC.search(line)
        if m is not None:
            keeping.add(m.group(1))

removing = set()
remaining_lines = []
with open(HEADER, "r") as f:
    for line in f:
        m = RE_SRC.search(line)
        if m is not None:
            name = m.group(1)
            if name not in keeping:
                print("Removing " + name)
                removing.add(name)
                continue
        remaining_lines.append(line)

with open(HEADER, "w", newline="") as f:
    f.writelines(remaining_lines)

remaining_lines = []
is_removing = False
with open(SOURCE, "r") as f:
    for line in f:
        if is_removing:
            if line == "}\n":
                is_removing = False
            continue
        m = RE_DEF.search(line)
        if m is not None:
            name = m.group(1)
            if name in removing:
                remaining_lines.pop()
                if remaining_lines[-1] == "\n":
                    remaining_lines.pop()
                is_removing = True
                continue
        remaining_lines.append(line)

with open(SOURCE, "w", newline="") as f:
    f.writelines(remaining_lines)
```

MozReview-Commit-ID: ACewvZ9ztWp
2018-06-27 15:34:29 +10:00
Xidorn Quan
e5eaede4f5 Bug 1471114 part 3 - Drop the reference to getter functions we don't call. r=emilio
MozReview-Commit-ID: IbBayOwsjNX
2018-06-27 15:34:29 +10:00
Xidorn Quan
67ceea3e23 Bug 1471114 part 2 - Generate ComputedStyleMap entry list from property data. r=emilio
This changes the order of properties returned from gCS. The old order
doesn't make much sense, and other browsers don't agree on an identical
order either, so it should be trivial to change it. Also the spec isn't
super clear / useful in this case.

Several -moz-prefixed properties are excluded from the list due to their
being internal. I suspect they are never accessible anyway, so probably
nothing gets changed by this.

MozReview-Commit-ID: 9LfangjpJ3P
2018-06-27 15:34:29 +10:00
Xidorn Quan
a96d5a397c Bug 1471116 - Use nsCSSProps::kPropertyPrefTable for pref callback register of nsComputedDOMStyle. r=emilio
MozReview-Commit-ID: 7VvFGYi12te
2018-06-26 14:06:46 +10:00
Olli Pettay
2e64f41c9f Bug 1428246 - The attributeChangedCallback is fired twice for the *first* style attribute change, r=peterv
The idea with this patch is that style code will first call
InlineStyleDeclarationWillChange before style declaration has changed, and SetInlineStyleDeclaration once it has changed.

In order to be able to report old attribute value, InlineStyleDeclarationWillChange reads the value and also calls AttributeWillChange (so that DOMMutationObserser can grab the old value). Later SetInlineStyleDeclaration passes the old value to
SetAttrAndNotify so that mutation events and attributeChanged callbacks are handled correctly.

Because of performance, declaration can't be cloned for reading the old value. And that is why the recently-added callback is used to detect when declaration is about to change (bug 1466963 and followup bug 1468665).

To keep the expected existing behavior, even if declaration isn't changed, but just a new declaration was created (since there wasn't any), we need to still run all these
willchange/set calls. That is when the code has 'if (created)' checks.

Since there are several declaration implementation and only nsDOMCSSAttributeDeclaration needs the about-to-change callback, GetPropertyChangeClosure is the one to initialize the callback closure, and the struct which is then passes as data to the closure.

Apparently we lost mutation event testing on style attribute when the pref was added, so test_style_attr_listener.html is modified to test both pref values.
2018-06-26 12:54:00 +03:00
Chris Peterson
f7ceeaf5cf Bug 1469769 - Part 6: Replace non-failing NS_NOTREACHED with MOZ_ASSERT_UNREACHABLE. r=froydnj
This patch is an automatic replacement of s/NS_NOTREACHED/MOZ_ASSERT_UNREACHABLE/. Reindenting long lines and whitespace fixups follow in patch 6b.

MozReview-Commit-ID: 5UQVHElSpCr
2018-06-17 22:43:11 -07:00
Dan Glastonbury
ff951cc67d Bug 1467621 - P1: nsCSSShadowItem - Change nscolor to StyleComplexColor. r=xidorn
MozReview-Commit-ID: moE2CI7fT8
2018-06-19 14:18:33 +10:00
Olli Pettay
f7f69e2df0 Bug 1470099 - Make CSSStyleDeclaration's wrapper use nursery heap and make last Release call ClearComputedStyle(), r=emilio 2018-06-21 15:28:47 +03:00
Xidorn Quan
ebb82a5abf Bug 1418874 part 3 - Remove CSSLexer and related stuff. r=emilio,tromey,smaug
MozReview-Commit-ID: 2DuHpc3HfmB
2018-06-14 18:12:02 -07:00
Emilio Cobos Álvarez
6e1ad72b7c Bug 1467722: Do not throw when we don't have a style, but just return an empty style. r=heycam
We return '0' for the length, and "" for every declaration. This matches other
browsers and the spec in the "no style" behavior.

Of course we don't claim not to have a style for every case the spec says, but
that will come later, given that's a much more risky change.

This doesn't make any case where we returned something useful return something
less useful, but stops null from getting returned, and returns the empty string
which matches other browsers when they cannot return a style.

MozReview-Commit-ID: 7Sc7HL5CgZU
2018-06-19 11:47:59 +02:00
Emilio Cobos Álvarez
be973378dc Bug 1467722: Make nsComputedDOMStyle store an actual Element. r=heycam
MozReview-Commit-ID: FdfXvPARilD
2018-06-19 11:47:40 +02:00