Bug 1452536 - Don't gesture activate documents on non-printable key events. r=masayuki
We don't want key presses of keys which are likely to be intended to be
interaction with the browser or OS to gesture activate documents and unblock
autoplay videos. So don't gesture activate for key events which are modifier
keys, or which don't have a pseudo char code.
MozReview-Commit-ID: 6uyPmlzbAvg
--- a/dom/events/EventStateManager.cpp
+++ b/dom/events/EventStateManager.cpp
@@ -924,16 +924,26 @@ EventStateManager::NotifyTargetUserActiv
return;
}
nsIDocument* doc = node->OwnerDoc();
if (!doc || doc->HasBeenUserActivated()) {
return;
}
+ // Don't gesture activate for key events for keys which are likely
+ // to be interaction with the browser, OS, or likely to be scrolling.
+ WidgetKeyboardEvent* keyEvent = aEvent->AsKeyboardEvent();
+ if (keyEvent && (!keyEvent->PseudoCharCode() ||
+ (keyEvent->IsControl() && !keyEvent->IsAltGraph()) ||
+ (keyEvent->IsAlt() && !keyEvent->IsAltGraph()) ||
+ keyEvent->IsMeta() || keyEvent->IsOS())) {
+ return;
+ }
+
MOZ_ASSERT(aEvent->mMessage == eKeyDown ||
aEvent->mMessage == eMouseDown ||
aEvent->mMessage == ePointerDown ||
aEvent->mMessage == eTouchEnd);
doc->NotifyUserActivation();
}
already_AddRefed<EventStateManager>