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

70 Коммитов

Автор SHA1 Сообщение Дата
Emilio Cobos Álvarez c93246dbbb Bug 1685078 - Add a flag to reflow when the size is available, and use it for bullets. r=TYLin
Without blocking onload (which preserves behavior before this patch
series) or requiring a decode for stuff like invisible bullets.

Differential Revision: https://phabricator.services.mozilla.com/D101072
2021-01-08 09:44:58 +00:00
Emilio Cobos Álvarez 7bcee83034 Bug 1685078 - Refactor some ImageLoader code for legibility / code reuse. r=TYLin
These will make the following patch clearer.

Differential Revision: https://phabricator.services.mozilla.com/D101071
2021-01-08 09:44:55 +00:00
Emilio Cobos Álvarez dbf895e4c3 Bug 1685078 - Use enum classes and more explicit names for ImageLoader flags. r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D101070
2021-01-08 09:44:47 +00:00
Emilio Cobos Álvarez e907c1f711 Bug 1685078 - Remove some useless includes from ImageLoader.h. r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D101069
2021-01-08 09:44:40 +00:00
Simon Giesecke 96fb649d21 Bug 1652017 - Remove unnecessary includes for expensive nsIFrame.h. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D83111
2020-07-15 13:44:39 +00:00
Simon Giesecke 8aa47bcfb7 Bug 1613985 - Use default for equivalent-to-default constructors/destructors in layout. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D66016

--HG--
extra : moz-landing-system : lando
2020-03-17 09:38:32 +00:00
Boris Zbarsky 4e0a47195b Bug 1621835. Make imgINotificationObserver::Notify a void method, since no one examines its return value anyway. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D66513

--HG--
extra : moz-landing-system : lando
2020-03-12 04:25:34 +00:00
Mihai Alexandru Michis 795c7787a3 Backed out changeset 3552ac882d4f (bug 1621835) for causing bustages.
CLOSED TREE
2020-03-12 04:15:33 +02:00
Boris Zbarsky e5766424b8 Bug 1621835. Make imgINotificationObserver::Notify a void method, since no one examines its return value anyway. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D66513

--HG--
extra : moz-landing-system : lando
2020-03-12 01:46:16 +00:00
Sylvestre Ledru ca6530131a Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan,kvark
# ignore-this-changeset

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

--HG--
extra : moz-landing-system : lando
2020-02-24 15:33:38 +00:00
Emilio Cobos Álvarez fb586787c5 Bug 1614208 - Remove more dependencies on nsStyleConsts.h / ServoStyleConsts.h. r=jfkthame
Mostly what I was seeing come up in the .deps files from my object directory
which sounded feasible.

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

--HG--
extra : moz-landing-system : lando
2020-02-11 01:22:15 +00:00
Emilio Cobos Álvarez 374cabd6e7 Bug 1606628 - Remove nsStyleImageRequest. r=tnikkel,heycam
This removes nsStyleImageRequest by moving the load state to LoadData instead
(where other lazy state like the resolved URL and load id lives).

That way we can use cbindgen for more stuff (there's no blocker for using it for
all images now), and we can undo the image tracking shenanigans that I had to do
in bug 1605803 in nsImageFrame.

This removes the mDocGroup member because well, there's no real upside of that
now that quantum DOM is not a thing.

It also removes the static clones of the image requests, and the need for each
computed value instance to have its own request. These were needed because we
needed the image loader for the particular document to observe the image
changes. But we were also tracking the request -> loader for other purposes.
Instead, Now all the images get loaded with GlobalImageObserver as a listener,
which looks in the image map and forwards the notification to all the interested
loaders instead dynamically.

The style value is only responsible to load the image, and no longer tracks /
locks it. Instead, the loader does so, via the image tracker.

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

--HG--
extra : moz-landing-system : lando
2020-02-07 20:36:34 +00:00
Mihai Alexandru Michis 823e8c21f1 Backed out changeset c9f4dd3ed78b (bug 1606628) for causing failures in ImageLoader.cpp
CLOSED TREE
2020-02-06 23:19:55 +02:00
Emilio Cobos Álvarez 77c6b3e983 Bug 1606628 - Remove nsStyleImageRequest. r=tnikkel,heycam
This removes nsStyleImageRequest by moving the load state to LoadData instead
(where other lazy state like the resolved URL and load id lives).

That way we can use cbindgen for more stuff (there's no blocker for using it for
all images now), and we can undo the image tracking shenanigans that I had to do
in bug 1605803 in nsImageFrame.

This removes the mDocGroup member because well, there's no real upside of that
now that quantum DOM is not a thing.

It also removes the static clones of the image requests, and the need for each
computed value instance to have its own request. These were needed because we
needed the image loader for the particular document to observe the image
changes. But we were also tracking the request -> loader for other purposes.
Instead, Now all the images get loaded with GlobalImageObserver as a listener,
which looks in the image map and forwards the notification to all the interested
loaders instead dynamically.

The style value is only responsible to load the image, and no longer tracks /
locks it. Instead, the loader does so, via the image tracker.

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

--HG--
extra : moz-landing-system : lando
2020-02-06 20:32:59 +00:00
Cameron McCormack 9115e99eb4 Bug 1598480 - Make SVG images respond to theme changes. r=tnikkel,emilio
Differential Revision: https://phabricator.services.mozilla.com/D56156

--HG--
extra : moz-landing-system : lando
2019-12-13 02:04:07 +00:00
Edgar Chen a3adabe5a7 Bug 1568950 - Part 5: Remove nsIDOMWindowUtils::forceUseCounterFlush; r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D42818

--HG--
extra : moz-landing-system : lando
2019-08-21 12:52:19 +00:00
Thomas Nguyen 32ab8293ff Bug 1528697 - Expose ReferrerPolicy.webidl and use referrerpolicy enum r=smaug
ReferrerPolicy gets tossed back and forth as a uint32_t and
ReferrerPolicy enum in header file. Expose ReferrerPolicyValues from
webidl file and use consistently in native code.

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

--HG--
extra : moz-landing-system : lando
2019-08-21 13:24:45 +00:00
Emilio Cobos Álvarez a384dedd93 Bug 1552708 - Use cbindgen for URIs. r=heycam
This doesn't clean up as much as a whole, but it's a step in the right
direction. In particular, it allows us to start using simple bindings for:

 * Filters
 * Shapes and images, almost. Need to:
   * Get rid of the complex -moz- gradient parsing (let
     layout.css.simple-moz-gradient.enabled get to release).
 * Counters, almost. Need to:
   * Share the Attr representation with Gecko, by not using Option<>.
     * Just another variant should be enough (ContentItem::{Attr,Prefixedattr},
       maybe).

Which in turn allows us to remove a whole lot of bindings in followups to this.

The setup changes a bit. This also removes the double pointer I complained about
while reviewing the shared UA sheet patches. The old setup is:

```
SpecifiedUrl
 * CssUrl
   * Arc<CssUrlData>
     * String
     * UrlExtraData
 * UrlValueSource
   * Arc<CssUrlData>
   * load id
   * resolved uri
   * CORS mode.
   * ...
```

The new one removes the double reference to the url data via URLValue, and looks
like:

```
SpecifiedUrl
 * CssUrl
   * Arc<CssUrlData>
     * String
     * UrlExtraData
     * CorsMode
     * LoadData
       * load id
       * resolved URI
```

The LoadData is the only mutable bit that C++ can change, and is not used from
Rust. Ideally, in the future, we could just use rust-url to resolve the URL
after parsing or something, and make it all immutable. Maybe.

I've verified that this approach still works with the UA sheet patches (via the
LoadDataSource::Lazy).

The reordering of mWillChange is to avoid nsStyleDisplay from going over the
size limit. We want to split it up anyway in bug 1552587, but mBinding gains a
tag member, which means that we were having a bit of extra padding.

One thing I want to explore is to see if we can abuse rustc's non-zero
optimizations to predict the layout from C++, but that's something to explore at
some other point in time and with a lot of care and help from Michael (who sits
next to me and works on rustc ;)).

Differential Revision: https://phabricator.services.mozilla.com/D31742
2019-05-29 21:22:04 +02:00
Brindusan Cristian 40a5b04ab5 Backed out 3 changesets (bug 1552708, bug 1552878) for build bustages and compiler issues. CLOSED TREE
Backed out changeset 9d4f178bfcbd (bug 1552878)
Backed out changeset 80db9f845237 (bug 1552708)
Backed out changeset 1bdbfbb5b342 (bug 1552708)
2019-05-27 17:00:03 +03:00
Emilio Cobos Álvarez f2190857bb Bug 1552708 - Use cbindgen for URIs. r=heycam
This doesn't clean up as much as a whole, but it's a step in the right
direction. In particular, it allows us to start using simple bindings for:

 * Filters
 * Shapes and images, almost. Need to:
   * Get rid of the complex -moz- gradient parsing (let
     layout.css.simple-moz-gradient.enabled get to release).
 * Counters, almost. Need to:
   * Share the Attr representation with Gecko, by not using Option<>.
     * Just another variant should be enough (ContentItem::{Attr,Prefixedattr},
       maybe).

Which in turn allows us to remove a whole lot of bindings in followups to this.

The setup changes a bit. This also removes the double pointer I complained about
while reviewing the shared UA sheet patches. The old setup is:

```
SpecifiedUrl
 * CssUrl
   * Arc<CssUrlData>
     * String
     * UrlExtraData
 * UrlValueSource
   * Arc<CssUrlData>
   * load id
   * resolved uri
   * CORS mode.
   * ...
```

The new one removes the double reference to the url data via URLValue, and looks
like:

```
SpecifiedUrl
 * CssUrl
   * Arc<CssUrlData>
     * String
     * UrlExtraData
     * CorsMode
     * LoadData
       * load id
       * resolved URI
```

The LoadData is the only mutable bit that C++ can change, and is not used from
Rust. Ideally, in the future, we could just use rust-url to resolve the URL
after parsing or something, and make it all immutable. Maybe.

I've verified that this approach still works with the UA sheet patches (via the
LoadDataSource::Lazy).

The reordering of mWillChange is to avoid nsStyleDisplay from going over the
size limit. We want to split it up anyway in bug 1552587, but mBinding gains a
tag member, which means that we were having a bit of extra padding.

One thing I want to explore is to see if we can abuse rustc's non-zero
optimizations to predict the layout from C++, but that's something to explore at
some other point in time and with a lot of care and help from Michael (who sits
next to me and works on rustc ;)).

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

--HG--
extra : moz-landing-system : lando
2019-05-27 11:45:12 +00:00
Andrew Osmond bc9d7000be Bug 1527085 - Ensure we invalidate when the image request changes. r=jrmuizel
When the underlying image request (imgIRequest) changes for an image, we
need to ensure that we invalidate the cached WebRenderImageData such that
the image container stored therein is updated to be for the correct
image. This gets a little tricky because some display items store both
the current and previous images, and choose to display the latter if the
former is not yet ready. We also don't know what image the image
container belongs to. As such, we now compare the producer ID of the
current frame in the image container, to the expected producer ID of the
current image request. If they don't match, we must regenerate the
display list.

Differential Revision: https://phabricator.services.mozilla.com/D19699
2019-02-15 09:24:21 -05:00
Emilio Cobos Álvarez d2ed260822 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
Ting-Yu Lin fa4ee54fff Bug 1433039 - Rename ImageLoader::DoRedraw to ImageLoader::RequestPaintIfNeeded. r=dholbert
The function doesn't do painting synchronously but schedule painting if
certain conditions are met. Hence the rename.

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

--HG--
extra : moz-landing-system : lando
2018-12-19 23:01:38 +00:00
Sylvestre Ledru 265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Emilio Cobos Álvarez e088200f02 Bug 1497981 - Simplify ImageLoader::LoadImage. r=heycam
Has a single caller, from which we pass the arguments. We can just avoid that.

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

--HG--
extra : moz-landing-system : lando
2018-10-15 12:24:58 +00:00
Cameron McCormack eeb8da104f Bug 1495994 - Part 4: Merge css::{URLValueData, ImageValue} into css::URLValue r=emilio
Depends on D7595

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

--HG--
extra : moz-landing-system : lando
2018-10-10 02:58:20 +00:00
Cameron McCormack 4372b55f4f Bug 1495645 - Move css::ImageValue::mRequests into a global table managed by css::ImageLoader r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D7383

--HG--
extra : moz-landing-system : lando
2018-10-04 00:20:50 +00:00
Thomas Nguyen e9db7825df Bug 1330487 - Part 5: Use correct referrer policy for image loader r=heycam
MozReview-Commit-ID: JA7gkRH9cDJ

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

--HG--
extra : moz-landing-system : lando
2018-09-17 05:36:54 +00:00
Brad Werth ada534c10a Bug 1457532 Part 1: Narrow ImageLoader::OnLoadComplete to only unblock onload in response to an error status on the image request. r=tnikkel
MozReview-Commit-ID: 929PTrT9iP1

--HG--
extra : rebase_source : 062efe4ab3aae5bc85ae696d85ab1cc4081a13e2
2018-04-27 12:00:35 -07:00
Bogdan Tara 310bfd4733 Backed out changeset 754824066ed0 (bug 1457532) for failing layout/style/test/test_value_cloning.html CLOSED TREE 2018-05-08 21:04:34 +03:00
Brad Werth 73459dace9 Bug 1457532: Narrow ImageLoader::OnLoadComplete to only unblock onload in response to an error status on the image request. r=tnikkel
MozReview-Commit-ID: 929PTrT9iP1

--HG--
extra : rebase_source : 31fe60c655b12b12c1225ef7cb51b6d1e8fd4f7b
2018-04-27 12:00:35 -07:00
Ting-Yu Lin ext:(%2C%20Brad%20Werth%20%3Cbwerth%40mozilla.com%3E) cf9bd1c885 Bug 1404222 Part 3: Block onload when shape-outside images are requested for a frame, and keep it blocked until the frame is removed, the image fails to load, or reflow is complete. r=dbaron,dholbert
When we finish decoding an image frame, we need to trigger reflow for the
frame containing a float with shape-outside: <image>, and delay the firing
of the document's onload event until that reflow is complete.
2018-01-25 14:56:43 +08:00
Brad Werth d38c3aac41 Bug 1404222 Part 2: Extend ImageLoader to associate flags with each request-frame relationship. r=dbaron 2018-03-16 11:01:57 -07:00
Ryan VanderMeulen e5ec40f40c Backed out 11 changesets (bug 1404222) for static analysis failures on a CLOSED TREE.
Backed out changeset a6a99136300c (bug 1404222)
Backed out changeset 7183b8104399 (bug 1404222)
Backed out changeset a1e4294c1c59 (bug 1404222)
Backed out changeset b79d6e8318db (bug 1404222)
Backed out changeset 0450620fdabd (bug 1404222)
Backed out changeset 026c74a92d04 (bug 1404222)
Backed out changeset 50ac4167f702 (bug 1404222)
Backed out changeset 59038f2db68a (bug 1404222)
Backed out changeset f6b9096da915 (bug 1404222)
Backed out changeset 4e0baffdd79b (bug 1404222)
Backed out changeset 57eeb849ab88 (bug 1404222)
2018-04-02 17:57:27 -04:00
Daniel Holbert 2f5d7919b0 Bug 1404222 followup: add 'explicit' keyword to fix static analysis build error. (no review, trivial bustagefix) 2018-04-02 14:08:33 -07:00
Ting-Yu Lin ext:(%2C%20Brad%20Werth%20%3Cbwerth%40mozilla.com%3E) fe87490f1a Bug 1404222 Part 3: Block onload when shape-outside images are requested for a frame, and keep it blocked until the frame is removed or reflow is complete. r=dbaron,dholbert
When we finish decoding an image frame, we need to trigger reflow for the
frame containing a float with shape-outside: <image>, and delay the firing
of the document's onload event until that reflow is complete.
2018-01-25 14:56:43 +08:00
Brad Werth 311eb01351 Bug 1404222 Part 2: Extend ImageLoader to associate flags with each request-frame relationship. r=dbaron 2018-03-16 11:01:57 -07:00
Brad Werth 1c1244f196 Bug 1418930 Part 2: Extend ImageLoader with a parameter to add anonymous CORS headers. r=bz,emilio
MozReview-Commit-ID: LobEEXmuNZ2

--HG--
extra : rebase_source : 71d1224201940624f2f1a68f4d3cf331aca55e72
2018-01-25 14:14:13 -08:00
Andreea Pavel 9cd5dfd3a9 Backed out 5 changesets (bug 1418930) for failing web platform tests at /service-workers/service-worker/fetch-request-css-images.https.html on a CLOSED TREE
Backed out changeset c0f673033e66 (bug 1418930)
Backed out changeset b39948ba905b (bug 1418930)
Backed out changeset 8008a54aba9a (bug 1418930)
Backed out changeset 105c81284dba (bug 1418930)
Backed out changeset 27eb8c7f8025 (bug 1418930)
2018-02-03 00:18:27 +02:00
Brad Werth f168a6a02d Bug 1418930 Part 2: Extend ImageLoader with a parameter to add anonymous CORS headers. r=bz,emilio
MozReview-Commit-ID: LobEEXmuNZ2

--HG--
extra : rebase_source : de661d5789162b0be3202c2a1b03d0515e5de01f
2018-01-25 14:14:13 -08:00
Andrew Osmond 95ee2e55dc Bug 1404422 - Part 4. Remove imgIOnloadBlocker and related from tree as redundant. r=tnikkel 2017-11-01 06:59:10 -04:00
Daniel Holbert 680815cd6e Bug 1412346 part 5: (automated patch) Switch a bunch of C++ files in layout to use our standard mode lines. r=jfkthame
This patch was generated automatically by the "modeline.py" script, available
here: https://github.com/amccreight/moz-source-tools/blob/master/modeline.py

For every file that is modified in this patch, the changes are as follows:
 (1) The patch changes the file to use the exact C++ mode lines from the
     Mozilla coding style guide, available here:
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line

 (2) The patch deletes any blank lines between the mode line & the MPL
     boilerplate comment.

 (3) If the file previously had the mode lines and MPL boilerplate in a
     single contiguous C++ comment, then the patch splits them into
     separate C++ comments, to match the boilerplate in the coding style.

MozReview-Commit-ID: EuRsDue63tK

--HG--
extra : rebase_source : 3356d4b80ff6213935192e87cdbc9103fec6084c
2017-10-27 10:33:53 -07:00
Mats Palmgren b6cdce350c Bug 1367207 part 2 - Update mFrameToRequestMap/mRequestToFrameMap more efficiently on frame removal. r=dholbert
Specifically:
* Factor out updating mFrameToRequestMap/mRequestToFrameMap to helper functions.
* Deal with mFrameToRequestMap directly in DropRequestsForFrame to avoid
  a second hashtable Get().
* Use RemoveAndForget() to remove the entry upfront and iterate that instead of
  making an nsTArray copy.  And don't remove entries from the array while
  iterating - the array will be deleted when the nsAutoPtr goes out of scope.

MozReview-Commit-ID: 7Z7FMXMvM14
2017-06-07 15:22:41 +02:00
Nathan Froyd 797182f90f Bug 968923 - part 5b - add nsIDOMWindowUtils::forceUseCounterFlush; r=bz
Use counter submission normally happens at document destruction.  For
testing use counters, however, we need to have use counters updated in
telemetry at deterministic points.  Therefore, we provide a method on
nsIDOMWindowUtils that forces use counters out to telemetry so we can
examine them.
2015-03-17 15:25:35 -04:00
Kyle Huey 045d850af1 Bug 1186780: Replace EnumerateRead with new iterators in ImageLoader. r=dbaron 2015-07-30 13:48:10 -07:00
Andrea Marchesini e6f385fb3d Bug 1148527 - Indentation fix after bug 1145631, r=ehsan 2015-03-27 18:52:19 +00:00
Ehsan Akhgari 883849ee32 Bug 1145631 - Part 1: Replace MOZ_OVERRIDE and MOZ_FINAL with override and final in the tree; r=froydnj
This patch was automatically generated using the following script:

function convert() {
echo "Converting $1 to $2..."
find . \
       ! -wholename "*/.git*" \
       ! -wholename "obj-ff-dbg*" \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_OVERRIDE override
convert MOZ_FINAL final
2015-03-21 12:28:04 -04:00
Seth Fowler a886c715d8 Bug 1098202 (Part 1) - Rename imgINotificationObserver handlers to be consistent with the notifications they handle. r=tn
--HG--
extra : rebase_source : 991d277afba4826ed403b74bbcbb9408b3dac0cc
2014-11-17 14:29:56 -08:00
Seth Fowler 819193bb68 Bug 969406 - Make ImageLoader force painting on FRAME_COMPLETE but not FRAME_CHANGED. r=mattwoodrow 2014-11-07 15:40:12 -08:00
Timothy Nikkel 295021d470 Bug 1033679. When we clear frames from the image loader make sure that we also remove the images from the refresh driver. r=khuey
Normally a frame being destroyed would do this via PresShell::NotifyDestroyingFrame -> ImageLoader::DropRequestsForFrame but when we are tearing down the whole frame tree we skip per frame notifications like that for perf reasons. So we now make sure to do it when clearing out frames wholesale.

We also need to pass a prescontext pointer to ClearFrames because the ImageLoader only has a document pointer, and by that point in the presshell destruction sequence the presshell pointer on the document has been cleared.
2014-09-04 23:27:16 -05:00