Bug 1901414 - Flush layout before firing SVG image doc load. r=dshin

(barely tested, and would need a test written, but it seems easy to do
based on the test case on the bug)

Differential Revision: https://phabricator.services.mozilla.com/D213430
This commit is contained in:
Emilio Cobos Álvarez 2024-06-14 07:33:45 +00:00
Родитель a5bc9e3bf1
Коммит b41e16e215
5 изменённых файлов: 43 добавлений и 2 удалений

Просмотреть файл

@ -319,7 +319,14 @@ nsXMLContentSink::DidBuildModel(bool aTerminated) {
mDocument->RemoveObserver(this);
mIsDocumentObserver = false;
mDocument->EndLoad();
RefPtr<Document> doc = mDocument;
if (!mDeferredLayoutStart && doc->IsBeingUsedAsImage()) {
// Eagerly layout image documents, so that layout-triggered loads have a
// chance of blocking the load event, see bug 1901414.
doc->FlushPendingNotifications(FlushType::Layout);
}
doc->EndLoad();
DropParserAndPerfHint();
}

Просмотреть файл

@ -63,6 +63,6 @@ load 1534346-1.html
load 1604307-1.html
load 1606499-1.html
load 1547895-1.html
skip-if(Android) skip-if(isDebugBuild) load 1747514.html # Bug 1780219
skip-if(Android||isDebugBuild||AddressSanitizer) load 1747514.html # Too slow for some configurations, see bug 1780219 for android for example.
HTTP load 1810896-1.html
load 1854907-1.html

Просмотреть файл

@ -0,0 +1,12 @@
<!doctype html>
<style>
@font-face {
font-family: CustomFont;
src: url("/fonts/Ahem.ttf");
}
svg { font: 25px/1 CustomFont }
body { margin: 0 }
</style>
<svg width="800" height="80">
<text x="0" y="0">Hello, world!</text>
</svg>

Просмотреть файл

@ -0,0 +1,11 @@
<!doctype html>
<meta charset=utf-8>
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1901414">
<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
<link rel="author" href="https://mozilla.org" title="Mozilla">
<link rel="match" href="text-font-face-load-image-ref.html">
<style>
img { image-rendering: crisp-edges }
body { margin: 0 }
</style>
<img id="image" src="text-font-face-load-image.svg">

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

После

Ширина:  |  Высота:  |  Размер: 29 KiB