Skip to content

Commit 9a0a4bc

Browse files
authored
[Wasm64] Fix -sFETCH build and add some basic testing (#17432)
Fixes: #17414
1 parent 8395b84 commit 9a0a4bc

File tree

5 files changed

+30
-11
lines changed

5 files changed

+30
-11
lines changed

src/Fetch.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -460,14 +460,14 @@ function startFetch(fetch, successcb, errorcb, progresscb, readystatechangecb) {
460460
#endif
461461
{{{ runtimeKeepalivePop() }}}
462462
callUserCallback(() => {
463-
if (onsuccess) {{{ makeDynCall('vi', 'onsuccess') }}}(fetch);
463+
if (onsuccess) {{{ makeDynCall('vp', 'onsuccess') }}}(fetch);
464464
else if (successcb) successcb(fetch);
465465
}, fetchAttrSynchronous);
466466
};
467467

468468
var reportProgress = (fetch, xhr, e) => {
469469
callUserCallback(() => {
470-
if (onprogress) {{{ makeDynCall('vi', 'onprogress') }}}(fetch);
470+
if (onprogress) {{{ makeDynCall('vp', 'onprogress') }}}(fetch);
471471
else if (progresscb) progresscb(fetch);
472472
}, fetchAttrSynchronous);
473473
};
@@ -478,7 +478,7 @@ function startFetch(fetch, successcb, errorcb, progresscb, readystatechangecb) {
478478
#endif
479479
{{{ runtimeKeepalivePop() }}}
480480
callUserCallback(() => {
481-
if (onerror) {{{ makeDynCall('vi', 'onerror') }}}(fetch);
481+
if (onerror) {{{ makeDynCall('vp', 'onerror') }}}(fetch);
482482
else if (errorcb) errorcb(fetch);
483483
}, fetchAttrSynchronous);
484484
};
@@ -488,7 +488,7 @@ function startFetch(fetch, successcb, errorcb, progresscb, readystatechangecb) {
488488
console.log('fetch: ready state change. e: ' + e);
489489
#endif
490490
callUserCallback(() => {
491-
if (onreadystatechange) {{{ makeDynCall('vi', 'onreadystatechange') }}}(fetch);
491+
if (onreadystatechange) {{{ makeDynCall('vp', 'onreadystatechange') }}}(fetch);
492492
else if (readystatechangecb) readystatechangecb(fetch);
493493
}, fetchAttrSynchronous);
494494
};
@@ -511,7 +511,7 @@ function startFetch(fetch, successcb, errorcb, progresscb, readystatechangecb) {
511511
#endif
512512
{{{ runtimeKeepalivePop() }}}
513513
callUserCallback(() => {
514-
if (onsuccess) {{{ makeDynCall('vi', 'onsuccess') }}}(fetch);
514+
if (onsuccess) {{{ makeDynCall('vp', 'onsuccess') }}}(fetch);
515515
else if (successcb) successcb(fetch);
516516
}, fetchAttrSynchronous);
517517
};
@@ -521,7 +521,7 @@ function startFetch(fetch, successcb, errorcb, progresscb, readystatechangecb) {
521521
#endif
522522
{{{ runtimeKeepalivePop() }}}
523523
callUserCallback(() => {
524-
if (onsuccess) {{{ makeDynCall('vi', 'onsuccess') }}}(fetch);
524+
if (onsuccess) {{{ makeDynCall('vp', 'onsuccess') }}}(fetch);
525525
else if (successcb) successcb(fetch);
526526
}, fetchAttrSynchronous);
527527
};

src/library_fetch.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ var LibraryFetch = {
1313
$Fetch__postset: 'Fetch.staticInit();',
1414
#endif
1515
$Fetch: Fetch,
16+
_emscripten_fetch_get_response_headers_length__sig: 'pi',
1617
_emscripten_fetch_get_response_headers_length: fetchGetResponseHeadersLength,
18+
_emscripten_fetch_get_response_headers__sig: 'pipp',
1719
_emscripten_fetch_get_response_headers: fetchGetResponseHeaders,
1820
_emscripten_fetch_free: fetchFree,
1921

@@ -24,6 +26,7 @@ var LibraryFetch = {
2426
#endif
2527
$fetchXHR: fetchXHR,
2628

29+
emscripten_start_fetch__sig: 'vp',
2730
emscripten_start_fetch: startFetch,
2831
emscripten_start_fetch__deps: [
2932
'$Fetch',

system/include/emscripten/fetch.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ typedef struct emscripten_fetch_attr_t {
137137

138138
typedef struct emscripten_fetch_t {
139139
// Unique identifier for this fetch in progress.
140-
unsigned int id;
140+
uint32_t id;
141141

142142
// Custom data that can be tagged along the process.
143143
void *userData;

system/lib/fetch/emscripten_fetch.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ static void fetch_free(emscripten_fetch_t* fetch);
3333

3434
// APIs defined in JS
3535
void emscripten_start_fetch(emscripten_fetch_t* fetch);
36-
int32_t _emscripten_fetch_get_response_headers_length(int32_t fetchID);
37-
int32_t _emscripten_fetch_get_response_headers(int32_t fetchID, int32_t dst, int32_t dstSizeBytes);
36+
size_t _emscripten_fetch_get_response_headers_length(int32_t fetchID);
37+
size_t _emscripten_fetch_get_response_headers(int32_t fetchID, char *dst, size_t dstSizeBytes);
3838
void _emscripten_fetch_free(unsigned int);
3939

4040
typedef struct emscripten_fetch_queue {
@@ -254,13 +254,13 @@ EMSCRIPTEN_RESULT emscripten_fetch_close(emscripten_fetch_t* fetch) {
254254
size_t emscripten_fetch_get_response_headers_length(emscripten_fetch_t *fetch) {
255255
if (!fetch || fetch->readyState < STATE_HEADERS_RECEIVED) return 0;
256256

257-
return (size_t)_emscripten_fetch_get_response_headers_length((int32_t)fetch->id);
257+
return (size_t)_emscripten_fetch_get_response_headers_length(fetch->id);
258258
}
259259

260260
size_t emscripten_fetch_get_response_headers(emscripten_fetch_t *fetch, char *dst, size_t dstSizeBytes) {
261261
if (!fetch || fetch->readyState < STATE_HEADERS_RECEIVED) return 0;
262262

263-
return (size_t)_emscripten_fetch_get_response_headers((int32_t)fetch->id, (int32_t)dst, (int32_t)dstSizeBytes);
263+
return (size_t)_emscripten_fetch_get_response_headers(fetch->id, dst, dstSizeBytes);
264264
}
265265

266266
char **emscripten_fetch_unpack_response_headers(const char *headersString) {

tests/test_browser.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,21 @@ def metafunc(self, with_wasm2js):
106106
return metafunc
107107

108108

109+
def also_with_wasm64(f):
110+
assert callable(f)
111+
112+
def metafunc(self, with_wasm64):
113+
if with_wasm64:
114+
self.set_setting('MEMORY64', 2)
115+
f(self)
116+
else:
117+
f(self)
118+
119+
metafunc._parameterize = {'': (False,),
120+
'wasm64': (True,)}
121+
return metafunc
122+
123+
109124
def shell_with_script(shell_file, output_file, replacement):
110125
shell = read_file(path_from_root('src', shell_file))
111126
create_file(output_file, shell.replace('{{{ SCRIPT }}}', replacement))
@@ -4626,6 +4641,7 @@ def test_fetch_stream_file(self):
46264641
self.btest_exit('fetch/stream_file.cpp',
46274642
args=['-sFETCH_DEBUG', '-sFETCH', '-sINITIAL_MEMORY=536870912'])
46284643

4644+
@also_with_wasm64
46294645
def test_fetch_headers_received(self):
46304646
self.btest_exit('fetch/headers_received.cpp', args=['-sFETCH_DEBUG', '-sFETCH'])
46314647

0 commit comments

Comments
 (0)