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
インターフェースを持ったインスタンスを生成してください。