Changeset 229629 in webkit


Ignore:
Timestamp:
Mar 15, 2018 11:30:19 AM (6 years ago)
Author:
Brent Fulgham
Message:

REGRESSION(r229484): Plugins often require CGS Connections to draw
https://bugs.webkit.org/show_bug.cgi?id=183663
<rdar://problem/38439218>

Reviewed by Per Arne Vollan.

Flash requires an active CGSConnection to work properly. Since we don't want the WebContent
process to have on, create a new plugin process-specific layer host creation method that
gives this access.

  • Platform/mac/LayerHostingContext.h:
  • Platform/mac/LayerHostingContext.mm:

(WebKit::LayerHostingContext::createForExternalPluginHostingProcess): Added.

  • PluginProcess/mac/PluginControllerProxyMac.mm:

(WebKit::PluginControllerProxy::updateLayerHostingContext): Use the new creation
method.

Location:
trunk/Source/WebKit
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r229622 r229629  
     12018-03-15  Brent Fulgham  <bfulgham@apple.com>
     2
     3        REGRESSION(r229484): Plugins often require CGS Connections to draw
     4        https://bugs.webkit.org/show_bug.cgi?id=183663
     5        <rdar://problem/38439218>
     6
     7        Reviewed by Per Arne Vollan.
     8
     9        Flash requires an active CGSConnection to work properly. Since we don't want the WebContent
     10        process to have on, create a new plugin process-specific layer host creation method that
     11        gives this access.
     12
     13        * Platform/mac/LayerHostingContext.h:
     14        * Platform/mac/LayerHostingContext.mm:
     15        (WebKit::LayerHostingContext::createForExternalPluginHostingProcess): Added.
     16        * PluginProcess/mac/PluginControllerProxyMac.mm:
     17        (WebKit::PluginControllerProxy::updateLayerHostingContext): Use the new creation
     18        method.
     19
    1202018-03-15  Zan Dobersek  <zdobersek@igalia.com>
    221
  • trunk/Source/WebKit/Platform/mac/LayerHostingContext.h

    r219050 r229629  
    4747#if HAVE(OUT_OF_PROCESS_LAYER_HOSTING)
    4848    static std::unique_ptr<LayerHostingContext> createForExternalHostingProcess();
     49#if PLATFORM(MAC)
     50    static std::unique_ptr<LayerHostingContext> createForExternalPluginHostingProcess();
     51#endif
    4952#endif
    5053
  • trunk/Source/WebKit/Platform/mac/LayerHostingContext.mm

    r229484 r229629  
    7373    return layerHostingContext;
    7474}
     75
     76#if PLATFORM(MAC)
     77std::unique_ptr<LayerHostingContext> LayerHostingContext::createForExternalPluginHostingProcess()
     78{
     79    auto layerHostingContext = std::make_unique<LayerHostingContext>();
     80    layerHostingContext->m_layerHostingMode = LayerHostingMode::OutOfProcess;
     81    layerHostingContext->m_context = [CAContext contextWithCGSConnection:CGSMainConnectionID() options:@{ kCAContextCIFilterBehavior : @"ignore" }];
     82    return layerHostingContext;
     83}
    7584#endif
     85#endif // HAVE(OUT_OF_PROCESS_LAYER_HOSTING)
    7686
    7787LayerHostingContext::LayerHostingContext()
  • trunk/Source/WebKit/PluginProcess/mac/PluginControllerProxyMac.mm

    r219050 r229629  
    131131#if HAVE(OUT_OF_PROCESS_LAYER_HOSTING)
    132132        case LayerHostingMode::OutOfProcess:
    133             m_layerHostingContext = LayerHostingContext::createForExternalHostingProcess();
     133            m_layerHostingContext = LayerHostingContext::createForExternalPluginHostingProcess();
    134134            break;
    135135#endif
Note: See TracChangeset for help on using the changeset viewer.