WebKit Bugzilla
Attachment 361246 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-20190205164437.patch (text/plain), 11.35 KB, created by
Alex Christensen
on 2019-02-05 16:44:38 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Alex Christensen
Created:
2019-02-05 16:44:38 PST
Size:
11.35 KB
patch
obsolete
>Index: Source/WebCore/ChangeLog >=================================================================== >--- Source/WebCore/ChangeLog (revision 241000) >+++ Source/WebCore/ChangeLog (working copy) >@@ -1,3 +1,26 @@ >+2019-02-05 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-05 Keith Rollin <krollin@apple.com> > > Enable the automatic checking and regenerations of .xcfilelists during builds >Index: Source/WebCore/loader/MediaResourceLoader.cpp >=================================================================== >--- Source/WebCore/loader/MediaResourceLoader.cpp (revision 240983) >+++ Source/WebCore/loader/MediaResourceLoader.cpp (working copy) >@@ -151,19 +151,12 @@ 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); >- CompletionHandlerCallingScope completionHandlerCaller(WTFMove(completionHandler)); > > if (!m_loader->document()) >- return; >+ return completionHandler(); > > RefPtr<MediaResource> protectedThis(this); > if (m_resource->resourceError().isAccessControl()) { >@@ -173,12 +166,16 @@ void MediaResource::responseReceived(Cac > if (m_client) > m_client->accessControlCheckFailed(*this, ResourceError(errorDomainWebKitInternal, 0, response.url(), consoleMessage.get())); > stop(); >- return; >+ return completionHandler(); > } > > 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 = WTFMove(completionHandler)] (ShouldContinue shouldContinue) mutable { >+ completionHandler(); >+ if (shouldContinue == ShouldContinue::No) >+ stop(); >+ }); > > m_loader->addResponseForTesting(response); > } >Index: Source/WebCore/loader/MediaResourceLoader.h >=================================================================== >--- Source/WebCore/loader/MediaResourceLoader.h (revision 240983) >+++ 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 240983) >+++ Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h (working copy) >@@ -27,6 +27,7 @@ > > #if ENABLE(VIDEO) > >+#include <WebCore/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/network/cocoa/WebCoreNSURLSession.mm >=================================================================== >--- Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm (revision 240983) >+++ 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,25 @@ - (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]; >- }); >+ completionHandler(ShouldContinue::Yes); > return; > } > >- [dataDelegate URLSession:(NSURLSession *)strongSelf.get().session dataTask:(NSURLSessionDataTask *)strongSelf.get() didReceiveResponse:strongResponse.get() completionHandler:[strongSelf] (NSURLSessionResponseDisposition disposition) { >+ [dataDelegate URLSession:(NSURLSession *)strongSelf.get().session dataTask:(NSURLSessionDataTask *)strongSelf.get() didReceiveResponse:strongResponse.get() completionHandler:makeBlockPtr([strongSelf, completionHandler = WTFMove(completionHandler)] (NSURLSessionResponseDisposition disposition) mutable { > if (disposition == NSURLSessionResponseCancel) >- [strongSelf cancel]; >- else if (disposition == NSURLSessionResponseAllow) >- [strongSelf resume]; >- else >- ASSERT_NOT_REACHED(); >- callOnMainThread([strongSelf] { >- [strongSelf _setDefersLoading:NO]; >- }); >- }]; >+ 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