Bug-org 1119133 Keyboard shortcut to toggle devtools docking mode between last two positions
初回投稿日時: 2015年06月19日17時22分28秒
カテゴリ: Mozilla Core Mozilla41 バグ修正
SNS:
Tweet (list)
このバグ自体は私の修正ではないのですが、このバグを修正してテストを書いてみると、nsITextInputProcessor
にバグがあってテストがパスしないということで、その修正だけを行いました。
nsITextInputProcessor
はbeginInputTransaction()
が呼び出された際にその引数のDOM windowに対応するnsIWidget
のインスタンスからTextEventDispatcher
を取得し、リンクします。
その後、そのnsITextInputProcessor
が別のDOM windowと共にbeginInputTransaction()
が呼び出された際に、それまでのTextEventDispatcher
から新しいものに切り替えますが、リンクが解除されたTextEventDispatcher
にその旨を通知していませんでした。そのため、すでにリンクしていないTextEventDispatcher
がIMEへの通知を既に別のものとリンクしているnsITextInputProcessor
に通知し、デバッグビルドではそのバグを検知してクラッシュしていました。
今回の修正では、TextEventDispatcher
にEndInputTransaction()
を追加し、nsITextInputProcessor
は内部で明示的にリンクを解除するようになりました。JavascriptからnsITextInputProcessor
を利用する場合には、これまでと変わらずbeginInputTransaction()
のみの呼び出ししか必要ありません。これは、endInputTransaction()
を設けてしまうと、これを呼び出し忘れたアドオン等によって他のアドオン等からの入力が再起動するまで阻害されてしまうことを防ぐためです。