Changeset 241273 in webkit
- Timestamp:
- Feb 11, 2019, 11:02:49 AM (6 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/Source/WebCore/ChangeLog ¶
r241272 r241273 1 2019-02-11 Alex Christensen <achristensen@webkit.org> 2 3 Stop using setDefersLoading from WebCore 4 https://bugs.webkit.org/show_bug.cgi?id=194315 5 6 Reviewed by Jer Noble. 7 8 That is what CompletionHandlers are for. 9 10 * loader/MediaResourceLoader.cpp: 11 (WebCore::MediaResource::responseReceived): 12 (WebCore::MediaResource::setDefersLoading): Deleted. 13 * loader/MediaResourceLoader.h: 14 * platform/graphics/PlatformMediaResourceLoader.h: 15 (WebCore::PlatformMediaResourceClient::responseReceived): 16 (WebCore::PlatformMediaResource::stop): 17 (WebCore::PlatformMediaResource::setDefersLoading): Deleted. 18 * platform/network/cocoa/WebCoreNSURLSession.mm: 19 (WebCore::WebCoreNSURLSessionDataTaskClient::responseReceived): 20 (-[WebCoreNSURLSessionDataTask resource:receivedResponse:completionHandler:]): 21 (-[WebCoreNSURLSessionDataTask _setDefersLoading:]): Deleted. 22 (-[WebCoreNSURLSessionDataTask resource:receivedResponse:]): Deleted. 23 1 24 2019-02-11 Daniel Bates <dabates@apple.com> 2 25 -
TabularUnified trunk/Source/WebCore/loader/MediaResourceLoader.cpp ¶
r236927 r241273 152 152 } 153 153 154 void MediaResource::setDefersLoading(bool defersLoading)155 {156 if (m_resource)157 m_resource->setDefersLoading(defersLoading);158 }159 160 154 void MediaResource::responseReceived(CachedResource& resource, const ResourceResponse& response, CompletionHandler<void()>&& completionHandler) 161 155 { … … 179 173 m_didPassAccessControlCheck = m_resource->options().mode == FetchOptions::Mode::Cors; 180 174 if (m_client) 181 m_client->responseReceived(*this, response); 175 m_client->responseReceived(*this, response, [this, protectedThis = makeRef(*this), completionHandler = completionHandlerCaller.release()] (ShouldContinue shouldContinue) mutable { 176 if (completionHandler) 177 completionHandler(); 178 if (shouldContinue == ShouldContinue::No) 179 stop(); 180 }); 182 181 183 182 m_loader->addResponseForTesting(response); -
TabularUnified trunk/Source/WebCore/loader/MediaResourceLoader.h ¶
r232613 r241273 76 76 // PlatformMediaResource 77 77 void stop() override; 78 void setDefersLoading(bool) override;79 78 bool didPassAccessControlCheck() const override { return m_didPassAccessControlCheck; } 80 79 -
TabularUnified trunk/Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h ¶
r228903 r241273 28 28 #if ENABLE(VIDEO) 29 29 30 #include "PolicyChecker.h" 30 31 #include <wtf/CompletionHandler.h> 31 32 #include <wtf/Noncopyable.h> … … 44 45 virtual ~PlatformMediaResourceClient() = default; 45 46 46 virtual void responseReceived(PlatformMediaResource&, const ResourceResponse& ) {}47 virtual void responseReceived(PlatformMediaResource&, const ResourceResponse&, CompletionHandler<void(ShouldContinue)>&& completionHandler) { completionHandler(ShouldContinue::Yes); } 47 48 virtual void redirectReceived(PlatformMediaResource&, ResourceRequest&& request, const ResourceResponse&, CompletionHandler<void(ResourceRequest&&)>&& completionHandler) { completionHandler(WTFMove(request)); } 48 49 virtual bool shouldCacheResponse(PlatformMediaResource&, const ResourceResponse&) { return true; } … … 77 78 virtual ~PlatformMediaResource() = default; 78 79 virtual void stop() { } 79 virtual void setDefersLoading(bool) { }80 80 virtual bool didPassAccessControlCheck() const { return false; } 81 81 -
TabularUnified trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp ¶
r236961 r241273 51 51 52 52 // PlatformMediaResourceClient virtual methods. 53 void responseReceived(PlatformMediaResource&, const ResourceResponse& ) override;53 void responseReceived(PlatformMediaResource&, const ResourceResponse&, CompletionHandler<void(ShouldContinue)>&&) override; 54 54 void dataReceived(PlatformMediaResource&, const char*, int) override; 55 55 void accessControlCheckFailed(PlatformMediaResource&, const ResourceError&) override; … … 684 684 685 685 GRefPtr<WebKitWebSrc> protector = WTF::ensureGRef(src); 686 priv->notifier->notify(MainThreadSourceNotification::NeedData, [protector] { 687 WebKitWebSrcPrivate* priv = protector->priv; 688 if (priv->resource) 689 priv->resource->setDefersLoading(false); 690 }); 686 priv->notifier->notify(MainThreadSourceNotification::NeedData, [protector] { }); 691 687 } 692 688 … … 705 701 WebKitWebSrcPrivate* priv = protector->priv; 706 702 if (priv->resource) 707 priv->resource->s etDefersLoading(true);703 priv->resource->stop(); 708 704 }); 709 705 } … … 786 782 } 787 783 788 void CachedResourceStreamingClient::responseReceived(PlatformMediaResource&, const ResourceResponse& response )784 void CachedResourceStreamingClient::responseReceived(PlatformMediaResource&, const ResourceResponse& response, CompletionHandler<void(ShouldContinue)>&& completionHandler) 789 785 { 790 786 WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src.get()); … … 805 801 gst_app_src_end_of_stream(priv->appsrc); 806 802 webKitWebSrcStop(src); 807 return ;803 return completionHandler(ShouldContinue::No); 808 804 } 809 805 810 806 if (priv->isSeeking) { 811 807 GST_DEBUG_OBJECT(src, "Seek in progress, ignoring response"); 812 return ;808 return completionHandler(ShouldContinue::Yes); 813 809 } 814 810 … … 823 819 gst_app_src_end_of_stream(priv->appsrc); 824 820 webKitWebSrcStop(src); 825 return ;821 return completionHandler(ShouldContinue::No); 826 822 } 827 823 } … … 887 883 gst_structure_copy(httpHeaders))); 888 884 gst_pad_push_event(GST_BASE_SRC_PAD(priv->appsrc), gst_event_new_custom(GST_EVENT_CUSTOM_DOWNSTREAM_STICKY, httpHeaders)); 885 886 completionHandler(ShouldContinue::Yes); 889 887 } 890 888 -
TabularUnified trunk/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm ¶
r241183 r241273 54 54 - (void)_cancel; 55 55 - (void)_finish; 56 - (void)_setDefersLoading:(BOOL)defers;57 56 @property (assign) WebCoreNSURLSession * _Nullable session; 58 57 59 58 - (void)resource:(PlatformMediaResource&)resource sentBytes:(unsigned long long)bytesSent totalBytesToBeSent:(unsigned long long)totalBytesToBeSent; 60 - (void)resource:(PlatformMediaResource&)resource receivedResponse:(const ResourceResponse&)response ;59 - (void)resource:(PlatformMediaResource&)resource receivedResponse:(const ResourceResponse&)response completionHandler:(CompletionHandler<void(ShouldContinue)>&&)completionHandler; 61 60 - (BOOL)resource:(PlatformMediaResource&)resource shouldCacheResponse:(const ResourceResponse&)response; 62 61 - (void)resource:(PlatformMediaResource&)resource receivedData:(const char*)data length:(int)length; … … 383 382 void clearTask(); 384 383 385 void responseReceived(PlatformMediaResource&, const ResourceResponse& ) override;384 void responseReceived(PlatformMediaResource&, const ResourceResponse&, CompletionHandler<void(ShouldContinue)>&&) override; 386 385 void redirectReceived(PlatformMediaResource&, ResourceRequest&&, const ResourceResponse&, CompletionHandler<void(ResourceRequest&&)>&&) override; 387 386 bool shouldCacheResponse(PlatformMediaResource&, const ResourceResponse&) override; … … 412 411 } 413 412 414 void WebCoreNSURLSessionDataTaskClient::responseReceived(PlatformMediaResource& resource, const ResourceResponse& response )413 void WebCoreNSURLSessionDataTaskClient::responseReceived(PlatformMediaResource& resource, const ResourceResponse& response, CompletionHandler<void(ShouldContinue)>&& completionHandler) 415 414 { 416 415 LockHolder locker(m_taskLock); 417 416 if (!m_task) 418 return ;419 420 [m_task resource:resource receivedResponse:response ];417 return completionHandler(ShouldContinue::No); 418 419 [m_task resource:resource receivedResponse:response completionHandler:WTFMove(completionHandler)]; 421 420 } 422 421 … … 543 542 if (_resource) 544 543 [self resourceFinished:*_resource]; 545 }546 547 - (void)_setDefersLoading:(BOOL)defers548 {549 ASSERT(isMainThread());550 if (_resource)551 _resource->setDefersLoading(defers);552 544 } 553 545 … … 636 628 } 637 629 638 - (void)resource:(PlatformMediaResource&)resource receivedResponse:(const ResourceResponse&)response 630 - (void)resource:(PlatformMediaResource&)resource receivedResponse:(const ResourceResponse&)response completionHandler:(CompletionHandler<void(ShouldContinue)>&&)completionHandler 639 631 { 640 632 ASSERT(response.source() == ResourceResponse::Source::Network || response.source() == ResourceResponse::Source::DiskCache || response.source() == ResourceResponse::Source::DiskCacheAfterValidation || response.source() == ResourceResponse::Source::ServiceWorker); … … 644 636 [self.session task:self didReceiveCORSAccessCheckResult:resource.didPassAccessControlCheck()]; 645 637 self.countOfBytesExpectedToReceive = response.expectedContentLength(); 646 [self _setDefersLoading:YES];647 638 RetainPtr<NSURLResponse> strongResponse { response.nsURLResponse() }; 648 639 RetainPtr<WebCoreNSURLSessionDataTask> strongSelf { self }; 649 [self.session addDelegateOperation:[strongSelf, strongResponse ]{640 [self.session addDelegateOperation:[strongSelf, strongResponse, completionHandler = WTFMove(completionHandler)] () mutable { 650 641 strongSelf->_response = strongResponse.get(); 651 642 652 643 id<NSURLSessionDataDelegate> dataDelegate = (id<NSURLSessionDataDelegate>)strongSelf.get().session.delegate; 653 644 if (![dataDelegate respondsToSelector:@selector(URLSession:dataTask:didReceiveResponse:completionHandler:)]) { 654 callOnMainThread([strongSelf ]{655 [strongSelf _setDefersLoading:NO];645 callOnMainThread([strongSelf, completionHandler = WTFMove(completionHandler)] () mutable { 646 completionHandler(ShouldContinue::Yes); 656 647 }); 657 648 return; 658 649 } 659 650 660 [dataDelegate URLSession:(NSURLSession *)strongSelf.get().session dataTask:(NSURLSessionDataTask *)strongSelf.get() didReceiveResponse:strongResponse.get() completionHandler:[strongSelf] (NSURLSessionResponseDisposition disposition) { 661 if (disposition == NSURLSessionResponseCancel) 662 [strongSelf cancel]; 663 else if (disposition == NSURLSessionResponseAllow) 664 [strongSelf resume]; 665 else 666 ASSERT_NOT_REACHED(); 667 callOnMainThread([strongSelf] { 668 [strongSelf _setDefersLoading:NO]; 651 [dataDelegate URLSession:(NSURLSession *)strongSelf.get().session dataTask:(NSURLSessionDataTask *)strongSelf.get() didReceiveResponse:strongResponse.get() completionHandler:makeBlockPtr([strongSelf, completionHandler = WTFMove(completionHandler)] (NSURLSessionResponseDisposition disposition) mutable { 652 callOnMainThread([strongSelf, disposition, completionHandler = WTFMove(completionHandler)] () mutable { 653 if (disposition == NSURLSessionResponseCancel) 654 completionHandler(ShouldContinue::No); 655 else { 656 ASSERT(disposition == NSURLSessionResponseAllow); 657 completionHandler(ShouldContinue::Yes); 658 } 669 659 }); 670 } ];660 }).get()]; 671 661 }]; 672 662 }
Note:
See TracChangeset
for help on using the changeset viewer.