プリント

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