Title: [255966] branches/safari-610.1.1-branch/Source/WebCore
- Revision
- 255966
- Author
- [email protected]
- Date
- 2020-02-06 11:03:00 -0800 (Thu, 06 Feb 2020)
Log Message
Revert "Cherry-pick r255953. rdar://problem/59228071"
This reverts commit r255965.
Modified Paths
Diff
Modified: branches/safari-610.1.1-branch/Source/WebCore/ChangeLog (255965 => 255966)
--- branches/safari-610.1.1-branch/Source/WebCore/ChangeLog 2020-02-06 18:57:49 UTC (rev 255965)
+++ branches/safari-610.1.1-branch/Source/WebCore/ChangeLog 2020-02-06 19:03:00 UTC (rev 255966)
@@ -1,62 +1,3 @@
-2020-02-06 Russell Epstein <[email protected]>
-
- Cherry-pick r255953. rdar://problem/59228071
-
- [Web Animations] Ensure all timelines are detached from their document
- https://bugs.webkit.org/show_bug.cgi?id=207331
- <rdar://problem/59210306>
-
- Patch by Antoine Quint <[email protected]> on 2020-02-06
- Reviewed by Dean Jackson.
-
- We recently added a WeakHashSet<DocumentTimeline> m_timelines member to Document and added code to ~DocumentTimeline
- to remove themselves from their Document's m_timelines. However, Document::prepareForDestruction() would call
- DocumentTimeline::detachFromDocument() only for the main timeline and neglect to do the same for any additional
- timelines that may have been created with the DocumentTimeline constructor.
-
- We now cleanly call DocumentTimeline::detachFromDocument() for all items in a Document's m_timelines, which has the
- effect of clearing the Document <> DocumentTimeline relationship since DocumentTimeline::detachFromDocument() now
- calls Document::removeTimeline().
-
- Finally, we now call DocumentTimeline::detachFromDocument() from the DocumentTimeline destructor to ensure that timelines
- that were created purely in JS but got garbage-collected are no longer referenced from the Document still.
-
- * animation/DocumentTimeline.cpp:
- (WebCore::DocumentTimeline::~DocumentTimeline):
- (WebCore::DocumentTimeline::detachFromDocument):
- (WebCore::DocumentTimeline::cacheCurrentTime):
- * dom/Document.cpp:
- (WebCore::Document::prepareForDestruction):
-
- git-svn-id: https://svn.webkit.org/repository/webkit/trunk@255953 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 2020-02-06 Antoine Quint <[email protected]>
-
- [Web Animations] Ensure all timelines are detached from their document
- https://bugs.webkit.org/show_bug.cgi?id=207331
- <rdar://problem/59210306>
-
- Reviewed by Dean Jackson.
-
- We recently added a WeakHashSet<DocumentTimeline> m_timelines member to Document and added code to ~DocumentTimeline
- to remove themselves from their Document's m_timelines. However, Document::prepareForDestruction() would call
- DocumentTimeline::detachFromDocument() only for the main timeline and neglect to do the same for any additional
- timelines that may have been created with the DocumentTimeline constructor.
-
- We now cleanly call DocumentTimeline::detachFromDocument() for all items in a Document's m_timelines, which has the
- effect of clearing the Document <> DocumentTimeline relationship since DocumentTimeline::detachFromDocument() now
- calls Document::removeTimeline().
-
- Finally, we now call DocumentTimeline::detachFromDocument() from the DocumentTimeline destructor to ensure that timelines
- that were created purely in JS but got garbage-collected are no longer referenced from the Document still.
-
- * animation/DocumentTimeline.cpp:
- (WebCore::DocumentTimeline::~DocumentTimeline):
- (WebCore::DocumentTimeline::detachFromDocument):
- (WebCore::DocumentTimeline::cacheCurrentTime):
- * dom/Document.cpp:
- (WebCore::Document::prepareForDestruction):
-
2020-02-04 Alan Coon <[email protected]>
Cherry-pick r254887. rdar://problem/58858225
Modified: branches/safari-610.1.1-branch/Source/WebCore/animation/DocumentTimeline.cpp (255965 => 255966)
--- branches/safari-610.1.1-branch/Source/WebCore/animation/DocumentTimeline.cpp 2020-02-06 18:57:49 UTC (rev 255965)
+++ branches/safari-610.1.1-branch/Source/WebCore/animation/DocumentTimeline.cpp 2020-02-06 19:03:00 UTC (rev 255966)
@@ -77,14 +77,12 @@
DocumentTimeline::~DocumentTimeline()
{
- detachFromDocument();
+ if (m_document)
+ m_document->removeTimeline(*this);
}
void DocumentTimeline::detachFromDocument()
{
- if (m_document)
- m_document->removeTimeline(*this);
-
m_currentTimeClearingTaskQueue.close();
m_elementsWithRunningAcceleratedAnimations.clear();
@@ -289,8 +287,6 @@
void DocumentTimeline::cacheCurrentTime(DOMHighResTimeStamp newCurrentTime)
{
- ASSERT(m_document);
-
m_cachedCurrentTime = Seconds(newCurrentTime);
// We want to be sure to keep this time cached until we've both finished running JS and finished updating
// animations, so we schedule the invalidation task and register a whenIdle callback on the VM, which will
Modified: branches/safari-610.1.1-branch/Source/WebCore/dom/Document.cpp (255965 => 255966)
--- branches/safari-610.1.1-branch/Source/WebCore/dom/Document.cpp 2020-02-06 18:57:49 UTC (rev 255965)
+++ branches/safari-610.1.1-branch/Source/WebCore/dom/Document.cpp 2020-02-06 19:03:00 UTC (rev 255966)
@@ -2578,9 +2578,10 @@
detachFromFrame();
- while (!m_timelines.computesEmpty())
- m_timelines.begin()->detachFromDocument();
- m_timeline = nullptr;
+ if (m_timeline) {
+ m_timeline->detachFromDocument();
+ m_timeline = nullptr;
+ }
#if ENABLE(CSS_PAINTING_API)
for (auto& scope : m_paintWorkletGlobalScopes.values())
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes