Diff
Modified: trunk/Source/WebCore/ChangeLog (242107 => 242108)
--- trunk/Source/WebCore/ChangeLog 2019-02-26 22:14:51 UTC (rev 242107)
+++ trunk/Source/WebCore/ChangeLog 2019-02-26 22:31:07 UTC (rev 242108)
@@ -1,5 +1,27 @@
2019-02-26 Zalan Bujtas <[email protected]>
+ [ContentChangeObserver] clearContentChangeObservers should be internal to ContentChangeObserver class
+ https://bugs.webkit.org/show_bug.cgi?id=195066
+ <rdar://problem/48411682>
+
+ Reviewed by Tim Horton.
+
+ Now all the empty clearContentChangeObservers() implementations can be removed.
+
+ * dom/Document.cpp:
+ (WebCore::Document::platformSuspendOrStopActiveDOMObjects):
+ * loader/EmptyClients.h:
+ * page/ChromeClient.h:
+ * page/Frame.cpp:
+ (WebCore::Frame::willDetachPage):
+ * page/ios/ContentChangeObserver.h:
+ * page/ios/ContentChangeObserver.mm:
+ (WebCore::ContentChangeObserver::clearTimersAndReportContentChange):
+ (WebCore::ContentChangeObserver::didSuspendActiveDOMObjects): Might need to merge them.
+ (WebCore::ContentChangeObserver::willDetachPage):
+
+2019-02-26 Zalan Bujtas <[email protected]>
+
[ContentChangeObserver] Move style recalc schedule observation logic to ContentChangeObserver
https://bugs.webkit.org/show_bug.cgi?id=195062
<rdar://problem/48409258>
Modified: trunk/Source/WebCore/dom/Document.cpp (242107 => 242108)
--- trunk/Source/WebCore/dom/Document.cpp 2019-02-26 22:14:51 UTC (rev 242107)
+++ trunk/Source/WebCore/dom/Document.cpp 2019-02-26 22:31:07 UTC (rev 242108)
@@ -2631,13 +2631,8 @@
void Document::platformSuspendOrStopActiveDOMObjects()
{
#if PLATFORM(IOS_FAMILY)
- if (!page() || !frame())
- return;
- auto& page = *this->page();
- if (!page.contentChangeObserver().countOfObservedDOMTimers())
- return;
- LOG_WITH_STREAM(ContentObservation, stream << "Document::platformSuspendOrStopActiveDOMObjects: remove registered timers.");
- page.chrome().client().clearContentChangeObservers(*frame());
+ if (auto* page = this->page())
+ page->contentChangeObserver().didSuspendActiveDOMObjects();
#endif
}
Modified: trunk/Source/WebCore/loader/EmptyClients.h (242107 => 242108)
--- trunk/Source/WebCore/loader/EmptyClients.h 2019-02-26 22:14:51 UTC (rev 242107)
+++ trunk/Source/WebCore/loader/EmptyClients.h 2019-02-26 22:31:07 UTC (rev 242108)
@@ -166,7 +166,6 @@
void didReceiveMobileDocType(bool) final { }
void setNeedsScrollNotifications(Frame&, bool) final { }
void observedContentChange(Frame&) final { }
- void clearContentChangeObservers(Frame&) final { }
void notifyRevealedSelectionByScrollingFrame(Frame&) final { }
void didLayout(LayoutType) final { }
void didStartOverflowScroll() final { }
Modified: trunk/Source/WebCore/page/ChromeClient.h (242107 => 242108)
--- trunk/Source/WebCore/page/ChromeClient.h 2019-02-26 22:14:51 UTC (rev 242107)
+++ trunk/Source/WebCore/page/ChromeClient.h 2019-02-26 22:31:07 UTC (rev 242108)
@@ -242,7 +242,6 @@
virtual void didReceiveMobileDocType(bool) = 0;
virtual void setNeedsScrollNotifications(Frame&, bool) = 0;
virtual void observedContentChange(Frame&) = 0;
- virtual void clearContentChangeObservers(Frame&) = 0;
virtual void notifyRevealedSelectionByScrollingFrame(Frame&) = 0;
enum LayoutType { NormalLayout, Scroll };
Modified: trunk/Source/WebCore/page/Frame.cpp (242107 => 242108)
--- trunk/Source/WebCore/page/Frame.cpp 2019-02-26 22:14:51 UTC (rev 242107)
+++ trunk/Source/WebCore/page/Frame.cpp 2019-02-26 22:31:07 UTC (rev 242108)
@@ -838,10 +838,8 @@
page()->scrollingCoordinator()->willDestroyScrollableArea(*m_view);
#if PLATFORM(IOS_FAMILY)
- if (page() && page()->contentChangeObserver().countOfObservedDOMTimers()) {
- LOG(ContentObservation, "Frame::willDetachPage: remove registered timers.");
- m_page->chrome().client().clearContentChangeObservers(*this);
- }
+ if (auto* page = this->page())
+ page->contentChangeObserver().willDetachPage();
#endif
script().clearScriptObjects();
Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.h (242107 => 242108)
--- trunk/Source/WebCore/page/ios/ContentChangeObserver.h 2019-02-26 22:14:51 UTC (rev 242107)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.h 2019-02-26 22:31:07 UTC (rev 242108)
@@ -47,14 +47,14 @@
void startObservingStyleResolve();
void stopObservingStyleResolve();
+ void didSuspendActiveDOMObjects();
+ void willDetachPage();
+
WEBCORE_EXPORT void startObservingContentChanges();
WEBCORE_EXPORT void stopObservingContentChanges();
WEBCORE_EXPORT WKContentChange observedContentChange();
- WEBCORE_EXPORT unsigned countOfObservedDOMTimers();
- WEBCORE_EXPORT void clearObservedDOMTimers();
-
class StyleChange {
public:
StyleChange(const Element&, ContentChangeObserver&);
@@ -88,6 +88,11 @@
void setObservedContentChange(WKContentChange);
+ unsigned countOfObservedDOMTimers();
+ void clearObservedDOMTimers();
+
+ void clearTimersAndReportContentChange();
+
Page& m_page;
};
Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.mm (242107 => 242108)
--- trunk/Source/WebCore/page/ios/ContentChangeObserver.mm 2019-02-26 22:14:51 UTC (rev 242107)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.mm 2019-02-26 22:31:07 UTC (rev 242108)
@@ -128,6 +128,25 @@
m_page.chrome().client().observedContentChange(m_page.mainFrame());
}
+void ContentChangeObserver::clearTimersAndReportContentChange()
+{
+ if (!countOfObservedDOMTimers())
+ return;
+ LOG(ContentObservation, "clearTimersAndReportContentChange: remove registered timers and report content change.");
+ clearObservedDOMTimers();
+ m_page.chrome().client().observedContentChange(m_page.mainFrame());
+}
+
+void ContentChangeObserver::didSuspendActiveDOMObjects()
+{
+ clearTimersAndReportContentChange();
+}
+
+void ContentChangeObserver::willDetachPage()
+{
+ clearTimersAndReportContentChange();
+}
+
void ContentChangeObserver::startObservingContentChanges()
{
startObservingDOMTimerScheduling();
Modified: trunk/Source/WebKit/ChangeLog (242107 => 242108)
--- trunk/Source/WebKit/ChangeLog 2019-02-26 22:14:51 UTC (rev 242107)
+++ trunk/Source/WebKit/ChangeLog 2019-02-26 22:31:07 UTC (rev 242108)
@@ -1,3 +1,15 @@
+2019-02-26 Zalan Bujtas <[email protected]>
+
+ [ContentChangeObserver] clearContentChangeObservers should be internal to ContentChangeObserver class
+ https://bugs.webkit.org/show_bug.cgi?id=195066
+ <rdar://problem/48411682>
+
+ Reviewed by Tim Horton.
+
+ * WebProcess/WebCoreSupport/WebChromeClient.h:
+ * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
+ (WebKit::WebChromeClient::clearContentChangeObservers): Deleted.
+
2019-02-26 Per Arne Vollan <[email protected]>
[iOS] Sandbox should allow mach lookups related to media capturing
Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h (242107 => 242108)
--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h 2019-02-26 22:14:51 UTC (rev 242107)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h 2019-02-26 22:31:07 UTC (rev 242108)
@@ -156,7 +156,6 @@
void didReceiveMobileDocType(bool) final;
void setNeedsScrollNotifications(WebCore::Frame&, bool) final;
void observedContentChange(WebCore::Frame&) final;
- void clearContentChangeObservers(WebCore::Frame&) final;
void notifyRevealedSelectionByScrollingFrame(WebCore::Frame&) final;
bool isStopping() final;
Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm (242107 => 242108)
--- trunk/Source/WebKit/WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm 2019-02-26 22:14:51 UTC (rev 242107)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm 2019-02-26 22:31:07 UTC (rev 242108)
@@ -68,11 +68,6 @@
m_page.completePendingSyntheticClickForContentChangeObserver();
}
-void WebChromeClient::clearContentChangeObservers(WebCore::Frame&)
-{
- notImplemented();
-}
-
void WebChromeClient::notifyRevealedSelectionByScrollingFrame(WebCore::Frame&)
{
m_page.didChangeSelection();
Modified: trunk/Source/WebKitLegacy/ios/ChangeLog (242107 => 242108)
--- trunk/Source/WebKitLegacy/ios/ChangeLog 2019-02-26 22:14:51 UTC (rev 242107)
+++ trunk/Source/WebKitLegacy/ios/ChangeLog 2019-02-26 22:31:07 UTC (rev 242108)
@@ -1,3 +1,15 @@
+2019-02-26 Zalan Bujtas <[email protected]>
+
+ [ContentChangeObserver] clearContentChangeObservers should be internal to ContentChangeObserver class
+ https://bugs.webkit.org/show_bug.cgi?id=195066
+ <rdar://problem/48411682>
+
+ Reviewed by Tim Horton.
+
+ * WebCoreSupport/WebChromeClientIOS.h:
+ * WebCoreSupport/WebChromeClientIOS.mm:
+ (WebChromeClientIOS::clearContentChangeObservers): Deleted.
+
2019-02-24 Zalan Bujtas <[email protected]>
Introduce ContentChangeObserver class
Modified: trunk/Source/WebKitLegacy/ios/WebCoreSupport/WebChromeClientIOS.h (242107 => 242108)
--- trunk/Source/WebKitLegacy/ios/WebCoreSupport/WebChromeClientIOS.h 2019-02-26 22:14:51 UTC (rev 242107)
+++ trunk/Source/WebKitLegacy/ios/WebCoreSupport/WebChromeClientIOS.h 2019-02-26 22:31:07 UTC (rev 242108)
@@ -56,7 +56,6 @@
void didReceiveMobileDocType(bool) final;
void setNeedsScrollNotifications(WebCore::Frame&, bool) final;
void observedContentChange(WebCore::Frame&) final;
- void clearContentChangeObservers(WebCore::Frame&) final;
WebCore::FloatSize screenSize() const final;
WebCore::FloatSize availableScreenSize() const final;
WebCore::FloatSize overrideScreenSize() const final;
Modified: trunk/Source/WebKitLegacy/ios/WebCoreSupport/WebChromeClientIOS.mm (242107 => 242108)
--- trunk/Source/WebKitLegacy/ios/WebCoreSupport/WebChromeClientIOS.mm 2019-02-26 22:14:51 UTC (rev 242107)
+++ trunk/Source/WebKitLegacy/ios/WebCoreSupport/WebChromeClientIOS.mm 2019-02-26 22:31:07 UTC (rev 242108)
@@ -189,18 +189,6 @@
[[webView() _UIKitDelegateForwarder] webView:webView() didObserveDeferredContentChange:frame.page()->contentChangeObserver().observedContentChange() forFrame:kit(&frame)];
}
-void WebChromeClientIOS::clearContentChangeObservers(WebCore::Frame& frame)
-{
- if (!frame.page())
- return;
- auto& contentChangeObserver = frame.page()->contentChangeObserver();
- ASSERT(contentChangeObserver.countOfObservedDOMTimers());
- if (!contentChangeObserver.countOfObservedDOMTimers())
- return;
- contentChangeObserver.clearObservedDOMTimers();
- observedContentChange(frame);
-}
-
static inline NSString *nameForViewportFitValue(ViewportFit value)
{
switch (value) {