この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2016年1月)

2016年1月30日

Bug-org 1242895 [non-e10s][TSF] Forcibly committing composition during TSF locking document fails to commit composition and makes "hidden" composition string
初回投稿日時: 2016年01月30日23時40分18秒
最終更新日時: 2016年01月30日23時40分38秒
カテゴリ: IME Mozilla Core Mozilla47 TSF Windows バグ修正
SNS: (list)

e10sモードを無効にしている状態で、TSFで未確定文字列が存在している時に、Javascriptからエディタの内容が変更され、その未確定文字列が強制確定されると、TIPは実際には確定しておらず、「見えない」未確定文字列が存在し、それへの入力が続いているというバグです。

e10sモードを無効にしている状態で強制確定が発生すると、TSFTextStoreはドキュメントをロックしたまま、TIPに未確定文字列を強制確定するように指示します。

しかし、TIPは自身がドキュメントを既にロックしているにも関わらず、同期的にドキュメントを再度ロックしようとし、これにもちろん失敗します。そのため、TIPは強制確定処理を中断し、未確定文字列をそのまま保持しますが、Gecko内部ではWebアプリに同期的に強制確定が行われたかのように偽装し、非同期で来るはずの強制確定結果を待ちます。

今回の修正ではこれを解決するために、ドキュメントロック中に強制確定のリクエストがTSFTextStoreに来た場合、ただちにTIPに強制確定を指示せずに、ドキュメントがアンロックされた時にそれを遅らせるようにしました。

関連するかもしれないエントリ

bug-org 1242895を含むエントリ