この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2015年8月)

2015年8月30日

Bug-org 930843 NS_UI_ACTIVATE should be dispatched as trusted event even if it's caused by untrusted event
初回投稿日時: 2015年08月30日09時51分19秒
カテゴリ: Events Mozilla Core Mozilla43 バグ修正
SNS: (list)

放置していたバグの修正です。NS_UI_ACTIVATEは、DOMActivateイベントの元です。ちなみに、DOMActivateイベントとは、マウスで要素をクリックした時にアクティブ状態になったことを通知するイベントですが、DOM Level 3では不採用が確定して削除できないか模索もされています。

それはさておき、今回のバグは、そのDOMActivateがuntrustedなマウスイベントによって発生した場合(例えばclickイベントを生成して要素上で発火した時や、click()メソッドでクリックを偽装した場合)、そのイベントのisTrustedを引き継いで、falseのままイベントを生成していました。

isTrustedはそのイベントがユーザエージェントから発火されたものかどうかを示します。つまり、このケースではクリックのエミュレーションが原因であっても、実際にアクティブになったからDOMActivateイベントを生成しているので、そのisTrusted属性は常にtrueでなくてはいけないのです。

今回の修正で、NS_UI_ACTIVATEが信頼できるソースから生成されたのかどうかを判断するにはWidgetEvent::mEvent::mIsTrustedが利用できなくなったので、それを検査していた(と思われる)箇所のために、InternalUIEvent::IsTrustable()というメソッドを追加しています。

関連するかもしれないエントリ

bug-org 930843を含むエントリ