test(napi): update test case for checking electron renderer crash (#1547)
(cherry picked from commit d22598dbb1082de8ac712de954cd5616c838a48d)
This commit is contained in:
parent
d8cfcfdfda
commit
0a0aa36c28
5 changed files with 18 additions and 3 deletions
|
@ -207,6 +207,7 @@ Generated by [AVA](https://avajs.dev).
|
||||||
export function withoutAbortController(a: number, b: number): Promise<number>␊
|
export function withoutAbortController(a: number, b: number): Promise<number>␊
|
||||||
export function withAbortController(a: number, b: number, signal: AbortSignal): Promise<number>␊
|
export function withAbortController(a: number, b: number, signal: AbortSignal): Promise<number>␊
|
||||||
export function callThreadsafeFunction(callback: (...args: any[]) => any): void␊
|
export function callThreadsafeFunction(callback: (...args: any[]) => any): void␊
|
||||||
|
export function callLongThreadsafeFunction(callback: (...args: any[]) => any): void␊
|
||||||
export function threadsafeFunctionThrowError(cb: (...args: any[]) => any): void␊
|
export function threadsafeFunctionThrowError(cb: (...args: any[]) => any): void␊
|
||||||
export function threadsafeFunctionFatalMode(cb: (...args: any[]) => any): void␊
|
export function threadsafeFunctionFatalMode(cb: (...args: any[]) => any): void␊
|
||||||
export function threadsafeFunctionFatalModeError(cb: (...args: any[]) => any): void␊
|
export function threadsafeFunctionFatalModeError(cb: (...args: any[]) => any): void␊
|
||||||
|
|
Binary file not shown.
|
@ -1,7 +1,7 @@
|
||||||
const { ipcRenderer } = require('electron')
|
const { ipcRenderer } = require('electron')
|
||||||
|
|
||||||
const { callThreadsafeFunction } = require('../index')
|
const { callLongThreadsafeFunction } = require('../index')
|
||||||
|
|
||||||
callThreadsafeFunction(() => {})
|
callLongThreadsafeFunction(() => {})
|
||||||
|
|
||||||
ipcRenderer.on('ping', () => ipcRenderer.send('pong'))
|
ipcRenderer.on('ping', () => ipcRenderer.send('pong'))
|
||||||
|
|
1
examples/napi/index.d.ts
vendored
1
examples/napi/index.d.ts
vendored
|
@ -197,6 +197,7 @@ export function createSymbol(): symbol
|
||||||
export function withoutAbortController(a: number, b: number): Promise<number>
|
export function withoutAbortController(a: number, b: number): Promise<number>
|
||||||
export function withAbortController(a: number, b: number, signal: AbortSignal): Promise<number>
|
export function withAbortController(a: number, b: number, signal: AbortSignal): Promise<number>
|
||||||
export function callThreadsafeFunction(callback: (...args: any[]) => any): void
|
export function callThreadsafeFunction(callback: (...args: any[]) => any): void
|
||||||
|
export function callLongThreadsafeFunction(callback: (...args: any[]) => any): void
|
||||||
export function threadsafeFunctionThrowError(cb: (...args: any[]) => any): void
|
export function threadsafeFunctionThrowError(cb: (...args: any[]) => any): void
|
||||||
export function threadsafeFunctionFatalMode(cb: (...args: any[]) => any): void
|
export function threadsafeFunctionFatalMode(cb: (...args: any[]) => any): void
|
||||||
export function threadsafeFunctionFatalModeError(cb: (...args: any[]) => any): void
|
export function threadsafeFunctionFatalModeError(cb: (...args: any[]) => any): void
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use std::thread;
|
use std::{thread, time::Duration};
|
||||||
|
|
||||||
use napi::{
|
use napi::{
|
||||||
bindgen_prelude::*,
|
bindgen_prelude::*,
|
||||||
|
@ -19,6 +19,19 @@ pub fn call_threadsafe_function(callback: JsFunction) -> Result<()> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[napi]
|
||||||
|
pub fn call_long_threadsafe_function(callback: JsFunction) -> Result<()> {
|
||||||
|
let tsfn: ThreadsafeFunction<u32, ErrorStrategy::CalleeHandled> =
|
||||||
|
callback.create_threadsafe_function(0, |ctx| Ok(vec![ctx.value + 1]))?;
|
||||||
|
thread::spawn(move || {
|
||||||
|
for n in 0..10 {
|
||||||
|
thread::sleep(Duration::from_millis(100));
|
||||||
|
tsfn.call(Ok(n), ThreadsafeFunctionCallMode::NonBlocking);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
#[napi]
|
#[napi]
|
||||||
pub fn threadsafe_function_throw_error(cb: JsFunction) -> Result<()> {
|
pub fn threadsafe_function_throw_error(cb: JsFunction) -> Result<()> {
|
||||||
let tsfn: ThreadsafeFunction<bool, ErrorStrategy::CalleeHandled> =
|
let tsfn: ThreadsafeFunction<bool, ErrorStrategy::CalleeHandled> =
|
||||||
|
|
Loading…
Reference in a new issue