Bug-org 1203059 [non-e10s] Keyboard events which are reserved shortcuts in chrome shouldn't be fired on web content like e10s mode
初回投稿日時: 2016年10月15日21時59分57秒
最終更新日時: 2016年10月15日22時04分56秒
カテゴリ: Events KeyboardEvent Mozilla Core Mozilla48 バグ修正
SNS:
Tweet (list)
e10sモードではchromeが予約済みのショートカットキーのkeypress
イベントはWebコンテンツ上では発火しないようになっていましたが、それを非e10sモードでもそのような動作に修正すべきであるというバグです。
私は関与していなかったのですが、すでに関係者でディスカッションが行われ、ユーザが悪意あるWebサイトによって、キーボードだけで操作不能に陥らないように、いくつかのショートカットキーはWebコンテンツで上書きできないようにする、そのためにそもそも、イベントを発火しないようにする、ということになっていました。これは、Google Chrome、Edge、Safariの動作にあわせた変更決定です。
nsXBLWindowKeyHandler
は、XULのdocument
ノードにイベントリスナを設置し、キャプチャフェイズで真っ先に、keypress
イベントが予約されたキーコンビネーションのものかどうかを確認します。そこで、今回の修正では、この時に予約されていることが分かると、WidgetKeyboardEvent::mFlags::mOnlySystemGroupDispatchInContent
をtrue
にします。これがtrue
の場合、その名前の通り、そのイベントはWebコンテンツのノードではシステムグループに登録されているイベントリスナしか実行しなくなります(つまり、デフォルトグループのchrome、システムグループのchrome、システムグループのcontentのリスナでのみ実行されます)。
このため、Webコンテンツから見ると、予約済みのショートカットキーのkeypress
イベントは全く発火されないように見えることになります。
ちなみに予約済みショートカットキーは、Firefoxのソースコードをreserved="true"
で検索すると、XULの<command>
要素か<key>
要素がヒットしますので、これを参考にしてください。