blob: 9b6d3d1a129f53e4e4f04483e98028e97413fd5a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsISupports.idl"
interface nsIPrincipal;
interface mozIDOMWindow;
interface nsIArray;
webidl Element;
/**
* Interface provides the request type and its access.
*/
[scriptable, uuid(ef4db3b8-ca9c-4b1d-8f81-fd88ec32af13)]
interface nsIContentPermissionType : nsISupports {
/**
* The type of the permission request, such as
* "geolocation".
*/
readonly attribute ACString type;
/**
* The array of available options.
*/
readonly attribute nsIArray options; // ["choice1", "choice2"]
};
/**
* Interface allows access to a content to request
* permission to perform a privileged operation such as
* geolocation.
*/
[scriptable, uuid(875733da-0ac0-4a26-8c76-70a30876be46)]
interface nsIContentPermissionRequest : nsISupports {
/**
* The array will include the request types. Elements of this array are
* nsIContentPermissionType object.
*/
readonly attribute nsIArray types;
/*
* The principal of the permission request.
*/
readonly attribute nsIPrincipal principal;
/*
* The principal of the top-level page the permission request comes from.
*/
readonly attribute nsIPrincipal topLevelPrincipal;
/**
* The window or element that the permission request was
* originated in. Typically the element will be non-null
* in when using out of process content. window or
* element can be null but not both.
*/
readonly attribute mozIDOMWindow window;
readonly attribute Element element;
readonly attribute boolean hasValidTransientUserGestureActivation;
/**
* See nsIPermissionDelegateHandler.maybeUnsafePermissionDelegate.
*/
readonly attribute boolean isRequestDelegatedToUnsafeThirdParty;
/*
* Get delegate principal of the permission request. This will return nullptr,
* or request's principal or top level principal based on the delegate policy
* will be applied for a given type.
*
* @param aType the permission type to get
*/
nsIPrincipal getDelegatePrincipal(in ACString aType);
/**
* allow or cancel the request
*/
[can_run_script]
void cancel();
[can_run_script]
void allow([optional] in jsval choices); // {"type1": "choice1", "type2": "choiceA"}
};
/**
* Allows to show permission prompts via the UI for different types of requests,
* e.g. geolocation.
*/
[scriptable, function, uuid(F72DE90D-E954-4E69-9A61-917303029301)]
interface nsIContentPermissionPrompt : nsISupports {
/**
* Called when a request has been made to access
* privileged content apis
*/
void prompt(in nsIContentPermissionRequest request);
};
%{C++
#define NS_CONTENT_PERMISSION_PROMPT_CONTRACTID "@mozilla.org/content-permission/prompt;1"
%}
|