https://www.chromium.org/developers/design-documents/printing
プリント
- プリントは黄色ボックスのところで始められる。ユーザが始めるかスクリプトが始める。
- プリンタスプールはプリントワーカスレッドで行われる。
- レンダラスレッドはブロックする。以下のようなことが起こるとデッドロックする。
- レンダラがブラウザUIスレッドに同期メッセージを送る(暗黙的にIOスレッドを経由する)
- ブラウザスレッドがインスタンスのためのダイアログをPrintDlgEx()で表示する。
- タブのクライアントエリアが(HTML表示エリア)無能化を受け取る;表示の再生成要求。
- (または)ウインドウ化されたプラグインがWM_PAINTメッセージを受け取る。
- ウインドウ化されたプラグインがNPAPI_ExecuteJavascript()を呼ぶ。
- これはレンダラを同期で呼ぶ。
- しかしレンダラはもはやメッセージを処理しない ➔ デッドロック。
よって、レンダラをブロックしない方法が考えられている。プリント用にWebViewImpl/WebFrameImplをコピーし、フレームのコピーを活動してない状態でつくる。これにより同期メッセージを削除できる。
Page last modified on July 17, 2018, at 06:03 AM
Powered by
PmWiki