Commit Graph
243 Commits
Author SHA1 Message Date
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
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
Emilio Cobos Álvarez 89aefc4c17 Bug 1466963: Provide a before-mutation closure to C++. r=xidorn,smaug
MozReview-Commit-ID: H2jwIeZoiBZ
2018-06-07 11:22:31 +02:00
Nazım Can Altınova 4e99e486f8 Bug 1464496 - Part 1: Merge ServoDeclarationBlock and DeclarationBlock r=emilio
MozReview-Commit-ID: By9fV70Oq0K
2018-05-30 18:15:25 +02:00
Olli Pettay 309d33d12c Bug 1465175 - Remove mozAutoDocConditionalContentUpdateBatch, r=dbaron 2018-05-30 12:40:07 +03:00
Emilio Cobos Álvarez 7fb56d1800 Bug 1459529: Make sheets be associated to a shadow root too potentially. r=bz
MozReview-Commit-ID: Cd8xJuLRY5w
2018-05-15 18:44:25 +02:00
bobslept d61777aa3b Bug 1459111 - Rename ServoCSSParsingEnvironment to ParsingEnvironment. r=emilio
MozReview-Commit-ID: Jl5aoarH0aU
2018-05-14 20:20:20 +02:00
Emilio Cobos Álvarez de550d360c Bug 1408301: Remove getPropertyCSSValue. r=bz
It's been removed for a while on Nightly without any known regressions. This
gives us a full beta cycle of telemetry and two nightly cycles without the API
before shipping.

This only removes the API, followup work will replace serialization by Servo's,
and remove the remaining DOM interfaces.

MozReview-Commit-ID: 2m1taYg5xEr
2018-05-12 11:23:47 +02:00
Chris Peterson 5d6b16ea3b Bug 1457813 - Part 2: Replace non-asserting NS_PRECONDITIONs with MOZ_ASSERTs. r=froydnj
s/NS_PRECONDITION/MOZ_ASSERT/ and reindent

MozReview-Commit-ID: KuUsnVe2h8L
2018-04-28 12:50:58 -07:00
Emilio Cobos Álvarez 273c47eac5 Bug 1458928: Remove GetCSSParsingEnvironment. r=xidorn
MozReview-Commit-ID: KXGM7JiUZAt
2018-05-03 17:41:48 +02:00
Emilio Cobos Álvarez 7f5215d8c9 Bug 1458458: Minor nsDOMCSSAttrDeclaration cleanup. r=hiro
MozReview-Commit-ID: LA249WzjZ5n
2018-05-02 18:08:57 +02:00
Emilio Cobos Álvarez 1cbdd1ec8c Bug 1458458: Remove dead code from nsDOMCSSAttributeDeclaration. r=hiro
MozReview-Commit-ID: 67r8s3zDZMA
2018-05-02 18:05:13 +02:00
Emilio Cobos Álvarez c7e1c095c7 Bug 1457920: Remove StyleSheet::AsServo. r=xidorn
MozReview-Commit-ID: IkkJvUFHykk
2018-05-02 04:13:21 +02:00
Emilio Cobos Álvarez 08bea7e24f Bug 1456471: Remove nsCSSParser.h. r=xidorn
MozReview-Commit-ID: 4qa7llzCXeR
2018-04-25 10:38:37 +02:00
Jonathan Watt 44d37e68d5 Bug 1449321 - Remove the IsServo and IsGecko methods from the style system code. r=emilio 2018-03-23 16:01:34 +00:00
Emilio Cobos Álvarez b1a35fbef7 Bug 1447358: Unifdef the old style system code. r=jwatt
Summary:
This has been automatically generated using:

  http://dotat.at/prog/unifdef/

And:

find $OBJDIR -type f -name '*.h' |
while read FILE; do
  echo "$FILE"
  unifdef -m -DMOZ_STYLO -UMOZ_OLD_STYLE "$FILE";
done

find $OBJDIR -type f -name '*.cpp' |
while read FILE; do
  echo "$FILE"
  unifdef -m -DMOZ_STYLO -UMOZ_OLD_STYLE "$FILE";
done

MozReview-Commit-ID: I4NdKqbMXzJ

Reviewers: jwatt

Bug #: 1447358

Differential Revision: https://phabricator.services.mozilla.com/D779
2018-03-21 10:20:34 +01:00
Xidorn Quan 3ebb0c69a4 Bug 1435139 - Don't call SetCSSDeclaration when removing non-existing property. r=bz
MozReview-Commit-ID: 8jt1D5RULEy
2018-02-05 16:07:44 +11:00
Cameron McCormack 02c617875f Bug 1430014 - Part 4: #ifdef out unnecessary code when the old style system is not built. r=xidorn
MozReview-Commit-ID: 1FZ9VzjcPzN
2018-02-01 15:04:04 +11:00
Boris Zbarsky 276fce3bc4 Bug 1428610 part 7. Make the nsICSSDeclaration length API nicer. r=emilio
MozReview-Commit-ID: 2gs8npBJFJY
2018-01-30 14:48:27 -05:00
Boris Zbarsky 0ba88b2885 Bug 1428610 part 6. Give nsICSSDeclaration::GetPropertyPriority a nicer signature. r=emilio
MozReview-Commit-ID: 4H2zADwdo5L
2018-01-30 14:48:27 -05:00
Boris Zbarsky 7a1455b2cc Bug 1428610 part 5. Make nsICSSDeclaration::Get/SetCSSText have nicer signatures. r=emilio
MozReview-Commit-ID: B25qvxKj9CW
2018-01-30 14:48:26 -05:00
Boris Zbarsky 369b32cdf4 Bug 1428610 part 4. Move the nsCSSPropertyID overload of nsICSSDeclaration::SetPropertyValue to nsDOMCSSDeclaration. r=emilio
MozReview-Commit-ID: 8BzCHahJjwv
2018-01-30 14:48:26 -05:00