Title: [242093] trunk/Source/WebCore
- Revision
- 242093
- Author
- za...@apple.com
- Date
- 2019-02-26 10:28:42 -0800 (Tue, 26 Feb 2019)
Log Message
[ContentChangeObserver] Move observing logic from Document::updateStyleIfNeeded to ContentChangeObserver
https://bugs.webkit.org/show_bug.cgi?id=195032
<rdar://problem/48388063>
Reviewed by Tim Horton.
This might eventually turn into a regular start/stop content observing call.
* dom/Document.cpp:
(WebCore::Document::updateStyleIfNeeded):
* page/ios/ContentChangeObserver.h:
* page/ios/ContentChangeObserver.mm:
(WebCore::ContentChangeObserver::startObservingStyleResolve):
(WebCore::ContentChangeObserver::stopObservingStyleResolve):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (242092 => 242093)
--- trunk/Source/WebCore/ChangeLog 2019-02-26 18:24:41 UTC (rev 242092)
+++ trunk/Source/WebCore/ChangeLog 2019-02-26 18:28:42 UTC (rev 242093)
@@ -1,5 +1,22 @@
2019-02-26 Zalan Bujtas <za...@apple.com>
+ [ContentChangeObserver] Move observing logic from Document::updateStyleIfNeeded to ContentChangeObserver
+ https://bugs.webkit.org/show_bug.cgi?id=195032
+ <rdar://problem/48388063>
+
+ Reviewed by Tim Horton.
+
+ This might eventually turn into a regular start/stop content observing call.
+
+ * dom/Document.cpp:
+ (WebCore::Document::updateStyleIfNeeded):
+ * page/ios/ContentChangeObserver.h:
+ * page/ios/ContentChangeObserver.mm:
+ (WebCore::ContentChangeObserver::startObservingStyleResolve):
+ (WebCore::ContentChangeObserver::stopObservingStyleResolve):
+
+2019-02-26 Zalan Bujtas <za...@apple.com>
+
[ContentChangeObserver] Move CheckForVisibilityChange to ContentChangeObserver class
https://bugs.webkit.org/show_bug.cgi?id=195035
<rdar://problem/48389123>
Modified: trunk/Source/WebCore/dom/Document.cpp (242092 => 242093)
--- trunk/Source/WebCore/dom/Document.cpp 2019-02-26 18:24:41 UTC (rev 242092)
+++ trunk/Source/WebCore/dom/Document.cpp 2019-02-26 18:28:42 UTC (rev 242093)
@@ -2050,16 +2050,8 @@
}
#if PLATFORM(IOS_FAMILY)
- auto observingContentChange = false;
- if (auto* page = this->page()) {
- auto& contentChangeObserver = page->contentChangeObserver();
- observingContentChange = contentChangeObserver.shouldObserveNextStyleRecalc();
- if (observingContentChange) {
- LOG_WITH_STREAM(ContentObservation, stream << "Document(" << this << ")::scheduleStyleRecalc: start observing content change.");
- contentChangeObserver.setShouldObserveNextStyleRecalc(false);
- contentChangeObserver.startObservingContentChanges();
- }
- }
+ if (auto* page = this->page())
+ page->contentChangeObserver().startObservingStyleResolve();
#endif
// The early exit above for !needsStyleRecalc() is needed when updateWidgetPositions() is called in runOrScheduleAsynchronousTasks().
RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(isSafeToUpdateStyleOrLayout(*this));
@@ -2067,19 +2059,8 @@
resolveStyle();
#if PLATFORM(IOS_FAMILY)
- if (observingContentChange && page()) {
- LOG_WITH_STREAM(ContentObservation, stream << "Document(" << this << ")::scheduleStyleRecalc: stop observing content change.");
- auto& contentChangeObserver = page()->contentChangeObserver();
- contentChangeObserver.stopObservingContentChanges();
-
- auto inDeterminedState = contentChangeObserver.observedContentChange() == WKContentVisibilityChange || !contentChangeObserver.countOfObservedDOMTimers();
- if (inDeterminedState) {
- LOG_WITH_STREAM(ContentObservation, stream << "Document(" << this << ")::scheduleStyleRecalc: notify the pending synthetic click handler.");
- page()->chrome().client().observedContentChange(*frame());
- } else {
- LOG_WITH_STREAM(ContentObservation, stream << "Document(" << this << ")::scheduleStyleRecalc: can't decided it yet.");
- }
- }
+ if (auto* page = this->page())
+ page->contentChangeObserver().stopObservingStyleResolve();
#endif
return true;
}
Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.h (242092 => 242093)
--- trunk/Source/WebCore/page/ios/ContentChangeObserver.h 2019-02-26 18:24:41 UTC (rev 242092)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.h 2019-02-26 18:28:42 UTC (rev 242093)
@@ -43,6 +43,9 @@
void startObservingDOMTimerExecute(const DOMTimer&);
void stopObservingDOMTimerExecute(const DOMTimer&);
+ void startObservingStyleResolve();
+ void stopObservingStyleResolve();
+
WEBCORE_EXPORT void startObservingContentChanges();
WEBCORE_EXPORT void stopObservingContentChanges();
Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.mm (242092 => 242093)
--- trunk/Source/WebCore/page/ios/ContentChangeObserver.mm 2019-02-26 18:24:41 UTC (rev 242092)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.mm 2019-02-26 18:28:42 UTC (rev 242093)
@@ -86,6 +86,29 @@
}
}
+void ContentChangeObserver::startObservingStyleResolve()
+{
+ if (!shouldObserveNextStyleRecalc())
+ return;
+ LOG(ContentObservation, "startObservingStyleResolve: start observing style resolve.");
+ startObservingContentChanges();
+}
+
+void ContentChangeObserver::stopObservingStyleResolve()
+{
+ if (!shouldObserveNextStyleRecalc())
+ return;
+ LOG(ContentObservation, "stopObservingStyleResolve: stop observing style resolve");
+ setShouldObserveNextStyleRecalc(false);
+ auto inDeterminedState = observedContentChange() == WKContentVisibilityChange || !countOfObservedDOMTimers();
+ if (!inDeterminedState) {
+ LOG(ContentObservation, "stopObservingStyleResolve: can't decided it yet.");
+ return;
+ }
+ LOG(ContentObservation, "stopObservingStyleResolve: notify the pending synthetic click handler.");
+ m_page.chrome().client().observedContentChange(m_page.mainFrame());
+}
+
void ContentChangeObserver::removeDOMTimer(const DOMTimer& timer)
{
if (!containsObservedDOMTimer(timer))
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes