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

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

もずはっく日記(2015年6月)

2015年6月19日

Bug-org 1119133 Keyboard shortcut to toggle devtools docking mode between last two positions
初回投稿日時: 2015年06月19日17時22分28秒
カテゴリ: Mozilla Core Mozilla41 バグ修正
SNS: (list)

このバグ自体は私の修正ではないのですが、このバグを修正してテストを書いてみると、nsITextInputProcessorにバグがあってテストがパスしないということで、その修正だけを行いました。

nsITextInputProcessorbeginInputTransaction()が呼び出された際にその引数のDOM windowに対応するnsIWidgetのインスタンスからTextEventDispatcherを取得し、リンクします。

その後、そのnsITextInputProcessorが別のDOM windowと共にbeginInputTransaction()が呼び出された際に、それまでのTextEventDispatcherから新しいものに切り替えますが、リンクが解除されたTextEventDispatcherにその旨を通知していませんでした。そのため、すでにリンクしていないTextEventDispatcherIMEへの通知を既に別のものとリンクしているnsITextInputProcessorに通知し、デバッグビルドではそのバグを検知してクラッシュしていました。

今回の修正では、TextEventDispatcherEndInputTransaction()を追加し、nsITextInputProcessorは内部で明示的にリンクを解除するようになりました。JavascriptからnsITextInputProcessorを利用する場合には、これまでと変わらずbeginInputTransaction()のみの呼び出ししか必要ありません。これは、endInputTransaction()を設けてしまうと、これを呼び出し忘れたアドオン等によって他のアドオン等からの入力が再起動するまで阻害されてしまうことを防ぐためです。

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

bug-org 1119133を含むエントリ