WebKit Bugzilla
Attachment 361448 Details for
Bug 194315
: Stop using setDefersLoading from WebCore
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-194315-20190207143827.patch (text/plain), 14.73 KB, created by
Alex Christensen
on 2019-02-07 14:38:28 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Alex Christensen
Created:
2019-02-07 14:38:28 PST
Size:
14.73 KB
patch
obsolete
>Index: Source/WebCore/ChangeLog >=================================================================== >--- Source/WebCore/ChangeLog (revision 241040) >+++ Source/WebCore/ChangeLog (working copy) >@@ -1,3 +1,26 @@ >+2019-02-07 Alex Christensen <achristensen@webkit.org> >+ >+ Stop using setDefersLoading from WebCore >+ https://bugs.webkit.org/show_bug.cgi?id=194315 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ That is what CompletionHandlers are for. >+ >+ * loader/MediaResourceLoader.cpp: >+ (WebCore::MediaResource::responseReceived): >+ (WebCore::MediaResource::setDefersLoading): Deleted. >+ * loader/MediaResourceLoader.h: >+ * platform/graphics/PlatformMediaResourceLoader.h: >+ (WebCore::PlatformMediaResourceClient::responseReceived): >+ (WebCore::PlatformMediaResource::stop): >+ (WebCore::PlatformMediaResource::setDefersLoading): Deleted. >+ * platform/network/cocoa/WebCoreNSURLSession.mm: >+ (WebCore::WebCoreNSURLSessionDataTaskClient::responseReceived): >+ (-[WebCoreNSURLSessionDataTask resource:receivedResponse:completionHandler:]): >+ (-[WebCoreNSURLSessionDataTask _setDefersLoading:]): Deleted. >+ (-[WebCoreNSURLSessionDataTask resource:receivedResponse:]): Deleted. >+ > 2019-02-06 Alex Christensen <achristensen@webkit.org> > > Fix WatchOS build >Index: Source/WebCore/loader/MediaResourceLoader.cpp >=================================================================== >--- Source/WebCore/loader/MediaResourceLoader.cpp (revision 241028) >+++ Source/WebCore/loader/MediaResourceLoader.cpp (working copy) >@@ -151,12 +151,6 @@ void MediaResource::stop() > m_resource = nullptr; > } > >-void MediaResource::setDefersLoading(bool defersLoading) >-{ >- if (m_resource) >- m_resource->setDefersLoading(defersLoading); >-} >- > void MediaResource::responseReceived(CachedResource& resource, const ResourceResponse& response, CompletionHandler<void()>&& completionHandler) > { > ASSERT_UNUSED(resource, &resource == m_resource); >@@ -178,7 +172,12 @@ void MediaResource::responseReceived(Cac > > m_didPassAccessControlCheck = m_resource->options().mode == FetchOptions::Mode::Cors; > if (m_client) >- m_client->responseReceived(*this, response); >+ m_client->responseReceived(*this, response, [this, protectedThis = makeRef(*this), completionHandler = completionHandlerCaller.release()] (ShouldContinue shouldContinue) mutable { >+ if (completionHandler) >+ completionHandler(); >+ if (shouldContinue == ShouldContinue::No) >+ stop(); >+ }); > > m_loader->addResponseForTesting(response); > } >Index: Source/WebCore/loader/MediaResourceLoader.h >=================================================================== >--- Source/WebCore/loader/MediaResourceLoader.h (revision 241028) >+++ Source/WebCore/loader/MediaResourceLoader.h (working copy) >@@ -75,7 +75,6 @@ public: > > // PlatformMediaResource > void stop() override; >- void setDefersLoading(bool) override; > bool didPassAccessControlCheck() const override { return m_didPassAccessControlCheck; } > > // CachedRawResourceClient >Index: Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h >=================================================================== >--- Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h (revision 241028) >+++ Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h (working copy) >@@ -27,6 +27,7 @@ > > #if ENABLE(VIDEO) > >+#include "PolicyChecker.h" > #include <wtf/CompletionHandler.h> > #include <wtf/Noncopyable.h> > #include <wtf/RefCounted.h> >@@ -43,7 +44,7 @@ class PlatformMediaResourceClient { > public: > virtual ~PlatformMediaResourceClient() = default; > >- virtual void responseReceived(PlatformMediaResource&, const ResourceResponse&) { } >+ virtual void responseReceived(PlatformMediaResource&, const ResourceResponse&, CompletionHandler<void(ShouldContinue)>&& completionHandler) { completionHandler(ShouldContinue::Yes); } > virtual void redirectReceived(PlatformMediaResource&, ResourceRequest&& request, const ResourceResponse&, CompletionHandler<void(ResourceRequest&&)>&& completionHandler) { completionHandler(WTFMove(request)); } > virtual bool shouldCacheResponse(PlatformMediaResource&, const ResourceResponse&) { return true; } > virtual void dataSent(PlatformMediaResource&, unsigned long long, unsigned long long) { } >@@ -76,7 +77,6 @@ public: > PlatformMediaResource() = default; > virtual ~PlatformMediaResource() = default; > virtual void stop() { } >- virtual void setDefersLoading(bool) { } > virtual bool didPassAccessControlCheck() const { return false; } > > void setClient(std::unique_ptr<PlatformMediaResourceClient>&& client) { m_client = WTFMove(client); } >Index: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp >=================================================================== >--- Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp (revision 241028) >+++ Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp (working copy) >@@ -50,7 +50,7 @@ private: > void checkUpdateBlocksize(uint64_t bytesRead); > > // PlatformMediaResourceClient virtual methods. >- void responseReceived(PlatformMediaResource&, const ResourceResponse&) override; >+ void responseReceived(PlatformMediaResource&, const ResourceResponse&, CompletionHandler<void(ShouldContinue)>&&) override; > void dataReceived(PlatformMediaResource&, const char*, int) override; > void accessControlCheckFailed(PlatformMediaResource&, const ResourceError&) override; > void loadFailed(PlatformMediaResource&, const ResourceError&) override; >@@ -683,11 +683,7 @@ static void webKitWebSrcNeedData(WebKitW > priv->paused = false; > > GRefPtr<WebKitWebSrc> protector = WTF::ensureGRef(src); >- priv->notifier->notify(MainThreadSourceNotification::NeedData, [protector] { >- WebKitWebSrcPrivate* priv = protector->priv; >- if (priv->resource) >- priv->resource->setDefersLoading(false); >- }); >+ priv->notifier->notify(MainThreadSourceNotification::NeedData, [protector] { }); > } > > static void webKitWebSrcEnoughData(WebKitWebSrc* src) >@@ -704,7 +700,7 @@ static void webKitWebSrcEnoughData(WebKi > priv->notifier->notify(MainThreadSourceNotification::EnoughData, [protector] { > WebKitWebSrcPrivate* priv = protector->priv; > if (priv->resource) >- priv->resource->setDefersLoading(true); >+ priv->resource->stop(); > }); > } > >@@ -785,7 +781,7 @@ void CachedResourceStreamingClient::chec > } > } > >-void CachedResourceStreamingClient::responseReceived(PlatformMediaResource&, const ResourceResponse& response) >+void CachedResourceStreamingClient::responseReceived(PlatformMediaResource&, const ResourceResponse& response, CompletionHandler<void(ShouldContinue)>&& completionHandler) > { > WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src.get()); > WebKitWebSrcPrivate* priv = src->priv; >@@ -804,12 +800,12 @@ void CachedResourceStreamingClient::resp > GST_ELEMENT_ERROR(src, RESOURCE, READ, ("Received %d HTTP error code", response.httpStatusCode()), (nullptr)); > gst_app_src_end_of_stream(priv->appsrc); > webKitWebSrcStop(src); >- return; >+ return completionHandler(ShouldContinue::No); > } > > if (priv->isSeeking) { > GST_DEBUG_OBJECT(src, "Seek in progress, ignoring response"); >- return; >+ return completionHandler(ShouldContinue::Yes); > } > > if (priv->requestedOffset) { >@@ -822,7 +818,7 @@ void CachedResourceStreamingClient::resp > GST_ELEMENT_ERROR(src, RESOURCE, READ, ("Received unexpected %d HTTP status code", response.httpStatusCode()), (nullptr)); > gst_app_src_end_of_stream(priv->appsrc); > webKitWebSrcStop(src); >- return; >+ return completionHandler(ShouldContinue::No); > } > } > >@@ -886,6 +882,8 @@ void CachedResourceStreamingClient::resp > gst_element_post_message(GST_ELEMENT_CAST(src), gst_message_new_element(GST_OBJECT_CAST(src), > gst_structure_copy(httpHeaders))); > gst_pad_push_event(GST_BASE_SRC_PAD(priv->appsrc), gst_event_new_custom(GST_EVENT_CUSTOM_DOWNSTREAM_STICKY, httpHeaders)); >+ >+ completionHandler(ShouldContinue::Yes); > } > > void CachedResourceStreamingClient::dataReceived(PlatformMediaResource&, const char* data, int length) >Index: Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm >=================================================================== >--- Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm (revision 241028) >+++ Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm (working copy) >@@ -53,11 +53,10 @@ - (id)initWithSession:(WebCoreNSURLSessi > - (void)_restart; > - (void)_cancel; > - (void)_finish; >-- (void)_setDefersLoading:(BOOL)defers; > @property (assign) WebCoreNSURLSession * _Nullable session; > > - (void)resource:(PlatformMediaResource&)resource sentBytes:(unsigned long long)bytesSent totalBytesToBeSent:(unsigned long long)totalBytesToBeSent; >-- (void)resource:(PlatformMediaResource&)resource receivedResponse:(const ResourceResponse&)response; >+- (void)resource:(PlatformMediaResource&)resource receivedResponse:(const ResourceResponse&)response completionHandler:(CompletionHandler<void(ShouldContinue)>&&)completionHandler; > - (BOOL)resource:(PlatformMediaResource&)resource shouldCacheResponse:(const ResourceResponse&)response; > - (void)resource:(PlatformMediaResource&)resource receivedData:(const char*)data length:(int)length; > - (void)resource:(PlatformMediaResource&)resource receivedRedirect:(const ResourceResponse&)response request:(ResourceRequest&&)request completionHandler:(CompletionHandler<void(ResourceRequest&&)>&&)completionHandler; >@@ -381,7 +380,7 @@ public: > > void clearTask(); > >- void responseReceived(PlatformMediaResource&, const ResourceResponse&) override; >+ void responseReceived(PlatformMediaResource&, const ResourceResponse&, CompletionHandler<void(ShouldContinue)>&&) override; > void redirectReceived(PlatformMediaResource&, ResourceRequest&&, const ResourceResponse&, CompletionHandler<void(ResourceRequest&&)>&&) override; > bool shouldCacheResponse(PlatformMediaResource&, const ResourceResponse&) override; > void dataSent(PlatformMediaResource&, unsigned long long, unsigned long long) override; >@@ -410,13 +409,13 @@ void WebCoreNSURLSessionDataTaskClient:: > [m_task resource:resource sentBytes:bytesSent totalBytesToBeSent:totalBytesToBeSent]; > } > >-void WebCoreNSURLSessionDataTaskClient::responseReceived(PlatformMediaResource& resource, const ResourceResponse& response) >+void WebCoreNSURLSessionDataTaskClient::responseReceived(PlatformMediaResource& resource, const ResourceResponse& response, CompletionHandler<void(ShouldContinue)>&& completionHandler) > { > LockHolder locker(m_taskLock); > if (!m_task) > return; > >- [m_task resource:resource receivedResponse:response]; >+ [m_task resource:resource receivedResponse:response completionHandler:WTFMove(completionHandler)]; > } > > bool WebCoreNSURLSessionDataTaskClient::shouldCacheResponse(PlatformMediaResource& resource, const ResourceResponse& response) >@@ -543,13 +542,6 @@ - (void)_finish > [self resourceFinished:*_resource]; > } > >-- (void)_setDefersLoading:(BOOL)defers >-{ >- ASSERT(isMainThread()); >- if (_resource) >- _resource->setDefersLoading(defers); >-} >- > #pragma mark - NSURLSession API > @synthesize session=_session; > @synthesize taskIdentifier=_taskIdentifier; >@@ -634,7 +626,7 @@ - (void)resource:(PlatformMediaResource& > // No-op. > } > >-- (void)resource:(PlatformMediaResource&)resource receivedResponse:(const ResourceResponse&)response >+- (void)resource:(PlatformMediaResource&)resource receivedResponse:(const ResourceResponse&)response completionHandler:(CompletionHandler<void(ShouldContinue)>&&)completionHandler > { > ASSERT(response.source() == ResourceResponse::Source::Network || response.source() == ResourceResponse::Source::DiskCache || response.source() == ResourceResponse::Source::DiskCacheAfterValidation || response.source() == ResourceResponse::Source::ServiceWorker); > ASSERT_UNUSED(resource, &resource == _resource); >@@ -642,31 +634,29 @@ - (void)resource:(PlatformMediaResource& > [self.session task:self didReceiveResponseFromOrigin:SecurityOrigin::create(response.url())]; > [self.session task:self didReceiveCORSAccessCheckResult:resource.didPassAccessControlCheck()]; > self.countOfBytesExpectedToReceive = response.expectedContentLength(); >- [self _setDefersLoading:YES]; > RetainPtr<NSURLResponse> strongResponse { response.nsURLResponse() }; > RetainPtr<WebCoreNSURLSessionDataTask> strongSelf { self }; >- [self.session addDelegateOperation:[strongSelf, strongResponse] { >+ [self.session addDelegateOperation:[strongSelf, strongResponse, completionHandler = WTFMove(completionHandler)] () mutable { > strongSelf->_response = strongResponse.get(); > > id<NSURLSessionDataDelegate> dataDelegate = (id<NSURLSessionDataDelegate>)strongSelf.get().session.delegate; > if (![dataDelegate respondsToSelector:@selector(URLSession:dataTask:didReceiveResponse:completionHandler:)]) { >- callOnMainThread([strongSelf] { >- [strongSelf _setDefersLoading:NO]; >+ callOnMainThread([strongSelf, completionHandler = WTFMove(completionHandler)] () mutable { >+ completionHandler(ShouldContinue::Yes); > }); > return; > } > >- [dataDelegate URLSession:(NSURLSession *)strongSelf.get().session dataTask:(NSURLSessionDataTask *)strongSelf.get() didReceiveResponse:strongResponse.get() completionHandler:[strongSelf] (NSURLSessionResponseDisposition disposition) { >- if (disposition == NSURLSessionResponseCancel) >- [strongSelf cancel]; >- else if (disposition == NSURLSessionResponseAllow) >- [strongSelf resume]; >- else >- ASSERT_NOT_REACHED(); >- callOnMainThread([strongSelf] { >- [strongSelf _setDefersLoading:NO]; >+ [dataDelegate URLSession:(NSURLSession *)strongSelf.get().session dataTask:(NSURLSessionDataTask *)strongSelf.get() didReceiveResponse:strongResponse.get() completionHandler:makeBlockPtr([strongSelf, completionHandler = WTFMove(completionHandler)] (NSURLSessionResponseDisposition disposition) mutable { >+ callOnMainThread([strongSelf, disposition, completionHandler = WTFMove(completionHandler)] () mutable { >+ if (disposition == NSURLSessionResponseCancel) >+ completionHandler(ShouldContinue::No); >+ else { >+ ASSERT(disposition == NSURLSessionResponseAllow); >+ completionHandler(ShouldContinue::Yes); >+ } > }); >- }]; >+ }).get()]; > }]; > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 194315
:
361243
|
361246
|
361258
|
361263
|
361272
|
361280
|
361448
|
361466
|
361510