Changeset 244018 in webkit
- Timestamp:
- Apr 8, 2019, 5:40:04 AM (7 years ago)
- Location:
- releases/WebKitGTK/webkit-2.24
- Files:
-
- 2 added
- 6 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/fast/text/font-face-set-destroy-document-expected.html (added)
-
LayoutTests/fast/text/font-face-set-destroy-document.html (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/css/CSSFontFace.h (modified) (1 diff)
-
Source/WebCore/css/CSSFontFaceSet.cpp (modified) (2 diffs)
-
Source/WebCore/css/CSSFontFaceSet.h (modified) (1 diff)
-
Source/WebCore/css/CSSFontSelector.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
releases/WebKitGTK/webkit-2.24/LayoutTests/ChangeLog
r244015 r244018 1 2019-04-03 Myles C. Maxfield <mmaxfield@apple.com> 2 3 Documents can be destroyed before their CSSFontFaceSet is destroyed 4 https://bugs.webkit.org/show_bug.cgi?id=195830 5 6 Reviewed by Darin Adler. 7 8 * fast/text/font-face-set-destroy-document-expected.html: Added. 9 * fast/text/font-face-set-destroy-document.html: Added. 10 1 11 2019-03-26 Dean Jackson <dino@apple.com> 2 12 -
releases/WebKitGTK/webkit-2.24/Source/WebCore/ChangeLog
r244017 r244018 1 2019-04-03 Myles C. Maxfield <mmaxfield@apple.com> 2 3 Documents can be destroyed before their CSSFontFaceSet is destroyed 4 https://bugs.webkit.org/show_bug.cgi?id=195830 5 6 Reviewed by Darin Adler. 7 8 CSSFontFaceSet has a raw pointer to its owning document. JS can keep the CSSFontFaceSet alive (by using FontFaceSet) 9 and can destroy the document at any time. When the document is destroyed, the link between the two objects needs to 10 be severed. 11 12 Test: fast/text/font-face-set-destroy-document.html 13 14 * css/CSSFontFace.cpp: 15 (WebCore::CSSFontFace::CSSFontFace): 16 * css/CSSFontFace.h: 17 * css/CSSFontFaceSet.cpp: 18 (WebCore::CSSFontFaceSet::CSSFontFaceSet): 19 (WebCore::CSSFontFaceSet::ensureLocalFontFacesForFamilyRegistered): 20 * css/CSSFontFaceSet.h: 21 * css/CSSFontSelector.cpp: 22 (WebCore::CSSFontSelector::CSSFontSelector): 23 (WebCore::CSSFontSelector::addFontFaceRule): 24 * css/CSSFontSelector.h: 25 * css/FontFace.cpp: 26 (WebCore::FontFace::FontFace): 27 1 28 2019-04-02 Ryosuke Niwa <rniwa@webkit.org> 2 29 -
releases/WebKitGTK/webkit-2.24/Source/WebCore/css/CSSFontFace.h
r233648 r244018 190 190 191 191 Vector<std::unique_ptr<CSSFontFaceSource>, 0, CrashOnOverflow, 0> m_sources; 192 RefPtr<CSSFontSelector> m_fontSelector; 192 RefPtr<CSSFontSelector> m_fontSelector; // FIXME: https://bugs.webkit.org/show_bug.cgi?id=196437 There's a retain cycle: CSSFontSelector -> CSSFontFaceSet -> CSSFontFace -> CSSFontSelector 193 193 RefPtr<StyleRuleFontFace> m_cssConnection; 194 194 HashSet<Client*> m_clients; -
releases/WebKitGTK/webkit-2.24/Source/WebCore/css/CSSFontFaceSet.cpp
r238222 r244018 43 43 44 44 CSSFontFaceSet::CSSFontFaceSet(CSSFontSelector* owningFontSelector) 45 : m_owningFontSelector( owningFontSelector)45 : m_owningFontSelector(makeWeakPtr(owningFontSelector)) 46 46 { 47 47 } … … 114 114 Vector<Ref<CSSFontFace>> faces; 115 115 for (auto item : capabilities) { 116 Ref<CSSFontFace> face = CSSFontFace::create(m_owningFontSelector , nullptr, nullptr, true);116 Ref<CSSFontFace> face = CSSFontFace::create(m_owningFontSelector.get(), nullptr, nullptr, true); 117 117 118 118 Ref<CSSValueList> familyList = CSSValueList::createCommaSeparated(); -
releases/WebKitGTK/webkit-2.24/Source/WebCore/css/CSSFontFaceSet.h
r239427 r244018 121 121 Status m_status { Status::Loaded }; 122 122 HashSet<CSSFontFaceSetClient*> m_clients; 123 CSSFontSelector*m_owningFontSelector;123 WeakPtr<CSSFontSelector> m_owningFontSelector; 124 124 unsigned m_activeCount { 0 }; 125 125 }; -
releases/WebKitGTK/webkit-2.24/Source/WebCore/css/CSSFontSelector.h
r226930 r244018 48 48 class StyleRuleFontFace; 49 49 50 class CSSFontSelector final : public FontSelector, public CSSFontFaceSetClient {50 class CSSFontSelector final : public FontSelector, public CSSFontFaceSetClient, public CanMakeWeakPtr<CSSFontSelector> { 51 51 public: 52 52 static Ref<CSSFontSelector> create(Document& document)
Note:
See TracChangeset
for help on using the changeset viewer.