NaCl tips; JavaScriptサイドのNaClモジュール由来のイベント群
NaClモジュールに由来してそのembed要素に発生し得るJavaScriptイベント群について全て実装してみた。備忘録として今回もテスト中のLabyrinthian - Wonder Rabbit Projectのリポジトリにtag 0.0.2を打って措いた。
JavaScriptのwrp.naclは汎用的なNaClを取り扱うライブラリーとして、new wrp.naclしたインスタンスに特殊化を施す設計方針。NaClのembed要素が発するイベント群は{loadstart,progress,error,abort,load,loadend,crash}。フロー的には:
loadstart ( => progress ) => load | error | abort => loadend ( => crash )
モジュールのロード中の挙動としては、loadstartを発行した後、
- .nexeの読み込みの進捗に応じて0回以上のprogressが発生
- エラーが起きればerrorが発生
- ユーザーが中断した場合にはabortが発生
- 無事に.nexeを読み込み終えたならloadが発生
そしてload|error|abortの何れかを経由した後に必ずloadendは呼ばれる。
その後はNaClモジュールがインスタンスを生成して実行開始され、実行中にクラッシュしてしまった場合にはcrashが発生する。
参考
※実はこのNaClモジュールのembed要素におけるJavaScriptへのイベントシステムはW3CのProgress Eventの仕様に沿って実装されていた。