Skip to content

Commit bead02e

Browse files
authored
Added test for emscripten_html5_remove_event_listener (#25858)
1 parent 797cf32 commit bead02e

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

test/test_browser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2545,7 +2545,7 @@ def test_html5_core(self, opts):
25452545
self.btest_exit('test_html5_core.c', cflags=opts)
25462546

25472547
def test_html5_remove_event_listener(self):
2548-
self.btest_exit('test_html5_remove_event_listener.c')
2548+
self.btest_exit('test_html5_remove_event_listener.c', cflags=[f'-DSAFARI_SUPPORT={int(not self.is_wasm64())}'])
25492549

25502550
@parameterized({
25512551
'': ([],),

test/test_html5_remove_event_listener.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ bool mouse_callback_1(int eventType, const EmscriptenMouseEvent *e, void *userDa
4545
return 0;
4646
}
4747

48+
bool screen_callback(int eventType, const EmscriptenFullscreenChangeEvent *fullscreenChangeEvent, void *userData) {
49+
printf("screen_callback: eventType=%d, userData=%s\n", eventType, (char const *) userData);
50+
return 0;
51+
}
52+
4853
void checkCount(int count) {
4954
int eventHandlersCount = EM_ASM_INT({ return JSEvents.eventHandlers.length; });
5055
printf("Detected [%d] handlers\n", eventHandlersCount);
@@ -130,5 +135,22 @@ int main() {
130135

131136
checkCount(2);
132137

138+
// internally, emscripten_set_fullscreenchange_callback can set 2 event handlers ("webkitfullscreenchange" and "fullscreenchange")
139+
ret = emscripten_set_fullscreenchange_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, useCapture, screen_callback);
140+
ASSERT_RESULT(emscripten_set_fullscreenchange_callback);
141+
142+
#if SAFARI_SUPPORT == 1
143+
// 2 events handlers are set when there is safari support
144+
checkCount(4);
145+
#else
146+
checkCount(3);
147+
#endif
148+
149+
// we make sure that the 2 event handlers get removed (#25846)
150+
ret = emscripten_html5_remove_event_listener(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, EMSCRIPTEN_EVENT_FULLSCREENCHANGE, screen_callback);
151+
ASSERT_RESULT(emscripten_html5_remove_event_listener);
152+
153+
checkCount(2);
154+
133155
return 0;
134156
}

0 commit comments

Comments
 (0)