- Revision
- 246413
- Author
- timothy_hor...@apple.com
- Date
- 2019-06-13 14:20:26 -0700 (Thu, 13 Jun 2019)
Log Message
No content shows up for WKWebView while locked even with _canShowWhileLocked is YES
https://bugs.webkit.org/show_bug.cgi?id=198819
<rdar://problem/51636240>
Reviewed by Simon Fraser.
* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::didCreateContextForVisibilityPropagation):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::contextIDForVisibilityPropagation const):
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::contextIDForVisibilityPropagation): Deleted.
* UIProcess/WebProcessProxy.messages.in:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView _setupVisibilityPropagationView]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::didCreateContextForVisibilityPropagation): Deleted.
* UIProcess/ios/WebProcessProxyIOS.mm:
(WebKit::WebProcessProxy::didCreateContextForVisibilityPropagation): Deleted.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_shrinkToFitContentTimer):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebProcess.h:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
Move the creation of the visibility propagation context to WebPage instead of WebProcess,
because canShowWhileLocked is per-page, not per-process.
Also, pass canShowWhileLocked into the context creation function for the visibility
propagation context, not just RemoteLayerTree contexts.
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (246412 => 246413)
--- trunk/Source/WebKit/ChangeLog 2019-06-13 20:55:59 UTC (rev 246412)
+++ trunk/Source/WebKit/ChangeLog 2019-06-13 21:20:26 UTC (rev 246413)
@@ -1,3 +1,37 @@
+2019-06-13 Tim Horton <timothy_hor...@apple.com>
+
+ No content shows up for WKWebView while locked even with _canShowWhileLocked is YES
+ https://bugs.webkit.org/show_bug.cgi?id=198819
+ <rdar://problem/51636240>
+
+ Reviewed by Simon Fraser.
+
+ * UIProcess/Cocoa/WebPageProxyCocoa.mm:
+ (WebKit::WebPageProxy::didCreateContextForVisibilityPropagation):
+ * UIProcess/WebPageProxy.h:
+ (WebKit::WebPageProxy::contextIDForVisibilityPropagation const):
+ * UIProcess/WebPageProxy.messages.in:
+ * UIProcess/WebProcessProxy.h:
+ (WebKit::WebProcessProxy::contextIDForVisibilityPropagation): Deleted.
+ * UIProcess/WebProcessProxy.messages.in:
+ * UIProcess/ios/WKContentView.mm:
+ (-[WKContentView _setupVisibilityPropagationView]):
+ * UIProcess/ios/WebPageProxyIOS.mm:
+ (WebKit::WebPageProxy::didCreateContextForVisibilityPropagation): Deleted.
+ * UIProcess/ios/WebProcessProxyIOS.mm:
+ (WebKit::WebProcessProxy::didCreateContextForVisibilityPropagation): Deleted.
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::m_shrinkToFitContentTimer):
+ * WebProcess/WebPage/WebPage.h:
+ * WebProcess/WebProcess.h:
+ * WebProcess/cocoa/WebProcessCocoa.mm:
+ (WebKit::WebProcess::platformInitializeWebProcess):
+ Move the creation of the visibility propagation context to WebPage instead of WebProcess,
+ because canShowWhileLocked is per-page, not per-process.
+
+ Also, pass canShowWhileLocked into the context creation function for the visibility
+ propagation context, not just RemoteLayerTree contexts.
+
2019-06-13 Antoine Quint <grao...@apple.com>
"display: contents" Content click does not trigger
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm (246412 => 246413)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm 2019-06-13 20:55:59 UTC (rev 246412)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm 2019-06-13 21:20:26 UTC (rev 246413)
@@ -291,4 +291,12 @@
}
#endif // ENABLE(SPEECH_SYNTHESIS)
+#if HAVE(VISIBILITY_PROPAGATION_VIEW)
+void WebPageProxy::didCreateContextForVisibilityPropagation(LayerHostingContextID contextID)
+{
+ m_contextIDForVisibilityPropagation = contextID;
+ pageClient().didCreateContextForVisibilityPropagation(contextID);
+}
+#endif
+
} // namespace WebKit
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (246412 => 246413)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2019-06-13 20:55:59 UTC (rev 246412)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2019-06-13 21:20:26 UTC (rev 246413)
@@ -1078,6 +1078,7 @@
#if HAVE(VISIBILITY_PROPAGATION_VIEW)
void didCreateContextForVisibilityPropagation(LayerHostingContextID);
+ LayerHostingContextID contextIDForVisibilityPropagation() const { return m_contextIDForVisibilityPropagation; }
#endif
virtual void enterAcceleratedCompositingMode(const LayerTreeContext&);
@@ -2518,6 +2519,10 @@
std::unique_ptr<EditableImageController> m_editableImageController;
#endif
+#if HAVE(VISIBILITY_PROPAGATION_VIEW)
+ LayerHostingContextID m_contextIDForVisibilityPropagation { 0 };
+#endif
+
HashMap<WebViewDidMoveToWindowObserver*, WeakPtr<WebViewDidMoveToWindowObserver>> m_webViewDidMoveToWindowObservers;
mutable RefPtr<Logger> m_logger;
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in (246412 => 246413)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2019-06-13 20:55:59 UTC (rev 246412)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2019-06-13 21:20:26 UTC (rev 246413)
@@ -568,4 +568,8 @@
#if PLATFORM(GTK)
ShowEmojiPicker(WebCore::IntRect caretRect) -> (String result) Async
#endif
+
+#if HAVE(VISIBILITY_PROPAGATION_VIEW)
+ DidCreateContextForVisibilityPropagation(WebKit::LayerHostingContextID contextID);
+#endif
}
Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.h (246412 => 246413)
--- trunk/Source/WebKit/UIProcess/WebProcessProxy.h 2019-06-13 20:55:59 UTC (rev 246412)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.h 2019-06-13 21:20:26 UTC (rev 246413)
@@ -301,10 +301,6 @@
void unblockAccessibilityServerIfNeeded();
#endif
-#if HAVE(VISIBILITY_PROPAGATION_VIEW)
- LayerHostingContextID contextIDForVisibilityPropagation() { return m_contextIDForVisibilityPropagation; }
-#endif
-
#if PLATFORM(IOS_FAMILY)
void processWasUnexpectedlyUnsuspended(CompletionHandler<void()>&&);
#endif
@@ -351,10 +347,6 @@
void didDeliverMessagePortMessages(uint64_t messageBatchIdentifier);
void didCheckProcessLocalPortForActivity(uint64_t callbackIdentifier, bool isLocallyReachable);
-#if HAVE(VISIBILITY_PROPAGATION_VIEW)
- void didCreateContextForVisibilityPropagation(LayerHostingContextID);
-#endif
-
bool hasProvisionalPageWithID(WebCore::PageIdentifier) const;
bool isAllowedToUpdateBackForwardItem(WebBackForwardListItem&) const;
@@ -461,10 +453,6 @@
std::unique_ptr<WebCore::DeferrableOneShotTimer> m_unexpectedActivityTimer;
#endif
-#if HAVE(VISIBILITY_PROPAGATION_VIEW)
- LayerHostingContextID m_contextIDForVisibilityPropagation { 0 };
-#endif
-
HashMap<String, uint64_t> m_pageURLRetainCountMap;
Optional<WebCore::RegistrableDomain> m_registrableDomain;
Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.messages.in (246412 => 246413)
--- trunk/Source/WebKit/UIProcess/WebProcessProxy.messages.in 2019-06-13 20:55:59 UTC (rev 246412)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.messages.in 2019-06-13 21:20:26 UTC (rev 246413)
@@ -80,10 +80,6 @@
StopDisplayLink(unsigned observerID, uint32_t displayID)
#endif
-#if HAVE(VISIBILITY_PROPAGATION_VIEW)
- DidCreateContextForVisibilityPropagation(WebKit::LayerHostingContextID contextID);
-#endif
-
#if PLATFORM(IOS_FAMILY)
ProcessWasUnexpectedlyUnsuspended() -> () Async
#endif
Modified: trunk/Source/WebKit/UIProcess/ios/WKContentView.mm (246412 => 246413)
--- trunk/Source/WebKit/UIProcess/ios/WKContentView.mm 2019-06-13 20:55:59 UTC (rev 246412)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentView.mm 2019-06-13 21:20:26 UTC (rev 246413)
@@ -194,7 +194,7 @@
- (void)_setupVisibilityPropagationView
{
auto processIdentifier = _page->process().processIdentifier();
- auto contextID = _page->process().contextIDForVisibilityPropagation();
+ auto contextID = _page->contextIDForVisibilityPropagation();
if (!processIdentifier || !contextID)
return;
Modified: trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm (246412 => 246413)
--- trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm 2019-06-13 20:55:59 UTC (rev 246412)
+++ trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm 2019-06-13 21:20:26 UTC (rev 246413)
@@ -84,13 +84,6 @@
return standardUserAgentWithApplicationName(applicationNameForUserAgent);
}
-#if HAVE(VISIBILITY_PROPAGATION_VIEW)
-void WebPageProxy::didCreateContextForVisibilityPropagation(LayerHostingContextID contextID)
-{
- pageClient().didCreateContextForVisibilityPropagation(contextID);
-}
-#endif
-
void WebPageProxy::getIsSpeaking(CompletionHandler<void(bool)>&& completionHandler)
{
notImplemented();
Modified: trunk/Source/WebKit/UIProcess/ios/WebProcessProxyIOS.mm (246412 => 246413)
--- trunk/Source/WebKit/UIProcess/ios/WebProcessProxyIOS.mm 2019-06-13 20:55:59 UTC (rev 246412)
+++ trunk/Source/WebKit/UIProcess/ios/WebProcessProxyIOS.mm 2019-06-13 21:20:26 UTC (rev 246413)
@@ -62,15 +62,6 @@
m_hasSentMessageToUnblockAccessibilityServer = true;
}
-#if HAVE(VISIBILITY_PROPAGATION_VIEW)
-void WebProcessProxy::didCreateContextForVisibilityPropagation(LayerHostingContextID contextID)
-{
- m_contextIDForVisibilityPropagation = contextID;
- for (auto& page : copyToVectorOf<RefPtr<WebPageProxy>>(m_pageMap.values()))
- page->didCreateContextForVisibilityPropagation(contextID);
-}
-#endif
-
} // namespace WebKit
#endif // PLATFORM(IOS_FAMILY)
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (246412 => 246413)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2019-06-13 20:55:59 UTC (rev 246412)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp 2019-06-13 21:20:26 UTC (rev 246413)
@@ -683,6 +683,14 @@
PlatformMediaSessionManager::setShouldDeactivateAudioSession(true);
#endif
+#if HAVE(VISIBILITY_PROPAGATION_VIEW)
+ m_contextForVisibilityPropagation = LayerHostingContext::createForExternalHostingProcess({
+ m_canShowWhileLocked
+ });
+ RELEASE_LOG(Process, "Created context with ID %d for visibility propagation from UIProcess", m_contextForVisibilityPropagation->contextID());
+ send(Messages::WebPageProxy::DidCreateContextForVisibilityPropagation(m_contextForVisibilityPropagation->contextID()));
+#endif
+
updateThrottleState();
}
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (246412 => 246413)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2019-06-13 20:55:59 UTC (rev 246412)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2019-06-13 21:20:26 UTC (rev 246413)
@@ -1940,6 +1940,9 @@
#if ENABLE(VIEWPORT_RESIZING)
WebCore::DeferrableOneShotTimer m_shrinkToFitContentTimer;
#endif
+#if HAVE(VISIBILITY_PROPAGATION_VIEW)
+ std::unique_ptr<LayerHostingContext> m_contextForVisibilityPropagation;
+#endif
};
} // namespace WebKit
Modified: trunk/Source/WebKit/WebProcess/WebProcess.h (246412 => 246413)
--- trunk/Source/WebKit/WebProcess/WebProcess.h 2019-06-13 20:55:59 UTC (rev 246412)
+++ trunk/Source/WebKit/WebProcess/WebProcess.h 2019-06-13 21:20:26 UTC (rev 246413)
@@ -531,9 +531,6 @@
WebSQLiteDatabaseTracker m_webSQLiteDatabaseTracker;
ProcessTaskStateObserver m_taskStateObserver { *this };
#endif
-#if HAVE(VISIBILITY_PROPAGATION_VIEW)
- std::unique_ptr<LayerHostingContext> m_contextForVisibilityPropagation;
-#endif
enum PageMarkingLayersAsVolatileCounterType { };
using PageMarkingLayersAsVolatileCounter = RefCounter<PageMarkingLayersAsVolatileCounterType>;
Modified: trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (246412 => 246413)
--- trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2019-06-13 20:55:59 UTC (rev 246412)
+++ trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm 2019-06-13 21:20:26 UTC (rev 246413)
@@ -174,12 +174,6 @@
m_compositingRenderServerPort = WTFMove(parameters.acceleratedCompositingPort);
-#if HAVE(VISIBILITY_PROPAGATION_VIEW)
- m_contextForVisibilityPropagation = LayerHostingContext::createForExternalHostingProcess();
- RELEASE_LOG(Process, "Created context with ID %d for visibility propagation from UIProcess", m_contextForVisibilityPropagation->contextID());
- parentProcessConnection()->send(Messages::WebProcessProxy::DidCreateContextForVisibilityPropagation(m_contextForVisibilityPropagation->contextID()), 0);
-#endif
-
WebCore::registerMemoryReleaseNotifyCallbacks();
MemoryPressureHandler::ReliefLogger::setLoggingEnabled(parameters.shouldEnableMemoryPressureReliefLogging);