Changeset 276437 in webkit


Ignore:
Timestamp:
Apr 22, 2021, 9:04:13 AM (4 years ago)
Author:
Chris Dumez
Message:

Call RemoteCDMFactory::registerFactory() in WebProcess::setUseGPUProcessForMedia()
https://bugs.webkit.org/show_bug.cgi?id=224907

Reviewed by Eric Carlson.

Call RemoteCDMFactory::registerFactory() in WebProcess::setUseGPUProcessForMedia() like we
did before r275887, instead of doing it in the GPUProcessConnection constructor. This is
safer as it makes sure the CDMFactory gets registered even if the GPUProcess has not launched
yet. This is also more consistent with what we do for LegacyCDM since Bug 224905.

The MediaKeys API still seems functional after r275887 (unlike the LegacyCDM one) so it does
not seem it caused obvious breakage. That said, it is still safer to restore pre-r275887
behavior. There is also no drawback to restoring the previous behavior since I made sure the
GPUProcess does not get launched eagerly.

  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::GPUProcessConnection):
(WebKit::GPUProcessConnection::dispatchMessage):

  • WebProcess/GPU/GPUProcessConnection.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::setUseGPUProcessForMedia):
(WebKit::WebProcess::cdmFactory):

  • WebProcess/WebProcess.h:
Location:
trunk/Source/WebKit
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r276432 r276437  
     12021-04-22  Chris Dumez  <cdumez@apple.com>
     2
     3        Call RemoteCDMFactory::registerFactory() in WebProcess::setUseGPUProcessForMedia()
     4        https://bugs.webkit.org/show_bug.cgi?id=224907
     5
     6        Reviewed by Eric Carlson.
     7
     8        Call RemoteCDMFactory::registerFactory() in WebProcess::setUseGPUProcessForMedia() like we
     9        did before r275887, instead of doing it in the GPUProcessConnection constructor. This is
     10        safer as it makes sure the CDMFactory gets registered even if the GPUProcess has not launched
     11        yet. This is also more consistent with what we do for LegacyCDM since Bug 224905.
     12
     13        The MediaKeys API still seems functional after r275887 (unlike the LegacyCDM one) so it does
     14        not seem it caused obvious breakage. That said, it is still safer to restore pre-r275887
     15        behavior. There is also no drawback to restoring the previous behavior since I made sure the
     16        GPUProcess does not get launched eagerly.
     17
     18        * WebProcess/GPU/GPUProcessConnection.cpp:
     19        (WebKit::GPUProcessConnection::GPUProcessConnection):
     20        (WebKit::GPUProcessConnection::dispatchMessage):
     21        * WebProcess/GPU/GPUProcessConnection.h:
     22        * WebProcess/WebProcess.cpp:
     23        (WebKit::WebProcess::setUseGPUProcessForMedia):
     24        (WebKit::WebProcess::cdmFactory):
     25        * WebProcess/WebProcess.h:
     26
    1272021-04-22  Carlos Garcia Campos  <cgarcia@igalia.com>
    228
  • trunk/Source/WebKit/WebProcess/GPU/GPUProcessConnection.cpp

    r276411 r276437  
    102102
    103103    if (WebProcess::singleton().shouldUseRemoteRenderingFor(RenderingPurpose::MediaPainting)) {
    104 #if ENABLE(ENCRYPTED_MEDIA)
    105         auto& cdmFactories = CDMFactory::registeredFactories();
    106         cdmFactories.clear();
    107         cdmFactory().registerFactory(cdmFactories);
    108 #endif
    109104        mediaEngineConfigurationFactory().registerFactory();
    110105#if ENABLE(VP9)
     
    161156#endif
    162157
    163 #if ENABLE(ENCRYPTED_MEDIA)
    164 RemoteCDMFactory& GPUProcessConnection::cdmFactory()
    165 {
    166     return *WebProcess::singleton().supplement<RemoteCDMFactory>();
    167 }
    168 #endif
    169 
    170158RemoteMediaEngineConfigurationFactory& GPUProcessConnection::mediaEngineConfigurationFactory()
    171159{
     
    195183#if ENABLE(ENCRYPTED_MEDIA)
    196184    if (decoder.messageReceiverName() == Messages::RemoteCDMInstanceSession::messageReceiverName()) {
    197         WebProcess::singleton().supplement<RemoteCDMFactory>()->didReceiveSessionMessage(connection, decoder);
     185        WebProcess::singleton().cdmFactory().didReceiveSessionMessage(connection, decoder);
    198186        return true;
    199187    }
  • trunk/Source/WebKit/WebProcess/GPU/GPUProcessConnection.h

    r276411 r276437  
    4141
    4242class RemoteAudioSourceProviderManager;
    43 class RemoteCDMFactory;
    4443class RemoteMediaEngineConfigurationFactory;
    4544class RemoteMediaPlayerManager;
     
    7170#if PLATFORM(COCOA) && ENABLE(WEB_AUDIO)
    7271    RemoteAudioSourceProviderManager& audioSourceProviderManager();
    73 #endif
    74 
    75 #if ENABLE(ENCRYPTED_MEDIA)
    76     RemoteCDMFactory& cdmFactory();
    7772#endif
    7873
  • trunk/Source/WebKit/WebProcess/WebProcess.cpp

    r276411 r276437  
    19721972
    19731973#if ENABLE(ENCRYPTED_MEDIA)
    1974     if (!useGPUProcessForMedia) {
    1975         auto& cdmFactories = CDMFactory::registeredFactories();
    1976         cdmFactories.clear();
     1974    auto& cdmFactories = CDMFactory::registeredFactories();
     1975    cdmFactories.clear();
     1976    if (useGPUProcessForMedia)
     1977        cdmFactory().registerFactory(cdmFactories);
     1978    else
    19771979        CDMFactory::platformRegisterFactories(cdmFactories);
    1978     }
    19791980#endif
    19801981
     
    20792080#endif
    20802081
     2082#if ENABLE(GPU_PROCESS) && ENABLE(ENCRYPTED_MEDIA)
     2083RemoteCDMFactory& WebProcess::cdmFactory()
     2084{
     2085    return *supplement<RemoteCDMFactory>();
     2086}
     2087#endif
     2088
     2089
    20812090} // namespace WebKit
    20822091
  • trunk/Source/WebKit/WebProcess/WebProcess.h

    r276411 r276437  
    119119class ObjCObjectGraph;
    120120class ProcessAssertion;
     121class RemoteCDMFactory;
    121122class RemoteLegacyCDMFactory;
    122123struct ServiceWorkerInitializationData;
     
    245246    RemoteLegacyCDMFactory& legacyCDMFactory();
    246247#endif
    247 
     248#if ENABLE(ENCRYPTED_MEDIA)
     249    RemoteCDMFactory& cdmFactory();
     250#endif
    248251#endif // ENABLE(GPU_PROCESS)
    249252
Note: See TracChangeset for help on using the changeset viewer.