Changeset 161891 in webkit


Ignore:
Timestamp:
Jan 13, 2014 10:41:17 AM (10 years ago)
Author:
commit-queue@webkit.org
Message:

Dispatch a progress event before dispatching abort, error or timeout event
https://bugs.webkit.org/show_bug.cgi?id=126575

Source/WebCore:

Patch by Youenn Fablet <youennf@gmail.com> on 2014-01-13
Reviewed by Alexey Proskuryakov.

Added sending of progress event after readystatechange event (switching to DONE state) in case of abort, error or timeout.
Fixed assertions in XMLHttpRequestProgressEventThrottle and XMLHttpRequestUpload.

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::dispatchErrorEvents): added sending of progress event before the specific error event

  • xml/XMLHttpRequestProgressEventThrottle.cpp:

(WebCore::XMLHttpRequestProgressEventThrottle::dispatchProgressEvent): fixed assertion

  • xml/XMLHttpRequestUpload.cpp:

(WebCore::XMLHttpRequestUpload::dispatchProgressEvent): fixed assertion

LayoutTests:

Patch by Youenn Fablet <youennf@gmail.com> on 2014-01-13
Reviewed by Alexey Proskuryakov.

Updated onloadend-event-after-abort.html and onloadend-event-after-error.html to check for progress event.
Fixed the other tests to cope with additional progress event.

  • http/tests/xmlhttprequest/onabort-progressevent-attributes.html:
  • http/tests/xmlhttprequest/onloadend-event-after-abort-expected.txt:
  • http/tests/xmlhttprequest/onloadend-event-after-abort.html:
  • http/tests/xmlhttprequest/onloadend-event-after-error-expected.txt:
  • http/tests/xmlhttprequest/onloadend-event-after-error.html:
  • http/tests/xmlhttprequest/simple-cross-origin-progress-events-expected.txt:
  • http/tests/xmlhttprequest/simple-cross-origin-progress-events.html:
  • http/tests/xmlhttprequest/upload-onloadend-event-after-abort.html:
  • http/tests/xmlhttprequest/xmlhttprequest-sync-no-progress-events-expected.txt:
Location:
trunk
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r161889 r161891  
     12014-01-13  Youenn Fablet  <youennf@gmail.com>
     2
     3        Dispatch a progress event before dispatching abort, error or timeout event
     4        https://bugs.webkit.org/show_bug.cgi?id=126575
     5
     6        Reviewed by Alexey Proskuryakov.
     7       
     8        Updated onloadend-event-after-abort.html and onloadend-event-after-error.html to check for progress event.
     9        Fixed the other tests to cope with additional progress event.
     10
     11        * http/tests/xmlhttprequest/onabort-progressevent-attributes.html:
     12        * http/tests/xmlhttprequest/onloadend-event-after-abort-expected.txt:
     13        * http/tests/xmlhttprequest/onloadend-event-after-abort.html:
     14        * http/tests/xmlhttprequest/onloadend-event-after-error-expected.txt:
     15        * http/tests/xmlhttprequest/onloadend-event-after-error.html:
     16        * http/tests/xmlhttprequest/simple-cross-origin-progress-events-expected.txt:
     17        * http/tests/xmlhttprequest/simple-cross-origin-progress-events.html:
     18        * http/tests/xmlhttprequest/upload-onloadend-event-after-abort.html:
     19        * http/tests/xmlhttprequest/xmlhttprequest-sync-no-progress-events-expected.txt:
     20
    1212014-01-13  Brent Fulgham  <bfulgham@apple.com>
    222
  • trunk/LayoutTests/http/tests/xmlhttprequest/onabort-progressevent-attributes.html

    r161668 r161891  
    4747    var iteration = 2;
    4848    var delay = "1000";
    49 
     49    var hasAborted = false;
    5050    var req = new XMLHttpRequest();
    5151    req.onprogress = function(e){
    5252        total = e.total;
    5353        loaded = e.loaded;
    54         req.abort();
     54        if (!hasAborted) {
     55            hasAborted = true;
     56            req.abort();
     57        }
    5558    };
    5659    req.onerror = onUnexpectedProgressEvent;
  • trunk/LayoutTests/http/tests/xmlhttprequest/onloadend-event-after-abort-expected.txt

    r103502 r161891  
    33Verify that a loadend ProgressEvent is dispatched after the abort ProgressEvent when an async request is aborted.
    44
     5Verify also that a progress ProgressEvent is sent between readystatechange and abort ProgressEvent (bug 126575).
     6
    57PASS should appear below:
    68
  • trunk/LayoutTests/http/tests/xmlhttprequest/onloadend-event-after-abort.html

    r120167 r161891  
    66<p>Test case for <a href="https://bugs.webkit.org/show_bug.cgi?id=40952"> bug 40952</a>: Onloadend event is not supported in XMLHttpRequest</p>
    77<p>Verify that a loadend ProgressEvent is dispatched after the abort ProgressEvent when an async request is aborted.</p>
     8<p> Verify also that a progress ProgressEvent is sent between readystatechange and abort ProgressEvent (<a href="https://bugs.webkit.org/show_bug.cgi?id=126575">bug 126575</a>).</p>
    89<p>PASS should appear below:</p>
    910<p id=console></p>
     
    2223var xhr = new XMLHttpRequest();
    2324var results = "";
    24 var expected = " loadstart readyState=DONE abort loadend";
     25var expected = " loadstart readyState=DONE progress abort loadend";
    2526
    2627function logProgressEvent(e) {
     
    4546        if (xhr.readyState == xhr.DONE)
    4647            results += " readyState=DONE";
    47         else if (xhr.readyState > xhr.OPENED)
     48        else if (xhr.readyState > xhr.OPENED) {
     49            xhr.onprogress = logProgressEvent;
    4850            xhr.abort();
     51        }
    4952    }
    5053    xhr.onloadstart = logProgressEvent;
  • trunk/LayoutTests/http/tests/xmlhttprequest/onloadend-event-after-error-expected.txt

    r103502 r161891  
    33Verify that a loadend ProgressEvent is dispatched after the error ProgressEvent when an async request fails.
    44
     5Verify also that a progress ProgressEvent is sent between readystatechange and error ProgressEvent (bug 126575).
     6
    57PASS should appear below:
    68
  • trunk/LayoutTests/http/tests/xmlhttprequest/onloadend-event-after-error.html

    r120167 r161891  
    66<p> Test case for <a href="https://bugs.webkit.org/show_bug.cgi?id=40952"> bug 40952</a>: Onloadend event is not supported in XMLHttpRequest</p>
    77<p> Verify that a loadend ProgressEvent is dispatched after the error ProgressEvent when an async request fails.</p>
     8<p> Verify also that a progress ProgressEvent is sent between readystatechange and error ProgressEvent (<a href="https://bugs.webkit.org/show_bug.cgi?id=126575">bug 126575</a>).</p>
    89<p>PASS should appear below:</p>
    910<p id=console></p>
     
    2223var xhr = new XMLHttpRequest();
    2324var results = "";
    24 var expected = " loadstart readyState=DONE error loadend";
     25var expected = " loadstart readyState=DONE progress error loadend";
    2526
    2627
     
    4445{
    4546    xhr.onreadystatechange = function(e) {
    46         if (xhr.readyState == xhr.DONE)
     47        if (xhr.readyState == xhr.DONE) {
    4748            results += " readyState=DONE";
     49            xhr.onprogress = logProgressEvent;
     50        }
    4851    }
    4952    xhr.onloadstart = logProgressEvent;
  • trunk/LayoutTests/http/tests/xmlhttprequest/simple-cross-origin-progress-events-expected.txt

    r154004 r161891  
    99
    1010Test 2: The URL is not allowed for cross-origin requests
     11onprogress
    1112onerror (expected)
    1213Response length: 0
     
    1415Test 3: The URL is not allowed for cross-origin requests and at least one upload event is listened for before doing the send.
    1516upload.onloadstart
     17upload.onprogress
    1618upload.onerror (expected)
     19onprogress
    1720onerror (expected)
    1821Response length: 0
  • trunk/LayoutTests/http/tests/xmlhttprequest/simple-cross-origin-progress-events.html

    r154004 r161891  
    2828{
    2929    if (!sawUploadProgress)
    30         log("FAIL: upload.onprogress");
     30        log("upload.onprogress");
    3131    sawUploadProgress = true;
    3232}
  • trunk/LayoutTests/http/tests/xmlhttprequest/upload-onloadend-event-after-abort.html

    r120167 r161891  
    4343{
    4444    xhr.upload.onprogress = function(e) {
    45         logProgressEvent(e);
     45        xhr.upload.onprogress = logProgressEvent;
    4646        xhr.abort();
    4747    }
  • trunk/LayoutTests/http/tests/xmlhttprequest/xmlhttprequest-sync-no-progress-events-expected.txt

    r104803 r161891  
    1111Step 2: Cross origin request, disallowed
    1212readystatechange 4
     13progress
    1314error
    1415loadend
  • trunk/Source/WebCore/ChangeLog

    r161890 r161891  
     12014-01-13  Youenn Fablet  <youennf@gmail.com>
     2
     3        Dispatch a progress event before dispatching abort, error or timeout event
     4        https://bugs.webkit.org/show_bug.cgi?id=126575
     5
     6        Reviewed by Alexey Proskuryakov.
     7
     8        Added sending of progress event after readystatechange event (switching to DONE state) in case of abort, error or timeout.
     9        Fixed assertions in XMLHttpRequestProgressEventThrottle and XMLHttpRequestUpload.
     10
     11        * xml/XMLHttpRequest.cpp:
     12        (WebCore::XMLHttpRequest::dispatchErrorEvents): added sending of progress event before the specific error event
     13        * xml/XMLHttpRequestProgressEventThrottle.cpp:
     14        (WebCore::XMLHttpRequestProgressEventThrottle::dispatchProgressEvent): fixed assertion
     15        * xml/XMLHttpRequestUpload.cpp:
     16        (WebCore::XMLHttpRequestUpload::dispatchProgressEvent): fixed assertion
     17
    1182014-01-13  Carlos Garcia Campos  <cgarcia@igalia.com>
    219
  • trunk/Source/WebCore/xml/XMLHttpRequest.cpp

    r161851 r161891  
    12461246        m_uploadComplete = true;
    12471247        if (m_upload && m_uploadEventsAllowed) {
     1248            m_upload->dispatchProgressEvent(eventNames().progressEvent);
    12481249            m_upload->dispatchProgressEvent(type);
    12491250            m_upload->dispatchProgressEvent(eventNames().loadendEvent);
    12501251        }
    12511252    }
     1253    m_progressEventThrottle.dispatchProgressEvent(eventNames().progressEvent);
    12521254    m_progressEventThrottle.dispatchProgressEvent(type);
    12531255    m_progressEventThrottle.dispatchProgressEvent(eventNames().loadendEvent);
  • trunk/Source/WebCore/xml/XMLHttpRequestProgressEventThrottle.cpp

    r161668 r161891  
    103103void XMLHttpRequestProgressEventThrottle::dispatchProgressEvent(const AtomicString &type)
    104104{
    105     ASSERT(type == eventNames().loadEvent || type == eventNames().loadendEvent || type == eventNames().loadstartEvent || type == eventNames().abortEvent || type == eventNames().errorEvent || type == eventNames().timeoutEvent);
     105    ASSERT(type == type == eventNames().loadstartEvent || type == eventNames().progressEvent || eventNames().loadEvent || type == eventNames().loadendEvent || type == eventNames().abortEvent || type == eventNames().errorEvent || type == eventNames().timeoutEvent);
    106106
    107107    if (type == eventNames().loadstartEvent) {
  • trunk/Source/WebCore/xml/XMLHttpRequestUpload.cpp

    r161668 r161891  
    5454void XMLHttpRequestUpload::dispatchProgressEvent(const AtomicString &type)
    5555{
    56     ASSERT(type == eventNames().loadEvent || type == eventNames().loadendEvent || type == eventNames().loadstartEvent || type == eventNames().abortEvent || type == eventNames().errorEvent || type == eventNames().timeoutEvent);
     56    ASSERT(type == eventNames().loadstartEvent || type == eventNames().progressEvent || type == eventNames().loadEvent || type == eventNames().loadendEvent || type == eventNames().abortEvent || type == eventNames().errorEvent || type == eventNames().timeoutEvent);
    5757
    5858    if (type == eventNames().loadstartEvent) {
Note: See TracChangeset for help on using the changeset viewer.