Changeset 246413 in webkit


Ignore:
Timestamp:
Jun 13, 2019 2:20:26 PM (5 years ago)
Author:
timothy_horton@apple.com
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.

Location:
trunk/Source/WebKit
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r246404 r246413  
     12019-06-13  Tim Horton  <timothy_horton@apple.com>
     2
     3        No content shows up for WKWebView while locked even with _canShowWhileLocked is YES
     4        https://bugs.webkit.org/show_bug.cgi?id=198819
     5        <rdar://problem/51636240>
     6
     7        Reviewed by Simon Fraser.
     8
     9        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
     10        (WebKit::WebPageProxy::didCreateContextForVisibilityPropagation):
     11        * UIProcess/WebPageProxy.h:
     12        (WebKit::WebPageProxy::contextIDForVisibilityPropagation const):
     13        * UIProcess/WebPageProxy.messages.in:
     14        * UIProcess/WebProcessProxy.h:
     15        (WebKit::WebProcessProxy::contextIDForVisibilityPropagation): Deleted.
     16        * UIProcess/WebProcessProxy.messages.in:
     17        * UIProcess/ios/WKContentView.mm:
     18        (-[WKContentView _setupVisibilityPropagationView]):
     19        * UIProcess/ios/WebPageProxyIOS.mm:
     20        (WebKit::WebPageProxy::didCreateContextForVisibilityPropagation): Deleted.
     21        * UIProcess/ios/WebProcessProxyIOS.mm:
     22        (WebKit::WebProcessProxy::didCreateContextForVisibilityPropagation): Deleted.
     23        * WebProcess/WebPage/WebPage.cpp:
     24        (WebKit::m_shrinkToFitContentTimer):
     25        * WebProcess/WebPage/WebPage.h:
     26        * WebProcess/WebProcess.h:
     27        * WebProcess/cocoa/WebProcessCocoa.mm:
     28        (WebKit::WebProcess::platformInitializeWebProcess):
     29        Move the creation of the visibility propagation context to WebPage instead of WebProcess,
     30        because canShowWhileLocked is per-page, not per-process.
     31
     32        Also, pass canShowWhileLocked into the context creation function for the visibility
     33        propagation context, not just RemoteLayerTree contexts.
     34
    1352019-06-13  Antoine Quint  <graouts@apple.com>
    236
  • trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm

    r246235 r246413  
    292292#endif // ENABLE(SPEECH_SYNTHESIS)
    293293
     294#if HAVE(VISIBILITY_PROPAGATION_VIEW)
     295void WebPageProxy::didCreateContextForVisibilityPropagation(LayerHostingContextID contextID)
     296{
     297    m_contextIDForVisibilityPropagation = contextID;
     298    pageClient().didCreateContextForVisibilityPropagation(contextID);
     299}
     300#endif
     301
    294302} // namespace WebKit
  • trunk/Source/WebKit/UIProcess/WebPageProxy.h

    r246347 r246413  
    10791079#if HAVE(VISIBILITY_PROPAGATION_VIEW)
    10801080    void didCreateContextForVisibilityPropagation(LayerHostingContextID);
     1081    LayerHostingContextID contextIDForVisibilityPropagation() const { return m_contextIDForVisibilityPropagation; }
    10811082#endif
    10821083
     
    25192520#endif
    25202521
     2522#if HAVE(VISIBILITY_PROPAGATION_VIEW)
     2523    LayerHostingContextID m_contextIDForVisibilityPropagation { 0 };
     2524#endif
     2525
    25212526    HashMap<WebViewDidMoveToWindowObserver*, WeakPtr<WebViewDidMoveToWindowObserver>> m_webViewDidMoveToWindowObservers;
    25222527
  • trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in

    r245998 r246413  
    569569    ShowEmojiPicker(WebCore::IntRect caretRect) -> (String result) Async
    570570#endif
     571
     572#if HAVE(VISIBILITY_PROPAGATION_VIEW)
     573    DidCreateContextForVisibilityPropagation(WebKit::LayerHostingContextID contextID);
     574#endif
    571575}
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.h

    r245868 r246413  
    302302#endif
    303303
    304 #if HAVE(VISIBILITY_PROPAGATION_VIEW)
    305     LayerHostingContextID contextIDForVisibilityPropagation() { return m_contextIDForVisibilityPropagation; }
    306 #endif
    307 
    308304#if PLATFORM(IOS_FAMILY)
    309305    void processWasUnexpectedlyUnsuspended(CompletionHandler<void()>&&);
     
    352348    void didCheckProcessLocalPortForActivity(uint64_t callbackIdentifier, bool isLocallyReachable);
    353349
    354 #if HAVE(VISIBILITY_PROPAGATION_VIEW)
    355     void didCreateContextForVisibilityPropagation(LayerHostingContextID);
    356 #endif
    357 
    358350    bool hasProvisionalPageWithID(WebCore::PageIdentifier) const;
    359351    bool isAllowedToUpdateBackForwardItem(WebBackForwardListItem&) const;
     
    462454#endif
    463455
    464 #if HAVE(VISIBILITY_PROPAGATION_VIEW)
    465     LayerHostingContextID m_contextIDForVisibilityPropagation { 0 };
    466 #endif
    467 
    468456    HashMap<String, uint64_t> m_pageURLRetainCountMap;
    469457
  • trunk/Source/WebKit/UIProcess/WebProcessProxy.messages.in

    r244091 r246413  
    8181#endif
    8282
    83 #if HAVE(VISIBILITY_PROPAGATION_VIEW)
    84     DidCreateContextForVisibilityPropagation(WebKit::LayerHostingContextID contextID);
    85 #endif
    86 
    8783#if PLATFORM(IOS_FAMILY)
    8884    ProcessWasUnexpectedlyUnsuspended() -> () Async
  • trunk/Source/WebKit/UIProcess/ios/WKContentView.mm

    r246228 r246413  
    195195{
    196196    auto processIdentifier = _page->process().processIdentifier();
    197     auto contextID = _page->process().contextIDForVisibilityPropagation();
     197    auto contextID = _page->contextIDForVisibilityPropagation();
    198198    if (!processIdentifier || !contextID)
    199199        return;
  • trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm

    r246347 r246413  
    8585}
    8686
    87 #if HAVE(VISIBILITY_PROPAGATION_VIEW)
    88 void WebPageProxy::didCreateContextForVisibilityPropagation(LayerHostingContextID contextID)
    89 {
    90     pageClient().didCreateContextForVisibilityPropagation(contextID);
    91 }
    92 #endif
    93 
    9487void WebPageProxy::getIsSpeaking(CompletionHandler<void(bool)>&& completionHandler)
    9588{
  • trunk/Source/WebKit/UIProcess/ios/WebProcessProxyIOS.mm

    r244085 r246413  
    6363}
    6464
    65 #if HAVE(VISIBILITY_PROPAGATION_VIEW)
    66 void WebProcessProxy::didCreateContextForVisibilityPropagation(LayerHostingContextID contextID)
    67 {
    68     m_contextIDForVisibilityPropagation = contextID;
    69     for (auto& page : copyToVectorOf<RefPtr<WebPageProxy>>(m_pageMap.values()))
    70         page->didCreateContextForVisibilityPropagation(contextID);
    71 }
    72 #endif
    73 
    7465} // namespace WebKit
    7566
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp

    r246347 r246413  
    684684#endif
    685685
     686#if HAVE(VISIBILITY_PROPAGATION_VIEW)
     687    m_contextForVisibilityPropagation = LayerHostingContext::createForExternalHostingProcess({
     688        m_canShowWhileLocked
     689    });
     690    RELEASE_LOG(Process, "Created context with ID %d for visibility propagation from UIProcess", m_contextForVisibilityPropagation->contextID());
     691    send(Messages::WebPageProxy::DidCreateContextForVisibilityPropagation(m_contextForVisibilityPropagation->contextID()));
     692#endif
     693
    686694    updateThrottleState();
    687695}
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.h

    r246348 r246413  
    19411941    WebCore::DeferrableOneShotTimer m_shrinkToFitContentTimer;
    19421942#endif
     1943#if HAVE(VISIBILITY_PROPAGATION_VIEW)
     1944    std::unique_ptr<LayerHostingContext> m_contextForVisibilityPropagation;
     1945#endif
    19431946};
    19441947
  • trunk/Source/WebKit/WebProcess/WebProcess.h

    r246388 r246413  
    532532    ProcessTaskStateObserver m_taskStateObserver { *this };
    533533#endif
    534 #if HAVE(VISIBILITY_PROPAGATION_VIEW)
    535     std::unique_ptr<LayerHostingContext> m_contextForVisibilityPropagation;
    536 #endif
    537534
    538535    enum PageMarkingLayersAsVolatileCounterType { };
  • trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm

    r245796 r246413  
    175175    m_compositingRenderServerPort = WTFMove(parameters.acceleratedCompositingPort);
    176176
    177 #if HAVE(VISIBILITY_PROPAGATION_VIEW)
    178     m_contextForVisibilityPropagation = LayerHostingContext::createForExternalHostingProcess();
    179     RELEASE_LOG(Process, "Created context with ID %d for visibility propagation from UIProcess", m_contextForVisibilityPropagation->contextID());
    180     parentProcessConnection()->send(Messages::WebProcessProxy::DidCreateContextForVisibilityPropagation(m_contextForVisibilityPropagation->contextID()), 0);
    181 #endif
    182 
    183177    WebCore::registerMemoryReleaseNotifyCallbacks();
    184178    MemoryPressureHandler::ReliefLogger::setLoggingEnabled(parameters.shouldEnableMemoryPressureReliefLogging);
Note: See TracChangeset for help on using the changeset viewer.