Closed Bug 1919511 Opened 1 year ago Closed 1 year ago

Defer building the resolved font list in gfxFontGroup until actually needed

Categories

(Core :: Layout: Text and Fonts, enhancement)

enhancement

Tracking

()

RESOLVED FIXED
133 Branch
Tracking Status
firefox133 --- fixed

People

(Reporter: jfkthame, Assigned: jfkthame, NeedInfo)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

To support resolving generics according to the script of the content, we should defer building the resolved font list until we know the specific content to be rendered.

This is preparation for splitting out separate per-script resolved font lists in gfxFontGroup.
By itself, it should not change behavior.

Assignee: nobody → jfkthame
Status: NEW → ASSIGNED
Attachment #9425777 - Attachment description: Bug 1919511 - Defer calling gfxFontGroup::BuildFontList until we really need the resolved font instances. r=#layout → Bug 1919511 - Rename gfxFontGroup::BuildFontList to EnsureFontList, and defer calling it until we really need the resolved font instances. r=#layout
Pushed by jkew@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/8c451596a34f Rename gfxFontGroup::BuildFontList to EnsureFontList, and defer calling it until we really need the resolved font instances. r=layout-reviewers,emilio

Backed out for causing mochitest failures on gfxUserFontSet.cpp

[task 2024-10-10T12:57:46.675Z] 12:57:46     INFO - TEST-START | layout/style/test/test_unicode_range_loading.html
[task 2024-10-10T12:57:50.271Z] 12:57:50     INFO - GECKO(4300) | [4473] Assertion failure: !gfxFontUtils::IsInServoTraversal(), at /builds/worker/checkouts/gecko/gfx/thebes/gfxUserFontSet.cpp:267
[task 2024-10-10T12:57:50.285Z] 12:57:50     INFO -  Initializing stack-fixing for the first stack frame, this may take a while...
[task 2024-10-10T12:58:02.605Z] 12:58:02     INFO - GECKO(4300) | #01: gfxUserFontFamily::~gfxUserFontFamily() [gfx/thebes/gfxUserFontSet.cpp:265]
[task 2024-10-10T12:58:02.605Z] 12:58:02     INFO - GECKO(4300) | #02: gfxFontGroup::FamilyFace::~FamilyFace() [gfx/thebes/gfxTextRun.h:1211]
[task 2024-10-10T12:58:02.606Z] 12:58:02     INFO - GECKO(4300) | #03: nsTArray_Impl<gfxFontGroup::FamilyFace, nsTArrayInfallibleAllocator>::Clear() [xpcom/ds/nsTArray.h:1940]
[task 2024-10-10T12:58:02.606Z] 12:58:02     INFO - GECKO(4300) | #04: gfxFontGroup::EnsureFontList() [gfx/thebes/gfxTextRun.cpp:1907]
[task 2024-10-10T12:58:02.612Z] 12:58:02     INFO - GECKO(4300) | #05: gfxFontGroup::GetFirstValidFont(unsigned int, mozilla::StyleGenericFontFamily*, bool*) [gfx/thebes/gfxTextRun.cpp:2249]
[task 2024-10-10T12:58:02.612Z] 12:58:02     INFO - GECKO(4300) | #06: gfxFontGroup::GetMetricsForCSSUnits(nsFontMetrics::FontOrientation) [gfx/thebes/gfxTextRun.cpp:3812]
[task 2024-10-10T12:58:02.613Z] 12:58:02     INFO - GECKO(4300) | #07: Gecko_GetFontMetrics [layout/style/GeckoBindings.cpp:0]
[task 2024-10-10T12:58:02.613Z] 12:58:02     INFO - GECKO(4300) | #08: style::gecko::media_queries::Device::query_font_metrics [servo/components/style/gecko/media_queries.rs:253]
[task 2024-10-10T12:58:02.613Z] 12:58:02     INFO - GECKO(4300) | #09: style::values::computed::Context::query_font_metrics [servo/components/style/values/computed/mod.rs:400]
[task 2024-10-10T12:58:02.613Z] 12:58:02     INFO - GECKO(4300) | #10: style::values::specified::length::FontRelativeLength::to_computed_value [servo/components/style/values/specified/length.rs:212]
[task 2024-10-10T12:58:02.613Z] 12:58:02     INFO - GECKO(4300) | #11: style::values::computed::length::<impl style::values::specified::length::NoCalcLength>::to_computed_value_with_base_size [servo/components/style/values/computed/length.rs:0]
[task 2024-10-10T12:58:02.614Z] 12:58:02     INFO - GECKO(4300) | #12: style::values::computed::length_percentage::<impl style::values::computed::ToComputedValue for style::values::specified::length::LengthPercentage>::to_computed_value [servo/components/style/values/computed/length_percentage.rs:588]
[task 2024-10-10T12:58:02.614Z] 12:58:02     INFO - GECKO(4300) | #13: <style::values::generics::length::GenericSize<LengthPercent> as style::values::computed::ToComputedValue>::to_computed_value [servo/components/style/values/generics/length.rs:149]
[task 2024-10-10T12:58:02.614Z] 12:58:02     INFO - GECKO(4300) | #14: style::properties::generated::longhands::width::cascade_property [s3:gecko-generated-sources:ba586dd423f3e23b12a9100845790f9f86aedb8a37dec7bfdf1a59fc43a0f29ee3c9117afd3e7d1c4886d1916e35561130eec68e3738a1ae51be22144bbb5988/x86_64-unknown-linux-gnu/debug/build/style-645a5b1c52f9b7fb/out/properties.rs::36088]
[task 2024-10-10T12:58:02.614Z] 12:58:02     INFO - GECKO(4300) | #15: style::properties::cascade::Cascade::apply_one_longhand [servo/components/style/properties/cascade.rs:935]
[task 2024-10-10T12:58:02.614Z] 12:58:02     INFO - GECKO(4300) | #16: style::properties::cascade::Cascade::apply_non_prioritary_properties [servo/components/style/properties/cascade.rs:835]
[task 2024-10-10T12:58:02.615Z] 12:58:02     INFO - GECKO(4300) | #17: style::properties::cascade::apply_declarations [servo/components/style/properties/cascade.rs:373]
[task 2024-10-10T12:58:02.615Z] 12:58:02     INFO - GECKO(4300) | #18: style::stylist::Stylist::cascade_style_and_visited [servo/components/style/stylist.rs:1271]
[task 2024-10-10T12:58:02.615Z] 12:58:02     INFO - GECKO(4300) | #19: style::style_resolver::StyleResolverForElement<E>::cascade_style_and_visited [servo/components/style/style_resolver.rs:382]
[task 2024-10-10T12:58:02.616Z] 12:58:02     INFO - GECKO(4300) | #20: style::style_resolver::StyleResolverForElement<E>::cascade_primary_style [servo/components/style/style_resolver.rs:276]
[task 2024-10-10T12:58:02.616Z] 12:58:02     INFO - GECKO(4300) | #21: style::style_resolver::StyleResolverForElement<E>::resolve_primary_style [servo/components/style/style_resolver.rs:242]
[task 2024-10-10T12:58:02.616Z] 12:58:02     INFO - GECKO(4300) | #22: style::style_resolver::StyleResolverForElement<E>::resolve_style [servo/components/style/style_resolver.rs:297]
[task 2024-10-10T12:58:02.616Z] 12:58:02     INFO - GECKO(4300) | #23: style::traversal::compute_style [servo/components/style/traversal.rs:619]
[task 2024-10-10T12:58:02.616Z] 12:58:02     INFO - GECKO(4300) | #24: style::parallel::style_trees [servo/components/style/parallel.rs:158]
[task 2024-10-10T12:58:02.616Z] 12:58:02     INFO - GECKO(4300) | #25: style::driver::traverse_dom::{{closure}} [servo/components/style/driver.rs:138]
[task 2024-10-10T12:58:02.617Z] 12:58:02     INFO - GECKO(4300) | #26: style::driver::traverse_dom [servo/components/style/driver.rs:127]
[task 2024-10-10T12:58:02.617Z] 12:58:02     INFO - GECKO(4300) | #27: geckoservo::glue::traverse_subtree [servo/ports/geckolib/glue.rs:0]
[task 2024-10-10T12:58:02.617Z] 12:58:02     INFO - GECKO(4300) | #28: Servo_TraverseSubtree [third_party/rust/log/src/macros.rs:49]
[task 2024-10-10T12:58:02.617Z] 12:58:02     INFO - GECKO(4300) | #29: mozilla::ServoStyleSet::StyleDocument(mozilla::ServoTraversalFlags) [layout/style/ServoStyleSet.cpp:0]
[task 2024-10-10T12:58:02.617Z] 12:58:02     INFO - GECKO(4300) | #30: mozilla::RestyleManager::DoProcessPendingRestyles(mozilla::ServoTraversalFlags) [layout/base/RestyleManager.cpp:3238]
[task 2024-10-10T12:58:02.618Z] 12:58:02     INFO - GECKO(4300) | #31: mozilla::RestyleManager::ProcessPendingRestyles() [layout/base/RestyleManager.cpp:3372]
[task 2024-10-10T12:58:02.618Z] 12:58:02     INFO - GECKO(4300) | #32: mozilla::PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush) [layout/base/PresShell.cpp:4385]
[task 2024-10-10T12:58:02.618Z] 12:58:02     INFO - GECKO(4300) | #33: mozilla::dom::Document::FlushPendingNotifications(mozilla::ChangesToFlush) [dom/base/Document.cpp:11276]
[task 2024-10-10T12:58:02.618Z] 12:58:02     INFO - GECKO(4300) | #34: nsIContent::GetPrimaryFrame(mozilla::FlushType) [dom/base/Element.cpp:272]
[task 2024-10-10T12:58:02.618Z] 12:58:02     INFO - GECKO(4300) | #35: nsGenericHTMLElement::GetOffsetRect(mozilla::gfx::IntRectTyped<mozilla::CSSPixel>&) [dom/html/nsGenericHTMLElement.cpp:405]
[task 2024-10-10T12:58:02.619Z] 12:58:02     INFO - GECKO(4300) | #36: mozilla::dom::HTMLElement_Binding::get_offsetHeight(JSContext*, JS::Handle<JSObject*>, void*, JSJitGetterCallArgs) [s3:gecko-generated-sources:961b5e4e21e065058755ff12a76e011ac4d5a39027e21a9cd4ed7faee4ad9a76aed7066969e6780d4e74c954212261380ee197320949cae10e9412d2722994da/dom/bindings/HTMLElementBinding.cpp::1787]
[task 2024-10-10T12:58:02.619Z] 12:58:02     INFO - GECKO(4300) | #37: ??? (???:???)
[task 2024-10-10T12:58:02.620Z] 12:58:02     INFO - GECKO(4300) | [WARN  minidump_writer::linux::sections::mappings] failed to get build id for mapping: Could not read value from module
[task 2024-10-10T12:58:02.620Z] 12:58:02     INFO - GECKO(4300) | [WARN  minidump_writer::linux::sections::mappings] failed to get build id for mapping: Could not read value from module
[task 2024-10-10T12:58:02.621Z] 12:58:02     INFO - GECKO(4300) | [WARN  minidump_writer::linux::sections::mappings] failed to get build id for mapping: Could not read value from module
[task 2024-10-10T12:58:02.622Z] 12:58:02     INFO - GECKO(4300) | [WARN  minidump_writer::linux::sections::mappings] failed to get build id for mapping: Could not read value from module
[task 2024-10-10T12:58:02.622Z] 12:58:02     INFO - GECKO(4300) | [WARN  minidump_writer::linux::sections::mappings] failed to get build id for mapping: Could not read value from module
<...>
[task 2024-10-10T12:58:02.664Z] 12:58:02     INFO - GECKO(4300) | [WARN  minidump_writer::linux::sections::mappings] failed to get build id for mapping: Could not read value from module
[task 2024-10-10T12:58:02.665Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, IPC I/O Parent] WARNING: [1.1]: Dropping message '<null>'; no connection to unknown peer EB93C3D28360FCAA.43C9E2B94E6B3E95: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:364
[task 2024-10-10T12:58:02.665Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, Main Thread] WARNING: IPC message 'PBrowser::Msg_StopIMEStateManagement' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:557
[task 2024-10-10T12:58:02.665Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, ProcessHangMon] WARNING: IPC message 'PProcessHangMonitor::Msg_RequestContentJSInterrupt' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:557
[task 2024-10-10T12:58:02.666Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, Main Thread] WARNING: IPC message 'PBrowser::Msg_Destroy' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:557
[task 2024-10-10T12:58:02.666Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, Main Thread] WARNING: No build ID mismatch: file /builds/worker/checkouts/gecko/dom/base/nsFrameLoader.cpp:3719
[task 2024-10-10T12:58:02.667Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, Main Thread] WARNING: IPC message 'PContent::Msg_GetLayoutHistoryState' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:557
[task 2024-10-10T12:58:02.668Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, Main Thread] WARNING: IPC message 'PContent::Msg_CommitBrowsingContextTransaction' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:557
[task 2024-10-10T12:58:02.668Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, Main Thread] WARNING: IPC message 'PContent::Msg_DiscardBrowsingContext' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:557
[task 2024-10-10T12:58:02.668Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, Main Thread] WARNING: '!sTextInputHandlingWidget', file /builds/worker/checkouts/gecko/dom/events/IMEStateManager.cpp:1235
[task 2024-10-10T12:58:02.669Z] 12:58:02    ERROR - GECKO(4300) | A content process crashed and MOZ_CRASHREPORTER_SHUTDOWN is set, shutting down
[task 2024-10-10T12:58:02.669Z] 12:58:02     INFO - GECKO(4300) | 1728565070701	Marionette	TRACE	Received observer notification quit-application
[task 2024-10-10T12:58:02.670Z] 12:58:02     INFO - GECKO(4300) | 1728565070702	Marionette	INFO	Stopped listening on port 2828
[task 2024-10-10T12:58:02.670Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, Main Thread] WARNING: IPC message 'PContent::Msg_DiscardBrowsingContext' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:557
[task 2024-10-10T12:58:02.671Z] 12:58:02     INFO - GECKO(4300) | 1728565070706	Marionette	DEBUG	Marionette stopped listening
[task 2024-10-10T12:58:02.671Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, Main Thread] WARNING: '!mCancelable', file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:418
[task 2024-10-10T12:58:02.672Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, Main Thread] WARNING: '!mCancelable', file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:418
<...>
[task 2024-10-10T12:58:02.697Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, Main Thread] WARNING: NS_ENSURE_TRUE(!!svc) failed: file /builds/worker/checkouts/gecko/dom/file/uri/BlobURLProtocolHandler.cpp:506
[task 2024-10-10T12:58:02.697Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, Main Thread] WARNING: NS_ENSURE_SUCCESS_VOID(rv) failed with result 0x8000FFFF (NS_ERROR_UNEXPECTED): file /builds/worker/checkouts/gecko/dom/file/uri/BlobURLProtocolHandler.cpp:406
[task 2024-10-10T12:58:02.698Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, Main Thread] WARNING: NS_ENSURE_TRUE(!!svc) failed: file /builds/worker/checkouts/gecko/dom/file/uri/BlobURLProtocolHandler.cpp:506
[task 2024-10-10T12:58:02.698Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, Main Thread] WARNING: NS_ENSURE_SUCCESS_VOID(rv) failed with result 0x8000FFFF (NS_ERROR_UNEXPECTED): file /builds/worker/checkouts/gecko/dom/file/uri/BlobURLProtocolHandler.cpp:406
[task 2024-10-10T12:58:02.699Z] 12:58:02     INFO - GECKO(4300) | [Parent 4300, Main Thread] WARNING: NS_ENSURE_TRUE(!!svc) failed: file /builds/worker/checkouts/gecko/dom/file/uri/BlobURLProtocolHandler.cpp:506
[task 2024-10-10T12:58:02.699Z] 12:58:02     INFO - TEST-INFO | Main app process: exit 245
[task 2024-10-10T12:58:02.699Z] 12:58:02     INFO - Buffered messages logged at 12:57:47
[task 2024-10-10T12:58:02.700Z] 12:58:02     INFO - TEST-PASS | layout/style/test/test_unicode_range_loading.html | unicode-range load tests using font loading api - unicode-range load tests using font loading api: Elided 100 passes or known failures.
Flags: needinfo?(jfkthame)
Pushed by jkew@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/91b942b7f477 Rename gfxFontGroup::BuildFontList to EnsureFontList, and defer calling it until we really need the resolved font instances. r=layout-reviewers,emilio
Status: ASSIGNED → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → 133 Branch
Regressions: 1939855
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: