LCOV - code coverage report
Current view: top level - test/wpt/xhr - event-upload-progress.any.js (source / functions) Hit Total Coverage
Test: lcov.info Lines: 89 93 95.7 %
Date: 2024-12-07 00:20:21 Functions: 5 6 83.3 %
Branches: 6 6 100.0 %

           Branch data     Line data    Source code
       1            [ + ]:          2 : import assert from 'node:assert/strict';
       2                 :          2 : import { XMLHttpRequest } from '../../../lib/whatwg-xhr.js';
       3                 :          2 : import { ProgressEvent  } from '../../../lib/whatwg-xhr.js';
       4                 :          2 : 
       5            [ + ]:          2 : export default (activeURL) => {
       6                 :          1 : 
       7                 :          1 :         const xhr  = new XMLHttpRequest();
       8                 :          1 : 
       9                 :          1 :         const remote   = `${activeURL}/corsenabled.py`;
      10                 :          1 :         const redirect = `${activeURL}/redirect.py?code=307&location=${remote}`;
      11                 :          1 : 
      12            [ + ]:          1 :         [remote, redirect].forEach(url => {
      13                 :          2 : 
      14                 :          2 :                 const xhr = new XMLHttpRequest();
      15                 :          2 :                 const data = 'On time: ' + url;
      16                 :          2 : 
      17            [ + ]:          2 :                 xhr.upload.onprogress = (e) => {
      18                 :          2 :                         assert(e.lengthComputable);
      19                 :          2 :                         assert.strictEqual(e.total, data.length);
      20                 :          2 : 
      21                 :          2 :                         xhr.upload.onprogress = null;
      22                 :          2 :                         xhr.onload = null;
      23                 :          2 :                 };
      24                 :          2 : 
      25                 :          2 :                 xhr.onload = () => {
      26                 :          0 :                         assert(false);
      27                 :          0 :                 }
      28                 :          2 : 
      29                 :          2 :                 xhr.open('POST', url);
      30                 :          2 :                 xhr.send(data);
      31                 :          1 :         });
      32                 :          1 : 
      33            [ + ]:          1 :         [remote, redirect].forEach(url => {
      34                 :          2 : 
      35                 :          2 :                 const xhr = new XMLHttpRequest();
      36                 :          2 : 
      37            [ + ]:          2 :                 xhr.onload = () => {
      38                 :          2 :                         xhr.onload = null;
      39                 :          2 :                 };
      40                 :          2 : 
      41                 :          2 :                 xhr.open('POST', url);
      42                 :          2 :                 xhr.send('Too late: ' + url);
      43                 :          2 : 
      44                 :          2 :                 // registered too late
      45                 :          2 :                 xhr.upload.onloadstart = () => {
      46                 :          0 :                         assert(false);
      47                 :          2 :                 };
      48                 :          2 : 
      49                 :          2 :                 // registered too late
      50                 :          2 :                 xhr.upload.onprogress = () => {
      51                 :          0 :                         assert(false);
      52                 :          2 :                 };
      53                 :          1 :         });
      54                 :          1 : }
      55                 :          2 : 
      56                 :          2 : /*
      57                 :          2 :  * event-upload-progress.any.js
      58                 :          2 :  *
      59                 :          2 : 
      60                 :          2 : // META: title=XMLHttpRequest: upload progress event
      61                 :          2 : // META: script=/common/get-host-info.sub.js
      62                 :          2 : 
      63                 :          2 : const remote = get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/corsenabled.py",
      64                 :          2 :   redirect = "resources/redirect.py?code=307&location=" + remote;
      65                 :          2 : 
      66                 :          2 : [remote, redirect].forEach(url => {
      67                 :          2 :   async_test(test => {
      68                 :          2 :     const client = new XMLHttpRequest();
      69                 :          2 :     const data = "On time: " + url;
      70                 :          2 :     client.upload.onprogress = test.step_func_done(e => {
      71                 :          2 :       assert_true(e.lengthComputable);
      72                 :          2 :       assert_equals(e.total, data.length);
      73                 :          2 :     });
      74                 :          2 :     client.onload = test.unreached_func();
      75                 :          2 :     client.open("POST", url);
      76                 :          2 :     client.send(data);
      77                 :          2 :   }, "Upload events registered on time (" + url + ")");
      78                 :          2 : });
      79                 :          2 : 
      80                 :          2 : [remote, redirect].forEach(url => {
      81                 :          2 :   async_test(test => {
      82                 :          2 :     const client = new XMLHttpRequest();
      83                 :          2 :     client.onload = test.step_func_done();
      84                 :          2 :     client.open("POST", url);
      85                 :          2 :     client.send("Too late: " + url);
      86                 :          2 :     client.upload.onloadstart = test.unreached_func(); // registered too late
      87                 :          2 :     client.upload.onprogress = test.unreached_func(); // registered too late
      88                 :          2 :   }, "Upload events registered too late (" + url + ")");
      89                 :          2 : });
      90                 :          2 : 
      91                 :          2 :  *
      92                 :          2 :  * event-upload-progress.any.js
      93                 :          2 :  */

Generated by: LCOV version 1.14