Bug 1731994: part 8) Rename nsIContentPermissionRequest's isHandlingUserInput to hasValidTransientUserGestureActivation. r=edgar

It's more accurate.

Differential Revision: https://phabricator.services.mozilla.com/D126916
This commit is contained in:
Mirko Brodesser 2021-10-04 12:16:00 +00:00
parent bf7116a05c
commit c61c10a2ce
11 changed files with 61 additions and 39 deletions

View File

@ -4895,7 +4895,10 @@ ContentPermissionPrompt.prototype = {
let userInputHistogram = Services.telemetry.getKeyedHistogramById(
"PERMISSION_REQUEST_HANDLING_USER_INPUT"
);
userInputHistogram.add(type, request.isHandlingUserInput);
userInputHistogram.add(
type,
request.hasValidTransientUserGestureActivation
);
},
};

View File

@ -193,7 +193,7 @@ var PermissionPromptPrototype = {
/**
* If true, the prompt will be cancelled automatically unless
* request.isHandlingUserInput is true.
* request.hasValidTransientUserGestureActivation is true.
*/
get requiresUserInput() {
return false;
@ -415,7 +415,10 @@ var PermissionPromptPrototype = {
}
}
if (this.requiresUserInput && !this.request.isHandlingUserInput) {
if (
this.requiresUserInput &&
!this.request.hasValidTransientUserGestureActivation
) {
if (this.postPromptEnabled) {
this.postPrompt();
}

View File

@ -45,7 +45,7 @@ class ContentPermissionRequestParent : public PContentPermissionRequestParent {
ContentPermissionRequestParent(
const nsTArray<PermissionRequest>& aRequests, Element* aElement,
nsIPrincipal* aPrincipal, nsIPrincipal* aTopLevelPrincipal,
const bool aIsHandlingUserInput,
const bool aHasValidTransientUserGestureActivation,
const bool aIsRequestDelegatedToUnsafeThirdParty);
virtual ~ContentPermissionRequestParent();
@ -54,7 +54,7 @@ class ContentPermissionRequestParent : public PContentPermissionRequestParent {
nsCOMPtr<nsIPrincipal> mPrincipal;
nsCOMPtr<nsIPrincipal> mTopLevelPrincipal;
nsCOMPtr<Element> mElement;
bool mIsHandlingUserInput;
bool mHasValidTransientUserGestureActivation;
// See nsIPermissionDelegateHandler.maybeUnsafePermissionDelegate.
bool mIsRequestDelegatedToUnsafeThirdParty;
@ -73,7 +73,7 @@ class ContentPermissionRequestParent : public PContentPermissionRequestParent {
ContentPermissionRequestParent::ContentPermissionRequestParent(
const nsTArray<PermissionRequest>& aRequests, Element* aElement,
nsIPrincipal* aPrincipal, nsIPrincipal* aTopLevelPrincipal,
const bool aIsHandlingUserInput,
const bool aHasValidTransientUserGestureActivation,
const bool aIsRequestDelegatedToUnsafeThirdParty) {
MOZ_COUNT_CTOR(ContentPermissionRequestParent);
@ -81,7 +81,8 @@ ContentPermissionRequestParent::ContentPermissionRequestParent(
mTopLevelPrincipal = aTopLevelPrincipal;
mElement = aElement;
mRequests = aRequests.Clone();
mIsHandlingUserInput = aIsHandlingUserInput;
mHasValidTransientUserGestureActivation =
aHasValidTransientUserGestureActivation;
mIsRequestDelegatedToUnsafeThirdParty = aIsRequestDelegatedToUnsafeThirdParty;
}
@ -239,10 +240,11 @@ PContentPermissionRequestParent*
nsContentPermissionUtils::CreateContentPermissionRequestParent(
const nsTArray<PermissionRequest>& aRequests, Element* aElement,
nsIPrincipal* aPrincipal, nsIPrincipal* aTopLevelPrincipal,
const bool aIsHandlingUserInput,
const bool aHasValidTransientUserGestureActivation,
const bool aIsRequestDelegatedToUnsafeThirdParty, const TabId& aTabId) {
PContentPermissionRequestParent* parent = new ContentPermissionRequestParent(
aRequests, aElement, aPrincipal, aTopLevelPrincipal, aIsHandlingUserInput,
aRequests, aElement, aPrincipal, aTopLevelPrincipal,
aHasValidTransientUserGestureActivation,
aIsRequestDelegatedToUnsafeThirdParty);
ContentPermissionRequestParentMap()[parent] = aTabId;
@ -279,8 +281,9 @@ nsresult nsContentPermissionUtils::AskPermission(
rv = aRequest->GetTopLevelPrincipal(getter_AddRefs(topLevelPrincipal));
NS_ENSURE_SUCCESS(rv, rv);
bool isHandlingUserInput;
rv = aRequest->GetIsHandlingUserInput(&isHandlingUserInput);
bool hasValidTransientUserGestureActivation;
rv = aRequest->GetHasValidTransientUserGestureActivation(
&hasValidTransientUserGestureActivation);
NS_ENSURE_SUCCESS(rv, rv);
bool isRequestDelegatedToUnsafeThirdParty;
@ -294,7 +297,8 @@ nsresult nsContentPermissionUtils::AskPermission(
req->IPDLAddRef();
ContentChild::GetSingleton()->SendPContentPermissionRequestConstructor(
req, permArray, IPC::Principal(principal),
IPC::Principal(topLevelPrincipal), isHandlingUserInput,
IPC::Principal(topLevelPrincipal),
hasValidTransientUserGestureActivation,
isRequestDelegatedToUnsafeThirdParty, child->GetTabId());
ContentPermissionRequestChildMap()[req.get()] = child->GetTabId();
@ -397,7 +401,7 @@ ContentPermissionRequestBase::ContentPermissionRequestBase(
mWindow(aWindow),
mPrefName(aPrefName),
mType(aType),
mIsHandlingUserInput(false),
mHasValidTransientUserGestureActivation(false),
mIsRequestDelegatedToUnsafeThirdParty(false) {
if (!aWindow) {
return;
@ -408,7 +412,8 @@ ContentPermissionRequestBase::ContentPermissionRequestBase(
return;
}
mIsHandlingUserInput = doc->HasValidTransientUserGestureActivation();
mHasValidTransientUserGestureActivation =
doc->HasValidTransientUserGestureActivation();
mPermissionHandler = doc->GetPermissionDelegateHandler();
if (mPermissionHandler) {
@ -467,9 +472,10 @@ ContentPermissionRequestBase::GetElement(Element** aElement) {
}
NS_IMETHODIMP
ContentPermissionRequestBase::GetIsHandlingUserInput(
bool* aIsHandlingUserInput) {
*aIsHandlingUserInput = mIsHandlingUserInput;
ContentPermissionRequestBase::GetHasValidTransientUserGestureActivation(
bool* aHasValidTransientUserGestureActivation) {
*aHasValidTransientUserGestureActivation =
mHasValidTransientUserGestureActivation;
return NS_OK;
}
@ -735,13 +741,14 @@ nsContentPermissionRequestProxy::GetElement(Element** aRequestingElement) {
}
NS_IMETHODIMP
nsContentPermissionRequestProxy::GetIsHandlingUserInput(
bool* aIsHandlingUserInput) {
NS_ENSURE_ARG_POINTER(aIsHandlingUserInput);
nsContentPermissionRequestProxy::GetHasValidTransientUserGestureActivation(
bool* aHasValidTransientUserGestureActivation) {
NS_ENSURE_ARG_POINTER(aHasValidTransientUserGestureActivation);
if (mParent == nullptr) {
return NS_ERROR_FAILURE;
}
*aIsHandlingUserInput = mParent->mIsHandlingUserInput;
*aHasValidTransientUserGestureActivation =
mParent->mHasValidTransientUserGestureActivation;
return NS_OK;
}

View File

@ -76,7 +76,7 @@ class nsContentPermissionUtils {
static PContentPermissionRequestParent* CreateContentPermissionRequestParent(
const nsTArray<PermissionRequest>& aRequests, Element* aElement,
nsIPrincipal* aPrincipal, nsIPrincipal* aTopLevelPrincipal,
const bool aIsHandlingUserInput,
const bool aHasValidTransientUserGestureActivation,
const bool aIsRequestDelegatedToUnsafeThirdParty, const TabId& aTabId);
static nsresult AskPermission(nsIContentPermissionRequest* aRequest,
@ -112,7 +112,8 @@ class ContentPermissionRequestBase : public nsIContentPermissionRequest {
NS_IMETHOD GetTopLevelPrincipal(nsIPrincipal** aTopLevelPrincipal) override;
NS_IMETHOD GetWindow(mozIDOMWindow** aWindow) override;
NS_IMETHOD GetElement(mozilla::dom::Element** aElement) override;
NS_IMETHOD GetIsHandlingUserInput(bool* aIsHandlingUserInput) override;
NS_IMETHOD GetHasValidTransientUserGestureActivation(
bool* aHasValidTransientUserGestureActivation) override;
NS_IMETHOD GetIsRequestDelegatedToUnsafeThirdParty(
bool* aIsRequestDelegatedToUnsafeThirdParty) override;
// Overrides for Allow() and Cancel() aren't provided by this class.
@ -162,7 +163,7 @@ class ContentPermissionRequestBase : public nsIContentPermissionRequest {
// The type of the request, such as "autoplay-media-audible".
const nsCString mType;
bool mIsHandlingUserInput;
bool mHasValidTransientUserGestureActivation;
// See nsIPermissionDelegateHandler.maybeUnsafePermissionDelegate`.
bool mIsRequestDelegatedToUnsafeThirdParty;

View File

@ -73,7 +73,7 @@ support-files =
[test_fileconstructor.xhtml]
[test_input_value_set_preserve_undo.xhtml]
[test_nsITextInputProcessor.xhtml]
[test_permission_isHandlingUserInput.xhtml]
[test_permission_hasValidTransientUserActivation.xhtml]
support-files = ../dummy.html
[test_range_getClientRectsAndTexts.html]
[test_title.xhtml]

View File

@ -2,9 +2,9 @@
<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<!--
Tests that the isHandlingUserInput attribute on permission requests is set correctly.
Tests that the hasValidTransientUserGestureActivation attribute on permission requests is set correctly.
-->
<window title="isHandlingUserInput test" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<window title="hasValidTransientUserGestureActivation test" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
@ -20,14 +20,14 @@
let frame = document.getElementById("frame");
function checkPermissionRequest(permission, isHandlingUserInput) {
function checkPermissionRequest(permission, hasValidTransientUserGestureActivation) {
return new Promise(function(resolve) {
let TestIntegration = (base) => ({
__proto__: base,
createPermissionPrompt(type, request) {
is(type, permission, `Has correct permission type ${permission}.`);
is(request.isHandlingUserInput, isHandlingUserInput,
"The isHandlingUserInput attribute is set correctly.");
is(request.hasValidTransientUserGestureActivation, hasValidTransientUserGestureActivation,
"The hasValidTransientUserGestureActivation attribute is set correctly.");
Integration.contentPermission.unregister(TestIntegration);
resolve();
return { prompt() {} };

View File

@ -59,7 +59,7 @@ interface nsIContentPermissionRequest : nsISupports {
readonly attribute mozIDOMWindow window;
readonly attribute Element element;
readonly attribute boolean isHandlingUserInput;
readonly attribute boolean hasValidTransientUserGestureActivation;
/**
* See nsIPermissionDelegateHandler.maybeUnsafePermissionDelegate.

View File

@ -510,7 +510,7 @@ NotificationPermissionRequest::Run() {
break;
}
if (!mIsHandlingUserInput &&
if (!mHasValidTransientUserGestureActivation &&
!StaticPrefs::dom_webnotifications_requireuserinteraction()) {
nsCOMPtr<Document> doc = mWindow->GetExtantDoc();
if (doc) {
@ -578,7 +578,7 @@ nsresult NotificationPermissionRequest::ResolvePromise() {
// automatically and we are not handling user input, then log a
// warning in the current document that this happened because
// Notifications require a user gesture.
if (!mIsHandlingUserInput &&
if (!mHasValidTransientUserGestureActivation &&
StaticPrefs::dom_webnotifications_requireuserinteraction()) {
nsCOMPtr<Document> doc = mWindow->GetExtantDoc();
if (doc) {

View File

@ -75,7 +75,7 @@ Push.prototype = {
askPermission() {
console.debug("askPermission()");
let isHandlingUserInput = this._window.document
let hasValidTransientUserGestureActivation = this._window.document
.hasValidTransientUserGestureActivation;
return this.createPromise((resolve, reject) => {
@ -95,7 +95,11 @@ Push.prototype = {
return;
}
this._requestPermission(isHandlingUserInput, resolve, permissionDenied);
this._requestPermission(
hasValidTransientUserGestureActivation,
resolve,
permissionDenied
);
});
},
@ -199,7 +203,11 @@ Push.prototype = {
return permission;
},
_requestPermission(isHandlingUserInput, allowCallback, cancelCallback) {
_requestPermission(
hasValidTransientUserGestureActivation,
allowCallback,
cancelCallback
) {
// Create an array with a single nsIContentPermissionType element.
let type = {
type: "desktop-notification",
@ -216,7 +224,7 @@ Push.prototype = {
QueryInterface: ChromeUtils.generateQI(["nsIContentPermissionRequest"]),
types: typeArray,
principal: this._principal,
isHandlingUserInput,
hasValidTransientUserGestureActivation,
topLevelPrincipal: this._topLevelPrincipal,
allow: allowCallback,
cancel: cancelCallback,

View File

@ -228,7 +228,7 @@ class GeckoViewPermission {
const perm = types.queryElementAt(0, Ci.nsIContentPermissionType);
if (
perm.type === "desktop-notification" &&
!aRequest.isHandlingUserInput &&
!aRequest.hasValidTransientUserGestureActivation &&
Services.prefs.getBoolPref(
"dom.webnotifications.requireuserinteraction",
true

View File

@ -99,7 +99,7 @@ avoid-blacklist-and-whitelist:
- dom/base/nsTreeSanitizer.h
- dom/base/test/browser_multiple_popups.js
- dom/base/test/browser_timeout_throttling_with_audio_playback.js
- dom/base/test/chrome/test_permission_isHandlingUserInput.xhtml
- dom/base/test/chrome/test_permission_hasValidTransientUserActivation.xhtml
- dom/bindings/Codegen.py
- dom/bindings/parser/WebIDL.py
- dom/bindings/RemoteObjectProxy.cpp