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()を設けてしまうと、これを呼び出し忘れたアドオン等によって他のアドオン等からの入力が再起動するまで阻害されてしまうことを防ぐためです。