WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
ROLLOUT of r201887
bug-158610-20160609222232.patch (text/plain), 27.70 KB, created by
WebKit Commit Bot
on 2016-06-09 22:21:02 PDT
(
hide
)
Description:
ROLLOUT of r201887
Filename:
MIME Type:
Creator:
WebKit Commit Bot
Created:
2016-06-09 22:21:02 PDT
Size:
27.70 KB
patch
obsolete
>Subversion Revision: 201905 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 04685d4806eb0b95b659a00173bb8695d6d5809a..b8ff655616fc73da42d8e7820ef49d65e29d6ede 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,18 @@ >+2016-06-09 Commit Queue <commit-queue@webkit.org> >+ >+ Unreviewed, rolling out r201887. >+ https://bugs.webkit.org/show_bug.cgi?id=158610 >+ >+ This change caused LayoutTest crashes under GuardMalloc and >+ ASan (Requested by ryanhaddad on #webkit). >+ >+ Reverted changeset: >+ >+ "Deleting a CSSOM style rule invalidates any previously-added >+ FontFaces" >+ https://bugs.webkit.org/show_bug.cgi?id=158450 >+ http://trac.webkit.org/changeset/201887 >+ > 2016-06-09 Chris Dumez <cdumez@apple.com> > > Address Darin's review comment on r201898. >diff --git a/Source/WebCore/css/CSSFontFace.cpp b/Source/WebCore/css/CSSFontFace.cpp >index 6e0aba6ad02cc2e8a7a5a783ed40a3bcedcdb705..8a6a97529ae311295ead5093babb626df2f5cbb9 100644 >--- a/Source/WebCore/css/CSSFontFace.cpp >+++ b/Source/WebCore/css/CSSFontFace.cpp >@@ -94,7 +94,6 @@ CSSFontFace::CSSFontFace(CSSFontSelector* fontSelector, StyleRuleFontFace* cssCo > , m_cssConnection(cssConnection) > , m_wrapper(wrapper ? wrapper->createWeakPtr() : WeakPtr<FontFace>()) > , m_isLocalFallback(isLocalFallback) >- , m_mayBePurged(!wrapper) > { > } > >@@ -114,9 +113,6 @@ bool CSSFontFace::setFamilies(CSSValue& family) > RefPtr<CSSValueList> oldFamilies = m_families; > m_families = &familyList; > >- if (m_cssConnection) >- m_cssConnection->mutableProperties().setProperty(CSSPropertyFontFamily, &family); >- > iterateClients(m_clients, [&](Client& client) { > client.fontPropertyChanged(*this, oldFamilies.get()); > }); >@@ -147,9 +143,6 @@ bool CSSFontFace::setStyle(CSSValue& style) > if (auto mask = calculateStyleMask(style)) { > m_traitsMask = static_cast<FontTraitsMask>((static_cast<unsigned>(m_traitsMask) & (~FontStyleMask)) | mask.value()); > >- if (m_cssConnection) >- m_cssConnection->mutableProperties().setProperty(CSSPropertyFontStyle, &style); >- > iterateClients(m_clients, [&](Client& client) { > client.fontPropertyChanged(*this); > }); >@@ -199,9 +192,6 @@ bool CSSFontFace::setWeight(CSSValue& weight) > if (auto mask = calculateWeightMask(weight)) { > m_traitsMask = static_cast<FontTraitsMask>((static_cast<unsigned>(m_traitsMask) & (~FontWeightMask)) | mask.value()); > >- if (m_cssConnection) >- m_cssConnection->mutableProperties().setProperty(CSSPropertyFontWeight, &weight); >- > iterateClients(m_clients, [&](Client& client) { > client.fontPropertyChanged(*this); > }); >@@ -224,9 +214,6 @@ bool CSSFontFace::setUnicodeRange(CSSValue& unicodeRange) > m_ranges.append({ range.from(), range.to() }); > } > >- if (m_cssConnection) >- m_cssConnection->mutableProperties().setProperty(CSSPropertyUnicodeRange, &unicodeRange); >- > iterateClients(m_clients, [&](Client& client) { > client.fontPropertyChanged(*this); > }); >@@ -243,9 +230,6 @@ bool CSSFontFace::setVariantLigatures(CSSValue& variantLigatures) > m_variantSettings.historicalLigatures = ligatures.historicalLigatures; > m_variantSettings.contextualAlternates = ligatures.contextualAlternates; > >- if (m_cssConnection) >- m_cssConnection->mutableProperties().setProperty(CSSPropertyFontVariantLigatures, &variantLigatures); >- > iterateClients(m_clients, [&](Client& client) { > client.fontPropertyChanged(*this); > }); >@@ -260,9 +244,6 @@ bool CSSFontFace::setVariantPosition(CSSValue& variantPosition) > > m_variantSettings.position = downcast<CSSPrimitiveValue>(variantPosition); > >- if (m_cssConnection) >- m_cssConnection->mutableProperties().setProperty(CSSPropertyFontVariantPosition, &variantPosition); >- > iterateClients(m_clients, [&](Client& client) { > client.fontPropertyChanged(*this); > }); >@@ -277,9 +258,6 @@ bool CSSFontFace::setVariantCaps(CSSValue& variantCaps) > > m_variantSettings.caps = downcast<CSSPrimitiveValue>(variantCaps); > >- if (m_cssConnection) >- m_cssConnection->mutableProperties().setProperty(CSSPropertyFontVariantCaps, &variantCaps); >- > iterateClients(m_clients, [&](Client& client) { > client.fontPropertyChanged(*this); > }); >@@ -297,9 +275,6 @@ bool CSSFontFace::setVariantNumeric(CSSValue& variantNumeric) > m_variantSettings.numericOrdinal = numeric.ordinal; > m_variantSettings.numericSlashedZero = numeric.slashedZero; > >- if (m_cssConnection) >- m_cssConnection->mutableProperties().setProperty(CSSPropertyFontVariantNumeric, &variantNumeric); >- > iterateClients(m_clients, [&](Client& client) { > client.fontPropertyChanged(*this); > }); >@@ -314,9 +289,6 @@ bool CSSFontFace::setVariantAlternates(CSSValue& variantAlternates) > > m_variantSettings.alternates = downcast<CSSPrimitiveValue>(variantAlternates); > >- if (m_cssConnection) >- m_cssConnection->mutableProperties().setProperty(CSSPropertyFontVariantAlternates, &variantAlternates); >- > iterateClients(m_clients, [&](Client& client) { > client.fontPropertyChanged(*this); > }); >@@ -332,9 +304,6 @@ bool CSSFontFace::setVariantEastAsian(CSSValue& variantEastAsian) > m_variantSettings.eastAsianWidth = eastAsian.width; > m_variantSettings.eastAsianRuby = eastAsian.ruby; > >- if (m_cssConnection) >- m_cssConnection->mutableProperties().setProperty(CSSPropertyFontVariantEastAsian, &variantEastAsian); >- > iterateClients(m_clients, [&](Client& client) { > client.fontPropertyChanged(*this); > }); >@@ -362,9 +331,6 @@ void CSSFontFace::setFeatureSettings(CSSValue& featureSettings) > > m_featureSettings = WTFMove(settings); > >- if (m_cssConnection) >- m_cssConnection->mutableProperties().setProperty(CSSPropertyFontFeatureSettings, &featureSettings); >- > iterateClients(m_clients, [&](Client& client) { > client.fontPropertyChanged(*this); > }); >@@ -415,47 +381,35 @@ void CSSFontFace::removeClient(Client& client) > m_clients.remove(&client); > } > >-void CSSFontFace::initializeWrapper() >+Ref<FontFace> CSSFontFace::wrapper() > { >+ if (m_wrapper) >+ return Ref<FontFace>(*m_wrapper.get()); >+ >+ Ref<FontFace> wrapper = FontFace::create(*this); > switch (m_status) { > case Status::Pending: > break; > case Status::Loading: >- m_wrapper->fontStateChanged(*this, Status::Pending, Status::Loading); >+ wrapper->fontStateChanged(*this, Status::Pending, Status::Loading); > break; > case Status::TimedOut: >- m_wrapper->fontStateChanged(*this, Status::Pending, Status::Loading); >- m_wrapper->fontStateChanged(*this, Status::Loading, Status::TimedOut); >+ wrapper->fontStateChanged(*this, Status::Pending, Status::Loading); >+ wrapper->fontStateChanged(*this, Status::Loading, Status::TimedOut); > break; > case Status::Success: >- m_wrapper->fontStateChanged(*this, Status::Pending, Status::Loading); >- m_wrapper->fontStateChanged(*this, Status::Pending, Status::Success); >+ wrapper->fontStateChanged(*this, Status::Pending, Status::Loading); >+ wrapper->fontStateChanged(*this, Status::Pending, Status::Success); > break; > case Status::Failure: >- m_wrapper->fontStateChanged(*this, Status::Pending, Status::Loading); >- m_wrapper->fontStateChanged(*this, Status::Pending, Status::Failure); >+ wrapper->fontStateChanged(*this, Status::Pending, Status::Loading); >+ wrapper->fontStateChanged(*this, Status::Pending, Status::Failure); > break; > } >-} >- >-Ref<FontFace> CSSFontFace::wrapper() >-{ >- if (m_wrapper) >- return *m_wrapper.get(); >- >- auto wrapper = FontFace::create(*this); > m_wrapper = wrapper->createWeakPtr(); >- initializeWrapper(); >- m_mayBePurged = false; > return wrapper; > } > >-void CSSFontFace::setWrapper(FontFace& newWrapper) >-{ >- m_wrapper = newWrapper.createWeakPtr(); >- initializeWrapper(); >-} >- > void CSSFontFace::adoptSource(std::unique_ptr<CSSFontFaceSource>&& source) > { > m_sources.append(WTFMove(source)); >@@ -598,17 +552,6 @@ RefPtr<Font> CSSFontFace::font(const FontDescription& fontDescription, bool synt > return nullptr; > } > >-bool CSSFontFace::purgeable() const >-{ >- return cssConnection() && m_mayBePurged; >-} >- >-void CSSFontFace::updateStyleIfNeeded() >-{ >- if (m_fontSelector && m_fontSelector->document()) >- m_fontSelector->document()->updateStyleIfNeeded(); >-} >- > #if ENABLE(SVG_FONTS) > bool CSSFontFace::hasSVGFontFaceSource() const > { >diff --git a/Source/WebCore/css/CSSFontFace.h b/Source/WebCore/css/CSSFontFace.h >index a2b0c97af1034c9937747fa3c6cf1b835902d3e0..027b7fbffaffe0c3add48ee0378fc53bdcadbfe7 100644 >--- a/Source/WebCore/css/CSSFontFace.h >+++ b/Source/WebCore/css/CSSFontFace.h >@@ -135,15 +135,9 @@ public: > > // We don't guarantee that the FontFace wrapper will be the same every time you ask for it. > Ref<FontFace> wrapper(); >- void setWrapper(FontFace&); >- FontFace* existingWrapper() { return m_wrapper.get(); } > > bool webFontsShouldAlwaysFallBack() const; > >- bool purgeable() const; >- >- void updateStyleIfNeeded(); >- > #if ENABLE(SVG_FONTS) > bool hasSVGFontFaceSource() const; > #endif >@@ -155,8 +149,6 @@ private: > void setStatus(Status); > void notifyClientsOfFontPropertyChange(); > >- void initializeWrapper(); >- > void fontLoadEventOccurred(); > void timeoutFired(); > >@@ -174,7 +166,6 @@ private: > Status m_status { Status::Pending }; > bool m_isLocalFallback { false }; > bool m_sourcesPopulated { false }; >- bool m_mayBePurged { true }; > }; > > } >diff --git a/Source/WebCore/css/CSSFontFaceSet.cpp b/Source/WebCore/css/CSSFontFaceSet.cpp >index b089d1cbccb9c5566b9a89609e8780e3bc87c9b8..e6752a6ed5c7fa967e76f41afc3e9f818e7d25b5 100644 >--- a/Source/WebCore/css/CSSFontFaceSet.cpp >+++ b/Source/WebCore/css/CSSFontFaceSet.cpp >@@ -95,10 +95,9 @@ bool CSSFontFaceSet::hasFace(const CSSFontFace& face) const > return false; > } > >-void CSSFontFaceSet::ensureLocalFontFacesForFamilyRegistered(const String& familyName) >+void CSSFontFaceSet::registerLocalFontFacesForFamily(const String& familyName) > { >- if (m_locallyInstalledFacesLookupTable.contains(familyName)) >- return; >+ ASSERT(!m_locallyInstalledFacesLookupTable.contains(familyName)); > > Vector<FontTraitsMask> traitsMasks = FontCache::singleton().getTraitsInFamily(familyName); > if (traitsMasks.isEmpty()) >@@ -161,7 +160,7 @@ void CSSFontFaceSet::addToFacesLookupTable(CSSFontFace& face) > if (addResult.isNewEntry) { > // m_locallyInstalledFontFaces grows without bound, eventually encorporating every font installed on the system. > // This is by design. >- ensureLocalFontFacesForFamilyRegistered(familyName); >+ registerLocalFontFacesForFamily(familyName); > familyFontFaces = { }; > } > >@@ -188,11 +187,6 @@ void CSSFontFaceSet::add(CSSFontFace& face) > > if (face.status() == CSSFontFace::Status::Loading || face.status() == CSSFontFace::Status::TimedOut) > incrementActiveCount(); >- >- if (face.cssConnection()) { >- auto addResult = m_constituentCSSConnections.add(face.cssConnection(), &face); >- ASSERT_UNUSED(addResult, addResult.isNewEntry); >- } > } > > void CSSFontFaceSet::removeFromFacesLookupTable(const CSSFontFace& face, const CSSValueList& familiesToSearchFor) >@@ -228,11 +222,6 @@ void CSSFontFaceSet::remove(const CSSFontFace& face) > if (face.families()) > removeFromFacesLookupTable(face, *face.families()); > >- if (face.cssConnection()) { >- bool removed = m_constituentCSSConnections.remove(face.cssConnection()); >- ASSERT_UNUSED(removed, removed); >- } >- > for (size_t i = 0; i < m_faces.size(); ++i) { > if (m_faces[i].ptr() == &face) { > if (i < m_facesPartitionIndex) >@@ -247,23 +236,6 @@ void CSSFontFaceSet::remove(const CSSFontFace& face) > ASSERT_NOT_REACHED(); > } > >-CSSFontFace* CSSFontFaceSet::lookupByCSSConnection(StyleRuleFontFace& target) >-{ >- return m_constituentCSSConnections.get(&target); >-} >- >-void CSSFontFaceSet::purge() >-{ >- Vector<std::reference_wrapper<CSSFontFace>> toRemove; >- for (auto& face : m_faces) { >- if (face->purgeable()) >- toRemove.append(face.get()); >- } >- >- for (auto& item : toRemove) >- remove(item.get()); >-} >- > void CSSFontFaceSet::clear() > { > for (auto& face : m_faces) >@@ -272,7 +244,6 @@ void CSSFontFaceSet::clear() > m_facesLookupTable.clear(); > m_locallyInstalledFacesLookupTable.clear(); > m_cache.clear(); >- m_constituentCSSConnections.clear(); > m_facesPartitionIndex = 0; > m_status = Status::Loaded; > } >diff --git a/Source/WebCore/css/CSSFontFaceSet.h b/Source/WebCore/css/CSSFontFaceSet.h >index cdf88ba4d66f37d34cb90a378f11f986621a3971..00458f06efb3d7d33c1bbf431637d2336e82fcab 100644 >--- a/Source/WebCore/css/CSSFontFaceSet.h >+++ b/Source/WebCore/css/CSSFontFaceSet.h >@@ -60,12 +60,9 @@ public: > size_t faceCount() const { return m_faces.size(); } > void add(CSSFontFace&); > void remove(const CSSFontFace&); >- void purge(); > void clear(); > CSSFontFace& operator[](size_t i); > >- CSSFontFace* lookupByCSSConnection(StyleRuleFontFace&); >- > bool check(const String& font, const String& text, ExceptionCode&); > > CSSSegmentedFontFace* getFontFace(FontTraitsMask, const AtomicString& family); >@@ -94,7 +91,7 @@ private: > void fontStateChanged(CSSFontFace&, CSSFontFace::Status oldState, CSSFontFace::Status newState) override; > void fontPropertyChanged(CSSFontFace&, CSSValueList* oldFamilies = nullptr) override; > >- void ensureLocalFontFacesForFamilyRegistered(const String&); >+ void registerLocalFontFacesForFamily(const String&); > > static String familyNameFromPrimitive(const CSSPrimitiveValue&); > >@@ -103,7 +100,6 @@ private: > HashMap<String, Vector<Ref<CSSFontFace>>, ASCIICaseInsensitiveHash> m_facesLookupTable; > HashMap<String, Vector<Ref<CSSFontFace>>, ASCIICaseInsensitiveHash> m_locallyInstalledFacesLookupTable; > HashMap<String, HashMap<unsigned, RefPtr<CSSSegmentedFontFace>>, ASCIICaseInsensitiveHash> m_cache; >- HashMap<StyleRuleFontFace*, CSSFontFace*> m_constituentCSSConnections; > size_t m_facesPartitionIndex { 0 }; // All entries in m_faces before this index are CSS-connected. > Status m_status { Status::Loaded }; > HashSet<CSSFontFaceSetClient*> m_clients; >diff --git a/Source/WebCore/css/CSSFontSelector.cpp b/Source/WebCore/css/CSSFontSelector.cpp >index 5ee08720b6b901b6ce53fa1ba5157f84221b521f..d8583047887798f4ff3cca1cb014e877a4dc96ad 100644 >--- a/Source/WebCore/css/CSSFontSelector.cpp >+++ b/Source/WebCore/css/CSSFontSelector.cpp >@@ -45,7 +45,6 @@ > #include "Document.h" > #include "Font.h" > #include "FontCache.h" >-#include "FontFace.h" > #include "FontFaceSet.h" > #include "FontSelectorClient.h" > #include "FontVariantBuilder.h" >@@ -102,17 +101,7 @@ bool CSSFontSelector::isEmpty() const > void CSSFontSelector::buildStarted() > { > m_buildIsUnderway = true; >- m_stagingArea.clear(); >- m_cssFontFaceSet->purge(); > ++m_version; >- >- m_cssConnectionsPossiblyToRemove.clear(); >- m_cssConnectionsEncounteredDuringBuild.clear(); >- for (size_t i = 0; i < m_cssFontFaceSet->faceCount(); ++i) { >- CSSFontFace& face = m_cssFontFaceSet.get()[i]; >- if (face.cssConnection()) >- m_cssConnectionsPossiblyToRemove.add(&face); >- } > } > > void CSSFontSelector::buildCompleted() >@@ -122,13 +111,7 @@ void CSSFontSelector::buildCompleted() > > m_buildIsUnderway = false; > >- // Some font faces weren't re-added during the build process. >- for (auto& face : m_cssConnectionsPossiblyToRemove) { >- auto* connection = face->cssConnection(); >- ASSERT(connection); >- if (!m_cssConnectionsEncounteredDuringBuild.contains(connection)) >- m_cssFontFaceSet->remove(*face); >- } >+ m_cssFontFaceSet->clear(); > > for (auto& item : m_stagingArea) > addFontFaceRule(item.styleRuleFontFace, item.isInitiatingElementInUserAgentShadowTree); >@@ -138,7 +121,6 @@ void CSSFontSelector::buildCompleted() > void CSSFontSelector::addFontFaceRule(StyleRuleFontFace& fontFaceRule, bool isInitiatingElementInUserAgentShadowTree) > { > if (m_buildIsUnderway) { >- m_cssConnectionsEncounteredDuringBuild.add(&fontFaceRule); > m_stagingArea.append({fontFaceRule, isInitiatingElementInUserAgentShadowTree}); > return; > } >@@ -205,12 +187,6 @@ void CSSFontSelector::addFontFaceRule(StyleRuleFontFace& fontFaceRule, bool isIn > if (fontFace->allSourcesFailed()) > return; > >- if (RefPtr<CSSFontFace> existingFace = m_cssFontFaceSet->lookupByCSSConnection(fontFaceRule)) { >- m_cssFontFaceSet->remove(*existingFace); >- if (auto* existingWrapper = existingFace->existingWrapper()) >- existingWrapper->adopt(fontFace.get()); >- } >- > m_cssFontFaceSet->add(fontFace.get()); > m_creatingFont = false; > ++m_version; >diff --git a/Source/WebCore/css/CSSFontSelector.h b/Source/WebCore/css/CSSFontSelector.h >index 34dccf29edc6a3c9a38061d2910e202b92ca8405..5a9155b4020781db5c933c6ca904d72399172461 100644 >--- a/Source/WebCore/css/CSSFontSelector.h >+++ b/Source/WebCore/css/CSSFontSelector.h >@@ -105,8 +105,6 @@ private: > HashSet<FontSelectorClient*> m_clients; > > Vector<CachedResourceHandle<CachedFont>> m_fontsToBeginLoading; >- HashSet<RefPtr<CSSFontFace>> m_cssConnectionsPossiblyToRemove; >- HashSet<RefPtr<StyleRuleFontFace>> m_cssConnectionsEncounteredDuringBuild; > Timer m_beginLoadingTimer; > > unsigned m_uniqueId; >diff --git a/Source/WebCore/css/FontFace.cpp b/Source/WebCore/css/FontFace.cpp >index ae6f5b389efec6ccf0453f2f9d358c34a2349c1d..633574b714f9160e00a0402b8a0de3200c217cd0 100644 >--- a/Source/WebCore/css/FontFace.cpp >+++ b/Source/WebCore/css/FontFace.cpp >@@ -270,13 +270,11 @@ void FontFace::setFeatureSettings(const String& featureSettings, ExceptionCode& > > String FontFace::family() const > { >- const_cast<CSSFontFace&>(m_backing.get()).updateStyleIfNeeded(); > return m_backing->families()->cssText(); > } > > String FontFace::style() const > { >- const_cast<CSSFontFace&>(m_backing.get()).updateStyleIfNeeded(); > switch (m_backing->traitsMask() & FontStyleMask) { > case FontStyleNormalMask: > return String("normal", String::ConstructFromLiteral); >@@ -289,7 +287,6 @@ String FontFace::style() const > > String FontFace::weight() const > { >- const_cast<CSSFontFace&>(m_backing.get()).updateStyleIfNeeded(); > switch (m_backing->traitsMask() & FontWeightMask) { > case FontWeight100Mask: > return String("100", String::ConstructFromLiteral); >@@ -321,7 +318,6 @@ String FontFace::stretch() const > > String FontFace::unicodeRange() const > { >- const_cast<CSSFontFace&>(m_backing.get()).updateStyleIfNeeded(); > if (!m_backing->ranges().size()) > return "U+0-10FFFF"; > RefPtr<CSSValueList> values = CSSValueList::createCommaSeparated(); >@@ -332,13 +328,11 @@ String FontFace::unicodeRange() const > > String FontFace::variant() const > { >- const_cast<CSSFontFace&>(m_backing.get()).updateStyleIfNeeded(); > return computeFontVariant(m_backing->variantSettings())->cssText(); > } > > String FontFace::featureSettings() const > { >- const_cast<CSSFontFace&>(m_backing.get()).updateStyleIfNeeded(); > if (!m_backing->featureSettings().size()) > return "normal"; > RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); >@@ -365,15 +359,6 @@ auto FontFace::status() const -> LoadStatus > return LoadStatus::Error; > } > >-void FontFace::adopt(CSSFontFace& newFace) >-{ >- m_promise = Nullopt; >- m_backing->removeClient(*this); >- m_backing = newFace; >- m_backing->addClient(*this); >- newFace.setWrapper(*this); >-} >- > void FontFace::fontStateChanged(CSSFontFace& face, CSSFontFace::Status, CSSFontFace::Status newState) > { > ASSERT_UNUSED(face, &face == m_backing.ptr()); >diff --git a/Source/WebCore/css/FontFace.h b/Source/WebCore/css/FontFace.h >index ed30ddbf559104830be0a65bda8fa3621e8d46aa..3980ffe47067d88e1b9b921f748aa1d84050708c 100644 >--- a/Source/WebCore/css/FontFace.h >+++ b/Source/WebCore/css/FontFace.h >@@ -69,8 +69,6 @@ public: > Optional<Promise>& promise() { return m_promise; } > void registerLoaded(Promise&&); > >- void adopt(CSSFontFace&); >- > void load(); > > CSSFontFace& backing() { return m_backing; } >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index fc4e15678a09efa0cbb568d23b7043ed52446359..c27b8dab8ff28c07c2eaa1f09f92d0679f37d372 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,18 @@ >+2016-06-09 Commit Queue <commit-queue@webkit.org> >+ >+ Unreviewed, rolling out r201887. >+ https://bugs.webkit.org/show_bug.cgi?id=158610 >+ >+ This change caused LayoutTest crashes under GuardMalloc and >+ ASan (Requested by ryanhaddad on #webkit). >+ >+ Reverted changeset: >+ >+ "Deleting a CSSOM style rule invalidates any previously-added >+ FontFaces" >+ https://bugs.webkit.org/show_bug.cgi?id=158450 >+ http://trac.webkit.org/changeset/201887 >+ > 2016-06-09 Zalan Bujtas <zalan@apple.com> > > Add testing support for 3x device scale factor. >diff --git a/LayoutTests/fast/text/font-face-set-cssom-expected.txt b/LayoutTests/fast/text/font-face-set-cssom-expected.txt >deleted file mode 100644 >index 5b59a87045e909595607d0eb5c8946e700afc006..0000000000000000000000000000000000000000 >--- a/LayoutTests/fast/text/font-face-set-cssom-expected.txt >+++ /dev/null >@@ -1,48 +0,0 @@ >-This test makes sure that the CSS Font Loading API plays nicely with modifying @font-face rules with the CSSOM. >- >-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". >- >- >-PASS item1.getBoundingClientRect().width is 48 >-PASS item2.getBoundingClientRect().width is not 48 >-PASS item3.getBoundingClientRect().width is not 48 >-PASS item4.getBoundingClientRect().width is not 48 >-PASS item5.getBoundingClientRect().width is not 48 >-PASS item6.getBoundingClientRect().width is not 48 >-PASS item1.getBoundingClientRect().width is 48 >-PASS item2.getBoundingClientRect().width is 48 >-PASS item3.getBoundingClientRect().width is not 48 >-PASS item4.getBoundingClientRect().width is not 48 >-PASS item5.getBoundingClientRect().width is not 48 >-PASS item6.getBoundingClientRect().width is not 48 >-PASS item1.getBoundingClientRect().width is 48 >-PASS item2.getBoundingClientRect().width is 48 >-PASS item3.getBoundingClientRect().width is 48 >-PASS item4.getBoundingClientRect().width is not 48 >-PASS item5.getBoundingClientRect().width is not 48 >-PASS item6.getBoundingClientRect().width is not 48 >-PASS item1.getBoundingClientRect().width is 48 >-PASS item2.getBoundingClientRect().width is 48 >-PASS item3.getBoundingClientRect().width is not 48 >-PASS item4.getBoundingClientRect().width is not 48 >-PASS item5.getBoundingClientRect().width is not 48 >-PASS item6.getBoundingClientRect().width is not 48 >-PASS connectedFontFace.family is "WebFont2" >-PASS connectedFontFace.family is "WebFont5" >-PASS item1.getBoundingClientRect().width is 48 >-PASS item2.getBoundingClientRect().width is not 48 >-PASS item3.getBoundingClientRect().width is not 48 >-PASS item4.getBoundingClientRect().width is not 48 >-PASS item5.getBoundingClientRect().width is 48 >-PASS item6.getBoundingClientRect().width is not 48 >-PASS styleSheet.cssRules[0].style.fontFamily is "WebFont6" >-PASS item1.getBoundingClientRect().width is 48 >-PASS item2.getBoundingClientRect().width is not 48 >-PASS item3.getBoundingClientRect().width is not 48 >-PASS item4.getBoundingClientRect().width is not 48 >-PASS item5.getBoundingClientRect().width is not 48 >-PASS item6.getBoundingClientRect().width is 48 >-PASS successfullyParsed is true >- >-TEST COMPLETE >-l l l l l l >diff --git a/LayoutTests/fast/text/font-face-set-cssom.html b/LayoutTests/fast/text/font-face-set-cssom.html >deleted file mode 100644 >index 4e71b9587e911f796ec6fed76329832be39510de..0000000000000000000000000000000000000000 >--- a/LayoutTests/fast/text/font-face-set-cssom.html >+++ /dev/null >@@ -1,92 +0,0 @@ >-<!DOCTYPE html> >-<html> >-<head> >-<script src="../../resources/js-test-pre.js"></script> >-<style id="styleElement"> >-</style> >-</head> >-<body> >-<span id="item1" style="font: 48px WebFont;">l</span> >-<span id="item2" style="font: 48px WebFont2;">l</span> >-<span id="item3" style="font: 48px WebFont3;">l</span> >-<span id="item4" style="font: 48px WebFont4;">l</span> >-<span id="item5" style="font: 48px WebFont5;">l</span> >-<span id="item6" style="font: 48px WebFont6;">l</span> >-<script> >-description("This test makes sure that the CSS Font Loading API plays nicely with modifying @font-face rules with the CSSOM."); >- >-var item1 = document.getElementById("item1"); >-var item2 = document.getElementById("item2"); >-var item3 = document.getElementById("item3"); >-var item4 = document.getElementById("item4"); >-var item5 = document.getElementById("item5"); >-var item6 = document.getElementById("item6"); >- >-var fontFace = new FontFace("WebFont", "local('Ahem')", {}); >-document.fonts.add(fontFace); >-fontFace.load(); >- >-shouldBe("item1.getBoundingClientRect().width", "48"); >-shouldNotBe("item2.getBoundingClientRect().width", "48"); >-shouldNotBe("item3.getBoundingClientRect().width", "48"); >-shouldNotBe("item4.getBoundingClientRect().width", "48"); >-shouldNotBe("item5.getBoundingClientRect().width", "48"); >-shouldNotBe("item6.getBoundingClientRect().width", "48"); >- >-var styleSheet = document.getElementById("styleElement").sheet; >-styleSheet.insertRule("@font-face { font-family: 'WebFont2'; src: local('Ahem'); }", 0); >- >-shouldBe("item1.getBoundingClientRect().width", "48"); >-shouldBe("item2.getBoundingClientRect().width", "48"); >-shouldNotBe("item3.getBoundingClientRect().width", "48"); >-shouldNotBe("item4.getBoundingClientRect().width", "48"); >-shouldNotBe("item5.getBoundingClientRect().width", "48"); >-shouldNotBe("item6.getBoundingClientRect().width", "48"); >- >-styleSheet.insertRule("@font-face { font-family: 'WebFont3'; src: local('Ahem'); }", 0); >- >-shouldBe("item1.getBoundingClientRect().width", "48"); >-shouldBe("item2.getBoundingClientRect().width", "48"); >-shouldBe("item3.getBoundingClientRect().width", "48"); >-shouldNotBe("item4.getBoundingClientRect().width", "48"); >-shouldNotBe("item5.getBoundingClientRect().width", "48"); >-shouldNotBe("item6.getBoundingClientRect().width", "48"); >- >-styleSheet.deleteRule(0); >- >-shouldBe("item1.getBoundingClientRect().width", "48"); >-shouldBe("item2.getBoundingClientRect().width", "48"); >-shouldNotBe("item3.getBoundingClientRect().width", "48"); >-shouldNotBe("item4.getBoundingClientRect().width", "48"); >-shouldNotBe("item5.getBoundingClientRect().width", "48"); >-shouldNotBe("item6.getBoundingClientRect().width", "48"); >- >-var connectedFontFace = document.fonts.keys().next().value; >-shouldBeEqualToString("connectedFontFace.family", "WebFont2"); >- >-styleSheet.cssRules[0].style.fontFamily = "WebFont5"; >- >-shouldBeEqualToString("connectedFontFace.family", "WebFont5"); >- >-shouldBe("item1.getBoundingClientRect().width", "48"); >-shouldNotBe("item2.getBoundingClientRect().width", "48"); >-shouldNotBe("item3.getBoundingClientRect().width", "48"); >-shouldNotBe("item4.getBoundingClientRect().width", "48"); >-shouldBe("item5.getBoundingClientRect().width", "48"); >-shouldNotBe("item6.getBoundingClientRect().width", "48"); >- >-connectedFontFace.family = "WebFont6"; >- >-shouldBeEqualToString("styleSheet.cssRules[0].style.fontFamily", "WebFont6"); >- >-shouldBe("item1.getBoundingClientRect().width", "48"); >-shouldNotBe("item2.getBoundingClientRect().width", "48"); >-shouldNotBe("item3.getBoundingClientRect().width", "48"); >-shouldNotBe("item4.getBoundingClientRect().width", "48"); >-shouldNotBe("item5.getBoundingClientRect().width", "48"); >-shouldBe("item6.getBoundingClientRect().width", "48"); >- >-</script> >-<script src="../../resources/js-test-post.js"></script> >-</body> >-<html> >\ No newline at end of file
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 158610
: 280993