Diff
Modified: trunk/Source/WebCore/ChangeLog (272312 => 272313)
--- trunk/Source/WebCore/ChangeLog 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebCore/ChangeLog 2021-02-03 15:08:38 UTC (rev 272313)
@@ -1,3 +1,47 @@
+2021-02-03 Antoine Quint <[email protected]>
+
+ Add a loader for <model> resources
+ https://bugs.webkit.org/show_bug.cgi?id=221255
+
+ Reviewed by Youenn Fablet.
+
+ In order to load <model> resources, we make the MediaResourceLoader constructor take
+ a FetchOptions::Destination to determine the type of resource loaded. We piggyback on
+ the media loading code for <model> resources since it handles things like CORS and CSP,
+ contrary to CachedRawResource.
+
+ * Modules/fetch/FetchRequest.idl:
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::mediaPlayerCreateResourceLoader):
+ * loader/FetchOptions.h:
+ * loader/LinkLoader.cpp:
+ (WebCore::createLinkPreloadResourceClient):
+ * loader/MediaResourceLoader.cpp:
+ (WebCore::MediaResourceLoader::MediaResourceLoader):
+ (WebCore::MediaResourceLoader::contextDestroyed):
+ (WebCore::MediaResourceLoader::requestResource):
+ * loader/MediaResourceLoader.h:
+ * loader/ResourceLoadInfo.cpp:
+ (WebCore::ContentExtensions::toResourceType):
+ * loader/SubresourceLoader.cpp:
+ (WebCore::logResourceLoaded):
+ * loader/cache/CachedResource.cpp:
+ (WebCore::CachedResource::defaultPriorityForResourceType):
+ * loader/cache/CachedResource.h:
+ (WebCore::CachedResource::isMainOrMediaOrIconOrRawResource const):
+ * loader/cache/CachedResourceLoader.cpp:
+ (WebCore::createResource):
+ (WebCore::CachedResourceLoader::requestMedia):
+ (WebCore::contentTypeFromResourceType):
+ (WebCore::CachedResourceLoader::checkInsecureContent const):
+ (WebCore::CachedResourceLoader::allowedByContentSecurityPolicy const):
+ (WebCore::destinationForType):
+ * platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm:
+ (WebCore::CachedResourceMediaLoader::create): Explicitly set the destination, which used to
+ default to EmptyString, to ensure we don't hit the ASSERT_NOT_REACHED() added to
+ CachedResourceLoader::requestMedia().
+ * platform/network/ResourceRequestBase.h:
+
2021-02-03 Zalan Bujtas <[email protected]>
[LFC][IFC] Handles cases when the candidate content is overflowing from the get-go
Modified: trunk/Source/WebCore/Modules/fetch/FetchRequest.idl (272312 => 272313)
--- trunk/Source/WebCore/Modules/fetch/FetchRequest.idl 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebCore/Modules/fetch/FetchRequest.idl 2021-02-03 15:08:38 UTC (rev 272313)
@@ -26,7 +26,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-enum FetchRequestDestination { "", "audio", "audioworklet", "document", "embed", "font", "image", "manifest", "object", "paintworklet", "report", "script", "serviceworker", "sharedworker", "style", "track", "video", "worker", "xslt" };
+enum FetchRequestDestination { "", "audio", "audioworklet", "document", "embed", "font", "image", "manifest", "model", "object", "paintworklet", "report", "script", "serviceworker", "sharedworker", "style", "track", "video", "worker", "xslt" };
typedef (FetchRequest or USVString) RequestInfo;
Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (272312 => 272313)
--- trunk/Source/WebCore/html/HTMLMediaElement.cpp 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp 2021-02-03 15:08:38 UTC (rev 272313)
@@ -6941,7 +6941,8 @@
RefPtr<PlatformMediaResourceLoader> HTMLMediaElement::mediaPlayerCreateResourceLoader()
{
- auto mediaResourceLoader = adoptRef(*new MediaResourceLoader(document(), *this, crossOrigin()));
+ auto destination = isVideo() ? FetchOptions::Destination::Video : FetchOptions::Destination::Audio;
+ auto mediaResourceLoader = adoptRef(*new MediaResourceLoader(document(), *this, crossOrigin(), destination));
m_lastMediaResourceLoaderForTesting = makeWeakPtr(mediaResourceLoader.get());
Modified: trunk/Source/WebCore/loader/FetchOptions.h (272312 => 272313)
--- trunk/Source/WebCore/loader/FetchOptions.h 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebCore/loader/FetchOptions.h 2021-02-03 15:08:38 UTC (rev 272313)
@@ -36,7 +36,7 @@
namespace WebCore {
struct FetchOptions {
- enum class Destination : uint8_t { EmptyString, Audio, Audioworklet, Document, Embed, Font, Image, Manifest, Object, Paintworklet, Report, Script, Serviceworker, Sharedworker, Style, Track, Video, Worker, Xslt };
+ enum class Destination : uint8_t { EmptyString, Audio, Audioworklet, Document, Embed, Font, Image, Manifest, Model, Object, Paintworklet, Report, Script, Serviceworker, Sharedworker, Style, Track, Video, Worker, Xslt };
enum class Mode : uint8_t { Navigate, SameOrigin, NoCors, Cors };
enum class Credentials : uint8_t { Omit, SameOrigin, Include };
enum class Cache : uint8_t { Default, NoStore, Reload, NoCache, ForceCache, OnlyIfCached };
@@ -113,6 +113,7 @@
WebCore::FetchOptions::Destination::Font,
WebCore::FetchOptions::Destination::Image,
WebCore::FetchOptions::Destination::Manifest,
+ WebCore::FetchOptions::Destination::Model,
WebCore::FetchOptions::Destination::Object,
WebCore::FetchOptions::Destination::Paintworklet,
WebCore::FetchOptions::Destination::Report,
Modified: trunk/Source/WebCore/loader/LinkLoader.cpp (272312 => 272313)
--- trunk/Source/WebCore/loader/LinkLoader.cpp 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebCore/loader/LinkLoader.cpp 2021-02-03 15:08:38 UTC (rev 272313)
@@ -167,6 +167,9 @@
#if ENABLE(APPLICATION_MANIFEST)
case CachedResource::Type::ApplicationManifest:
#endif
+#if ENABLE(MODEL_ELEMENT)
+ case CachedResource::Type::ModelResource:
+#endif
// None of these values is currently supported as an `as` value.
ASSERT_NOT_REACHED();
}
Modified: trunk/Source/WebCore/loader/MediaResourceLoader.cpp (272312 => 272313)
--- trunk/Source/WebCore/loader/MediaResourceLoader.cpp 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebCore/loader/MediaResourceLoader.cpp 2021-02-03 15:08:38 UTC (rev 272313)
@@ -34,8 +34,8 @@
#include "CachedResourceRequest.h"
#include "CrossOriginAccessControl.h"
#include "Document.h"
+#include "Element.h"
#include "FrameLoaderClient.h"
-#include "HTMLMediaElement.h"
#include "InspectorInstrumentation.h"
#include "SecurityOrigin.h"
#include <wtf/NeverDestroyed.h>
@@ -49,11 +49,12 @@
shouldRecordResponsesForTesting = true;
}
-MediaResourceLoader::MediaResourceLoader(Document& document, HTMLMediaElement& mediaElement, const String& crossOriginMode)
+MediaResourceLoader::MediaResourceLoader(Document& document, Element& element, const String& crossOriginMode, FetchOptions::Destination destination)
: ContextDestructionObserver(&document)
, m_document(makeWeakPtr(document))
- , m_mediaElement(makeWeakPtr(mediaElement))
+ , m_element(makeWeakPtr(element))
, m_crossOriginMode(crossOriginMode)
+ , m_destination(destination)
{
}
@@ -66,7 +67,7 @@
{
ContextDestructionObserver::contextDestroyed();
m_document = nullptr;
- m_mediaElement = nullptr;
+ m_element = nullptr;
}
void MediaResourceLoader::sendH2Ping(const URL& url, CompletionHandler<void(Expected<Seconds, ResourceError>&&)>&& completionHandler)
@@ -88,8 +89,8 @@
request.setRequester(ResourceRequest::Requester::Media);
- if (m_mediaElement)
- request.setInspectorInitiatorNodeIdentifier(InspectorInstrumentation::identifierForNode(*m_mediaElement));
+ if (m_element)
+ request.setInspectorInitiatorNodeIdentifier(InspectorInstrumentation::identifierForNode(*m_element));
#if PLATFORM(MAC)
// FIXME: Workaround for <rdar://problem/26071607>. We are not able to do CORS checking on 304 responses because they are usually missing the headers we need.
@@ -97,7 +98,7 @@
request.makeUnconditional();
#endif
- ContentSecurityPolicyImposition contentSecurityPolicyImposition = m_mediaElement && m_mediaElement->isInUserAgentShadowTree() ? ContentSecurityPolicyImposition::SkipPolicyCheck : ContentSecurityPolicyImposition::DoPolicyCheck;
+ ContentSecurityPolicyImposition contentSecurityPolicyImposition = m_element && m_element->isInUserAgentShadowTree() ? ContentSecurityPolicyImposition::SkipPolicyCheck : ContentSecurityPolicyImposition::DoPolicyCheck;
ResourceLoaderOptions loaderOptions {
SendCallbackPolicy::SendCallbacks,
ContentSniffingPolicy::DoNotSniffContent,
@@ -111,10 +112,10 @@
contentSecurityPolicyImposition,
DefersLoadingPolicy::AllowDefersLoading,
cachingPolicy };
- loaderOptions.destination = m_mediaElement && !m_mediaElement->isVideo() ? FetchOptions::Destination::Audio : FetchOptions::Destination::Video;
+ loaderOptions.destination = m_destination;
auto cachedRequest = createPotentialAccessControlRequest(WTFMove(request), WTFMove(loaderOptions), *m_document, m_crossOriginMode);
- if (m_mediaElement)
- cachedRequest.setInitiator(*m_mediaElement);
+ if (m_element)
+ cachedRequest.setInitiator(*m_element);
auto resource = m_document->cachedResourceLoader().requestMedia(WTFMove(cachedRequest)).value_or(nullptr);
if (!resource)
Modified: trunk/Source/WebCore/loader/MediaResourceLoader.h (272312 => 272313)
--- trunk/Source/WebCore/loader/MediaResourceLoader.h 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebCore/loader/MediaResourceLoader.h 2021-02-03 15:08:38 UTC (rev 272313)
@@ -30,6 +30,7 @@
#include "CachedRawResourceClient.h"
#include "CachedResourceHandle.h"
#include "ContextDestructionObserver.h"
+#include "FetchOptions.h"
#include "PlatformMediaResourceLoader.h"
#include "ResourceResponse.h"
#include <wtf/HashSet.h>
@@ -41,12 +42,12 @@
class CachedRawResource;
class Document;
-class HTMLMediaElement;
+class Element;
class MediaResource;
class MediaResourceLoader final : public PlatformMediaResourceLoader, public CanMakeWeakPtr<MediaResourceLoader>, public ContextDestructionObserver {
public:
- WEBCORE_EXPORT MediaResourceLoader(Document&, HTMLMediaElement&, const String& crossOriginMode);
+ WEBCORE_EXPORT MediaResourceLoader(Document&, Element&, const String& crossOriginMode, FetchOptions::Destination);
WEBCORE_EXPORT virtual ~MediaResourceLoader();
RefPtr<PlatformMediaResource> requestResource(ResourceRequest&&, LoadOptions) final;
@@ -64,10 +65,11 @@
void contextDestroyed() override;
WeakPtr<Document> m_document;
- WeakPtr<HTMLMediaElement> m_mediaElement;
+ WeakPtr<Element> m_element;
String m_crossOriginMode;
HashSet<MediaResource*> m_resources;
Vector<ResourceResponse> m_responsesForTesting;
+ FetchOptions::Destination m_destination;
};
class MediaResource : public PlatformMediaResource, CachedRawResourceClient {
Modified: trunk/Source/WebCore/loader/ResourceLoadInfo.cpp (272312 => 272313)
--- trunk/Source/WebCore/loader/ResourceLoadInfo.cpp 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebCore/loader/ResourceLoadInfo.cpp 2021-02-03 15:08:38 UTC (rev 272313)
@@ -64,6 +64,9 @@
case CachedResource::Type::Ping:
case CachedResource::Type::Icon:
case CachedResource::Type::RawResource:
+#if ENABLE(MODEL_ELEMENT)
+ case CachedResource::Type::ModelResource:
+#endif
return ResourceType::Raw;
case CachedResource::Type::TextTrackResource:
Modified: trunk/Source/WebCore/loader/SubresourceLoader.cpp (272312 => 272313)
--- trunk/Source/WebCore/loader/SubresourceLoader.cpp 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebCore/loader/SubresourceLoader.cpp 2021-02-03 15:08:38 UTC (rev 272313)
@@ -580,6 +580,9 @@
case CachedResource::Type::Beacon:
case CachedResource::Type::Ping:
case CachedResource::Type::MediaResource:
+#if ENABLE(MODEL_ELEMENT)
+ case CachedResource::Type::ModelResource:
+#endif
case CachedResource::Type::Icon:
case CachedResource::Type::RawResource:
resourceType = DiagnosticLoggingKeys::rawKey();
Modified: trunk/Source/WebCore/loader/cache/CachedResource.cpp (272312 => 272313)
--- trunk/Source/WebCore/loader/cache/CachedResource.cpp 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebCore/loader/cache/CachedResource.cpp 2021-02-03 15:08:38 UTC (rev 272313)
@@ -105,6 +105,10 @@
case Type::TextTrackResource:
return ResourceLoadPriority::Low;
#endif
+#if ENABLE(MODEL_ELEMENT)
+ case Type::ModelResource:
+ return ResourceLoadPriority::Medium;
+#endif
#if ENABLE(APPLICATION_MANIFEST)
case Type::ApplicationManifest:
return ResourceLoadPriority::Low;
Modified: trunk/Source/WebCore/loader/cache/CachedResource.h (272312 => 272313)
--- trunk/Source/WebCore/loader/cache/CachedResource.h 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebCore/loader/cache/CachedResource.h 2021-02-03 15:08:38 UTC (rev 272313)
@@ -73,6 +73,9 @@
FontResource,
SVGFontResource,
MediaResource,
+#if ENABLE(MODEL_ELEMENT)
+ ModelResource,
+#endif
RawResource,
Icon,
Beacon,
@@ -178,7 +181,7 @@
bool isImage() const { return type() == Type::ImageResource; }
// FIXME: CachedRawResource could be a main resource, an audio/video resource, or a raw XHR/icon resource.
- bool isMainOrMediaOrIconOrRawResource() const { return type() == Type::MainResource || type() == Type::MediaResource || type() == Type::Icon || type() == Type::RawResource || type() == Type::Beacon || type() == Type::Ping; }
+ bool isMainOrMediaOrIconOrRawResource() const;
// Whether this request should impact request counting and delay window.onload.
bool ignoreForRequestCount() const
@@ -406,6 +409,19 @@
Timer m_timer;
};
+inline bool CachedResource::isMainOrMediaOrIconOrRawResource() const
+{
+ return type() == Type::MainResource
+ || type() == Type::MediaResource
+#if ENABLE(MODEL_ELEMENT)
+ || type() == Type::ModelResource
+#endif
+ || type() == Type::Icon
+ || type() == Type::RawResource
+ || type() == Type::Beacon
+ || type() == Type::Ping;
+}
+
} // namespace WebCore
#define SPECIALIZE_TYPE_TRAITS_CACHED_RESOURCE(ToClassName, CachedResourceType) \
Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (272312 => 272313)
--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp 2021-02-03 15:08:38 UTC (rev 272313)
@@ -131,6 +131,9 @@
case CachedResource::Type::Beacon:
case CachedResource::Type::Ping:
case CachedResource::Type::MediaResource:
+#if ENABLE(MODEL_ELEMENT)
+ case CachedResource::Type::ModelResource:
+#endif
case CachedResource::Type::RawResource:
case CachedResource::Type::Icon:
case CachedResource::Type::MainResource:
@@ -173,6 +176,9 @@
case CachedResource::Type::RawResource:
case CachedResource::Type::Icon:
case CachedResource::Type::MainResource:
+#if ENABLE(MODEL_ELEMENT)
+ case CachedResource::Type::ModelResource:
+#endif
return new CachedRawResource(WTFMove(request), resource.type(), resource.sessionID(), resource.cookieJar());
#if ENABLE(XSLT)
case CachedResource::Type::XSLStyleSheet:
@@ -317,8 +323,21 @@
ResourceErrorOr<CachedResourceHandle<CachedRawResource>> CachedResourceLoader::requestMedia(CachedResourceRequest&& request)
{
- // FIXME: Assert request.options().destination is FetchOptions::Destination::{Audio, Video}.
- return castCachedResourceTo<CachedRawResource>(requestResource(CachedResource::Type::MediaResource, WTFMove(request)));
+ auto resourceType = CachedResource::Type::MediaResource;
+ switch (request.options().destination) {
+ case FetchOptions::Destination::Audio:
+ case FetchOptions::Destination::Video:
+ break;
+ case FetchOptions::Destination::Model:
+#if ENABLE(MODEL_ELEMENT)
+ resourceType = CachedResource::Type::ModelResource;
+ break;
+#endif
+ default:
+ ASSERT_NOT_REACHED();
+ }
+
+ return castCachedResourceTo<CachedRawResource>(requestResource(resourceType, WTFMove(request)));
}
ResourceErrorOr<CachedResourceHandle<CachedRawResource>> CachedResourceLoader::requestIcon(CachedResourceRequest&& request)
@@ -363,7 +382,10 @@
// 3.1. Optionally-blockable Content
case CachedResource::Type::ImageResource:
case CachedResource::Type::MediaResource:
- return MixedContentChecker::ContentType::ActiveCanWarn;
+#if ENABLE(MODEL_ELEMENT)
+ case CachedResource::Type::ModelResource:
+#endif
+ return MixedContentChecker::ContentType::ActiveCanWarn;
case CachedResource::Type::CSSStyleSheet:
case CachedResource::Type::Script:
@@ -426,6 +448,9 @@
#if ENABLE(VIDEO)
case CachedResource::Type::TextTrackResource:
#endif
+#if ENABLE(MODEL_ELEMENT)
+ case CachedResource::Type::ModelResource:
+#endif
case CachedResource::Type::MediaResource:
case CachedResource::Type::RawResource:
case CachedResource::Type::Icon:
@@ -496,6 +521,9 @@
case CachedResource::Type::Beacon:
case CachedResource::Type::Ping:
case CachedResource::Type::RawResource:
+#if ENABLE(MODEL_ELEMENT)
+ case CachedResource::Type::ModelResource:
+#endif
return true;
#if ENABLE(APPLICATION_MANIFEST)
case CachedResource::Type::ApplicationManifest:
@@ -793,6 +821,9 @@
case CachedResource::Type::LinkPrefetch:
case CachedResource::Type::RawResource:
case CachedResource::Type::MediaResource:
+#if ENABLE(MODEL_ELEMENT)
+ case CachedResource::Type::ModelResource:
+#endif
// The caller is responsible for setting the appropriate destination.
return FetchOptions::Destination::EmptyString;
}
Modified: trunk/Source/WebCore/platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm (272312 => 272313)
--- trunk/Source/WebCore/platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm 2021-02-03 15:08:38 UTC (rev 272313)
@@ -72,7 +72,7 @@
{
// FIXME: Skip Content Security Policy check if the element that inititated this request
// is in a user-agent shadow tree. See <https://bugs.webkit.org/show_bug.cgi?id=173498>.
- CachedResourceRequest request(WTFMove(resourceRequest), ResourceLoaderOptions(
+ ResourceLoaderOptions loaderOptions(
SendCallbackPolicy::SendCallbacks,
ContentSniffingPolicy::DoNotSniffContent,
DataBufferingPolicy::BufferData,
@@ -84,7 +84,10 @@
CertificateInfoPolicy::DoNotIncludeCertificateInfo,
ContentSecurityPolicyImposition::DoPolicyCheck,
DefersLoadingPolicy::AllowDefersLoading,
- CachingPolicy::DisallowCaching));
+ CachingPolicy::DisallowCaching
+ );
+ loaderOptions.destination = FetchOptions::Destination::Video;
+ CachedResourceRequest request(WTFMove(resourceRequest), loaderOptions);
auto resource = loader.requestMedia(WTFMove(request)).value_or(nullptr);
if (!resource)
Modified: trunk/Source/WebCore/platform/network/ResourceRequestBase.h (272312 => 272313)
--- trunk/Source/WebCore/platform/network/ResourceRequestBase.h 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebCore/platform/network/ResourceRequestBase.h 2021-02-03 15:08:38 UTC (rev 272313)
@@ -165,7 +165,7 @@
bool hiddenFromInspector() const { return m_hiddenFromInspector; }
void setHiddenFromInspector(bool hiddenFromInspector) { m_hiddenFromInspector = hiddenFromInspector; }
- enum class Requester : uint8_t { Unspecified, Main, XHR, Fetch, Media, ImportScripts, Ping, Beacon };
+ enum class Requester : uint8_t { Unspecified, Main, XHR, Fetch, Media, Model, ImportScripts, Ping, Beacon };
Requester requester() const { return m_requester; }
void setRequester(Requester requester) { m_requester = requester; }
Modified: trunk/Source/WebKit/ChangeLog (272312 => 272313)
--- trunk/Source/WebKit/ChangeLog 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebKit/ChangeLog 2021-02-03 15:08:38 UTC (rev 272313)
@@ -1,3 +1,17 @@
+2021-02-03 Antoine Quint <[email protected]>
+
+ Add a loader for <model> resources
+ https://bugs.webkit.org/show_bug.cgi?id=221255
+
+ Reviewed by Youenn Fablet.
+
+ * NetworkProcess/NetworkLoadChecker.cpp:
+ (WebKit::NetworkLoadChecker::isAllowedByContentSecurityPolicy):
+ * NetworkProcess/NetworkResourceLoader.cpp:
+ (WebKit::NetworkResourceLoader::resourceLoadInfo):
+ * WebProcess/Network/WebLoaderStrategy.cpp:
+ (WebKit::maximumBufferingTime):
+
2021-02-03 Kimmo Kinnunen <[email protected]>
MachSemaphore does not work well with IPC messages
Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp (272312 => 272313)
--- trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp 2021-02-03 15:08:38 UTC (rev 272313)
@@ -327,6 +327,7 @@
case FetchOptions::Destination::Font:
case FetchOptions::Destination::Image:
case FetchOptions::Destination::Manifest:
+ case FetchOptions::Destination::Model:
case FetchOptions::Destination::Object:
case FetchOptions::Destination::Report:
case FetchOptions::Destination::Style:
Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp (272312 => 272313)
--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp 2021-02-03 15:08:38 UTC (rev 272313)
@@ -392,6 +392,10 @@
return ResourceLoadInfo::Type::Image;
case WebCore::FetchOptions::Destination::Manifest:
return ResourceLoadInfo::Type::ApplicationManifest;
+#if ENABLE(MODEL_ELEMENT)
+ case WebCore::FetchOptions::Destination::Model:
+ return ResourceLoadInfo::Type::Media;
+#endif
case WebCore::FetchOptions::Destination::Object:
return ResourceLoadInfo::Type::Object;
case WebCore::FetchOptions::Destination::Paintworklet:
Modified: trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp (272312 => 272313)
--- trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp 2021-02-03 15:08:38 UTC (rev 272313)
@@ -140,6 +140,9 @@
#if ENABLE(APPLICATION_MANIFEST)
case CachedResource::Type::ApplicationManifest:
#endif
+#if ENABLE(MODEL_ELEMENT)
+ case CachedResource::Type::ModelResource:
+#endif
return Seconds::infinity();
case CachedResource::Type::ImageResource:
return 500_ms;
Modified: trunk/Tools/ChangeLog (272312 => 272313)
--- trunk/Tools/ChangeLog 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Tools/ChangeLog 2021-02-03 15:08:38 UTC (rev 272313)
@@ -1,3 +1,13 @@
+2021-02-03 Antoine Quint <[email protected]>
+
+ Add a loader for <model> resources
+ https://bugs.webkit.org/show_bug.cgi?id=221255
+
+ Reviewed by Youenn Fablet.
+
+ * TestWebKitAPI/Tests/WebCore/cocoa/WebCoreNSURLSession.mm:
+ (TestWebKitAPI::WebCoreNSURLSessionTest::SetUp):
+
2021-02-03 Ryan Haddad <[email protected]>
Big Sur test262 queues failing download-built-product step
Modified: trunk/Tools/TestWebKitAPI/Tests/WebCore/cocoa/WebCoreNSURLSession.mm (272312 => 272313)
--- trunk/Tools/TestWebKitAPI/Tests/WebCore/cocoa/WebCoreNSURLSession.mm 2021-02-03 14:40:46 UTC (rev 272312)
+++ trunk/Tools/TestWebKitAPI/Tests/WebCore/cocoa/WebCoreNSURLSession.mm 2021-02-03 15:08:38 UTC (rev 272313)
@@ -126,7 +126,7 @@
delegate = [[TestNSURLSessionDataDelegate alloc] init];
frame = [view _mainCoreFrame];
mediaElement = HTMLVideoElement::create(*frame->document());
- loader = adoptRef(new MediaResourceLoader(*frame->document(), *mediaElement.get(), emptyString()));
+ loader = adoptRef(new MediaResourceLoader(*frame->document(), *mediaElement.get(), emptyString(), FetchOptions::Destination::Video));
}
virtual void TearDown()