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

Reply via email to