Bug-org 825924 Form autocomplete does not properly reset
初回投稿日時: 2013年01月23日17時16分39秒
カテゴリ: Events Firefox Mozilla Core Mozilla21 バグ修正
SNS:
Tweet (list)
<input>
等に何文字か入力し、オートコンプリートの候補が絞られた後で、入力内容を全て選択し、コンテキストメニューからそれを切り取った後、再度入力を開始しても、候補が絞り込まれたままになっている、というバグです。Aliceさんのおかげで、regressionの原因がBug-org 668606の修正にあることが分かりました。
Bug-org 668606の修正では、エディタの種類に関係無く、inputイベント
を発生させるために、nsEditor
が内容の変更があった際にイベントを発生させるように修正しました。この際に、エディタのインターフェースから属性を一つ削除してシンプルにできる様になったのですが、この修正にミスがありました。
削除された属性は、inputイベント
をtrustedイベントとして生成するかどうかに関わるもので、セキュリティのために、イベントや、コマンドのハンドリングを開始した際にスタックに、HandlingTrustedAction
クラスのインスタンスを生成し、これが、nsEditor
に、trustedなinputイベント
を生成すべきかどうかを設定していました。この、クラスの生成に漏れがあった、というのがこのバグの直接の原因です。
しかし、別件でD3Eの仕様を読んでいる時に気になっていたのですが、例え、untrustedなイベントが原因でエディタに変更があったとしても、それは、trustedなinputイベント
を常に生成すべきなのではないか、逆に言うと、document.createEvent()
で生成しない限り、untrustedなイベントにはなるべきではないのではないかという疑問がありました。
この機会にそれをSmaugに確認してみたところ、やはり、nsEditor
は常にtrustedなinput
イベントを生成するべきだという意見でしたので、HandlingTrustedAction
クラスを廃止し、常に、trustedなinputイベント
を生成するように修正しました。
これにより、このバグが再現しないようになっています。
既に、Bug-org 698949の修正により、untrustedなキーイベントでエディタの内容が変更されて、オートコンプリート履歴をWebページのスクリプトで読まれてしまうバグは完全消滅していますので、この修正による、セキュリティ的な問題は既に無いと考えています。
ただし、inputイベント
のisTrusted
属性を監視しているWebアプリでは、なんらかの挙動の変化が発生する可能性があるので注意してください。