Title: [246413] trunk/Source/WebKit
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);
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to