Changeset 241273 in webkit


Ignore:
Timestamp:
Feb 11, 2019, 11:02:49 AM (6 years ago)
Author:
achristensen@apple.com
Message:

Stop using setDefersLoading from WebCore
https://bugs.webkit.org/show_bug.cgi?id=194315

Reviewed by Jer Noble.

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.

Location:
trunk/Source/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/Source/WebCore/ChangeLog

    r241272 r241273  
     12019-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
    1242019-02-11  Daniel Bates  <dabates@apple.com>
    225
  • TabularUnified trunk/Source/WebCore/loader/MediaResourceLoader.cpp

    r236927 r241273  
    152152}
    153153
    154 void MediaResource::setDefersLoading(bool defersLoading)
    155 {
    156     if (m_resource)
    157         m_resource->setDefersLoading(defersLoading);
    158 }
    159 
    160154void MediaResource::responseReceived(CachedResource& resource, const ResourceResponse& response, CompletionHandler<void()>&& completionHandler)
    161155{
     
    179173    m_didPassAccessControlCheck = m_resource->options().mode == FetchOptions::Mode::Cors;
    180174    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        });
    182181
    183182    m_loader->addResponseForTesting(response);
  • TabularUnified trunk/Source/WebCore/loader/MediaResourceLoader.h

    r232613 r241273  
    7676    // PlatformMediaResource
    7777    void stop() override;
    78     void setDefersLoading(bool) override;
    7978    bool didPassAccessControlCheck() const override { return m_didPassAccessControlCheck; }
    8079
  • TabularUnified trunk/Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h

    r228903 r241273  
    2828#if ENABLE(VIDEO)
    2929
     30#include "PolicyChecker.h"
    3031#include <wtf/CompletionHandler.h>
    3132#include <wtf/Noncopyable.h>
     
    4445    virtual ~PlatformMediaResourceClient() = default;
    4546
    46     virtual void responseReceived(PlatformMediaResource&, const ResourceResponse&) { }
     47    virtual void responseReceived(PlatformMediaResource&, const ResourceResponse&, CompletionHandler<void(ShouldContinue)>&& completionHandler) { completionHandler(ShouldContinue::Yes); }
    4748    virtual void redirectReceived(PlatformMediaResource&, ResourceRequest&& request, const ResourceResponse&, CompletionHandler<void(ResourceRequest&&)>&& completionHandler) { completionHandler(WTFMove(request)); }
    4849    virtual bool shouldCacheResponse(PlatformMediaResource&, const ResourceResponse&) { return true; }
     
    7778    virtual ~PlatformMediaResource() = default;
    7879    virtual void stop() { }
    79     virtual void setDefersLoading(bool) { }
    8080    virtual bool didPassAccessControlCheck() const { return false; }
    8181
  • TabularUnified trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp

    r236961 r241273  
    5151
    5252    // PlatformMediaResourceClient virtual methods.
    53     void responseReceived(PlatformMediaResource&, const ResourceResponse&) override;
     53    void responseReceived(PlatformMediaResource&, const ResourceResponse&, CompletionHandler<void(ShouldContinue)>&&) override;
    5454    void dataReceived(PlatformMediaResource&, const char*, int) override;
    5555    void accessControlCheckFailed(PlatformMediaResource&, const ResourceError&) override;
     
    684684
    685685    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] { });
    691687}
    692688
     
    705701        WebKitWebSrcPrivate* priv = protector->priv;
    706702        if (priv->resource)
    707             priv->resource->setDefersLoading(true);
     703            priv->resource->stop();
    708704    });
    709705}
     
    786782}
    787783
    788 void CachedResourceStreamingClient::responseReceived(PlatformMediaResource&, const ResourceResponse& response)
     784void CachedResourceStreamingClient::responseReceived(PlatformMediaResource&, const ResourceResponse& response, CompletionHandler<void(ShouldContinue)>&& completionHandler)
    789785{
    790786    WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src.get());
     
    805801        gst_app_src_end_of_stream(priv->appsrc);
    806802        webKitWebSrcStop(src);
    807         return;
     803        return completionHandler(ShouldContinue::No);
    808804    }
    809805
    810806    if (priv->isSeeking) {
    811807        GST_DEBUG_OBJECT(src, "Seek in progress, ignoring response");
    812         return;
     808        return completionHandler(ShouldContinue::Yes);
    813809    }
    814810
     
    823819            gst_app_src_end_of_stream(priv->appsrc);
    824820            webKitWebSrcStop(src);
    825             return;
     821            return completionHandler(ShouldContinue::No);
    826822        }
    827823    }
     
    887883        gst_structure_copy(httpHeaders)));
    888884    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);
    889887}
    890888
  • TabularUnified trunk/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm

    r241183 r241273  
    5454- (void)_cancel;
    5555- (void)_finish;
    56 - (void)_setDefersLoading:(BOOL)defers;
    5756@property (assign) WebCoreNSURLSession * _Nullable session;
    5857
    5958- (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;
    6160- (BOOL)resource:(PlatformMediaResource&)resource shouldCacheResponse:(const ResourceResponse&)response;
    6261- (void)resource:(PlatformMediaResource&)resource receivedData:(const char*)data length:(int)length;
     
    383382    void clearTask();
    384383
    385     void responseReceived(PlatformMediaResource&, const ResourceResponse&) override;
     384    void responseReceived(PlatformMediaResource&, const ResourceResponse&, CompletionHandler<void(ShouldContinue)>&&) override;
    386385    void redirectReceived(PlatformMediaResource&, ResourceRequest&&, const ResourceResponse&, CompletionHandler<void(ResourceRequest&&)>&&) override;
    387386    bool shouldCacheResponse(PlatformMediaResource&, const ResourceResponse&) override;
     
    412411}
    413412
    414 void WebCoreNSURLSessionDataTaskClient::responseReceived(PlatformMediaResource& resource, const ResourceResponse& response)
     413void WebCoreNSURLSessionDataTaskClient::responseReceived(PlatformMediaResource& resource, const ResourceResponse& response, CompletionHandler<void(ShouldContinue)>&& completionHandler)
    415414{
    416415    LockHolder locker(m_taskLock);
    417416    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)];
    421420}
    422421
     
    543542    if (_resource)
    544543        [self resourceFinished:*_resource];
    545 }
    546 
    547 - (void)_setDefersLoading:(BOOL)defers
    548 {
    549     ASSERT(isMainThread());
    550     if (_resource)
    551         _resource->setDefersLoading(defers);
    552544}
    553545
     
    636628}
    637629
    638 - (void)resource:(PlatformMediaResource&)resource receivedResponse:(const ResourceResponse&)response
     630- (void)resource:(PlatformMediaResource&)resource receivedResponse:(const ResourceResponse&)response completionHandler:(CompletionHandler<void(ShouldContinue)>&&)completionHandler
    639631{
    640632    ASSERT(response.source() == ResourceResponse::Source::Network || response.source() == ResourceResponse::Source::DiskCache || response.source() == ResourceResponse::Source::DiskCacheAfterValidation || response.source() == ResourceResponse::Source::ServiceWorker);
     
    644636    [self.session task:self didReceiveCORSAccessCheckResult:resource.didPassAccessControlCheck()];
    645637    self.countOfBytesExpectedToReceive = response.expectedContentLength();
    646     [self _setDefersLoading:YES];
    647638    RetainPtr<NSURLResponse> strongResponse { response.nsURLResponse() };
    648639    RetainPtr<WebCoreNSURLSessionDataTask> strongSelf { self };
    649     [self.session addDelegateOperation:[strongSelf, strongResponse] {
     640    [self.session addDelegateOperation:[strongSelf, strongResponse, completionHandler = WTFMove(completionHandler)] () mutable {
    650641        strongSelf->_response = strongResponse.get();
    651642
    652643        id<NSURLSessionDataDelegate> dataDelegate = (id<NSURLSessionDataDelegate>)strongSelf.get().session.delegate;
    653644        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);
    656647            });
    657648            return;
    658649        }
    659650
    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                }
    669659            });
    670         }];
     660        }).get()];
    671661    }];
    672662}
Note: See TracChangeset for help on using the changeset viewer.