Changeset 243756 in webkit


Ignore:
Timestamp:
Apr 2, 2019 1:30:02 PM (5 years ago)
Author:
Chris Dumez
Message:

Unreviewed, rolling out r243551.

Seems to have broken file uploads to SoundCloud

Reverted changeset:

"XMLHttpRequestUpload's loadstart event not correct
initialized"
https://bugs.webkit.org/show_bug.cgi?id=196174
https://trac.webkit.org/changeset/243551

Location:
trunk
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r243755 r243756  
     12019-04-02  Chris Dumez  <cdumez@apple.com>
     2
     3        Unreviewed, rolling out r243551.
     4
     5        Seems to have broken file uploads to SoundCloud
     6
     7        Reverted changeset:
     8
     9        "XMLHttpRequestUpload's loadstart event not correct
     10        initialized"
     11        https://bugs.webkit.org/show_bug.cgi?id=196174
     12        https://trac.webkit.org/changeset/243551
     13
    1142019-04-02  Justin Fan  <justin_fan@apple.com>
    215
  • trunk/LayoutTests/http/tests/xmlhttprequest/upload-onabort-progressevent-attributes.html

    r243551 r243756  
    2727}
    2828
    29 function onErrorProgressEvent(e)
    30 {
    31     if (e.lengthComputable)
    32         fail("Event " + e.type + " lengthComputable is true");
    33     if (e.total != 0 || e.loaded != 0)
    34         fail("Event " + e.type + " total/loaded values not matching: "
    35             + "(" + e.loaded + " / " + e.total + "), expected (0 / 0)");
    36 }
    37 
    3829function onUnexpectedProgressEvent(e)
    3930{
     
    6051    req.upload.onerror = onUnexpectedProgressEvent;
    6152    req.upload.onload = onUnexpectedProgressEvent;
    62     req.upload.onabort = onErrorProgressEvent;
     53    req.upload.onabort = onProgressEvent;
    6354    req.upload.onprogress = function(e) {
    6455        onProgressEvent(e);
     
    6657    }
    6758    req.upload.onloadend = function(e) {
    68         onErrorProgressEvent(e);
     59        onProgressEvent(e);
    6960        completeTest();
    7061    }
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r243734 r243756  
     12019-04-02  Chris Dumez  <cdumez@apple.com>
     2
     3        Unreviewed, rolling out r243551.
     4
     5        Seems to have broken file uploads to SoundCloud
     6
     7        Reverted changeset:
     8
     9        "XMLHttpRequestUpload's loadstart event not correct
     10        initialized"
     11        https://bugs.webkit.org/show_bug.cgi?id=196174
     12        https://trac.webkit.org/changeset/243551
     13
    1142019-04-01  Chris Dumez  <cdumez@apple.com>
    215
  • trunk/LayoutTests/imported/w3c/web-platform-tests/xhr/abort-during-upload-expected.txt

    r243551 r243756  
    11
    2 PASS XMLHttpRequest: abort() while sending data
     2FAIL XMLHttpRequest: abort() while sending data assert_equals: expected "upload.loadstart(0,9999,true)" but got "upload.loadstart(0,0,false)"
    33
  • trunk/LayoutTests/imported/w3c/web-platform-tests/xhr/event-error-order.sub-expected.txt

    r243551 r243756  
    11Blocked access to external URL http://nonexistent.localhost:8800/
    22
    3 PASS XMLHttpRequest: event - error (order of events)
     3FAIL XMLHttpRequest: event - error (order of events) assert_equals: expected "upload.loadstart(0,12,true)" but got "upload.loadstart(0,0,false)"
    44
  • trunk/LayoutTests/imported/w3c/web-platform-tests/xhr/event-error-order.sub.html

    r243551 r243756  
    2323                test.step(function() {
    2424                    // no progress events due to CORS failure
    25                     assert_xhr_event_order_matches([1, "loadstart(0,0,false)", "upload.loadstart(0,12,true)", 4, "upload.error(0,0,false)", "upload.loadend(0,0,false)", "error(0,0,false)", "loadend(0,0,false)"]);
     25                    assert_xhr_event_order_matches([1, "loadstart(0,0,false)", "upload.loadstart(0,12,true)", 2, 4, "upload.error(0,0,false)", "upload.loadend(0,0,false)", "error(0,0,false)", "loadend(0,0,false)"]);
    2626                    test.done();
    2727                });
  • trunk/LayoutTests/imported/w3c/web-platform-tests/xhr/event-loadstart-upload-expected.txt

    r243551 r243756  
    11
    2 PASS XMLHttpRequest: The send() method: Fire a progress event named loadstart on upload object (synchronous flag is unset)
     2FAIL XMLHttpRequest: The send() method: Fire a progress event named loadstart on upload object (synchronous flag is unset) assert_equals: upload.onloadstart: event.total expected 7 but got 0
    33
  • trunk/LayoutTests/imported/w3c/web-platform-tests/xhr/event-timeout-order-expected.txt

    r243551 r243756  
    11
    2 PASS XMLHttpRequest: event - timeout (order of events)
     2FAIL XMLHttpRequest: event - timeout (order of events) assert_equals: expected "upload.loadstart(0,12,true)" but got "upload.loadstart(0,0,false)"
    33
  • trunk/LayoutTests/imported/w3c/web-platform-tests/xhr/send-response-event-order-expected.txt

    r243551 r243756  
    11
    2 PASS XMLHttpRequest: The send() method: event order when synchronous flag is unset
     2FAIL XMLHttpRequest: The send() method: event order when synchronous flag is unset assert_equals: expected "upload.loadstart(0,12,true)" but got "upload.loadstart(0,0,false)"
    33
  • trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/xhr/event-error-order.sub-expected.txt

    r243551 r243756  
    11
    2 PASS XMLHttpRequest: event - error (order of events)
     2FAIL XMLHttpRequest: event - error (order of events) assert_equals: expected "upload.loadstart(0,12,true)" but got "upload.loadstart(0,0,false)"
    33
  • trunk/Source/WebCore/ChangeLog

    r243755 r243756  
     12019-04-02  Chris Dumez  <cdumez@apple.com>
     2
     3        Unreviewed, rolling out r243551.
     4
     5        Seems to have broken file uploads to SoundCloud
     6
     7        Reverted changeset:
     8
     9        "XMLHttpRequestUpload's loadstart event not correct
     10        initialized"
     11        https://bugs.webkit.org/show_bug.cgi?id=196174
     12        https://trac.webkit.org/changeset/243551
     13
    1142019-04-02  Justin Fan  <justin_fan@apple.com>
    215
  • trunk/Source/WebCore/xml/XMLHttpRequest.cpp

    r243551 r243756  
    627627        m_progressEventThrottle.dispatchProgressEvent(eventNames().loadstartEvent);
    628628        if (!m_uploadComplete && m_uploadListenerFlag)
    629             m_upload->dispatchProgressEvent(eventNames().loadstartEvent, 0, request.httpBody()->lengthInBytes());
     629            m_upload->dispatchProgressEvent(eventNames().loadstartEvent);
    630630
    631631        if (readyState() != OPENED || !m_sendFlag || m_loader)
     
    715715{
    716716    m_response = ResourceResponse();
    717     m_didReceiveResponseHandler = nullptr;
    718717    clearResponseBuffers();
    719718}
     
    947946        return;
    948947
    949     if (m_response.isNull()) {
    950         // We should not notify of progress until we've received a response from the server.
    951         m_didReceiveResponseHandler = [this, bytesSent, totalBytesToBeSent] {
    952             didSendData(bytesSent, totalBytesToBeSent);
    953         };
    954         return;
    955     }
    956 
    957948    if (m_uploadListenerFlag)
    958         m_upload->dispatchProgressEvent(eventNames().progressEvent, bytesSent, totalBytesToBeSent);
     949        m_upload->dispatchThrottledProgressEvent(true, bytesSent, totalBytesToBeSent);
    959950
    960951    if (bytesSent == totalBytesToBeSent && !m_uploadComplete) {
    961952        m_uploadComplete = true;
    962953        if (m_uploadListenerFlag) {
    963             m_upload->dispatchProgressEvent(eventNames().loadEvent, bytesSent, totalBytesToBeSent);
    964             m_upload->dispatchProgressEvent(eventNames().loadendEvent, bytesSent, totalBytesToBeSent);
     954            m_upload->dispatchProgressEvent(eventNames().loadEvent);
     955            m_upload->dispatchProgressEvent(eventNames().loadendEvent);
    965956        }
    966957    }
     
    970961{
    971962    m_response = response;
    972     if (auto didReceiveResponseHandler = WTFMove(m_didReceiveResponseHandler))
    973         didReceiveResponseHandler();
    974963}
    975964
     
    10591048        m_receivedLength += len;
    10601049
    1061         if (readyState() != LOADING)
    1062             changeState(LOADING);
    1063         else {
    1064             // Firefox calls readyStateChanged every time it receives data, 4449442
    1065             callReadyStateChangeListener();
    1066         }
    1067 
    10681050        if (m_async) {
    10691051            long long expectedLength = m_response.expectedContentLength();
     
    10721054            m_progressEventThrottle.dispatchThrottledProgressEvent(lengthComputable, m_receivedLength, total);
    10731055        }
     1056
     1057        if (readyState() != LOADING)
     1058            changeState(LOADING);
     1059        else
     1060            // Firefox calls readyStateChanged every time it receives data, 4449442
     1061            callReadyStateChangeListener();
    10741062    }
    10751063}
     
    10801068        m_uploadComplete = true;
    10811069        if (m_upload && m_uploadListenerFlag) {
    1082             m_upload->dispatchProgressEvent(type, 0, 0);
    1083             m_upload->dispatchProgressEvent(eventNames().loadendEvent, 0, 0);
     1070            m_upload->dispatchProgressEvent(type);
     1071            m_upload->dispatchProgressEvent(eventNames().loadendEvent);
    10841072        }
    10851073    }
  • trunk/Source/WebCore/xml/XMLHttpRequest.h

    r243551 r243756  
    219219
    220220    ResourceResponse m_response;
    221     Function<void()> m_didReceiveResponseHandler;
    222221
    223222    RefPtr<TextResourceDecoder> m_decoder;
  • trunk/Source/WebCore/xml/XMLHttpRequestUpload.cpp

    r243551 r243756  
    3939}
    4040
    41 void XMLHttpRequestUpload::dispatchProgressEvent(const AtomicString& type, unsigned long long loaded, unsigned long long total)
     41void XMLHttpRequestUpload::dispatchThrottledProgressEvent(bool lengthComputable, unsigned long long loaded, unsigned long long total)
     42{
     43    m_lengthComputable = lengthComputable;
     44    m_loaded = loaded;
     45    m_total = total;
     46
     47    dispatchEvent(XMLHttpRequestProgressEvent::create(eventNames().progressEvent, lengthComputable, loaded, total));
     48}
     49
     50void XMLHttpRequestUpload::dispatchProgressEvent(const AtomicString& type)
    4251{
    4352    ASSERT(type == eventNames().loadstartEvent || type == eventNames().progressEvent || type == eventNames().loadEvent || type == eventNames().loadendEvent || type == eventNames().abortEvent || type == eventNames().errorEvent || type == eventNames().timeoutEvent);
    4453
    45     // https://xhr.spec.whatwg.org/#firing-events-using-the-progressevent-interface
    46     dispatchEvent(XMLHttpRequestProgressEvent::create(type, !!total, loaded, total));
     54    if (type == eventNames().loadstartEvent) {
     55        m_lengthComputable = false;
     56        m_loaded = 0;
     57        m_total = 0;
     58    }
     59
     60    dispatchEvent(XMLHttpRequestProgressEvent::create(type, m_lengthComputable, m_loaded, m_total));
    4761}
    4862
  • trunk/Source/WebCore/xml/XMLHttpRequestUpload.h

    r243551 r243756  
    3939    void deref() { m_request.deref(); }
    4040
    41     void dispatchProgressEvent(const AtomicString& type, unsigned long long loaded, unsigned long long total);
     41    void dispatchThrottledProgressEvent(bool lengthComputable, unsigned long long loaded, unsigned long long total);
     42    void dispatchProgressEvent(const AtomicString& type);
    4243
    4344private:
     
    4950
    5051    XMLHttpRequest& m_request;
     52    bool m_lengthComputable { false };
     53    unsigned long long m_loaded { 0 };
     54    unsigned long long m_total { 0 };
    5155};
    5256   
Note: See TracChangeset for help on using the changeset viewer.