mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-12-16 05:59:21 +03:00
8181f7fa95
This commit implements callback interfaces for WebIDL, the final WebIDL construct that we were unconditionally ignoring! Callback interfaces are implemented as dictionaries of callbacks. Single-operation callback interfaces are also expanded when flattening to accept a `Function` as well, in accordance with the WebIDL spec. New features have been added to `web-sys` for all the new callback interface types. Additionally the `EventTarget.webidl` was tweaked to not have `EventListener?` as this is required for all functional usage and there's no need to keep that sort of web browser compat here. Closes #258
39 lines
888 B
Rust
39 lines
888 B
Rust
use wasm_bindgen_test::*;
|
|
use js_sys::Function;
|
|
|
|
include!(concat!(env!("OUT_DIR"), "/callbacks.rs"));
|
|
|
|
#[wasm_bindgen_test]
|
|
fn multi_op_same_name() {
|
|
let a = CallbackInterface2::new();
|
|
let b = TakeCallbackInterface::new().unwrap();
|
|
b.b(&a);
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn single_op_function() {
|
|
let a = Function::new_no_args("");
|
|
let b = TakeCallbackInterface::new().unwrap();
|
|
b.a_with_callback(&a);
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn single_op_dict() {
|
|
let a = CallbackInterface1::new();
|
|
let b = TakeCallbackInterface::new().unwrap();
|
|
b.a_with_callback_interface1(&a);
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn dict_methods() {
|
|
let mut a = CallbackInterface1::new();
|
|
a.foo(&Function::new_no_args(""));
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn dict_methods1() {
|
|
let mut a = CallbackInterface2::new();
|
|
a.foo(&Function::new_no_args(""));
|
|
a.bar(&Function::new_no_args(""));
|
|
}
|