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:
Tweet (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()というメソッドを追加しています。