Title: [242166] trunk/Source/WebCore
- Revision
- 242166
- Author
- za...@apple.com
- Date
- 2019-02-27 15:20:44 -0800 (Wed, 27 Feb 2019)
Log Message
[ContentChangeObserver] Move DOM timer handling from global to ContentChangeObserver class
https://bugs.webkit.org/show_bug.cgi?id=195070
<rdar://problem/48417650>
Reviewed by Tim Horton.
Add DOM timer list to ContentChangeObserver and move the related code over from WK functions.
* page/ios/ContentChangeObserver.h:
* page/ios/ContentChangeObserver.mm:
(WebCore::ContentChangeObserver::startObservingDOMTimerScheduling):
(WebCore::ContentChangeObserver::countOfObservedDOMTimers):
(WebCore::ContentChangeObserver::clearObservedDOMTimers):
(WebCore::ContentChangeObserver::setObservedContentChange):
(WebCore::ContentChangeObserver::containsObservedDOMTimer):
(WebCore::ContentChangeObserver::addObservedDOMTimer):
(WebCore::ContentChangeObserver::removeObservedDOMTimer):
* platform/ios/wak/WKContentObservation.cpp:
(WKStartObservingDOMTimerScheduling):
(WKSetObservedContentChange):
(WebThreadGetObservedDOMTimers): Deleted.
(WebThreadCountOfObservedDOMTimers): Deleted.
(WebThreadClearObservedDOMTimers): Deleted.
(WebThreadContainsObservedDOMTimer): Deleted.
(WebThreadAddObservedDOMTimer): Deleted.
(WebThreadRemoveObservedDOMTimer): Deleted.
* platform/ios/wak/WKContentObservation.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (242165 => 242166)
--- trunk/Source/WebCore/ChangeLog 2019-02-27 23:11:56 UTC (rev 242165)
+++ trunk/Source/WebCore/ChangeLog 2019-02-27 23:20:44 UTC (rev 242166)
@@ -1,3 +1,33 @@
+2019-02-27 Zalan Bujtas <za...@apple.com>
+
+ [ContentChangeObserver] Move DOM timer handling from global to ContentChangeObserver class
+ https://bugs.webkit.org/show_bug.cgi?id=195070
+ <rdar://problem/48417650>
+
+ Reviewed by Tim Horton.
+
+ Add DOM timer list to ContentChangeObserver and move the related code over from WK functions.
+
+ * page/ios/ContentChangeObserver.h:
+ * page/ios/ContentChangeObserver.mm:
+ (WebCore::ContentChangeObserver::startObservingDOMTimerScheduling):
+ (WebCore::ContentChangeObserver::countOfObservedDOMTimers):
+ (WebCore::ContentChangeObserver::clearObservedDOMTimers):
+ (WebCore::ContentChangeObserver::setObservedContentChange):
+ (WebCore::ContentChangeObserver::containsObservedDOMTimer):
+ (WebCore::ContentChangeObserver::addObservedDOMTimer):
+ (WebCore::ContentChangeObserver::removeObservedDOMTimer):
+ * platform/ios/wak/WKContentObservation.cpp:
+ (WKStartObservingDOMTimerScheduling):
+ (WKSetObservedContentChange):
+ (WebThreadGetObservedDOMTimers): Deleted.
+ (WebThreadCountOfObservedDOMTimers): Deleted.
+ (WebThreadClearObservedDOMTimers): Deleted.
+ (WebThreadContainsObservedDOMTimer): Deleted.
+ (WebThreadAddObservedDOMTimer): Deleted.
+ (WebThreadRemoveObservedDOMTimer): Deleted.
+ * platform/ios/wak/WKContentObservation.h:
+
2019-02-27 Justin Fan <justin_...@apple.com>
Fix build errors after Web GPU buffer updates changed some IDL fields from unsigned long to unsigned long long.
Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.h (242165 => 242166)
--- trunk/Source/WebCore/page/ios/ContentChangeObserver.h 2019-02-27 23:11:56 UTC (rev 242165)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.h 2019-02-27 23:20:44 UTC (rev 242166)
@@ -94,6 +94,7 @@
void clearTimersAndReportContentChange();
Page& m_page;
+ HashSet<const DOMTimer*> m_DOMTimerList;
};
}
Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.mm (242165 => 242166)
--- trunk/Source/WebCore/page/ios/ContentChangeObserver.mm 2019-02-27 23:11:56 UTC (rev 242165)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.mm 2019-02-27 23:20:44 UTC (rev 242166)
@@ -60,7 +60,7 @@
if (!containsObservedDOMTimer(timer))
return;
LOG_WITH_STREAM(ContentObservation, stream << "startObservingDOMTimerExecute: start observing (" << &timer << ") timer callback.");
- startObservingContentChanges();
+ WKStartObservingContentChanges();
startObservingStyleRecalcScheduling();
}
@@ -99,7 +99,7 @@
if (!shouldObserveNextStyleRecalc())
return;
LOG(ContentObservation, "startObservingStyleResolve: start observing style resolve.");
- startObservingContentChanges();
+ WKStartObservingContentChanges();
}
void ContentChangeObserver::stopObservingStyleResolve()
@@ -167,6 +167,7 @@
void ContentChangeObserver::startObservingDOMTimerScheduling()
{
WKStartObservingDOMTimerScheduling();
+ clearObservedDOMTimers();
}
void ContentChangeObserver::stopObservingDOMTimerScheduling()
@@ -211,12 +212,12 @@
unsigned ContentChangeObserver::countOfObservedDOMTimers()
{
- return WebThreadCountOfObservedDOMTimers();
+ return m_DOMTimerList.size();
}
void ContentChangeObserver::clearObservedDOMTimers()
{
- WebThreadClearObservedDOMTimers();
+ m_DOMTimerList.clear();
}
void ContentChangeObserver::setObservedContentChange(WKContentChange change)
@@ -226,17 +227,23 @@
bool ContentChangeObserver::containsObservedDOMTimer(const DOMTimer& timer)
{
- return WebThreadContainsObservedDOMTimer(const_cast<DOMTimer*>(&timer));
+ return m_DOMTimerList.contains(&timer);
}
void ContentChangeObserver::addObservedDOMTimer(const DOMTimer& timer)
{
- WebThreadAddObservedDOMTimer(const_cast<DOMTimer*>(&timer));
+ ASSERT(isObservingDOMTimerScheduling());
+ if (observedContentChange() == WKContentVisibilityChange)
+ return;
+ m_DOMTimerList.add(&timer);
}
void ContentChangeObserver::removeObservedDOMTimer(const DOMTimer& timer)
{
- WebThreadRemoveObservedDOMTimer(const_cast<DOMTimer*>(&timer));
+ m_DOMTimerList.remove(&timer);
+ // Force reset the content change flag when the last observed content modifier is removed. We should not be in indeterminate state anymore.
+ if (!countOfObservedDOMTimers() && observedContentChange() == WKContentIndeterminateChange)
+ setObservedContentChange(WKContentNoChange);
}
static Visibility elementImplicitVisibility(const Element& element)
Modified: trunk/Source/WebCore/platform/ios/wak/WKContentObservation.cpp (242165 => 242166)
--- trunk/Source/WebCore/platform/ios/wak/WKContentObservation.cpp 2019-02-27 23:11:56 UTC (rev 242165)
+++ trunk/Source/WebCore/platform/ios/wak/WKContentObservation.cpp 2019-02-27 23:20:44 UTC (rev 242166)
@@ -59,7 +59,6 @@
void WKStartObservingDOMTimerScheduling(void)
{
_WKObservingDOMTimerScheduling = true;
- WebThreadClearObservedDOMTimers();
}
void WKStopObservingDOMTimerScheduling(void)
@@ -110,8 +109,6 @@
if (change == WKContentVisibilityChange) {
_WKContentChange = change;
- // Don't need to listen to DOM timers/style recalcs anymore.
- WebThreadClearObservedDOMTimers();
_WKObservingNextStyleRecalc = false;
return;
}
@@ -123,45 +120,4 @@
ASSERT_NOT_REACHED();
}
-using DOMTimerList = HashSet<void*>;
-static DOMTimerList& WebThreadGetObservedDOMTimers()
-{
- ASSERT(WebThreadIsLockedOrDisabled());
- static NeverDestroyed<DOMTimerList> observedDOMTimers;
- return observedDOMTimers;
-}
-
-int WebThreadCountOfObservedDOMTimers(void)
-{
- return WebThreadGetObservedDOMTimers().size();
-}
-
-void WebThreadClearObservedDOMTimers()
-{
- WebThreadGetObservedDOMTimers().clear();
-}
-
-bool WebThreadContainsObservedDOMTimer(void* timer)
-{
- return WebThreadGetObservedDOMTimers().contains(timer);
-}
-
-void WebThreadAddObservedDOMTimer(void* timer)
-{
- ASSERT(_WKObservingDOMTimerScheduling);
- if (_WKContentChange != WKContentVisibilityChange)
- WebThreadGetObservedDOMTimers().add(timer);
-}
-
-void WebThreadRemoveObservedDOMTimer(void* timer)
-{
- WebThreadGetObservedDOMTimers().remove(timer);
- // Force reset the content change flag when the last observed content modifier is removed. We should not be in indeterminate state anymore.
- if (WebThreadCountOfObservedDOMTimers())
- return;
- if (WKObservedContentChange() != WKContentIndeterminateChange)
- return;
- _WKContentChange = WKContentNoChange;
-}
-
#endif // PLATFORM(IOS_FAMILY)
Modified: trunk/Source/WebCore/platform/ios/wak/WKContentObservation.h (242165 => 242166)
--- trunk/Source/WebCore/platform/ios/wak/WKContentObservation.h 2019-02-27 23:11:56 UTC (rev 242165)
+++ trunk/Source/WebCore/platform/ios/wak/WKContentObservation.h 2019-02-27 23:20:44 UTC (rev 242166)
@@ -55,9 +55,6 @@
WEBCORE_EXPORT WKContentChange WKObservedContentChange(void);
-WEBCORE_EXPORT int WebThreadCountOfObservedDOMTimers(void);
-WEBCORE_EXPORT void WebThreadClearObservedDOMTimers(void);
-
#ifdef __cplusplus
}
#endif
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes