RESOLVED FIXED 202476
Allow pages using FontFaceSet to enter the back/forward cache
https://bugs.webkit.org/show_bug.cgi?id=202476
Summary Allow pages using FontFaceSet to enter the back/forward cache
Chris Dumez
Reported 2019-10-02 09:58:03 PDT
Allow pages using FontFaceSet to enter the back/forward cache. This causes failures on sites with Youtube embeds for example:
Attachments
Patch (25.73 KB, patch)
2019-10-03 11:52 PDT, Chris Dumez
no flags
Chris Dumez
Comment 1 2019-10-03 11:52:44 PDT
Myles C. Maxfield
Comment 2 2019-10-03 13:42:46 PDT
I'm also doing a little bit of additional investigation around this bug.
Chris Dumez
Comment 3 2019-10-03 14:27:28 PDT
(In reply to Myles C. Maxfield from comment #2) > I'm also doing a little bit of additional investigation around this bug. There are 2 issues: 1. Sometimes, the FontFace think it is loading when it actually is not (which I did not address and Myles is investigating). 2. We fail to enter page cache because the FontFace think it is still loading (which I address). I agree that it'd be good to investigate 1 but fixing 1 would not be sufficient, because we want to enter PageCache no matter what, even if the font really is loading. This is why I think implementing queueing in FontFaceSet like my patch does is the right thing to do.
Myles C. Maxfield
Comment 4 2019-10-03 15:42:40 PDT
Comment on attachment 380148 [details] Patch I've gotten a bug about this kind of behavior: https://github.com/doanythingfordethklok/safari-cache-bug but if we are really willing to use the policy of cancelling all in-flight requests during navigation, and never reloading them upon 'back', then this patch is a good one.
WebKit Commit Bot
Comment 5 2019-10-03 17:38:02 PDT
Comment on attachment 380148 [details] Patch Clearing flags on attachment: 380148 Committed r250693: <https://trac.webkit.org/changeset/250693>
WebKit Commit Bot
Comment 6 2019-10-03 17:38:04 PDT
All reviewed patches have been landed. Closing bug.
Radar WebKit Bug Importer
Comment 7 2019-10-03 17:39:17 PDT
Truitt Savell
Comment 8 2019-10-04 10:56:49 PDT
It looks like the changes in https://trac.webkit.org/changeset/250693/webkit caused 4 new crashes on Debug: fast/text/document-fonts-while-loading-crash.html fast/text/font-face-set-destroy-document.html fast/text/font-face-set-javascript.html http/tests/navigation/page-cache-fragment-referrer.html History: https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&tests=fast%2Ftext%2Fdocument-fonts-while-loading-crash.html%20fast%2Ftext%2Ffont-face-set-destroy-document.html%20fast%2Ftext%2Ffont-face-set-javascript.html%20http%2Ftests%2Fnavigation%2Fpage-cache-fragment-referrer.html Assertion crash: ASSERTION FAILED: !m_valueOrException /Volumes/Data/slave/mojave-debug/build/Source/WebCore/bindings/js/DOMPromiseProxy.h(294) : void WebCore::DOMPromiseProxyWithResolveCallback<WebCore::IDLInterface<WebCore::FontFaceSet> >::resolve(typename IDLType::ParameterType) [IDLType = WebCore::IDLInterface<WebCore::FontFaceSet>] ASSERTION FAILED: !is<Document>(m_scriptExecutionContext) || &downcast<Document>(m_scriptExecutionContext)->contextDocument() == downcast<Document>(m_scriptExecutionContext)
Chris Dumez
Comment 9 2019-10-04 10:57:22 PDT
(In reply to Truitt Savell from comment #8) > It looks like the changes in https://trac.webkit.org/changeset/250693/webkit > > caused 4 new crashes on Debug: > fast/text/document-fonts-while-loading-crash.html > fast/text/font-face-set-destroy-document.html > fast/text/font-face-set-javascript.html > http/tests/navigation/page-cache-fragment-referrer.html > > History: > https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard. > html#showAllRuns=true&tests=fast%2Ftext%2Fdocument-fonts-while-loading-crash. > html%20fast%2Ftext%2Ffont-face-set-destroy-document. > html%20fast%2Ftext%2Ffont-face-set-javascript. > html%20http%2Ftests%2Fnavigation%2Fpage-cache-fragment-referrer.html > > Assertion crash: > ASSERTION FAILED: !m_valueOrException > /Volumes/Data/slave/mojave-debug/build/Source/WebCore/bindings/js/ > DOMPromiseProxy.h(294) : void > WebCore::DOMPromiseProxyWithResolveCallback<WebCore::IDLInterface<WebCore:: > FontFaceSet> >::resolve(typename IDLType::ParameterType) [IDLType = > WebCore::IDLInterface<WebCore::FontFaceSet>] > > ASSERTION FAILED: !is<Document>(m_scriptExecutionContext) || > &downcast<Document>(m_scriptExecutionContext)->contextDocument() == > downcast<Document>(m_scriptExecutionContext) Looking now.
Chris Dumez
Comment 10 2019-10-04 11:17:01 PDT
(In reply to Chris Dumez from comment #9) > (In reply to Truitt Savell from comment #8) > > It looks like the changes in https://trac.webkit.org/changeset/250693/webkit > > > > caused 4 new crashes on Debug: > > fast/text/document-fonts-while-loading-crash.html > > fast/text/font-face-set-destroy-document.html > > fast/text/font-face-set-javascript.html > > http/tests/navigation/page-cache-fragment-referrer.html > > > > History: > > https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard. > > html#showAllRuns=true&tests=fast%2Ftext%2Fdocument-fonts-while-loading-crash. > > html%20fast%2Ftext%2Ffont-face-set-destroy-document. > > html%20fast%2Ftext%2Ffont-face-set-javascript. > > html%20http%2Ftests%2Fnavigation%2Fpage-cache-fragment-referrer.html > > > > Assertion crash: > > ASSERTION FAILED: !m_valueOrException > > /Volumes/Data/slave/mojave-debug/build/Source/WebCore/bindings/js/ > > DOMPromiseProxy.h(294) : void > > WebCore::DOMPromiseProxyWithResolveCallback<WebCore::IDLInterface<WebCore:: > > FontFaceSet> >::resolve(typename IDLType::ParameterType) [IDLType = > > WebCore::IDLInterface<WebCore::FontFaceSet>] > > > > ASSERTION FAILED: !is<Document>(m_scriptExecutionContext) || > > &downcast<Document>(m_scriptExecutionContext)->contextDocument() == > > downcast<Document>(m_scriptExecutionContext) > > Looking now. Fixed in <https://trac.webkit.org/changeset/250731>.
Note You need to log in before you can comment on or make changes to this bug.