Commit Graph
264 Commits
Author SHA1 Message Date
Emilio Cobos Álvarez e4ecfea530 Bug 2038976 - Make CSSOM work on raw declaration blocks, rather than DeclarationBlock. r=firefox-style-system-reviewers,layout-reviewers,dshin
This will make being more granular with cloning easier, and we don't
need it after the previous patch.

This leaves DeclarationBlock only for the style attribute for now, we
need it for the AttrStyles stuff. But I plan to move that to
MiscContainer instead or so.

Differential Revision: https://phabricator.services.mozilla.com/D300052
2026-05-13 22:29:25 +00:00
Emilio Cobos Álvarez f7e0f764d4 Bug 2038976 - Move immutable flag from DeclarationBlock to Rust. r=firefox-style-system-reviewers,dshin
This makes us not have to care about the owning rule.

Make shmem rules immutable directly too, to avoid needing the
OwnerIsReadOnly() checks.

Differential Revision: https://phabricator.services.mozilla.com/D300026
2026-05-12 16:30:41 +00:00
Jan Varga 21a0206567 Bug 2025283 - Introduce nsDOMCSSDeclaration::SetPropertyTypedValue for Typed OM; r=emilio,firefox-style-system-reviewers
Introduce `nsDOMCSSDeclaration::SetPropertyTypedValue` as a separate entry
point for Typed OM.

Unlike `SetProperty`, this method is intended to propagate parsing failures,
which are currently ignored by the existing parsing path used by
`CSSStyleDeclaration::SetProperty`.

This is a preparatory change for making parsing errors observable in
`StylePropertyMap::Set`, while reusing the existing parsing infrastructure.

Differential Revision: https://phabricator.services.mozilla.com/D289595
2026-04-06 22:19:07 +00:00
Jan Varga 8b63aa95a8 Bug 2025283 - Prepare ModifyDeclaration for error propagation; r=emilio,firefox-style-system-reviewers
Refactor ModifyDeclaration so that parsing failures can be surfaced to callers,
instead of being implicitly ignored.

This is a preparatory change for making StylePropertyMap::Set propagate parsing
errors, while keeping the existing parsing infrastructure.

Differential Revision: https://phabricator.services.mozilla.com/D292109
2026-04-06 06:51:10 +00:00
Jan Varga 157d1077d0 Bug 2025260 - Convert redundant IsReadOnly checks in nsDOMCSSDeclaration parsing helpers to assertions; r=firefox-style-system-reviewers,dshin
`nsDOMCSSDeclaration::ParsePropertyValue` and `ParseCustomPropertyValue`
currently perform early `IsReadOnly` checks.

All callers of these methods already ensure the declaration is not read-only,
making these checks redundant. Convert them into assertions to document the
invariant and avoid unnecessary runtime checks.

Differential Revision: https://phabricator.services.mozilla.com/D289175
2026-04-05 10:28:54 +00:00
Sylvestre Ledru 55481ac4b5 Bug 2023419 - Remove Emacs/Vim modelines from layout/ r=emilio,firefox-style-system-reviewers,layout-reviewers
replaced by .editorconfig

Differential Revision: https://phabricator.services.mozilla.com/D287852
2026-03-17 12:05:43 +00:00
Emilio Cobos Álvarez 9bba325ffc Bug 2015210 - Nested declarations parsing depends on the parent. r=firefox-style-system-reviewers,dshin
Differential Revision: https://phabricator.services.mozilla.com/D282256
2026-02-09 15:41:51 +00:00
Nicolas Chevobbe 4a691496e7 Bug 2006255 - [devtools] Add chrome-only CSSStyleDeclaration#hasLonghandProperty(propertyName). r=emilio,webidl,firefox-style-system-reviewers,layout-reviewers.
Differential Revision: https://phabricator.services.mozilla.com/D274933
2025-12-16 07:07:58 +00:00
Jan Varga b314d21751 Bug 1998365 - Rename nsCSSPropertyID to NonCustomCSSPropertyId and normalize ID naming; r=emilio,firefox-style-system-reviewers,layout-reviewers
nsCSSPropertyID only enumerates non custom properties, but the name suggests
otherwise. (eCSSPropertyExtra_variable only signals a custom property and does
not carry the custom name.) This mismatch has been confusing and also blocks
renaming AnimatedPropertyID to CSSPropertyId.

This patch renames nsCSSPropertyID to NonCustomCSSPropertyId to make the non
custom scope explicit. It also normalizes identifier naming (aPropID ->
aPropId, mID -> mId, etc.) for consistency.

No behavior changes intended.

Potential follow-ups:
- Move the enum to the mozilla namespace.
- Convert the enum to an enum class.
- Rename nsCSSPropertyIDSet.

Differential Revision: https://phabricator.services.mozilla.com/D271443
2025-11-12 06:11:29 +00:00
Henri Sivonen b1685935b1 Bug 1968903 - Avoid creating script and CSS loaders for documents loaded as data. r=firefox-style-system-reviewers,emilio,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D264779
2025-10-20 15:49:01 +00:00
Cristina Horotan f21b53b704 Revert "Bug 1968903 - Avoid creating script and CSS loaders for documents loaded as data. r=firefox-style-system-reviewers,emilio,layout-reviewers" for causing bug 1991800
This reverts commit 6cbdfe15a0.
2025-10-01 07:15:03 +00:00
Henri Sivonen 6cbdfe15a0 Bug 1968903 - Avoid creating script and CSS loaders for documents loaded as data. r=firefox-style-system-reviewers,emilio,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D264779
2025-09-30 10:27:43 +00:00
agoloman 0a11d7413f Revert "Bug 1968903 - Avoid creating script and CSS loaders for documents loaded as data. r=firefox-style-system-reviewers,emilio,layout-reviewers" for causing multiple wpt failures.
This reverts commit f83cb28789.
2025-09-30 09:25:22 +00:00
Henri Sivonen f83cb28789 Bug 1968903 - Avoid creating script and CSS loaders for documents loaded as data. r=firefox-style-system-reviewers,emilio,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D264779
2025-09-30 07:45:53 +00:00
Masayuki Nakano a27e993972 Bug 769207 - part 13: Get rid of MutationEvent r=smaug,dom-core,webidl
Differential Revision: https://phabricator.services.mozilla.com/D263064
2025-09-08 00:28:20 +00:00
Kagami Sascha Rosylight 82b6c106ae Bug 1919582 - Rename CSS2Properties to CSSStyleProperties r=emilio,webcompat-reviewers,frontend-codestyle-reviewers,twisniewski,devtools-reviewers,nchevobbe
Differential Revision: https://phabricator.services.mozilla.com/D255790
2025-08-28 16:31:07 +00:00
Narcis Beleuzu ef05f75c3f Revert "Bug 1919582 - Rename CSS2Properties to CSSStyleProperties r=emilio,webcompat-reviewers,frontend-codestyle-reviewers,twisniewski,devtools-reviewers,nchevobbe" for dt failure on browser_dbg-preview-wrapped-lines.js
This reverts commit d068903655.
2025-08-02 00:36:23 +00:00
Kagami Sascha Rosylight d068903655 Bug 1919582 - Rename CSS2Properties to CSSStyleProperties r=emilio,webcompat-reviewers,frontend-codestyle-reviewers,twisniewski,devtools-reviewers,nchevobbe
Differential Revision: https://phabricator.services.mozilla.com/D255790
2025-08-01 23:32:53 +00:00
Serban Stanca 6d971b48e2 Revert "Bug 1919582 - Rename CSS2Properties to CSSStyleProperties r=emilio,webcompat-reviewers,frontend-codestyle-reviewers,twisniewski,devtools-reviewers,nchevobbe" for causing devtools failures in browser_dbg-preview-wrapped-lines.js.
This reverts commit 051df29ed1.
2025-08-01 21:10:26 +00:00
Kagami Sascha Rosylight 051df29ed1 Bug 1919582 - Rename CSS2Properties to CSSStyleProperties r=emilio,webcompat-reviewers,frontend-codestyle-reviewers,twisniewski,devtools-reviewers,nchevobbe
Differential Revision: https://phabricator.services.mozilla.com/D255790
2025-08-01 13:43:35 +00:00
Emilio Cobos Álvarez a8a2311474 Bug 1976457 - Sort includes in layout/. r=janv,dshin
Interesting bit is layout/.clang-format, the rest is all automated.

Differential Revision: https://phabricator.services.mozilla.com/D256616
2025-07-09 13:24:00 +00:00
Zach Hoffman 8cf28aa08b Bug 1844295 - Don't duplicate ParsingMode in rust and C++. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D184409
2023-07-25 10:00:59 +00:00
Emilio Cobos Álvarez 9a315172f1 Bug 1839950 - CSSStyleDeclaration.getPropertyValue doesn't throw. r=peterv
We fixed nsComputedDOMStyle ages ago.

Differential Revision: https://phabricator.services.mozilla.com/D181944
2023-06-27 08:21:46 +00:00
Julien Wajsberg 62b8fe2ecb Bug 1777473 - Expose some more layout frame labels to javascript developers r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D150757
2022-07-06 14:02:04 +00:00
Hiroyuki Ikezoe 17f2ecf7d4 Bug 1760222 - Ignore unchanged property for scroll-linked effect detector. r=hiro
I think this is cleaner.

Differential Revision: https://phabricator.services.mozilla.com/D141737
2022-03-27 23:40:24 +00:00
Cristian Tuns 6507552173 Backed out 4 changesets (bug 1760222) for causing reftest failures on disable-apz-for-sle-pages.html CLOSED TREE
Backed out changeset 1bf5e1ca3746 (bug 1760222)
Backed out changeset aff6bf37365d (bug 1760222)
Backed out changeset e9b3e3f52aec (bug 1760222)
Backed out changeset f65d2d719277 (bug 1760222)
2022-03-24 02:36:42 -04:00
Hiroyuki Ikezoe 2221fa8aec Bug 1760222 - Ignore unchanged property for scroll-linked effect detector. r=hiro
I think this is cleaner.

Differential Revision: https://phabricator.services.mozilla.com/D141737
2022-03-24 02:20:46 +00:00
Emilio Cobos Álvarez e0eaeb6a51 Bug 1741491 - Make sure we only record old style value once. r=smaug
The way CommitStyles called into servo caused it to call the closure
multiple times, and we were not dealing with that properly.

Handle the "was called" state internally.

Differential Revision: https://phabricator.services.mozilla.com/D131411
2021-11-17 23:39:32 +00:00
Emilio Cobos Álvarez eca75548b1 Bug 1729330 - Add a simple CSSLayerRule implementation. r=smaug
The specifics of how this is going to work are still getting spec'd /
discussed in https://github.com/w3c/csswg-drafts/issues/6576, but this
allows DevTools to work fine and the feature to be complete enough for
Nightly experimentation (with the other in-flight patches).

Otherwise devtools crashes when trying to inspect pages that use them.

Differential Revision: https://phabricator.services.mozilla.com/D124656
2021-09-08 11:18:32 +00:00
Emilio Cobos Álvarez 4a9e69224f Bug 1710969 - Use an enum class for nsDOMCSSDeclaration::Operation. r=TYLin
No behavior change.

Differential Revision: https://phabricator.services.mozilla.com/D115038
2021-05-13 01:26:35 +00:00
Gerald Squelart f25e1c0093 Bug 1691589 - Reduce reliance on GeckoProfiler.h when only labels (and maybe markers) are needed - r=necko-reviewers,geckoview-reviewers,sg,agi,florian
There are no code changes, only #include changes.
It was a fairly mechanical process: Search for all "AUTO_PROFILER_LABEL", and in each file, if only labels are used, convert "GeckoProfiler.h" into "ProfilerLabels.h" (or just add that last one where needed).
In some files, there were also some marker calls but no other profiler-related calls, in these cases "GeckoProfiler.h" was replaced with both "ProfilerLabels.h" and "ProfilerMarkers.h", which still helps in reducing the use of the all-encompassing "GeckoProfiler.h".

Differential Revision: https://phabricator.services.mozilla.com/D104588
2021-02-16 04:44:19 +00:00
Emilio Cobos Álvarez fe2b95e111 Bug 1682003 - Avoid UTF-8 -> UTF-16 conversion during CSSOM serialization. r=heycam
This lifts a bunch of string conversions higher up the stack, but allows
us to make the servo code use utf-8 unconditionally, and seemed faster
in my benchmarking (see comment 0).

It should also make a bunch of attribute setters faster too (like
setting .cssText), now that we use UTF8String for them (we couldn't
because we couldn't specify different string types for the getter and
setters).

Differential Revision: https://phabricator.services.mozilla.com/D99590
2020-12-17 14:04:35 +00:00
Emilio Cobos Álvarez 9d81a86a6d Bug 1682006 - Don't call Truncate() on the return string in GetPropertyValue. r=xidorn
Turns out this causes a bit of overhead when appending to an AutoString,
because Truncate() calls SetToEmptyBuffer(), which makes it go from
inline-string to buffer string, and next time we append we need to turn
the string from a buffer-based string to an inline string again, which
is some minor, but measurable, work, while profiling some
micro-benchmarks.

Probably we should make Truncate() a no-op for a zero-length string, but
I'll send that separately.

Differential Revision: https://phabricator.services.mozilla.com/D99493
2020-12-12 12:06:06 +00:00
Emilio Cobos Álvarez b04596dcdf Bug 1665816 - CSSOM should respect rule-level property restrictions. r=jwatt
Differential Revision: https://phabricator.services.mozilla.com/D90729
2020-09-21 09:57:46 +00:00
Boris Zbarsky e100afa969 Bug 1612444. Improve some error messages for exceptions in layout. r=emilio
I used ThrowNotSupportedError for the not-implemented case.

Differential Revision: https://phabricator.services.mozilla.com/D61324
2020-02-03 20:35:54 +00:00
Sylvestre Ledru 9bd2328337 Bug 1519636 - Automatically reformat recent changes using clang-format r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D60354
2020-01-21 09:51:27 +00:00
Emilio Cobos Álvarez 4847c60fa0 Bug 1449861 - Use UTF8String for some CSSOM APIs. r=bzbarsky
In particular, the ones where we transcode unconditionally atm (property names
and such).

There are others like cssText getters and setters which are a bit harder,
because I either need to rewrite all our serialization code to work with UTF8
(which is fine, but a lot of work), or teach webidl to have a setter that takes
UTF8String as input but returns DOMString as output (which is at best hacky).

Differential Revision: https://phabricator.services.mozilla.com/D58631
2020-01-04 10:36:49 +00:00
Gabriele Svelto eeb9bfc398 Bug 1600545 - Remove useless inclusions of header files generated from IDL files in accessible/, browser/, caps/, chrome/, devtools/, docshell/, editor/, extensions/, gfx/, hal/, image/, intl/, ipc/, js/, layout/, and media/ r=Ehsan
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.

find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
    interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
    if [ -n "$interfaces" ]; then
        if [[ "$interfaces" == *$'\n'* ]]; then
          regexp="\("
          for i in $interfaces; do regexp="$regexp$i\|"; done
          regexp="${regexp%%\\\|}\)"
        else
          regexp="$interfaces"
        fi
        interface=$(basename "$path")
        rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
            hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
            if [ $hits -eq 0 ]; then
                echo "Removing ${interface} from ${path2}"
                grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
                mv -f "$path2".tmp "$path2"
            fi
        done
    fi
done

Differential Revision: https://phabricator.services.mozilla.com/D55443
2019-12-06 09:16:44 +00:00
Cameron McCormack ceebf312b5 Bug 1539159 - Prevent modification of UA style sheets. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D25661
2019-04-29 05:34:06 +00:00
Daniel Holbert 07fa7d3fd6 Bug 1533870: Preemptively fix unified build bustage in layout/style. r=boris
I wrote this patch by first removing UNIFIED_ from layout/style/moz.build, and
then rebuilding, and then addressing build errors one by one.

Nearly all of the build errors were for using the "Document" type without a
proper namespace, and I've addressed this by sprinkling "using namespace"
declarations in the affected .cpp files (and removing a few now-unnecessary
dom:: prefixes on types in those files).

The only other errors were for WorkletGlobalScope.h which needed an #include to
provide the type "DOMHighResTimeStamp", and nsHTMLStyleSheet.h which needed a
forward-declaration for the type "mozilla::dom::Document".

Differential Revision: https://phabricator.services.mozilla.com/D22767
2019-03-08 21:48:39 +00:00
hrdktg 08caf3c788 Bug 1532570 - nsDOMCSSDeclaration::SetProperty should check for the "important" string in a case-insensitive way. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D22423
2019-03-06 23:36:23 +00:00
Ryan Hunt a96492f0f6 Bug 1523969 part 14 - Move method definition inline comments to new line in 'layout/'. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D21115
2019-02-25 16:09:24 -06:00
Boris Chiou 742a94f4b3 Bug 1529422 - Part 4: Log a warning if webpage is updating individual transforms. r=mstange
All transform-like properties should set PositioningPropertyMutated.

Depends on D19632

Differential Revision: https://phabricator.services.mozilla.com/D19635
2019-02-24 03:26:26 +00:00
Markus Stange 619ba4cb84 Bug 1500692 - Add LAYOUT subcategories. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D11341
2019-02-16 17:38:35 +00:00
Emilio Cobos Álvarez dc336a73ba Bug 1517241 - Rename nsIDocument to mozilla::dom::Document. r=smaug
Summary: Really sorry for the size of the patch. It's mostly automatic
s/nsIDocument/Document/ but I had to fix up in a bunch of places manually to
add the right namespacing and such.

Overall it's not a very interesting patch I think.

nsDocument.cpp turns into Document.cpp, nsIDocument.h into Document.h and
nsIDocumentInlines.h into DocumentInlines.h.

I also changed a bunch of nsCOMPtr usage to RefPtr, but not all of it.

While fixing up some of the bits I also removed some unneeded OwnerDoc() null
checks and such, but I didn't do anything riskier than that.
2019-01-03 17:48:33 +01:00
Sylvestre Ledru e5a134f73a Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset
2018-11-30 11:46:48 +01:00
Emilio Cobos Álvarez 8d5c57ec04 Bug 1498445 - Stop creating a style attribute for invalid property values. r=smaug
This matches all other browsers, and the spec.

Added an explicit test for this, and a test that tests what
cssstyledeclaration-mutationrecord-002.html wanted to test, which is that
changing an existing declaration doesn't generate a mutation record.

Differential Revision: https://phabricator.services.mozilla.com/D8500
2018-10-12 09:07:00 +00:00
Daniel Holbert d6d06d82c3 Bug 1483394: Remove unneeded #includes of nsContentUtils.h in /layout. r=TYLin
For each file touched in this patch, the file had an #include for nsContentUtils.h, but no other mentions of the string "nsContentUtils", nor any mention of its "ScriptBlocker"-related types. So these files likely don't need their nsContentUtils.h include anymore, and we can remove it to get a marginal win on build time/complexity.

Differential Revision: https://phabricator.services.mozilla.com/D3370
2018-08-15 07:04:43 +00: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
Jeff Gilbert 70a22b2878 Bug 1470325 - s/FooBinding/Foo_Binding/g - r=qdot
MozReview-Commit-ID: JtTcLL5OPF0
2018-06-26 17:05:01 -07:00