Bug-org 1056545 Cleanup event handlers of nsEditorEventListener and nsHTMLEditorEventListener
初回投稿日時: 2014-08-28 11:50:05
カテゴリ: Mozilla Core Mozilla34 バグ修正
SNS:
Tweet (list)
Netscape時代からの名残の残っている、nsEditorEventListenerとnsHTMLEditorEventListenerのコードを現在のコーディングルールにあわせて、一部、書き直そうというバグです。
この修正により、余分なvirtual callが削減され、イベントの妥当性検査が徹底され、Event.typeの文字列値ではなく、WidgetEvent::messageの整数をswitch文で比較するようになったので、イベントハンドリング時の処理が若干軽くなっています(パフォーマンスよりも、CPUの使用率が下がってるのではないかと)。
このため、chrome権限のあるJavascriptで、不正なイベントインターフェースで生成されたイベント(例えば、KeyboardEventで作られたmousedownイベント)は確実に無視されるようになっています。
ただし、nsFocusManagerの動作と整合性持たせるため、また、古いGeckoとの互換性のため、focusイベントとblurイベントは不適切なインターフェースで生成されていても、ハンドリングされるままにしてあります。ですので、new FocusEvent("focus", {});ではなく、new Event("focus", {});と記述しても、例外的にエディタでもフォーカスの移動が発生したものとして処理されます。ただし、この場合は従来通り、Event.typeの文字列比較が発生しますので、新規にコードを書き下ろす場合は、正しく、あるべきFocusEventインターフェースを持ったインスタンスを生成してください。