mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 11:25:00 +00:00
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:
parent
bf7116a05c
commit
c61c10a2ce
@ -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
|
||||
);
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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]
|
||||
|
@ -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() {} };
|
@ -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.
|
||||
|
@ -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) {
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user