Changeset 281055 in webkit


Ignore:
Timestamp:
Aug 13, 2021 7:28:19 PM (11 months ago)
Author:
Chris Dumez
Message:

Add Cross-Origin-Embedder-Policy support for Blob URLs
https://bugs.webkit.org/show_bug.cgi?id=229041

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

  • web-platform-tests/html/cross-origin-embedder-policy/blob.https-expected.txt:
  • web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https-expected.txt:
  • web-platform-tests/html/cross-origin-opener-policy/coep-blob-popup.https-expected.txt:

Source/WebCore:

Add Cross-Origin-Embedder-Policy (COEP) support for Blob URLs. We do the same thing as for COOP,
we pass the COEP policy when registering the Blob URL and store it in the BlobData. When we need
the construct a Blob resource response as a result of a load, we add the right COEP headers
based on the BlobData's COEP policy.

No new tests, rebaselined existing tests.

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::startLoadingBlobURL):

  • fileapi/Blob.cpp:

(WebCore::BlobURLRegistry::registerURL):
(WebCore::Blob::Blob):

  • fileapi/FileReaderLoader.cpp:

(WebCore::FileReaderLoader::start):

  • fileapi/ThreadableBlobRegistry.cpp:

(WebCore::ThreadableBlobRegistry::registerBlobURL):

  • fileapi/ThreadableBlobRegistry.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::loadResource):

  • loader/CrossOriginEmbedderPolicy.cpp:

(WebCore::addCrossOriginEmbedderPolicyHeaders):

  • loader/CrossOriginEmbedderPolicy.h:

(WebCore::operator==):

  • loader/CrossOriginOpenerPolicy.cpp:

(WebCore::addCrossOriginOpenerPolicyHeaders):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::didBeginDocument):

  • platform/network/BlobData.h:

(WebCore::BlobData::crossOriginEmbedderPolicy const):
(WebCore::BlobData::setCrossOriginEmbedderPolicy):

  • platform/network/BlobRegistry.h:
  • platform/network/BlobRegistryImpl.cpp:

(WebCore::BlobRegistryImpl::registerBlobURL):
(WebCore::BlobRegistryImpl::registerBlobURLOptionallyFileBacked):

  • platform/network/BlobRegistryImpl.h:
  • platform/network/BlobResourceHandle.cpp:

(WebCore::BlobResourceHandle::notifyResponseOnSuccess):

Source/WebKit:

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::registerBlobURLFromURL):
(WebKit::NetworkConnectionToWebProcess::registerBlobURLOptionallyFileBacked):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):

  • NetworkProcess/NetworkProcessPlatformStrategies.cpp:

(WebKit::NetworkProcessPlatformStrategies::createBlobRegistry):

  • WebProcess/FileAPI/BlobRegistryProxy.cpp:

(WebKit::BlobRegistryProxy::registerBlobURL):

  • WebProcess/FileAPI/BlobRegistryProxy.h:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebPlatformStrategies.mm:

Source/WebKitLegacy/win:

  • WebCoreSupport/WebPlatformStrategies.cpp:

LayoutTests:

Update test expectations to unskip tests that are now passing.

Location:
trunk
Files:
1 added
43 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r281054 r281055  
     12021-08-13  Chris Dumez  <cdumez@apple.com>
     2
     3        Add Cross-Origin-Embedder-Policy support for Blob URLs
     4        https://bugs.webkit.org/show_bug.cgi?id=229041
     5
     6        Reviewed by Alex Christensen.
     7
     8        Update test expectations to unskip tests that are now passing.
     9
     10        * TestExpectations:
     11
    1122021-08-13  Wenson Hsieh  <wenson_hsieh@apple.com>
    213
  • trunk/LayoutTests/TestExpectations

    r281010 r281055  
    402402imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html [ DumpJSConsoleLogInStdErr ]
    403403imported/w3c/web-platform-tests/html/browsers/sandboxing/sandbox-disallow-popups.html [ DumpJSConsoleLogInStdErr ]
     404imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/blob.https.html [ DumpJSConsoleLogInStdErr ]
    404405imported/w3c/web-platform-tests/html/cross-origin-opener-policy/navigate-to-aboutblank.https.html [ DumpJSConsoleLogInStdErr ]
    405406imported/w3c/web-platform-tests/html/cross-origin-opener-policy/navigate-top-to-aboutblank.https.html [ DumpJSConsoleLogInStdErr ]
     
    722723imported/w3c/web-platform-tests/html/cross-origin-opener-policy/no-https.html [ Skip ]
    723724imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/no-secure-context.html [ Skip ]
    724 
    725 # COEP test timing out due to lack of Blob URL support.
    726 imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/blob.https.html [ Skip ]
    727 imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html [ Skip ]
    728 imported/w3c/web-platform-tests/html/cross-origin-opener-policy/coep-blob-popup.https.html [ Skip ]
    729725
    730726# This test makes the assumption that get_host_info().REMOTE_ORIGIN is same-site, which is not true for
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r281025 r281055  
     12021-08-13  Chris Dumez  <cdumez@apple.com>
     2
     3        Add Cross-Origin-Embedder-Policy support for Blob URLs
     4        https://bugs.webkit.org/show_bug.cgi?id=229041
     5
     6        Reviewed by Alex Christensen.
     7
     8        Rebaseline WPT tests now that more checks are passing.
     9
     10        * web-platform-tests/html/cross-origin-embedder-policy/blob.https-expected.txt:
     11        * web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https-expected.txt:
     12        * web-platform-tests/html/cross-origin-opener-policy/coep-blob-popup.https-expected.txt:
     13
    1142021-08-13  Alex Christensen  <achristensen@webkit.org>
    215
  • trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/blob.https-expected.txt

    r280953 r281055  
    1 CONSOLE MESSAGE: Refused to display 'blob:https://localhost:9443/ce752f78-9f54-4192-885f-d338222dbf89' in a frame because of Cross-Origin-Embedder-Policy.
    2 CONSOLE MESSAGE: Refused to display 'blob:https://127.0.0.1:9443/2d609484-fc8c-4162-b451-5e5a60ca6fb0' in a frame because of Cross-Origin-Embedder-Policy.
    3 CONSOLE MESSAGE: Refused to display 'blob:https://127.0.0.1:9443/d6c69b1b-b9e2-468f-afd5-3ee0ca1f26cd' in a frame because of Cross-Origin-Embedder-Policy.
    4 CONSOLE MESSAGE: Refused to display 'blob:https://localhost:9443/a2f48f74-c115-4535-8945-845540d08260' in a frame because of Cross-Origin-Embedder-Policy.
    5 CONSOLE MESSAGE: Refused to display 'blob:https://127.0.0.1:9443/e46352d8-4f39-4348-addc-cf3be4c271d5' in a frame because of Cross-Origin-Embedder-Policy.
    6 CONSOLE MESSAGE: Refused to display 'blob:https://127.0.0.1:9443/d4b68c8b-e74e-47a5-a08d-612bf0d709d7' in a frame because of Cross-Origin-Embedder-Policy.
    71
    8 Harness Error (TIMEOUT), message = null
     2Harness Error (FAIL), message = 2 duplicate test names: "Cross-Origin-Embedder-Policy and blob: URL from https://127.0.0.1:9443 in subframe via subframe", "Cross-Origin-Embedder-Policy and blob: URL from https://127.0.0.1:9443 in subframe via navigate"
    93
    10 TIMEOUT Cross-Origin-Embedder-Policy and blob: URL from https://localhost:9443 in subframe via subframe Test timed out
    11 TIMEOUT Cross-Origin-Embedder-Policy and blob: URL from https://localhost:9443 in subframe via navigate Test timed out
    12 TIMEOUT Cross-Origin-Embedder-Policy and blob: URL from https://127.0.0.1:9443 in subframe via subframe Test timed out
    13 TIMEOUT Cross-Origin-Embedder-Policy and blob: URL from https://127.0.0.1:9443 in subframe via navigate Test timed out
    14 TIMEOUT Cross-Origin-Embedder-Policy and blob: URL from https://127.0.0.1:9443 in subframe via subframe Test timed out
    15 TIMEOUT Cross-Origin-Embedder-Policy and blob: URL from https://127.0.0.1:9443 in subframe via navigate Test timed out
     4PASS Cross-Origin-Embedder-Policy and blob: URL from https://localhost:9443 in subframe via subframe
     5PASS Cross-Origin-Embedder-Policy and blob: URL from https://localhost:9443 in subframe via navigate
     6PASS Cross-Origin-Embedder-Policy and blob: URL from https://127.0.0.1:9443 in subframe via subframe
     7PASS Cross-Origin-Embedder-Policy and blob: URL from https://127.0.0.1:9443 in subframe via navigate
     8PASS Cross-Origin-Embedder-Policy and blob: URL from https://127.0.0.1:9443 in subframe via subframe
     9PASS Cross-Origin-Embedder-Policy and blob: URL from https://127.0.0.1:9443 in subframe via navigate
    1610
  • trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https-expected.txt

    r280953 r281055  
    1 CONSOLE MESSAGE: Refused to load 'blob:https://localhost:9443/0626116e-3414-4f35-bd1e-007f1312b79e' worker because of Cross-Origin-Embedder-Policy.
    2 CONSOLE MESSAGE: Worker load was blocked by Cross-Origin-Embedder-Policy
    3 CONSOLE MESSAGE: Cannot load blob:https://localhost:9443/0626116e-3414-4f35-bd1e-007f1312b79e due to access control checks.
    4 CONSOLE MESSAGE: Refused to load 'blob:https://localhost:9443/a99eb341-4640-403a-a8f4-c2fcf28ede20' worker because of Cross-Origin-Embedder-Policy.
    5 CONSOLE MESSAGE: Worker load was blocked by Cross-Origin-Embedder-Policy
    6 CONSOLE MESSAGE: Cannot load blob:https://localhost:9443/a99eb341-4640-403a-a8f4-c2fcf28ede20 due to access control checks.
    7 CONSOLE MESSAGE: Refused to load 'blob:https://localhost:9443/929d633e-ce48-43ff-b89d-e4e20fca6753' worker because of Cross-Origin-Embedder-Policy.
    8 CONSOLE MESSAGE: Worker load was blocked by Cross-Origin-Embedder-Policy
    9 CONSOLE MESSAGE: Cannot load blob:https://localhost:9443/929d633e-ce48-43ff-b89d-e4e20fca6753 due to access control checks.
    10 CONSOLE MESSAGE: Refused to load 'blob:https://localhost:9443/0c8b6914-58db-417c-9e0c-e7ecacc4a16a' worker because of Cross-Origin-Embedder-Policy.
    11 CONSOLE MESSAGE: Worker load was blocked by Cross-Origin-Embedder-Policy
    12 CONSOLE MESSAGE: Cannot load blob:https://localhost:9443/0c8b6914-58db-417c-9e0c-e7ecacc4a16a due to access control checks.
    13 
    14 
    15 Harness Error (TIMEOUT), message = null
    161
    172FAIL frame: origin = https://localhost:9443, value = undefined assert_equals: expected true but got false
     
    3116PASS dedicated worker: scheme = data, value = self
    3217PASS dedicated worker: scheme = data, value = (\)
    33 TIMEOUT dedicated worker: scheme = blob, value = undefined Test timed out
    34 TIMEOUT dedicated worker: scheme = blob, value = * Test timed out
    35 TIMEOUT dedicated worker: scheme = blob, value = self Test timed out
    36 TIMEOUT dedicated worker: scheme = blob, value = (\) Test timed out
     18FAIL dedicated worker: scheme = blob, value = undefined assert_equals: expected true but got false
     19FAIL dedicated worker: scheme = blob, value = * assert_equals: expected true but got false
     20FAIL dedicated worker: scheme = blob, value = self assert_equals: expected true but got false
     21PASS dedicated worker: scheme = blob, value = (\)
    3722FAIL shared worker: withCoopCoep = false Can't find variable: SharedWorker
    3823FAIL shared worker: withCoopCoep = true Can't find variable: SharedWorker
  • trunk/LayoutTests/imported/w3c/web-platform-tests/html/cross-origin-opener-policy/coep-blob-popup.https-expected.txt

    r280504 r281055  
     1CONSOLE MESSAGE: Cancelled load to https://127.0.0.1:9443/common/blank.html because it violates the resource's Cross-Origin-Resource-Policy response header.
     2CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/common/blank.html due to access control checks.
     3CONSOLE MESSAGE: Cancelled load to https://127.0.0.1:9443/common/blank.html because it violates the resource's Cross-Origin-Resource-Policy response header.
     4CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/common/blank.html due to access control checks.
     5CONSOLE MESSAGE: Cancelled load to https://127.0.0.1:9443/common/blank.html because it violates the resource's Cross-Origin-Resource-Policy response header.
     6CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/common/blank.html due to access control checks.
    17
    2 FAIL COOP+COEP blob URL popup: window.open() assert_true: Cross-origin without CORP did not fail expected true got false
    3 FAIL COOP+COEP blob URL popup: <a> assert_true: Cross-origin without CORP did not fail expected true got false
    4 FAIL COOP+COEP blob URL popup: <a rel=noopener> assert_true: Cross-origin without CORP did not fail expected true got false
     8PASS COOP+COEP blob URL popup: window.open()
     9PASS COOP+COEP blob URL popup: <a>
     10PASS COOP+COEP blob URL popup: <a rel=noopener>
    511
  • trunk/LayoutTests/platform/mac-wk1/TestExpectations

    r281010 r281055  
    374374# No Cross-Origin-Embedder-Policy in WK1.
    375375imported/w3c/web-platform-tests/html/cross-origin-embedder-policy [ Skip ]
     376imported/w3c/web-platform-tests/html/cross-origin-opener-policy/coep-blob-popup.https.html [ Skip ]
    376377http/wpt/html/cross-origin-embedder-policy/require-corp.https.html [ Skip ]
    377378
  • trunk/LayoutTests/platform/win/TestExpectations

    r281038 r281055  
    37283728# No Cross-Origin-Embedder-Policy in WK1.
    37293729imported/w3c/web-platform-tests/html/cross-origin-embedder-policy [ Skip ]
     3730imported/w3c/web-platform-tests/html/cross-origin-opener-policy/coep-blob-popup.https.html [ Skip ]
    37303731http/wpt/html/cross-origin-embedder-policy/require-corp.https.html [ Skip ]
    37313732
  • trunk/Source/WebCore/ChangeLog

    r281048 r281055  
     12021-08-13  Chris Dumez  <cdumez@apple.com>
     2
     3        Add Cross-Origin-Embedder-Policy support for Blob URLs
     4        https://bugs.webkit.org/show_bug.cgi?id=229041
     5
     6        Reviewed by Alex Christensen.
     7
     8        Add Cross-Origin-Embedder-Policy (COEP) support for Blob URLs. We do the same thing as for COOP,
     9        we pass the COEP policy when registering the Blob URL and store it in the BlobData. When we need
     10        the construct a Blob resource response as a result of a load, we add the right COEP headers
     11        based on the BlobData's COEP policy.
     12
     13        No new tests, rebaselined existing tests.
     14
     15        * Modules/fetch/FetchLoader.cpp:
     16        (WebCore::FetchLoader::startLoadingBlobURL):
     17        * fileapi/Blob.cpp:
     18        (WebCore::BlobURLRegistry::registerURL):
     19        (WebCore::Blob::Blob):
     20        * fileapi/FileReaderLoader.cpp:
     21        (WebCore::FileReaderLoader::start):
     22        * fileapi/ThreadableBlobRegistry.cpp:
     23        (WebCore::ThreadableBlobRegistry::registerBlobURL):
     24        * fileapi/ThreadableBlobRegistry.h:
     25        * html/HTMLMediaElement.cpp:
     26        (WebCore::HTMLMediaElement::loadResource):
     27        * loader/CrossOriginEmbedderPolicy.cpp:
     28        (WebCore::addCrossOriginEmbedderPolicyHeaders):
     29        * loader/CrossOriginEmbedderPolicy.h:
     30        (WebCore::operator==):
     31        * loader/CrossOriginOpenerPolicy.cpp:
     32        (WebCore::addCrossOriginOpenerPolicyHeaders):
     33        * loader/FrameLoader.cpp:
     34        (WebCore::FrameLoader::didBeginDocument):
     35        * platform/network/BlobData.h:
     36        (WebCore::BlobData::crossOriginEmbedderPolicy const):
     37        (WebCore::BlobData::setCrossOriginEmbedderPolicy):
     38        * platform/network/BlobRegistry.h:
     39        * platform/network/BlobRegistryImpl.cpp:
     40        (WebCore::BlobRegistryImpl::registerBlobURL):
     41        (WebCore::BlobRegistryImpl::registerBlobURLOptionallyFileBacked):
     42        * platform/network/BlobRegistryImpl.h:
     43        * platform/network/BlobResourceHandle.cpp:
     44        (WebCore::BlobResourceHandle::notifyResponseOnSuccess):
     45
    1462021-08-13  Brent Fulgham  <bfulgham@apple.com>
    247
  • trunk/Source/WebCore/Headers.cmake

    r280824 r281055  
    810810    loader/PingLoader.h
    811811    loader/PolicyChecker.h
     812    loader/PolicyContainer.h
    812813    loader/PrivateClickMeasurement.h
    813814    loader/ProgressTracker.h
  • trunk/Source/WebCore/Modules/fetch/FetchLoader.cpp

    r280881 r281055  
    6666    }
    6767
    68     ThreadableBlobRegistry::registerBlobURL(context.securityOrigin(), context.crossOriginOpenerPolicy(), m_urlForReading, blobURL);
     68    ThreadableBlobRegistry::registerBlobURL(context.securityOrigin(), context.policyContainer(), m_urlForReading, blobURL);
    6969
    7070    ResourceRequest request(m_urlForReading);
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r280968 r281055  
    12801280                466172EC23A2AC1F003AB309 /* PostMessageOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 466172EB23A2ABFA003AB309 /* PostMessageOptions.h */; settings = {ATTRIBUTES = (Private, ); }; };
    12811281                46658DC91FA24B8700F7DD54 /* SWContextManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4672413B1FA24B140088BD6D /* SWContextManager.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1282                466C2DAD26C73AFC00651931 /* PolicyContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 466C2DAB26C73AFB00651931 /* PolicyContainer.h */; settings = {ATTRIBUTES = (Private, ); }; };
    12821283                466ED8D31EDE0144005E43F6 /* JSDOMRectList.h in Headers */ = {isa = PBXBuildFile; fileRef = 466ED8D21EDE0135005E43F6 /* JSDOMRectList.h */; };
    12831284                4671E0661D67A59600C6B497 /* CanvasPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 4671E0641D67A57B00C6B497 /* CanvasPath.h */; };
     
    82818282                466172EB23A2ABFA003AB309 /* PostMessageOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PostMessageOptions.h; sourceTree = "<group>"; };
    82828283                466536FA264C8DD100AAD1D7 /* JSAudioNodeCustom.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioNodeCustom.cpp; sourceTree = "<group>"; };
     8284                466C2DAB26C73AFB00651931 /* PolicyContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PolicyContainer.h; sourceTree = "<group>"; };
    82838285                466DC6AB1EDE021D00746224 /* JSDOMRectList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMRectList.cpp; sourceTree = "<group>"; };
    82848286                466ED8D21EDE0135005E43F6 /* JSDOMRectList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMRectList.h; sourceTree = "<group>"; };
     
    2735927361                                97059975107D975200A50A7C /* PolicyChecker.cpp */,
    2736027362                                97059976107D975200A50A7C /* PolicyChecker.h */,
     27363                                466C2DAB26C73AFB00651931 /* PolicyContainer.h */,
    2736127364                                6B0A07F121FA4B5C00D57391 /* PrivateClickMeasurement.cpp */,
    2736227365                                6B0A07F021FA4B5C00D57391 /* PrivateClickMeasurement.h */,
     
    3399133994                                84730D921248F0B300D3A9C9 /* PointLightSource.h in Headers */,
    3399233995                                9705997A107D975200A50A7C /* PolicyChecker.h in Headers */,
     33996                                466C2DAD26C73AFC00651931 /* PolicyContainer.h in Headers */,
    3399333997                                FD45A957175D414C00C21EC8 /* PolygonShape.h in Headers */,
    3399433998                                5174E20A10A1F44F00F95E6F /* PopStateEvent.h in Headers */,
  • trunk/Source/WebCore/dom/ScriptExecutionContext.cpp

    r280881 r281055  
    337337}
    338338
    339 const CrossOriginOpenerPolicy& ScriptExecutionContext::crossOriginOpenerPolicy() const
    340 {
    341     static NeverDestroyed<CrossOriginOpenerPolicy> coop;
    342     return coop;
    343 }
    344 
    345339void ScriptExecutionContext::suspendActiveDOMObjectIfNeeded(ActiveDOMObject& activeDOMObject)
    346340{
  • trunk/Source/WebCore/dom/ScriptExecutionContext.h

    r280881 r281055  
    7979enum class TaskSource : uint8_t;
    8080
    81 struct CrossOriginOpenerPolicy;
    82 
    8381#if ENABLE(SERVICE_WORKER)
    8482class ServiceWorker;
     
    148146    bool activeDOMObjectsAreSuspended() const { return m_activeDOMObjectsAreSuspended; }
    149147    bool activeDOMObjectsAreStopped() const { return m_activeDOMObjectsAreStopped; }
    150 
    151     virtual const CrossOriginOpenerPolicy& crossOriginOpenerPolicy() const;
    152148
    153149    JSC::ScriptExecutionStatus jscScriptExecutionStatus() const;
  • trunk/Source/WebCore/dom/SecurityContext.cpp

    r280504 r281055  
    3030#include "ContentSecurityPolicy.h"
    3131#include "HTMLParserIdioms.h"
     32#include "PolicyContainer.h"
    3233#include "SecurityOrigin.h"
    3334#include "SecurityOriginPolicy.h"
     
    160161}
    161162
     163const CrossOriginOpenerPolicy& SecurityContext::crossOriginOpenerPolicy() const
     164{
     165    static NeverDestroyed<CrossOriginOpenerPolicy> coop;
     166    return coop;
    162167}
     168
     169PolicyContainer SecurityContext::policyContainer() const
     170{
     171    return {
     172        crossOriginEmbedderPolicy(),
     173        crossOriginOpenerPolicy()
     174    };
     175}
     176
     177}
  • trunk/Source/WebCore/dom/SecurityContext.h

    r280953 r281055  
    3939class SecurityOriginPolicy;
    4040class ContentSecurityPolicy;
     41struct CrossOriginOpenerPolicy;
     42struct PolicyContainer;
    4143
    4244enum SandboxFlag {
     
    9193    const CrossOriginEmbedderPolicy& crossOriginEmbedderPolicy() const { return m_crossOriginEmbedderPolicy; }
    9294    void setCrossOriginEmbedderPolicy(const CrossOriginEmbedderPolicy& crossOriginEmbedderPolicy) { m_crossOriginEmbedderPolicy = crossOriginEmbedderPolicy; }
     95
     96    virtual const CrossOriginOpenerPolicy& crossOriginOpenerPolicy() const;
     97
     98    PolicyContainer policyContainer() const;
    9399
    94100    WEBCORE_EXPORT SecurityOrigin* securityOrigin() const;
  • trunk/Source/WebCore/fileapi/Blob.cpp

    r280881 r281055  
    3838#include "File.h"
    3939#include "JSDOMPromiseDeferred.h"
     40#include "PolicyContainer.h"
    4041#include "ReadableStream.h"
    4142#include "ReadableStreamSource.h"
     
    6364{
    6465    ASSERT(&blob.registry() == this);
    65     ThreadableBlobRegistry::registerBlobURL(context.securityOrigin(), context.crossOriginOpenerPolicy(), publicURL, static_cast<Blob&>(blob).url());
     66    ThreadableBlobRegistry::registerBlobURL(context.securityOrigin(), context.policyContainer(), publicURL, static_cast<Blob&>(blob).url());
    6667}
    6768
  • trunk/Source/WebCore/fileapi/FileReaderLoader.cpp

    r280881 r281055  
    8383        return;
    8484    }
    85     ThreadableBlobRegistry::registerBlobURL(scriptExecutionContext->securityOrigin(), scriptExecutionContext->crossOriginOpenerPolicy(), m_urlForReading, blob.url());
     85    ThreadableBlobRegistry::registerBlobURL(scriptExecutionContext->securityOrigin(), scriptExecutionContext->policyContainer(), m_urlForReading, blob.url());
    8686
    8787    // Construct and load the request.
  • trunk/Source/WebCore/fileapi/ThreadableBlobRegistry.cpp

    r280890 r281055  
    101101}
    102102
    103 void ThreadableBlobRegistry::registerBlobURL(SecurityOrigin* origin, const CrossOriginOpenerPolicy& coop, const URL& url, const URL& srcURL)
     103void ThreadableBlobRegistry::registerBlobURL(SecurityOrigin* origin, const PolicyContainer& policyContainer, const URL& url, const URL& srcURL)
    104104{
    105105    // If the blob URL contains null origin, as in the context with unique security origin or file URL, save the mapping between url and origin so that the origin can be retrived when doing security origin check.
     
    108108
    109109    if (isMainThread()) {
    110         blobRegistry().registerBlobURL(url, srcURL, coop);
     110        blobRegistry().registerBlobURL(url, srcURL, policyContainer);
    111111        return;
    112112    }
    113113
    114     callOnMainThread([url = url.isolatedCopy(), srcURL = srcURL.isolatedCopy(), coop = crossThreadCopy(coop)] {
    115         blobRegistry().registerBlobURL(url, srcURL, coop);
     114    callOnMainThread([url = url.isolatedCopy(), srcURL = srcURL.isolatedCopy(), policyContainer = crossThreadCopy(policyContainer)] {
     115        blobRegistry().registerBlobURL(url, srcURL, policyContainer);
    116116    });
    117117}
  • trunk/Source/WebCore/fileapi/ThreadableBlobRegistry.h

    r280881 r281055  
    3939class SecurityOrigin;
    4040
    41 struct CrossOriginOpenerPolicy;
     41struct PolicyContainer;
    4242
    4343class ThreadableBlobRegistry {
     
    4545    static void registerFileBlobURL(const URL&, const String& path, const String& replacementPath, const String& contentType);
    4646    static void registerBlobURL(const URL&, Vector<BlobPart>&& blobParts, const String& contentType);
    47     static void registerBlobURL(SecurityOrigin*, const CrossOriginOpenerPolicy&, const URL&, const URL& srcURL);
     47    static void registerBlobURL(SecurityOrigin*, const PolicyContainer&, const URL&, const URL& srcURL);
    4848    static void registerBlobURLOptionallyFileBacked(const URL&, const URL& srcURL, const String& fileBackedPath, const String& contentType);
    4949    static void registerBlobURLForSlice(const URL& newURL, const URL& srcURL, long long start, long long end, const String& contentType);
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r280920 r281055  
    15531553            ThreadableBlobRegistry::unregisterBlobURL(m_blobURLForReading);
    15541554        m_blobURLForReading = BlobURL::createPublicURL(&document().securityOrigin());
    1555         ThreadableBlobRegistry::registerBlobURL(&document().securityOrigin(), document().crossOriginOpenerPolicy(), m_blobURLForReading, m_blob->url());
     1555        ThreadableBlobRegistry::registerBlobURL(&document().securityOrigin(), document().policyContainer(), m_blobURLForReading, m_blob->url());
    15561556
    15571557        if (!m_player->load(m_blobURLForReading, contentType, keySystem))
  • trunk/Source/WebCore/loader/CrossOriginEmbedderPolicy.cpp

    r280953 r281055  
    7575}
    7676
     77void addCrossOriginEmbedderPolicyHeaders(ResourceResponse& response, const CrossOriginEmbedderPolicy& coep)
     78{
     79    if (coep.value != CrossOriginEmbedderPolicyValue::UnsafeNone) {
     80        ASSERT(coep.value == CrossOriginEmbedderPolicyValue::RequireCORP);
     81        if (coep.reportingEndpoint.isEmpty())
     82            response.setHTTPHeaderField(HTTPHeaderName::CrossOriginEmbedderPolicy, "require-corp"_s);
     83        else
     84            response.setHTTPHeaderField(HTTPHeaderName::CrossOriginEmbedderPolicy, makeString("require-corp; report-to=\"", coep.reportingEndpoint, '\"'));
     85    }
     86    if (coep.reportOnlyValue != CrossOriginEmbedderPolicyValue::UnsafeNone) {
     87        ASSERT(coep.reportOnlyValue == CrossOriginEmbedderPolicyValue::RequireCORP);
     88        if (coep.reportOnlyReportingEndpoint.isEmpty())
     89            response.setHTTPHeaderField(HTTPHeaderName::CrossOriginEmbedderPolicyReportOnly, "require-corp"_s);
     90        else
     91            response.setHTTPHeaderField(HTTPHeaderName::CrossOriginEmbedderPolicyReportOnly, makeString("require-corp; report-to=\"", coep.reportOnlyReportingEndpoint, '\"'));
     92    }
     93}
     94
    7795} // namespace WebCore
  • trunk/Source/WebCore/loader/CrossOriginEmbedderPolicy.h

    r280953 r281055  
    5151};
    5252
     53inline bool operator==(const CrossOriginEmbedderPolicy& a, const CrossOriginEmbedderPolicy& b)
     54{
     55    return a.value == b.value && a.reportingEndpoint == b.reportingEndpoint && a.reportOnlyValue == b.reportOnlyValue && a.reportOnlyReportingEndpoint == b.reportOnlyReportingEndpoint;
     56}
     57
    5358template<class Encoder>
    5459void CrossOriginEmbedderPolicy::encode(Encoder& encoder) const
     
    8994
    9095CrossOriginEmbedderPolicy obtainCrossOriginEmbedderPolicy(const ResourceResponse&, const ScriptExecutionContext&);
     96WEBCORE_EXPORT void addCrossOriginEmbedderPolicyHeaders(ResourceResponse&, const CrossOriginEmbedderPolicy&);
    9197
    9298enum class IsSecureContext : bool { No, Yes };
  • trunk/Source/WebCore/loader/CrossOriginOpenerPolicy.cpp

    r280953 r281055  
    104104        else
    105105            response.setHTTPHeaderField(HTTPHeaderName::CrossOriginOpenerPolicy, makeString(crossOriginOpenerPolicyToString(coop.value), "; report-to=\"", coop.reportingEndpoint, '\"'));
    106         if (coop.value == CrossOriginOpenerPolicyValue::SameOriginPlusCOEP)
    107             response.setHTTPHeaderField(HTTPHeaderName::CrossOriginEmbedderPolicy, "require-corp"_s); // FIXME: Pass in coep and set header value correctly.
    108106    }
    109107    if (coop.reportOnlyValue != CrossOriginOpenerPolicyValue::UnsafeNone) {
     
    112110        else
    113111            response.setHTTPHeaderField(HTTPHeaderName::CrossOriginOpenerPolicyReportOnly, makeString(crossOriginOpenerPolicyToString(coop.reportOnlyValue), "; report-to=\"", coop.reportOnlyReportingEndpoint, '\"'));
    114         if (coop.reportOnlyValue == CrossOriginOpenerPolicyValue::SameOriginPlusCOEP)
    115             response.setHTTPHeaderField(HTTPHeaderName::CrossOriginEmbedderPolicyReportOnly, "require-corp"_s); // FIXME: Pass in coep and set header value correctly.
    116112    }
    117113}
  • trunk/Source/WebCore/loader/FrameLoader.cpp

    r280953 r281055  
    752752        m_frame.document()->contentSecurityPolicy()->didReceiveHeaders(ContentSecurityPolicyResponseHeaders(m_documentLoader->response()), referrer(), ContentSecurityPolicy::ReportParsingErrors::No);
    753753
    754         if (m_frame.document()->url().protocolIsInHTTPFamily())
     754        if (m_frame.document()->url().protocolIsInHTTPFamily() || m_frame.document()->url().protocolIsBlob())
    755755            m_frame.document()->setCrossOriginEmbedderPolicy(obtainCrossOriginEmbedderPolicy(m_documentLoader->response(), *m_frame.document()));
    756756
  • trunk/Source/WebCore/platform/network/BlobData.cpp

    r280881 r281055  
    8282{
    8383    auto blobData = BlobData::create(m_contentType);
    84     blobData->m_coop = m_coop;
     84    blobData->m_policyContainer = m_policyContainer;
    8585    blobData->m_items = m_items;
    8686    return blobData;
  • trunk/Source/WebCore/platform/network/BlobData.h

    r280881 r281055  
    3333
    3434#include "BlobDataFileReference.h"
    35 #include "CrossOriginOpenerPolicy.h"
     35#include "PolicyContainer.h"
    3636#include "ThreadSafeDataBuffer.h"
    3737#include <wtf/Forward.h>
     
    107107    const String& contentType() const { return m_contentType; }
    108108
    109     const CrossOriginOpenerPolicy& crossOriginOpenerPolicy() const { return m_coop; }
    110     void setCrossOriginOpenerPolicy(const CrossOriginOpenerPolicy& coop) { m_coop = coop; }
     109    const PolicyContainer& policyContainer() const { return m_policyContainer; }
     110    void setPolicyContainer(const PolicyContainer& policyContainer) { m_policyContainer = policyContainer; }
    111111
    112112    const BlobDataItemList& items() const { return m_items; }
     
    126126
    127127    String m_contentType;
    128     CrossOriginOpenerPolicy m_coop;
     128    PolicyContainer m_policyContainer;
    129129    BlobDataItemList m_items;
    130130};
  • trunk/Source/WebCore/platform/network/BlobRegistry.h

    r280881 r281055  
    4242class BlobRegistryImpl;
    4343
    44 struct CrossOriginOpenerPolicy;
     44struct PolicyContainer;
    4545
    4646WEBCORE_EXPORT BlobRegistry& blobRegistry();
     
    5757   
    5858    // Registers a new blob URL referring to the blob data identified by the specified srcURL.
    59     virtual void registerBlobURL(const URL&, const URL& srcURL, const CrossOriginOpenerPolicy&) = 0;
     59    virtual void registerBlobURL(const URL&, const URL& srcURL, const PolicyContainer&) = 0;
    6060
    6161    // Registers a new blob URL referring to the blob data identified by the specified srcURL or, if none found, referring to the file found at the given path.
  • trunk/Source/WebCore/platform/network/BlobRegistryImpl.cpp

    r280881 r281055  
    3636#include "BlobPart.h"
    3737#include "BlobResourceHandle.h"
     38#include "PolicyContainer.h"
    3839#include "ResourceError.h"
    3940#include "ResourceHandle.h"
     
    153154}
    154155
    155 void BlobRegistryImpl::registerBlobURL(const URL& url, const URL& srcURL, const CrossOriginOpenerPolicy& coop)
    156 {
    157     registerBlobURLOptionallyFileBacked(url, srcURL, nullptr, { }, coop);
    158 }
    159 
    160 void BlobRegistryImpl::registerBlobURLOptionallyFileBacked(const URL& url, const URL& srcURL, RefPtr<BlobDataFileReference>&& file, const String& contentType, const CrossOriginOpenerPolicy& coop)
     156void BlobRegistryImpl::registerBlobURL(const URL& url, const URL& srcURL, const PolicyContainer& policyContainer)
     157{
     158    registerBlobURLOptionallyFileBacked(url, srcURL, nullptr, { }, policyContainer);
     159}
     160
     161void BlobRegistryImpl::registerBlobURLOptionallyFileBacked(const URL& url, const URL& srcURL, RefPtr<BlobDataFileReference>&& file, const String& contentType, const PolicyContainer& policyContainer)
    161162{
    162163    ASSERT(isMainThread());
     
    165166    BlobData* src = getBlobDataFromURL(srcURL);
    166167    if (src) {
    167         if (src->crossOriginOpenerPolicy() == coop)
     168        if (src->policyContainer() == policyContainer)
    168169            addBlobData(url.string(), src);
    169170        else {
    170171            auto clone = src->clone();
    171             clone->setCrossOriginOpenerPolicy(coop);
     172            clone->setPolicyContainer(policyContainer);
    172173            addBlobData(url.string(), WTFMove(clone));
    173174        }
     
    180181    auto backingFile = BlobData::create(contentType);
    181182    backingFile->appendFile(file.releaseNonNull());
    182     backingFile->setCrossOriginOpenerPolicy(coop);
     183    backingFile->setPolicyContainer(policyContainer);
    183184
    184185    addBlobData(url.string(), WTFMove(backingFile));
  • trunk/Source/WebCore/platform/network/BlobRegistryImpl.h

    r280881 r281055  
    4646class ResourceRequest;
    4747class ThreadSafeDataBuffer;
    48 struct CrossOriginOpenerPolicy;
     48struct PolicyContainer;
    4949
    5050// BlobRegistryImpl is not thread-safe. It should only be called from main thread.
     
    6363    void registerFileBlobURL(const URL&, Ref<BlobDataFileReference>&&, const String& contentType);
    6464    void registerBlobURL(const URL&, Vector<BlobPart>&&, const String& contentType);
    65     void registerBlobURL(const URL&, const URL& srcURL, const CrossOriginOpenerPolicy&);
    66     void registerBlobURLOptionallyFileBacked(const URL&, const URL& srcURL, RefPtr<BlobDataFileReference>&&, const String& contentType, const CrossOriginOpenerPolicy&);
     65    void registerBlobURL(const URL&, const URL& srcURL, const PolicyContainer&);
     66    void registerBlobURLOptionallyFileBacked(const URL&, const URL& srcURL, RefPtr<BlobDataFileReference>&&, const String& contentType, const PolicyContainer&);
    6767    void registerBlobURLForSlice(const URL&, const URL& srcURL, long long start, long long end, const String& contentType);
    6868    void unregisterBlobURL(const URL&);
  • trunk/Source/WebCore/platform/network/BlobResourceHandle.cpp

    r280881 r281055  
    3535#include "AsyncFileStream.h"
    3636#include "BlobData.h"
    37 #include "CrossOriginOpenerPolicy.h"
    3837#include "FileStream.h"
    3938#include "HTTPHeaderNames.h"
     
    578577    response.setHTTPHeaderField(HTTPHeaderName::ContentType, m_blobData->contentType());
    579578    response.setHTTPHeaderField(HTTPHeaderName::ContentLength, String::number(m_totalRemainingSize));
    580     addCrossOriginOpenerPolicyHeaders(response, m_blobData->crossOriginOpenerPolicy());
     579    addCrossOriginOpenerPolicyHeaders(response, m_blobData->policyContainer().crossOriginOpenerPolicy);
     580    addCrossOriginEmbedderPolicyHeaders(response, m_blobData->policyContainer().crossOriginEmbedderPolicy);
    581581
    582582    if (isRangeRequest)
  • trunk/Source/WebKit/ChangeLog

    r281054 r281055  
     12021-08-13  Chris Dumez  <cdumez@apple.com>
     2
     3        Add Cross-Origin-Embedder-Policy support for Blob URLs
     4        https://bugs.webkit.org/show_bug.cgi?id=229041
     5
     6        Reviewed by Alex Christensen.
     7
     8        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
     9        (WebKit::NetworkConnectionToWebProcess::registerBlobURLFromURL):
     10        (WebKit::NetworkConnectionToWebProcess::registerBlobURLOptionallyFileBacked):
     11        * NetworkProcess/NetworkConnectionToWebProcess.h:
     12        * NetworkProcess/NetworkConnectionToWebProcess.messages.in:
     13        * NetworkProcess/NetworkDataTaskBlob.cpp:
     14        (WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):
     15        * NetworkProcess/NetworkProcessPlatformStrategies.cpp:
     16        (WebKit::NetworkProcessPlatformStrategies::createBlobRegistry):
     17        * WebProcess/FileAPI/BlobRegistryProxy.cpp:
     18        (WebKit::BlobRegistryProxy::registerBlobURL):
     19        * WebProcess/FileAPI/BlobRegistryProxy.h:
     20
    1212021-08-13  Wenson Hsieh  <wenson_hsieh@apple.com>
    222
  • trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp

    r280881 r281055  
    829829}
    830830
    831 void NetworkConnectionToWebProcess::registerBlobURLFromURL(const URL& url, const URL& srcURL, CrossOriginOpenerPolicy&& coop)
     831void NetworkConnectionToWebProcess::registerBlobURLFromURL(const URL& url, const URL& srcURL, PolicyContainer&& policyContainer)
    832832{
    833833    auto* session = networkSession();
     
    835835        return;
    836836
    837     session->blobRegistry().registerBlobURL(url, srcURL, WTFMove(coop));
     837    session->blobRegistry().registerBlobURL(url, srcURL, WTFMove(policyContainer));
    838838}
    839839
  • trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h

    r280881 r281055  
    6767enum class StorageAccessScope : bool;
    6868enum class ShouldAskITP : bool;
    69 struct CrossOriginOpenerPolicy;
     69struct PolicyContainer;
    7070struct RequestStorageAccessResult;
    7171struct SameSiteInfo;
     
    231231    void registerFileBlobURL(const URL&, const String& path, const String& replacementPath, SandboxExtension::Handle&&, const String& contentType);
    232232    void registerBlobURL(const URL&, Vector<WebCore::BlobPart>&&, const String& contentType);
    233     void registerBlobURLFromURL(const URL&, const URL& srcURL, WebCore::CrossOriginOpenerPolicy&&);
     233    void registerBlobURLFromURL(const URL&, const URL& srcURL, WebCore::PolicyContainer&&);
    234234    void registerBlobURLOptionallyFileBacked(const URL&, const URL& srcURL, const String& fileBackedPath, const String& contentType);
    235235    void registerBlobURLForSlice(const URL&, const URL& srcURL, int64_t start, int64_t end, const String& contentType);
  • trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in

    r280881 r281055  
    5151    RegisterFileBlobURL(URL url, String path, String replacementPath, WebKit::SandboxExtension::Handle extensionHandle, String contentType)
    5252    RegisterBlobURL(URL url, Vector<WebCore::BlobPart> blobParts, String contentType)
    53     RegisterBlobURLFromURL(URL url, URL srcURL, struct WebCore::CrossOriginOpenerPolicy coop)
     53    RegisterBlobURLFromURL(URL url, URL srcURL, struct WebCore::PolicyContainer policyContainer)
    5454    RegisterBlobURLOptionallyFileBacked(URL url, URL srcURL, String fileBackedPath, String contentType)
    5555    RegisterBlobURLForSlice(URL url, URL srcURL, int64_t start, int64_t end, String contentType)
  • trunk/Source/WebKit/NetworkProcess/NetworkDataTaskBlob.cpp

    r280881 r281055  
    4242#include <WebCore/AsyncFileStream.h>
    4343#include <WebCore/BlobRegistryImpl.h>
     44#include <WebCore/CrossOriginEmbedderPolicy.h>
    4445#include <WebCore/CrossOriginOpenerPolicy.h>
    4546#include <WebCore/HTTPParsers.h>
     
    266267        response.setHTTPHeaderField(HTTPHeaderName::ContentType, m_blobData->contentType());
    267268        response.setHTTPHeaderField(HTTPHeaderName::ContentLength, String::number(m_totalRemainingSize));
    268         addCrossOriginOpenerPolicyHeaders(response, m_blobData->crossOriginOpenerPolicy());
     269        addCrossOriginOpenerPolicyHeaders(response, m_blobData->policyContainer().crossOriginOpenerPolicy);
     270        addCrossOriginEmbedderPolicyHeaders(response, m_blobData->policyContainer().crossOriginEmbedderPolicy);
    269271
    270272        if (isRangeRequest)
  • trunk/Source/WebKit/NetworkProcess/NetworkProcessPlatformStrategies.cpp

    r280881 r281055  
    6060        void registerFileBlobURL(const URL&, Ref<BlobDataFileReference>&&, const String& path, const String& contentType) final { ASSERT_NOT_REACHED(); }
    6161        void registerBlobURL(const URL&, Vector<BlobPart>&&, const String& contentType) final { ASSERT_NOT_REACHED(); }
    62         void registerBlobURL(const URL&, const URL& srcURL, const WebCore::CrossOriginOpenerPolicy&) final { ASSERT_NOT_REACHED(); }
     62        void registerBlobURL(const URL&, const URL& srcURL, const PolicyContainer&) final { ASSERT_NOT_REACHED(); }
    6363        void registerBlobURLOptionallyFileBacked(const URL&, const URL& srcURL, RefPtr<BlobDataFileReference>&&, const String& contentType) final { ASSERT_NOT_REACHED(); }
    6464        void registerBlobURLForSlice(const URL&, const URL& srcURL, long long start, long long end, const String& contentType) final { ASSERT_NOT_REACHED(); }
  • trunk/Source/WebKit/WebProcess/FileAPI/BlobRegistryProxy.cpp

    r281032 r281055  
    5757}
    5858
    59 void BlobRegistryProxy::registerBlobURL(const URL& url, const URL& srcURL, const CrossOriginOpenerPolicy& coop)
     59void BlobRegistryProxy::registerBlobURL(const URL& url, const URL& srcURL, const PolicyContainer& policyContainer)
    6060{
    61     WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::RegisterBlobURLFromURL { url, srcURL, coop }, 0);
     61    WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::RegisterBlobURLFromURL { url, srcURL, policyContainer }, 0);
    6262}
    6363
  • trunk/Source/WebKit/WebProcess/FileAPI/BlobRegistryProxy.h

    r280881 r281055  
    3434    void registerFileBlobURL(const URL&, Ref<WebCore::BlobDataFileReference>&&, const String& path, const String& contentType) final;
    3535    void registerBlobURL(const URL&, Vector<WebCore::BlobPart>&&, const String& contentType) final;
    36     void registerBlobURL(const URL&, const URL& srcURL, const WebCore::CrossOriginOpenerPolicy&) final;
     36    void registerBlobURL(const URL&, const URL& srcURL, const WebCore::PolicyContainer&) final;
    3737    void registerBlobURLOptionallyFileBacked(const URL&, const URL& srcURL, RefPtr<WebCore::BlobDataFileReference>&&, const String& contentType) final;
    3838    void unregisterBlobURL(const URL&) final;
  • trunk/Source/WebKitLegacy/mac/ChangeLog

    r280999 r281055  
     12021-08-13  Chris Dumez  <cdumez@apple.com>
     2
     3        Add Cross-Origin-Embedder-Policy support for Blob URLs
     4        https://bugs.webkit.org/show_bug.cgi?id=229041
     5
     6        Reviewed by Alex Christensen.
     7
     8        * WebCoreSupport/WebPlatformStrategies.mm:
     9
    1102021-08-12  Chris Dumez  <cdumez@apple.com>
    211
  • trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebPlatformStrategies.mm

    r280881 r281055  
    8686    void registerFileBlobURL(const URL& url, Ref<BlobDataFileReference>&& reference, const String&, const String& contentType) final { m_blobRegistry.registerFileBlobURL(url, WTFMove(reference), contentType); }
    8787    void registerBlobURL(const URL& url, Vector<BlobPart>&& parts, const String& contentType) final { m_blobRegistry.registerBlobURL(url, WTFMove(parts), contentType); }
    88     void registerBlobURL(const URL& url, const URL& srcURL, const CrossOriginOpenerPolicy& coop) final { m_blobRegistry.registerBlobURL(url, srcURL, coop); }
     88    void registerBlobURL(const URL& url, const URL& srcURL, const PolicyContainer& policyContainer) final { m_blobRegistry.registerBlobURL(url, srcURL, policyContainer); }
    8989    void registerBlobURLOptionallyFileBacked(const URL& url, const URL& srcURL, RefPtr<BlobDataFileReference>&& reference, const String& contentType) final { m_blobRegistry.registerBlobURLOptionallyFileBacked(url, srcURL, WTFMove(reference), contentType, { }); }
    9090    void registerBlobURLForSlice(const URL& url, const URL& srcURL, long long start, long long end, const String& contentType) final { m_blobRegistry.registerBlobURLForSlice(url, srcURL, start, end, contentType); }
  • trunk/Source/WebKitLegacy/win/ChangeLog

    r280881 r281055  
     12021-08-13  Chris Dumez  <cdumez@apple.com>
     2
     3        Add Cross-Origin-Embedder-Policy support for Blob URLs
     4        https://bugs.webkit.org/show_bug.cgi?id=229041
     5
     6        Reviewed by Alex Christensen.
     7
     8        * WebCoreSupport/WebPlatformStrategies.cpp:
     9
    1102021-08-10  Chris Dumez  <cdumez@apple.com>
    211
  • trunk/Source/WebKitLegacy/win/WebCoreSupport/WebPlatformStrategies.cpp

    r280881 r281055  
    8282    void registerFileBlobURL(const URL& url, Ref<BlobDataFileReference>&& reference, const String&, const String& contentType) final { m_blobRegistry.registerFileBlobURL(url, WTFMove(reference), contentType); }
    8383    void registerBlobURL(const URL& url, Vector<BlobPart>&& parts, const String& contentType) final { m_blobRegistry.registerBlobURL(url, WTFMove(parts), contentType); }
    84     void registerBlobURL(const URL& url, const URL& srcURL, const CrossOriginOpenerPolicy& coop) final { m_blobRegistry.registerBlobURL(url, srcURL, coop); }
     84    void registerBlobURL(const URL& url, const URL& srcURL, const PolicyContainer& policyContainer) final { m_blobRegistry.registerBlobURL(url, srcURL, policyContainer); }
    8585    void registerBlobURLOptionallyFileBacked(const URL& url, const URL& srcURL, RefPtr<BlobDataFileReference>&& reference, const String& contentType) final { m_blobRegistry.registerBlobURLOptionallyFileBacked(url, srcURL, WTFMove(reference), contentType, { }); }
    8686    void registerBlobURLForSlice(const URL& url, const URL& srcURL, long long start, long long end, const String& contentType) final { m_blobRegistry.registerBlobURLForSlice(url, srcURL, start, end, contentType); }
Note: See TracChangeset for help on using the changeset viewer.