Commit Graph

94 Commits

Author SHA1 Message Date
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
Simon Giesecke
46908cfb51 Bug 1660470 - Add missing include directives/forward declarations. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D87865
2020-11-23 16:21:38 +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
Simon Giesecke
a69d79b6db Bug 1648010 - Replace uses of NS_LITERAL_STRING/NS_LITERAL_CSTRING macros by _ns literals. r=geckoview-reviewers,jgilbert,agi,hsivonen,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D80860
2020-07-01 08:29:29 +00:00
Emilio Cobos Álvarez
03cfd95496 Bug 1641245 - Make string comparators not virtual. r=froydnj,necko-reviewers,geckoview-reviewers,jgilbert,agi,valentin
There's no use case for stateful comparators, so they can be just plain
function pointers.

This is used in some hot places like CSS selector matching.

Differential Revision: https://phabricator.services.mozilla.com/D77084
2020-05-27 18:11:12 +00:00
Cameron McCormack
952f4f8bf8 Bug 1640545 - Make attribute substring selectors a little faster. r=emilio
In the common case of using case sensitive matching, improvements come from:

* for attributes backed by nsStringBuffers, not needing to AddRef/Release the
  string buffer
* for attributes backed by atoms, not needing to run the destructor of an
  nsDependentAtomString
* for prefix and suffix attribute selectors, using memcmp instead of the
  slower StringBeginsWith/StringEndsWith (which read a character at a
  time and call a virtual function on the comparator object)
* for the substring attribute selector, using std::search(), which also
  avoids virtual function calls on a comparator object

Attribute selector performance is important on pages with many links
with ad blocker extensions that use such selectors installed.

On my machine, this drops total time spent loading the single page HTML
spec

* under Gecko_AttrHasPrefix from 2.69 s to 1.25 s
* under Gecko_AttrHasSubstring from 1.06 s to 0.30 s

Differential Revision: https://phabricator.services.mozilla.com/D76643
2020-05-25 22:26:09 +00:00
Simon Giesecke
ea268054bd Bug 1628715 - Part 7: Add MOZ_NONNULL_RETURN to infallible nsTArray::AppendElements. r=xpcom-reviewers,necko-reviewers,nika,valentin
Differential Revision: https://phabricator.services.mozilla.com/D70831
2020-04-24 13:31:14 +00:00
Emilio Cobos Álvarez
ceb8348f27 Bug 1609996 - Remove mozilla::Swap in favor of std::swap. r=froydnj
Now mfbt/Move.h is empty except for that excellent comment about move
semantics... Should we put it somewhere else and delete the header as a
follow-up? Or just delete the header and carry on?

Differential Revision: https://phabricator.services.mozilla.com/D60297
2020-01-20 16:17:06 +00:00
Emilio Cobos Álvarez
439384e3e2 Bug 1599614 - nsAttrValue::Init is not fallible. r=mccr8,bzbarsky
Depends on D54826

Differential Revision: https://phabricator.services.mozilla.com/D54827
2019-11-27 10:57:24 +00:00
Emilio Cobos Álvarez
c1c8fdcb10 Bug 1594275 - Parse the exportparts attribute. r=bzbarsky
But don't hook it into style yet, that'll be a follow-up patch.

I had this patch in my local queue for a bit and there was no point in not
landing it I guess.

The value of this attribute could be stored only in the shadow root (as this
only applies to shadow hosts), but that would make invalidation harder, I think,
so do the obvious thing for now.

Differential Revision: https://phabricator.services.mozilla.com/D51963
2019-11-06 18:03:51 +00:00
Mirko Brodesser
d46726cf68 Bug 1593222: part 13) Include "ReferrerInfo.h" in "nsAttrValue.cpp". r=smaug
Was necessary to get some build working.

Depends on D51828

Differential Revision: https://phabricator.services.mozilla.com/D51829
2019-11-05 20:22:40 +00:00
Thomas Nguyen
8e17cce240 Bug 1546334 - Use referrerInfo in style system. r=heycam
Differential Revision: https://phabricator.services.mozilla.com/D36478
2019-07-16 11:43:56 +00:00
Boris Zbarsky
b423a843dc Bug 1562690. Fix parsing of HTML dimension values to follow spec update and align better with other browsers. r=mccr8
See https://github.com/whatwg/html/pull/4747 for the spec changes

Differential Revision: https://phabricator.services.mozilla.com/D36643
2019-07-03 06:36:17 +00:00
Boris Zbarsky
c12cb4181e Bug 1561440 part 4. Parse non-integer HTML dimension values. r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D36265
2019-06-28 23:31:15 +00:00
Boris Zbarsky
0e952a5516 Bug 1561440 part 3. Add a way to store a non-integer percent value in nsAttrValue. r=mccr8
In the new setup, if the value is an integer and fits in our restricted integer
range we store it directly; otherwise we just go ahead and store it as a double
in the misc container, since we have a double available there anyway.

Differential Revision: https://phabricator.services.mozilla.com/D36264
2019-06-28 23:26:09 +00:00
Boris Zbarsky
3adf4b0785 Bug 1560055 part 7. Remove now-unused percentage handling in ParseHTMLInteger. r=mccr8
All callers treat '%' being found the same as not having consumed all the input,
so we can just stop consuming it.

Differential Revision: https://phabricator.services.mozilla.com/D36214
2019-06-28 17:39:52 +00:00
Boris Zbarsky
ab55ca2e20 Bug 1560055 part 4. Remove remaining uses of ParseSpecialIntValue. r=mccr8
We don't need to parse 'width' on <tr> because we never use the parsed value for
anything and neither does the spec.

We don't need to parse 'charoff' on <col> because we never use that for anything
either, and neither does the spec.

Differential Revision: https://phabricator.services.mozilla.com/D36128
2019-06-28 21:00:15 +00:00
Boris Zbarsky
93c3531e59 Bug 1560055 part 1. Introduce a function to do what the HTML spec calls "parsing dimension values". r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D36125
2019-06-28 20:49:48 +00:00
longsonr
df4d6ce761 Bug 1540408 Part 2 - Move nsSVGLength2 and nsSVGNumber2 to the mozilla namespace renaming them to be SVGAnimatedLength and SVGAnimatedNumber. r=dholbert 2019-04-09 21:04:33 +01:00
Noemi Erli
3f7868f8ac Backed out changeset 481a37f3892a (bug 1540408) for build bustages in SVGViewportElement.h 2019-04-09 09:53:57 +03:00
longsonr
5cde1e40fa Bug 1540408 Part 2 - Move nsSVGLength2 and nsSVGNumber2 to the mozilla namespace renaming them to be SVGAnimatedLength and SVGAnimatedNumber. r=dholbert 2019-04-09 07:33:14 +01:00
Sylvestre Ledru
1ad0cac654 Bug 1519636 - clang-format-8: Reformat recent changes to the Google coding style r=Ehsan
clang-format-8 upstream had some improvements wrt macros
See: https://reviews.llvm.org/D33440
This is why the diff is bigger than usual

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D26098
2019-04-05 21:41:42 +00:00
longsonr
582d6d9a23 Bug 1540408 Part 1 - Move most internal attribute representation classes to be of the form SVGAnimated. r=dholbert 2019-04-04 18:40:56 +01:00
Ryan Hunt
ad7b7dbb30 Bug 1523969 part 6 - Move method definition inline comments to new line in 'dom/'. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D21106
2019-02-25 16:05:29 -06:00
longsonr
341166cd29 Bug 1523178 - Merge SVGAngle and nsSVGOrientType into SVGOrient r=jwatt 2019-02-15 08:41:37 +00:00
longsonr
0814f26721 Bug 1518000 - Move nsSVGString and nsSVGViewBox to the mozilla namespace r=jwatt 2019-01-06 17:52:55 +00:00
longsonr
1543d61428 Bug 1517938 - Move nsSVGIntegerPair and nsSVGNumberPair to the mozilla namespace r=jwatt 2019-01-06 08:22:55 +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
longsonr
fb29bec321 Bug 1516727 - Part 3 rename nsSVGAngle to SVGAngle r=jwatt 2018-12-31 19:00:42 +00: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
Jonathan Watt
c5fc883d51 Bug 1510167. Mark some nsGkAtom* arguments as const in DOM code. r=baku
Differential Revision: https://phabricator.services.mozilla.com/D13049
2018-11-13 12:48:21 +00:00
Emilio Cobos Álvarez
f9b99a3ae7 Bug 1499170 - Add an atom bit to know whether we're ascii lowercase. r=njn
And thus massively speed up ascii-case-insensitive atom comparisons when both
atoms are lowercase (which is the common case by far).

This removes almost all the slow selector-matching in this page, and it seems
an easier fix than storing the lowercased version of all class-names in quirks
mode in elements and selectors...

Differential Revision: https://phabricator.services.mozilla.com/D10945
2018-11-13 12:47:40 +00:00
Thomas Nguyen
88143252f9 Bug 1330487 - Part 3: Propagate referrer policy from doc/sheet to URLExtraData r=heycam
Referrer policy argurment is passed from sheet/doc to URLExtraData, default
value is RP_Unset. We use default value in some cases, particularly when there's
no certain spec talks about that (svg for example)

MozReview-Commit-ID: 5VAX1ZUXD3i

Differential Revision: https://phabricator.services.mozilla.com/D1922
2018-09-17 05:36:45 +00:00
Emilio Cobos Álvarez
135ca6bdec Bug 1485472 - Avoid a couple addref / release in ParseStyleAttribute. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D4008
2018-08-22 22:27:12 +00:00
Dan Glastonbury
3eb45494f3 Bug 1466529 - P1: Cache MiscContainer to avoid malloc/free churn. r=emilio,smaug
Spinning on setting nsStyledElement::SetInlineStyleDeclaration causes
high malloc/free as MiscContainer is created for nsAttrValue passed to
Element::SetAttrAndNotify before the old one is delete'd.

Keep a cache of one MiscContainer in nsAttrValue to alleviate this
pattern.

MozReview-Commit-ID: 2RGaltPvVOn
2018-07-24 19:10:00 +10: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
Emilio Cobos Álvarez
4b8b5e1717 Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj
This was done automatically replacing:

  s/mozilla::Move/std::move/
  s/ Move(/ std::move(/
  s/(Move(/(std::move(/

Removing the 'using mozilla::Move;' lines.

And then with a few manual fixups, see the bug for the split series..

MozReview-Commit-ID: Jxze3adipUh
2018-06-01 10:45:27 +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
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
08bea7e24f Bug 1456471: Remove nsCSSParser.h. r=xidorn
MozReview-Commit-ID: 4qa7llzCXeR
2018-04-25 10:38:37 +02:00
Emilio Cobos Álvarez
e2d66e585e Bug 1452987: Simplify ImageValue. r=heycam
MozReview-Commit-ID: 5LRaaEPSSdY
2018-04-10 16:54:57 +02:00
Xidorn Quan
d03cde8f6e Bug 1447828 part 8 - Remove remaining uses of StyleBackendType as well as the type itself. r=emilio
MozReview-Commit-ID: 6sh4eKvDpRF
2018-03-29 02:34:34 +11: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
Brad Werth
f982f5ccce Bug 1418930 Part 3: Update css::ImageValue to carry a parameter that indicates anonymous CORS headers should be used during loading. r=emilio
MozReview-Commit-ID: JJ5lZRwS6Be
2018-01-29 13:55:38 -05: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
Bobby Holley
423f62c5b4 Bug 1418161 - Cache style attribute serialization during the parallel traversal. r=emilio
MozReview-Commit-ID: 1izMRY2bmzE
2018-01-30 14:11:13 -08:00
Emilio Cobos Álvarez
b4f962dbbd Bug 1422524: Inline nsAttrValue::Type. r=xidorn
MozReview-Commit-ID: I2uTeremrsS
2017-12-02 20:43:12 +01:00
Kris Maglione
216aeda277 Bug 1415352: Part 1b - Store the subject principal when parsing style attributes. r=bz
This change stores the subject principal in the URLExtraData when parsing
style attributes, which causes it to be used as the triggering principal for
those loads rather than defaulting to the document principal.

MozReview-Commit-ID: 22tmNRRCgaj
2017-11-02 13:36:14 -07:00
Nicholas Nethercote
7dbfdaf890 Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro.
(Path is actually r=froydnj.)

Bug 1400459 devirtualized nsIAtom so that it is no longer a subclass of
nsISupports. This means that nsAtom is now a better name for it than nsIAtom.

MozReview-Commit-ID: 91U22X2NydP
2017-10-03 09:05:19 +11:00
Nicholas Nethercote
9fda5528d2 Bug 1400459 (part 2) - Devirtualize nsIAtom. r=heycam.
This patch merges nsAtom into nsIAtom. For the moment, both names can be used
interchangeably due to a typedef. The patch also devirtualizes nsIAtom, by
making it not inherit from nsISupports, removing NS_DECL_NSIATOM, and dropping
the use of NS_IMETHOD_. It also removes nsIAtom's IIDs.

These changes trigger knock-on changes throughout the codebase, changing the
types of lots of things as follows.

- nsCOMPtr<nsIAtom> --> RefPtr<nsIAtom>

- nsCOMArray<nsIAtom> --> nsTArray<RefPtr<nsIAtom>>
  - Count() --> Length()
  - ObjectAt() --> ElementAt()
  - AppendObject() --> AppendElement()
  - RemoveObjectAt() --> RemoveElementAt()

- ns*Hashtable<nsISupportsHashKey, ...> -->
  ns*Hashtable<nsRefPtrHashKey<nsIAtom>, ...>

- nsInterfaceHashtable<T, nsIAtom> --> nsRefPtrHashtable<T, nsIAtom>
  - This requires adding a Get() method to nsRefPtrHashtable that it lacks but
    nsInterfaceHashtable has.

- nsCOMPtr<nsIMutableArray> --> nsTArray<RefPtr<nsIAtom>>
  - nsArrayBase::Create() --> nsTArray()
  - GetLength() --> Length()
  - do_QueryElementAt() --> operator[]

The patch also has some changes to Rust code that manipulates nsIAtom.

MozReview-Commit-ID: DykOl8aEnUJ
2017-09-26 08:33:21 +10:00