Changeset 230079 in webkit


Ignore:
Timestamp:
Mar 29, 2018 1:36:06 PM (6 years ago)
Author:
youenn@apple.com
Message:

Synchronize SecurityOrigin related scheme registries with NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=184140

Reviewed by Chris Dumez.

Add syncing of scheme registries that are used by SecurityOrigin and ContentSecurityPolicy
so that we can properly use them in NetworkProcess as we do in WebProcess.
The registries that are not synced are:

  • URLSchemeAsEmptyDocument
  • URLSchemeDomainRelaxationForbidden
  • URLSchemeAsCachePartitioned
  • URLSchemeAsCanDisplayOnlyIfCanRequest
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::registerURLSchemeAsSecure const):
(WebKit::NetworkProcess::registerURLSchemeAsBypassingContentSecurityPolicy const):
(WebKit::NetworkProcess::registerURLSchemeAsLocal const):
(WebKit::NetworkProcess::registerURLSchemeAsNoAccess const):
(WebKit::NetworkProcess::registerURLSchemeAsDisplayIsolated const):
(WebKit::NetworkProcess::registerURLSchemeAsCORSEnabled const):
(WebKit::NetworkProcess::registerURLSchemeAsCanDisplayOnlyIfCanRequest const):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::registerURLSchemeAsSecure):
(WebKit::WebProcessPool::registerURLSchemeAsBypassingContentSecurityPolicy):
(WebKit::WebProcessPool::registerURLSchemeAsLocal):
(WebKit::WebProcessPool::registerURLSchemeAsNoAccess):
(WebKit::WebProcessPool::registerURLSchemeAsDisplayIsolated):
(WebKit::WebProcessPool::registerURLSchemeAsCORSEnabled):
(WebKit::WebProcessPool::registerURLSchemeAsCanDisplayOnlyIfCanRequest):

Location:
trunk/Source/WebKit
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r230076 r230079  
     12018-03-29  Youenn Fablet  <youenn@apple.com>
     2
     3        Synchronize SecurityOrigin related scheme registries with NetworkProcess
     4        https://bugs.webkit.org/show_bug.cgi?id=184140
     5
     6        Reviewed by Chris Dumez.
     7
     8        Add syncing of scheme registries that are used by SecurityOrigin and ContentSecurityPolicy
     9        so that we can properly use them in NetworkProcess as we do in WebProcess.
     10        The registries that are not synced are:
     11        - URLSchemeAsEmptyDocument
     12        - URLSchemeDomainRelaxationForbidden
     13        - URLSchemeAsCachePartitioned
     14        - URLSchemeAsCanDisplayOnlyIfCanRequest
     15
     16        * NetworkProcess/NetworkProcess.cpp:
     17        (WebKit::NetworkProcess::initializeNetworkProcess):
     18        (WebKit::NetworkProcess::registerURLSchemeAsSecure const):
     19        (WebKit::NetworkProcess::registerURLSchemeAsBypassingContentSecurityPolicy const):
     20        (WebKit::NetworkProcess::registerURLSchemeAsLocal const):
     21        (WebKit::NetworkProcess::registerURLSchemeAsNoAccess const):
     22        (WebKit::NetworkProcess::registerURLSchemeAsDisplayIsolated const):
     23        (WebKit::NetworkProcess::registerURLSchemeAsCORSEnabled const):
     24        (WebKit::NetworkProcess::registerURLSchemeAsCanDisplayOnlyIfCanRequest const):
     25        * NetworkProcess/NetworkProcess.h:
     26        * NetworkProcess/NetworkProcess.messages.in:
     27        * NetworkProcess/NetworkProcessCreationParameters.cpp:
     28        (WebKit::NetworkProcessCreationParameters::encode const):
     29        (WebKit::NetworkProcessCreationParameters::decode):
     30        * NetworkProcess/NetworkProcessCreationParameters.h:
     31        * UIProcess/WebProcessPool.cpp:
     32        (WebKit::WebProcessPool::ensureNetworkProcess):
     33        (WebKit::WebProcessPool::registerURLSchemeAsSecure):
     34        (WebKit::WebProcessPool::registerURLSchemeAsBypassingContentSecurityPolicy):
     35        (WebKit::WebProcessPool::registerURLSchemeAsLocal):
     36        (WebKit::WebProcessPool::registerURLSchemeAsNoAccess):
     37        (WebKit::WebProcessPool::registerURLSchemeAsDisplayIsolated):
     38        (WebKit::WebProcessPool::registerURLSchemeAsCORSEnabled):
     39        (WebKit::WebProcessPool::registerURLSchemeAsCanDisplayOnlyIfCanRequest):
     40
    1412018-03-29  Brent Fulgham  <bfulgham@apple.com>
    242
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp

    r230035 r230079  
    6868#include <WebCore/ResourceRequest.h>
    6969#include <WebCore/RuntimeApplicationChecks.h>
     70#include <WebCore/SchemeRegistry.h>
    7071#include <WebCore/SecurityOriginData.h>
    7172#include <WebCore/SecurityOriginHash.h>
     
    272273        supplement->initialize(parameters);
    273274
     275    for (auto& scheme : parameters.urlSchemesRegisteredAsSecure)
     276        registerURLSchemeAsSecure(scheme);
     277
     278    for (auto& scheme : parameters.urlSchemesRegisteredAsBypassingContentSecurityPolicy)
     279        registerURLSchemeAsBypassingContentSecurityPolicy(scheme);
     280
     281    for (auto& scheme : parameters.urlSchemesRegisteredAsLocal)
     282        registerURLSchemeAsLocal(scheme);
     283
     284    for (auto& scheme : parameters.urlSchemesRegisteredAsNoAccess)
     285        registerURLSchemeAsNoAccess(scheme);
     286
     287    for (auto& scheme : parameters.urlSchemesRegisteredAsDisplayIsolated)
     288        registerURLSchemeAsDisplayIsolated(scheme);
     289
     290    for (auto& scheme : parameters.urlSchemesRegisteredAsCORSEnabled)
     291        registerURLSchemeAsCORSEnabled(scheme);
     292
     293    for (auto& scheme : parameters.urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest)
     294        registerURLSchemeAsCanDisplayOnlyIfCanRequest(scheme);
     295
    274296    RELEASE_LOG(Process, "%p - NetworkProcess::initializeNetworkProcess: Presenting process = %d", this, WebCore::presentingApplicationPID());
    275297}
     
    867889}
    868890
     891void NetworkProcess::registerURLSchemeAsSecure(const String& scheme) const
     892{
     893    SchemeRegistry::registerURLSchemeAsSecure(scheme);
     894}
     895
     896void NetworkProcess::registerURLSchemeAsBypassingContentSecurityPolicy(const String& scheme) const
     897{
     898    SchemeRegistry::registerURLSchemeAsBypassingContentSecurityPolicy(scheme);
     899}
     900
     901void NetworkProcess::registerURLSchemeAsLocal(const String& scheme) const
     902{
     903    SchemeRegistry::registerURLSchemeAsLocal(scheme);
     904}
     905
     906void NetworkProcess::registerURLSchemeAsNoAccess(const String& scheme) const
     907{
     908    SchemeRegistry::registerURLSchemeAsNoAccess(scheme);
     909}
     910
     911void NetworkProcess::registerURLSchemeAsDisplayIsolated(const String& scheme) const
     912{
     913    SchemeRegistry::registerURLSchemeAsDisplayIsolated(scheme);
     914}
     915
     916void NetworkProcess::registerURLSchemeAsCORSEnabled(const String& scheme) const
     917{
     918    SchemeRegistry::registerURLSchemeAsCORSEnabled(scheme);
     919}
     920
     921void NetworkProcess::registerURLSchemeAsCanDisplayOnlyIfCanRequest(const String& scheme) const
     922{
     923    SchemeRegistry::registerAsCanDisplayOnlyIfCanRequest(scheme);
     924}
     925
    869926#if !PLATFORM(COCOA)
    870927void NetworkProcess::initializeProcess(const ChildProcessInitializationParameters&)
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.h

    r229619 r230079  
    241241#endif
    242242
     243    void registerURLSchemeAsSecure(const String&) const;
     244    void registerURLSchemeAsBypassingContentSecurityPolicy(const String&) const;
     245    void registerURLSchemeAsLocal(const String&) const;
     246    void registerURLSchemeAsNoAccess(const String&) const;
     247    void registerURLSchemeAsDisplayIsolated(const String&) const;
     248    void registerURLSchemeAsCORSEnabled(const String&) const;
     249    void registerURLSchemeAsCanDisplayOnlyIfCanRequest(const String&) const;
     250
    243251    // Connections to WebProcesses.
    244252    Vector<RefPtr<NetworkConnectionToWebProcess>> m_webProcessConnections;
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.messages.in

    r229619 r230079  
    9292
    9393    SetSessionIsControlledByAutomation(PAL::SessionID sessionID, bool controlled);
     94
     95    RegisterURLSchemeAsSecure(String scheme)
     96    RegisterURLSchemeAsBypassingContentSecurityPolicy(String scheme)
     97    RegisterURLSchemeAsLocal(String scheme)
     98    RegisterURLSchemeAsNoAccess(String scheme)
     99    RegisterURLSchemeAsDisplayIsolated(String scheme)
     100    RegisterURLSchemeAsCORSEnabled(String scheme)
     101    RegisterURLSchemeAsCanDisplayOnlyIfCanRequest(String scheme)
    94102}
  • trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.cpp

    r228905 r230079  
    108108    encoder << recordReplayCacheLocation;
    109109#endif
     110
     111    encoder << urlSchemesRegisteredAsSecure;
     112    encoder << urlSchemesRegisteredAsBypassingContentSecurityPolicy;
     113    encoder << urlSchemesRegisteredAsLocal;
     114    encoder << urlSchemesRegisteredAsNoAccess;
     115    encoder << urlSchemesRegisteredAsDisplayIsolated;
     116    encoder << urlSchemesRegisteredAsCORSEnabled;
     117    encoder << urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest;
    110118}
    111119
     
    253261#endif
    254262
     263    if (!decoder.decode(result.urlSchemesRegisteredAsSecure))
     264        return false;
     265    if (!decoder.decode(result.urlSchemesRegisteredAsBypassingContentSecurityPolicy))
     266        return false;
     267    if (!decoder.decode(result.urlSchemesRegisteredAsLocal))
     268        return false;
     269    if (!decoder.decode(result.urlSchemesRegisteredAsNoAccess))
     270        return false;
     271    if (!decoder.decode(result.urlSchemesRegisteredAsDisplayIsolated))
     272        return false;
     273    if (!decoder.decode(result.urlSchemesRegisteredAsCORSEnabled))
     274        return false;
     275    if (!decoder.decode(result.urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest))
     276        return false;
     277
    255278    return true;
    256279}
  • trunk/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h

    r228905 r230079  
    125125    String recordReplayCacheLocation;
    126126#endif
     127
     128    Vector<String> urlSchemesRegisteredAsSecure;
     129    Vector<String> urlSchemesRegisteredAsBypassingContentSecurityPolicy;
     130    Vector<String> urlSchemesRegisteredAsLocal;
     131    Vector<String> urlSchemesRegisteredAsNoAccess;
     132    Vector<String> urlSchemesRegisteredAsDisplayIsolated;
     133    Vector<String> urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest;
     134    Vector<String> urlSchemesRegisteredAsCORSEnabled;
    127135};
    128136
  • trunk/Source/WebKit/UIProcess/WebProcessPool.cpp

    r230051 r230079  
    484484    parameters.presentingApplicationPID = m_configuration->presentingApplicationPID();
    485485
     486    parameters.urlSchemesRegisteredAsSecure = copyToVector(m_schemesToRegisterAsSecure);
     487    parameters.urlSchemesRegisteredAsBypassingContentSecurityPolicy = copyToVector(m_schemesToRegisterAsBypassingContentSecurityPolicy);
     488    parameters.urlSchemesRegisteredAsLocal = copyToVector(m_schemesToRegisterAsLocal);
     489    parameters.urlSchemesRegisteredAsNoAccess = copyToVector(m_schemesToRegisterAsNoAccess);
     490    parameters.urlSchemesRegisteredAsDisplayIsolated = copyToVector(m_schemesToRegisterAsDisplayIsolated);
     491    parameters.urlSchemesRegisteredAsCORSEnabled = copyToVector(m_schemesToRegisterAsCORSEnabled);
     492    parameters.urlSchemesRegisteredAsCanDisplayOnlyIfCanRequest = copyToVector(m_schemesToRegisterAsCanDisplayOnlyIfCanRequest);
     493
    486494    // Add any platform specific parameters
    487495    platformInitializeNetworkProcess(parameters);
     
    12941302    m_schemesToRegisterAsSecure.add(urlScheme);
    12951303    sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsSecure(urlScheme));
     1304    sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsSecure(urlScheme));
    12961305}
    12971306
     
    13001309    m_schemesToRegisterAsBypassingContentSecurityPolicy.add(urlScheme);
    13011310    sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsBypassingContentSecurityPolicy(urlScheme));
     1311    sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsBypassingContentSecurityPolicy(urlScheme));
    13021312}
    13031313
     
    13291339    m_schemesToRegisterAsLocal.add(urlScheme);
    13301340    sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsLocal(urlScheme));
     1341    sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsLocal(urlScheme));
    13311342}
    13321343
     
    13351346    m_schemesToRegisterAsNoAccess.add(urlScheme);
    13361347    sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsNoAccess(urlScheme));
     1348    sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsNoAccess(urlScheme));
    13371349}
    13381350
     
    13411353    m_schemesToRegisterAsDisplayIsolated.add(urlScheme);
    13421354    sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsDisplayIsolated(urlScheme));
     1355    sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsDisplayIsolated(urlScheme));
    13431356}
    13441357
     
    13471360    m_schemesToRegisterAsCORSEnabled.add(urlScheme);
    13481361    sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsCORSEnabled(urlScheme));
     1362    sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsCORSEnabled(urlScheme));
    13491363}
    13501364
     
    13871401    m_schemesToRegisterAsCanDisplayOnlyIfCanRequest.add(urlScheme);
    13881402    sendToAllProcesses(Messages::WebProcess::RegisterURLSchemeAsCanDisplayOnlyIfCanRequest(urlScheme));
     1403    sendToNetworkingProcess(Messages::NetworkProcess::RegisterURLSchemeAsCanDisplayOnlyIfCanRequest(urlScheme));
    13891404}
    13901405
Note: See TracChangeset for help on using the changeset viewer.