Граф коммитов

496 Коммитов

Автор SHA1 Сообщение Дата
Emilio Cobos Álvarez 60812fc63c Bug 1711437 - Don't EnsureUniqueInner from the cssRules getter. r=layout-reviewers,jfkthame
Instead, fix up the various content data structures when the stylesheet
is mutated. This makes reading a stylesheet not disable style sharing.

Differential Revision: https://phabricator.services.mozilla.com/D115203
2021-07-20 13:17:02 +00:00
Dorel Luca d1e1f219ba Backed out changeset 0e17878eeb86 (bug 1711437) for causing Bug 1719963. a=backout DONTBUILD 2021-07-14 00:36:05 +03:00
Emilio Cobos Álvarez 241951bce9 Bug 1711437 - Don't EnsureUniqueInner from the cssRules getter. r=layout-reviewers,jfkthame
Instead, fix up the various content data structures when the stylesheet
is mutated. This makes reading a stylesheet not disable style sharing.

Differential Revision: https://phabricator.services.mozilla.com/D115203
2021-07-12 16:02:58 +00:00
Alexandru Michis 6550c23862 Backed out changeset 998af7ced46f (bug 1711437) for causing Bug 1719963. a=backout 2021-07-10 12:44:08 +03:00
Emilio Cobos Álvarez 3de336bbc1 Bug 1711437 - Don't EnsureUniqueInner from the cssRules getter. r=layout-reviewers,jfkthame
Instead, fix up the various content data structures when the stylesheet
is mutated. This makes reading a stylesheet not disable style sharing.

Differential Revision: https://phabricator.services.mozilla.com/D115203
2021-07-09 16:25:54 +00:00
Hubert Boma Manilla 7f97d78756 Bug 1638259 - Notify devtools when style resources blocked on CSP r=necko-reviewers,valentin,emilio
Differential Revision: https://phabricator.services.mozilla.com/D102599
2021-04-06 22:40:26 +00:00
Simon Giesecke 613e20d136 Bug 1184468 - Use nsBaseHashtable::Values. r=xpcom-reviewers,nika
Differential Revision: https://phabricator.services.mozilla.com/D108587
2021-03-24 17:56:49 +00:00
Nika Layzell c733984c4b Bug 1675820 - Part 6: Make DocGroup cycle-collected, r=farre,smaug
Previously, the DocGroup type was not cycle-collected, as it needed to have
references from other threads for Quantum DOM. Nowadays the only off-main-thread
use of DocGroup is for dispatching runnables to the main thread which should be
tracked using a performance counter for about:performance. This means we can
remove the DocGroup references from these dispatching callsites, only storing
the Performance Counter we're interested in, and simplify make DocGroup be
cycle-collected itself.

This fixes a leak caused by adding the WindowGlobalChild getter to
WindowContext, by allowing cycles between the document and its BrowsingContext
to be broken by the cycle-collector.

Differential Revision: https://phabricator.services.mozilla.com/D108865
2021-03-18 19:24:50 +00:00
Simon Giesecke b9621d6376 Bug 1695162 - Use range-based for instead of custom hashtable iterators. r=xpcom-reviewers,kmag
Differential Revision: https://phabricator.services.mozilla.com/D108585
2021-03-17 15:49:46 +00:00
Simon Giesecke 9af107a839 Bug 1691913 - Rename nsBaseHashtable::Put to InsertOrUpdate. r=xpcom-reviewers,necko-reviewers,jgilbert,dragana,nika
This makes the naming more consistent with other functions called
Insert and/or Update. Also, it removes the ambiguity whether
Put expects that an entry already exists or not, in particular because
it differed from nsTHashtable::PutEntry in that regard.

Differential Revision: https://phabricator.services.mozilla.com/D105473
2021-02-26 09:11:46 +00:00
Gerald Squelart 2416d881e2 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
Sylvestre Ledru b4f9be25d4 Bug 1519636 - Reformat recent changes to the Google coding style r=andi,necko-reviewers
Updated with clang-format version 11.0.1 (taskcluster-B6bdwSKDRF-luRQWXBuzpA)

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D105158
2021-02-15 08:49:20 +00:00
Emilio Cobos Álvarez fe36177806 Bug 1637651 - Assume non-quirks mode for style Link header preloads. r=smaug
This is an issue I found while going through this code and
writing/debugging a test for the bug at hand. Without this, the test in
the actual fix for this bug will fail to actually reuse the preloaded
stylesheet.

It seems reasonable to assume that the intersection of quirks mode
documents using link preload headers is small (and in that case we'd
parse the sheet twice, but oh well).

Differential Revision: https://phabricator.services.mozilla.com/D103567
2021-02-01 23:23:50 +00:00
Emilio Cobos Álvarez b3eef044a7 Bug 1687127 - Remove dom.expose-incomplete-stylesheets. r=boris
Shipped in 84 (bug 1673885).

Differential Revision: https://phabricator.services.mozilla.com/D102090
2021-01-19 22:21:09 +00:00
Emilio Cobos Álvarez 039592f4d8 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 971b645fe3 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 38919a1a21 Bug 1673885 - Don't expose incomplete sheets in LinkStyle.sheet / Document.styleSheets. r=nordzilla
This matches other browsers, and common sense to some extent.

The code is a bit awkward because I want this behind a pref for now, as
it's not precisely a zero-risk change.

Differential Revision: https://phabricator.services.mozilla.com/D95065
2020-11-01 15:45:40 +00:00
Narcis Beleuzu 9e31b464f7 Backed out changeset 1ee5fddc1caf (bug 1673885) for wpt failures on ttwf-cssom-doc-ext-load-tree-order.html CLOSED TREE 2020-10-31 02:43:31 +02:00
Emilio Cobos Álvarez 2c6198ff82 Bug 1673885 - Don't expose incomplete sheets in LinkStyle.sheet / Document.styleSheets. r=nordzilla
This matches other browsers, and common sense to some extent.

The code is a bit awkward because I want this behind a pref for now, as
it's not precisely a zero-risk change.

Differential Revision: https://phabricator.services.mozilla.com/D95065
2020-10-30 23:30:14 +00:00
Narcis Beleuzu dc2519c7ca Backed out changeset 702857fa260e (bug 1673885) for wpt failures on ttwf-cssom-doc-ext-load-count.html CLOSED TREE 2020-10-30 23:08:37 +02:00
Emilio Cobos Álvarez f8d2ad7b26 Bug 1673885 - Don't expose incomplete sheets in LinkStyle.sheet / Document.styleSheets. r=nordzilla
This matches other browsers, and common sense to some extent.

The code is a bit awkward because I want this behind a pref for now, as
it's not precisely a zero-risk change.

Differential Revision: https://phabricator.services.mozilla.com/D95065
2020-10-30 19:24:22 +00:00
Simon Giesecke de7bab0f06 Bug 1650145 - Replace all value uses of Empty[C]String by 0-length _ns literals. r=froydnj,geckoview-reviewers,agi
Differential Revision: https://phabricator.services.mozilla.com/D82325
2020-09-23 15:17:15 +00:00
Emilio Cobos Álvarez 302b74debe Bug 1657173 - Make <link rel=preload as=style> not block onload incorrectly. r=mayhemer
And fix the only WPT for this while at it which was using the wrong URL
(and thus would always pass).

This actually makes me a bit uncomfortable given the amount of times
I've seen the pattern:

    <link href="important.css" rel="preload" as="style" onload="this.rel = 'stylesheet'">

As that means that important.css won't block the load event. But let's
try.

Differential Revision: https://phabricator.services.mozilla.com/D86049
2020-08-11 09:41:28 +00:00
Simon Giesecke 202c188ca0 Bug 1652960 - Remove unnecessary includes from Document.h. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D83634
2020-07-15 15:48:53 +00:00
Frederik Braun a7153982e8 Bug 1366973: Rename security flags to not contain DATA anymore r=geckoview-reviewers,ckerschb,snorp
Differential Revision: https://phabricator.services.mozilla.com/D83490
2020-07-15 11:20:45 +00:00
Simon Giesecke cd8b8939b9 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 67f90f0a9e Bug 1648736 - Don't mark a load as performed on a given document until it has actually finished. r=heycam
Consider the case where we have an expired entry in the cache, and we
load a new document.

We get an speculative load from the HTML parser. That's great, and we
see the entry is expired and actually fired the load.

But then, we actually get to the load that the <link> element performs,
and we see that we've already performed this load, so instead of peeking
the in-progress load, we go ahead and peek the expired "complete" cache
entry, which is not what we want.

By marking a load as performed only once it has finished, we avoid the
complete sheet cache, and glom onto the existing load instead, which is
the correct thing to do.

Differential Revision: https://phabricator.services.mozilla.com/D81318
2020-06-29 17:29:06 +00:00
Razvan Maries be1983c22c Backed out changeset 6b6e6e9ef6a5 (bug 1648736) for reftests failures. CLOSED TREE 2020-06-29 17:13:20 +03:00
Emilio Cobos Álvarez fa2b0a4ba3 Bug 1648736 - Don't mark a load as performed on a given document until it has actually finished. r=heycam
Consider the case where we have an expired entry in the cache, and we
load a new document.

We get an speculative load from the HTML parser. That's great, and we
see the entry is expired and actually fired the load.

But then, we actually get to the load that the <link> element performs,
and we see that we've already performed this load, so instead of peeking
the in-progress load, we go ahead and peek the expired "complete" cache
entry, which is not what we want.

By marking a load as performed only once it has finished, we avoid the
complete sheet cache, and glom onto the existing load instead, which is
the correct thing to do.

Differential Revision: https://phabricator.services.mozilla.com/D81318
2020-06-29 10:51:37 +00:00
Emilio Cobos Álvarez 8ae606c7bf Bug 1648095 - Don't defer the same sheet load twice. r=heycam
When we call into LoadSheet when starting pending loads for a given
loader, it may be the case that the original loader may still not care
about the load. However some other loader will, so we can't defer this.

This was also causing our state to get out of sync, because if this
happened, then we'd fail to account for it in other loaders.

Differential Revision: https://phabricator.services.mozilla.com/D81119
2020-06-26 01:17:40 +00:00
Emilio Cobos Álvarez 45dcbc2d5c Bug 1645987 - Isolate sheet cache by partitioned principal. r=baku
Differential Revision: https://phabricator.services.mozilla.com/D80678
2020-06-24 06:47:38 +00:00
Honza Bambas 6018bc4a66 Bug 1603542 - Properly mark CSS preloads as used when processing stylesheet tags or imports, r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D76528
2020-06-23 17:18:47 +00:00
Emilio Cobos Álvarez 3dba84f650 Bug 1645122 - Properly block onload when coalescing loads with other documents. r=heycam
If two loading documents hit the sheet cache and we coalesce the
resource load, there's nothing that prevents the load event on the
second document from firing right now, and there should be.

While at it, also fix the handling of the pending load count, though
it has no correctness impact on the particular test we're fixing here...

We were never decrementing it, which is of course wrong. However it
kinda ended up working because it just causes us to not defer more
loads.

The new assertions and responsibility of the counter should ensure it
stays correct.

Differential Revision: https://phabricator.services.mozilla.com/D80583
2020-06-23 08:27:54 +00:00
Emilio Cobos Álvarez e696ebbe20 Bug 1646776 - Move the preloader for stylesheets to SheetLoadData rather than StreamLoader. r=mayhemer
So as to make sense in a world where we can coalesce loads across
documents. The per-load object is the SheetLoadData, so this way we
guarantee that we fire the right events in presence of the load
coalescing that the SharedStyleSheetCache does.

Differential Revision: https://phabricator.services.mozilla.com/D80380
2020-06-22 18:10:07 +00:00
Emilio Cobos Álvarez 8c691e51cb Bug 1646776 - Don't set an URL for pending constructable stylesheet parses. r=heycam
This shouldn't have any behavior change, but it makes the code make a
bit more sense. Rather than counting inline stylesheets like a pending
load, we won't (but note that any @import inside it will).

The SheetLoadData::mURL it's supposed to be the url of the stylesheet,
so for StyleSheet::Replace it should be null.

Differential Revision: https://phabricator.services.mozilla.com/D80379
2020-06-23 02:54:58 +00:00
Emilio Cobos Álvarez 9541790d6a Bug 1646776 - Add some logging for sheet cache misses for the same URI. r=heycam
This makes it easy to see why your test is not failing without your
patch, for example ;)

Note that we log only when the URIs are the same, which
I think is a reasonable compromise in verbosity.

Differential Revision: https://phabricator.services.mozilla.com/D80288
2020-06-22 10:48:44 +00:00
Simon Giesecke f74c1b7be0 Bug 1645339 - Use range-based for with nsTObserverArray in layout/style. r=heycam
Differential Revision: https://phabricator.services.mozilla.com/D79506
2020-06-22 08:44:05 +00:00
Emilio Cobos Álvarez 6bb08bd490 Bug 1646056 - Use const references as keys instead of raw pointers for PreloadHashKey. r=mayhemer
Feels a bit more natural for the callers this way. This should have no
behavior change.

Differential Revision: https://phabricator.services.mozilla.com/D79831
2020-06-18 14:06:34 +00:00
Emilio Cobos Álvarez 939c7c466b Bug 1642591 - Don't make referrer policy a cache miss for sub-resource {pre,}loads. r=mayhemer,tnikkel
For preload we're already effectively not using it, I think, due to
bug 1642325.

For images, this matches the spec, see earlier comments in this bug and
https://bugzilla.mozilla.org/show_bug.cgi?id=1174921#c17.  I think it
makes sense for other sub-resources to align as well.

Differential Revision: https://phabricator.services.mozilla.com/D79812
2020-06-18 14:06:20 +00:00
Noemi Erli 22b81ffefa Backed out 2 changesets (bug 1603542) for causing assertion failures in Loader.cpp CLOSED TREE
Backed out changeset cc70c96b63e0 (bug 1603542)
Backed out changeset c3dcacdd97c4 (bug 1603542)
2020-06-17 18:37:45 +03:00
Honza Bambas 4339a72958 Bug 1603542 - Properly mark CSS preloads as used when processing stylesheet tags or imports, r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D76528
2020-06-17 14:07:16 +00:00
Emilio Cobos Álvarez 901e5fd0d7 Bug 1645180 - Don't under-report use counters for documents that hit the shared sheet cache. r=firefox-style-system-reviewers,heycam
This makes us refactor a bit more our setup but I think the end it's
worth it.

Differential Revision: https://phabricator.services.mozilla.com/D79377
2020-06-13 02:03:08 +00:00
Emilio Cobos Álvarez 5df2b6ec58 Bug 1599160 - Stop synthesizing performance timing entries for cache sheets. r=mayhemer
This basically undoes D77842, but it was better done on top than just
removing the patch from the stack. I could squash them if desired.

The previous patch to respect caching headers makes tests much much more
happy, to the point where I'm not sure whether we really need this or
not. Your call whether we should keep it or not.

Differential Revision: https://phabricator.services.mozilla.com/D78660
2020-06-12 19:06:12 +00:00
Emilio Cobos Álvarez e5fe143835 Bug 1599160 - Better integration of the shared stylesheet cache with the network cache. r=tnikkel,mayhemer,heycam
Make the stylesheet cache respect the same headers as the image cache
does. This makes no-cache stylesheets work as they do now, which is
useful for developers that want to develop sites locally, and for
shift-reloads, etc.

Differential Revision: https://phabricator.services.mozilla.com/D78659
2020-06-12 19:06:04 +00:00
Emilio Cobos Álvarez 10eb040bda Bug 1599160 - Add a performance resource entry when hitting the cache for the first time in a document. r=mayhemer,valentin
This matches other browsers, our current behavior, and the test
expectations from various WPTs.

Differential Revision: https://phabricator.services.mozilla.com/D77842
2020-06-12 19:05:56 +00:00
Emilio Cobos Álvarez f3e71a1931 Bug 1599160 - Allow caching stylesheets across documents. r=heycam
This patch implements a per-process cache of parsed stylesheets for
non-inline sheets. The entries are evicted when the document gets
destroyed and there's no other document with the same principal around.

This works fine in practice even when navigating because CC happens
pretty late, but we could add an extra timer if we deem it worth it.

I had to adapt some tests so that they keep passing. They were already
clearing various image / network caches so it seems fine to also clear
this one.

Note that there's a very subtle change in the load data key: We only
miss the cache if the referrer _policy_ is different, not if the
referrer is different. While that is slightly dubious, that is the only
think that makes this effort somewhat worth it. Otherwise stylesheets
would have to be re-fetched if the referrer is different, which
effectively would mean to re-parse it if the document URI is different,
which is bad.

It seems like the network cache only keys on the referrer policy, so it
seems fine to do the same.

Differential Revision: https://phabricator.services.mozilla.com/D77457
2020-06-12 19:31:32 +00:00
Razvan Maries 7b30d6e82e Backed out 7 changesets (bug 1599160) for damp failures. CLOSED TREE
Backed out changeset edb0e17f3c98 (bug 1599160)
Backed out changeset 64b42ac358e6 (bug 1599160)
Backed out changeset ce1521b895e1 (bug 1599160)
Backed out changeset 0b0ff0ad8db7 (bug 1599160)
Backed out changeset c7ef05dae614 (bug 1599160)
Backed out changeset 466cfd0ad5db (bug 1599160)
Backed out changeset b3f28494f0e7 (bug 1599160)
2020-06-12 02:40:38 +03:00
Emilio Cobos Álvarez d1db9f246c Bug 1599160 - Stop synthesizing performance timing entries for cache sheets. r=mayhemer
This basically undoes D77842, but it was better done on top than just
removing the patch from the stack. I could squash them if desired.

The previous patch to respect caching headers makes tests much much more
happy, to the point where I'm not sure whether we really need this or
not. Your call whether we should keep it or not.

Differential Revision: https://phabricator.services.mozilla.com/D78660
2020-06-11 11:42:08 +00:00
Emilio Cobos Álvarez 5048e0ec84 Bug 1599160 - Better integration of the shared stylesheet cache with the network cache. r=tnikkel,mayhemer,heycam
Make the stylesheet cache respect the same headers as the image cache
does. This makes no-cache stylesheets work as they do now, which is
useful for developers that want to develop sites locally, and for
shift-reloads, etc.

Differential Revision: https://phabricator.services.mozilla.com/D78659
2020-06-11 11:42:01 +00:00
Emilio Cobos Álvarez d999791a43 Bug 1599160 - Add a performance resource entry when hitting the cache for the first time in a document. r=mayhemer,valentin
This matches other browsers, our current behavior, and the test
expectations from various WPTs.

Differential Revision: https://phabricator.services.mozilla.com/D77842
2020-06-11 11:41:59 +00:00