Struct xpcom::interfaces::nsIContentPolicy
[−]
[src]
#[repr(C)]pub struct nsIContentPolicy { /* fields omitted */ }
interface nsIContentPolicy : nsISupports
/**
* Interface for content policy mechanism. Implementations of this
* interface can be used to control loading of various types of out-of-line
* content, or processing of certain types of in-line content.
*
* WARNING: do not block the caller from shouldLoad or shouldProcess (e.g.,
* by launching a dialog to prompt the user for something).
*/
Methods
impl nsIContentPolicy
[src]
pub fn coerce<T: nsIContentPolicyCoerce>(&self) -> &T
[src]
Cast this nsIContentPolicy
to one of its base interfaces.
impl nsIContentPolicy
[src]
pub const TYPE_INVALID: i64
TYPE_INVALID: i64 = 0
/**
* Indicates a unset or bogus policy type.
*/
pub const TYPE_OTHER: i64
TYPE_OTHER: i64 = 1
/**
* Gecko/Firefox developers: Avoid using TYPE_OTHER. Especially for
* requests that are coming from webpages. Or requests in general which
* you expect that security checks will be done on.
* Always use a more specific type if one is available. And do not hesitate
* to add more types as appropriate.
* But if you are fairly sure that no one would care about your more specific
* type, then it's ok to use TYPE_OTHER.
*
* Extension developers: Whenever it is reasonable, use one of the existing
* content types. If none of the existing content types are right for
* something you are doing, file a bug in the Core/DOM component that
* includes a patch that adds your new content type to the end of the list of
* TYPE_* constants here. But, don't start using your new content type until
* your patch has been accepted, because it will be uncertain what exact
* value and name your new content type will have; in that interim period,
* use TYPE_OTHER. In your patch, document your new content type in the style
* of the existing ones. In the bug you file, provide a more detailed
* description of the new type of content you want Gecko to support, so that
* the existing implementations of nsIContentPolicy can be properly modified
* to deal with that new type of content.
*
* Implementations of nsIContentPolicy should treat this the same way they
* treat unknown types, because existing users of TYPE_OTHER may be converted
* to use new content types.
*
* Note that the TYPE_INTERNAL_* constants are never passed to content
* policy implementations. They are mapped to other TYPE_* constants, and
* are only intended for internal usage inside Gecko.
*/
pub const TYPE_SCRIPT: i64
TYPE_SCRIPT: i64 = 2
/**
* Indicates an executable script (such as JavaScript).
*/
pub const TYPE_IMAGE: i64
TYPE_IMAGE: i64 = 3
/**
* Indicates an image (e.g., IMG elements).
*/
pub const TYPE_STYLESHEET: i64
TYPE_STYLESHEET: i64 = 4
/**
* Indicates a stylesheet (e.g., STYLE elements).
*/
pub const TYPE_OBJECT: i64
TYPE_OBJECT: i64 = 5
/**
* Indicates a generic object (plugin-handled content typically falls under
* this category).
*/
pub const TYPE_DOCUMENT: i64
TYPE_DOCUMENT: i64 = 6
/**
* Indicates a document at the top-level (i.e., in a browser).
*/
pub const TYPE_SUBDOCUMENT: i64
TYPE_SUBDOCUMENT: i64 = 7
/**
* Indicates a document contained within another document (e.g., IFRAMEs,
* FRAMES, and OBJECTs).
*/
pub const TYPE_REFRESH: i64
TYPE_REFRESH: i64 = 8
/**
* Indicates a timed refresh.
*
* shouldLoad will never get this, because it does not represent content
* to be loaded (the actual load triggered by the refresh will go through
* shouldLoad as expected).
*
* shouldProcess will get this for, e.g., META Refresh elements and HTTP
* Refresh headers.
*/
pub const TYPE_XBL: i64
TYPE_XBL: i64 = 9
/**
* Indicates an XBL binding request, triggered either by -moz-binding CSS
* property.
*/
pub const TYPE_PING: i64
TYPE_PING: i64 = 10
/**
* Indicates a ping triggered by a click on <A PING="..."> element.
*/
pub const TYPE_XMLHTTPREQUEST: i64
TYPE_XMLHTTPREQUEST: i64 = 11
/**
* Indicates an XMLHttpRequest. Also used for document.load and for EventSource.
*/
pub const TYPE_DATAREQUEST: i64
TYPE_DATAREQUEST: i64 = 11
pub const TYPE_OBJECT_SUBREQUEST: i64
TYPE_OBJECT_SUBREQUEST: i64 = 12
/**
* Indicates a request by a plugin.
*/
pub const TYPE_DTD: i64
TYPE_DTD: i64 = 13
/**
* Indicates a DTD loaded by an XML document.
*/
pub const TYPE_FONT: i64
TYPE_FONT: i64 = 14
/**
* Indicates a font loaded via @font-face rule.
*/
pub const TYPE_MEDIA: i64
TYPE_MEDIA: i64 = 15
/**
* Indicates a video or audio load.
*/
pub const TYPE_WEBSOCKET: i64
TYPE_WEBSOCKET: i64 = 16
/**
* Indicates a WebSocket load.
*/
pub const TYPE_CSP_REPORT: i64
TYPE_CSP_REPORT: i64 = 17
/**
* Indicates a Content Security Policy report.
*/
pub const TYPE_XSLT: i64
TYPE_XSLT: i64 = 18
/**
* Indicates a style sheet transformation.
*/
pub const TYPE_BEACON: i64
TYPE_BEACON: i64 = 19
/**
* Indicates a beacon post.
*/
pub const TYPE_FETCH: i64
TYPE_FETCH: i64 = 20
/**
* Indicates a load initiated by the fetch() function from the Fetch
* specification.
*/
pub const TYPE_IMAGESET: i64
TYPE_IMAGESET: i64 = 21
/**
* Indicates a <img srcset> or <picture> request.
*/
pub const TYPE_WEB_MANIFEST: i64
TYPE_WEB_MANIFEST: i64 = 22
/**
* Indicates a web manifest.
*/
pub const TYPE_SAVEAS_DOWNLOAD: i64
TYPE_SAVEAS_DOWNLOAD: i64 = 43
/**
* Indicates an save-as link download from the front-end code.
*/
pub const TYPE_INTERNAL_SCRIPT: i64
TYPE_INTERNAL_SCRIPT: i64 = 23
/**
* Indicates an internal constant for scripts loaded through script
* elements.
*
* This will be mapped to TYPE_SCRIPT before being passed to content policy
* implementations.
*/
pub const TYPE_INTERNAL_WORKER: i64
TYPE_INTERNAL_WORKER: i64 = 24
/**
* Indicates an internal constant for scripts loaded through a dedicated
* worker.
*
* This will be mapped to TYPE_SCRIPT before being passed to content policy
* implementations.
*/
pub const TYPE_INTERNAL_SHARED_WORKER: i64
TYPE_INTERNAL_SHARED_WORKER: i64 = 25
/**
* Indicates an internal constant for scripts loaded through a shared
* worker.
*
* This will be mapped to TYPE_SCRIPT before being passed to content policy
* implementations.
*/
pub const TYPE_INTERNAL_EMBED: i64
TYPE_INTERNAL_EMBED: i64 = 26
/**
* Indicates an internal constant for content loaded from embed elements.
*
* This will be mapped to TYPE_OBJECT.
*/
pub const TYPE_INTERNAL_OBJECT: i64
TYPE_INTERNAL_OBJECT: i64 = 27
/**
* Indicates an internal constant for content loaded from object elements.
*
* This will be mapped to TYPE_OBJECT.
*/
pub const TYPE_INTERNAL_FRAME: i64
TYPE_INTERNAL_FRAME: i64 = 28
/**
* Indicates an internal constant for content loaded from frame elements.
*
* This will be mapped to TYPE_SUBDOCUMENT.
*/
pub const TYPE_INTERNAL_IFRAME: i64
TYPE_INTERNAL_IFRAME: i64 = 29
/**
* Indicates an internal constant for content loaded from iframe elements.
*
* This will be mapped to TYPE_SUBDOCUMENT.
*/
pub const TYPE_INTERNAL_AUDIO: i64
TYPE_INTERNAL_AUDIO: i64 = 30
/**
* Indicates an internal constant for content loaded from audio elements.
*
* This will be mapped to TYPE_MEDIA.
*/
pub const TYPE_INTERNAL_VIDEO: i64
TYPE_INTERNAL_VIDEO: i64 = 31
/**
* Indicates an internal constant for content loaded from video elements.
*
* This will be mapped to TYPE_MEDIA.
*/
pub const TYPE_INTERNAL_TRACK: i64
TYPE_INTERNAL_TRACK: i64 = 32
/**
* Indicates an internal constant for content loaded from track elements.
*
* This will be mapped to TYPE_MEDIA.
*/
pub const TYPE_INTERNAL_XMLHTTPREQUEST: i64
TYPE_INTERNAL_XMLHTTPREQUEST: i64 = 33
/**
* Indicates an internal constant for an XMLHttpRequest.
*
* This will be mapped to TYPE_XMLHTTPREQUEST.
*/
pub const TYPE_INTERNAL_EVENTSOURCE: i64
TYPE_INTERNAL_EVENTSOURCE: i64 = 34
/**
* Indicates an internal constant for EventSource.
*
* This will be mapped to TYPE_DATAREQUEST.
*/
pub const TYPE_INTERNAL_SERVICE_WORKER: i64
TYPE_INTERNAL_SERVICE_WORKER: i64 = 35
/**
* Indicates an internal constant for scripts loaded through a service
* worker.
*
* This will be mapped to TYPE_SCRIPT before being passed to content policy
* implementations.
*/
pub const TYPE_INTERNAL_SCRIPT_PRELOAD: i64
TYPE_INTERNAL_SCRIPT_PRELOAD: i64 = 36
/**
* Indicates an internal constant for *preloaded* scripts
* loaded through script elements.
*
* This will be mapped to TYPE_SCRIPT before being passed
* to content policy implementations.
*/
pub const TYPE_INTERNAL_IMAGE: i64
TYPE_INTERNAL_IMAGE: i64 = 37
/**
* Indicates an internal constant for normal images.
*
* This will be mapped to TYPE_IMAGE before being passed
* to content policy implementations.
*/
pub const TYPE_INTERNAL_IMAGE_PRELOAD: i64
TYPE_INTERNAL_IMAGE_PRELOAD: i64 = 38
/**
* Indicates an internal constant for *preloaded* images.
*
* This will be mapped to TYPE_IMAGE before being passed
* to content policy implementations.
*/
pub const TYPE_INTERNAL_STYLESHEET: i64
TYPE_INTERNAL_STYLESHEET: i64 = 39
/**
* Indicates an internal constant for normal stylesheets.
*
* This will be mapped to TYPE_STYLESHEET before being passed
* to content policy implementations.
*/
pub const TYPE_INTERNAL_STYLESHEET_PRELOAD: i64
TYPE_INTERNAL_STYLESHEET_PRELOAD: i64 = 40
/**
* Indicates an internal constant for *preloaded* stylesheets.
*
* This will be mapped to TYPE_STYLESHEET before being passed
* to content policy implementations.
*/
pub const TYPE_INTERNAL_IMAGE_FAVICON: i64
TYPE_INTERNAL_IMAGE_FAVICON: i64 = 41
/**
* Indicates an internal constant for favicon.
*
* This will be mapped to TYPE_IMAGE before being passed
* to content policy implementations.
*/
pub const TYPE_INTERNAL_WORKER_IMPORT_SCRIPTS: i64
TYPE_INTERNAL_WORKER_IMPORT_SCRIPTS: i64 = 42
/**
* Indicates an importScripts() inside a worker script.
*
* This will be mapped to TYPE_SCRIPT before being passed to content policy
* implementations.
*/
pub const REJECT_REQUEST: i64
REJECT_REQUEST: i64 = -1
/**
* Returned from shouldLoad or shouldProcess if the load or process request
* is rejected based on details of the request.
*/
pub const REJECT_TYPE: i64
REJECT_TYPE: i64 = -2
/**
* Returned from shouldLoad or shouldProcess if the load/process is rejected
* based solely on its type (of the above flags).
*
* NOTE that it is not meant to stop future requests for this type--only the
* current request.
*/
pub const REJECT_SERVER: i64
REJECT_SERVER: i64 = -3
/**
* Returned from shouldLoad or shouldProcess if the load/process is rejected
* based on the server it is hosted on or requested from (aContentLocation or
* aRequestOrigin), e.g., if you block an IMAGE because it is served from
* goatse.cx (even if you don't necessarily block other types from that
* server/domain).
*
* NOTE that it is not meant to stop future requests for this server--only the
* current request.
*/
pub const REJECT_OTHER: i64
REJECT_OTHER: i64 = -4
/**
* Returned from shouldLoad or shouldProcess if the load/process is rejected
* based on some other criteria. Mozilla callers will handle this like
* REJECT_REQUEST; third-party implementors may, for example, use this to
* direct their own callers to consult the extra parameter for additional
* details.
*/
pub const ACCEPT: i64
ACCEPT: i64 = 1
/**
* Returned from shouldLoad or shouldProcess if the load or process request
* is not rejected.
*/
pub unsafe fn ShouldLoad(
&self,
aContentType: nsContentPolicyType,
aContentLocation: *const nsIURI,
aRequestOrigin: *const nsIURI,
aContext: *const nsISupports,
aMimeTypeGuess: &nsACString,
aExtra: *const nsISupports,
aRequestPrincipal: *const nsIPrincipal,
_retval: *mut int16_t
) -> nsresult
[src]
&self,
aContentType: nsContentPolicyType,
aContentLocation: *const nsIURI,
aRequestOrigin: *const nsIURI,
aContext: *const nsISupports,
aMimeTypeGuess: &nsACString,
aExtra: *const nsISupports,
aRequestPrincipal: *const nsIPrincipal,
_retval: *mut int16_t
) -> nsresult
/**
* Should the resource at this location be loaded?
* ShouldLoad will be called before loading the resource at aContentLocation
* to determine whether to start the load at all.
*
* @param aContentType the type of content being tested. This will be one
* one of the TYPE_* constants.
*
* @param aContentLocation the location of the content being checked; must
* not be null
*
* @param aRequestOrigin OPTIONAL. the location of the resource that
* that is loading the request. This will generally
* be the URI of the loading principal for the
* resulting request (as determined by its
* LoadInfo), but may vary depending on the
* caller. Can be null if inapplicable.
*
* @param aContext OPTIONAL. the nsIDOMNode or nsIDOMWindow that
* initiated the request, or something that can QI
* to one of those; can be null if inapplicable.
* Note that for navigation events (new windows and
* link clicks), this is the NEW window.
*
* @param aMimeTypeGuess OPTIONAL. a guess for the requested content's
* MIME type, based on information available to
* the request initiator (e.g., an OBJECT's type
* attribute); does not reliably reflect the
* actual MIME type of the requested content
*
* @param aExtra an OPTIONAL argument, pass-through for non-Gecko
* callers to pass extra data to callees.
*
* @param aRequestPrincipal an OPTIONAL argument, defines the principal that
* caused the load. This is optional only for
* non-gecko code: all gecko code should set this
* argument. This should generally be the same as
* the triggering principal for the resulting
* request (as determined by its LoadInfo), but may
* vary depending on the caller. Sometimes it will
* be the loading principal or final channel
* principal instead.
*
* @return ACCEPT or REJECT_*
*
* @note shouldLoad can be called while the DOM and layout of the document
* involved is in an inconsistent state. This means that implementors of
* this method MUST NOT do any of the following:
* 1) Modify the DOM in any way (e.g. setting attributes is a no-no).
* 2) Query any DOM properties that depend on layout (e.g. offset*
* properties).
* 3) Query any DOM properties that depend on style (e.g. computed style).
* 4) Query any DOM properties that depend on the current state of the DOM
* outside the "context" node (e.g. lengths of node lists).
* 5) [JavaScript implementations only] Access properties of any sort on any
* object without using XPCNativeWrapper (either explicitly or
* implicitly). Due to various DOM0 things, this leads to item 4.
* If you do any of these things in your shouldLoad implementation, expect
* unpredictable behavior, possibly including crashes, content not showing
* up, content showing up doubled, etc. If you need to do any of the things
* above, do them off timeout or event.
*/
short shouldLoad (in nsContentPolicyType aContentType, in nsIURI aContentLocation, in nsIURI aRequestOrigin, in nsISupports aContext, in ACString aMimeTypeGuess, in nsISupports aExtra, [optional] in nsIPrincipal aRequestPrincipal);
pub unsafe fn ShouldProcess(
&self,
aContentType: nsContentPolicyType,
aContentLocation: *const nsIURI,
aRequestOrigin: *const nsIURI,
aContext: *const nsISupports,
aMimeType: &nsACString,
aExtra: *const nsISupports,
aRequestPrincipal: *const nsIPrincipal,
_retval: *mut int16_t
) -> nsresult
[src]
&self,
aContentType: nsContentPolicyType,
aContentLocation: *const nsIURI,
aRequestOrigin: *const nsIURI,
aContext: *const nsISupports,
aMimeType: &nsACString,
aExtra: *const nsISupports,
aRequestPrincipal: *const nsIPrincipal,
_retval: *mut int16_t
) -> nsresult
/**
* Should the resource be processed?
* ShouldProcess will be called once all the information passed to it has
* been determined about the resource, typically after part of the resource
* has been loaded.
*
* @param aContentType the type of content being tested. This will be one
* one of the TYPE_* constants.
*
* @param aContentLocation OPTIONAL; the location of the resource being
* requested: MAY be, e.g., a post-redirection URI
* for the resource.
*
* @param aRequestOrigin OPTIONAL. the location of the resource that
* initiated this load request; can be null if
* inapplicable
*
* @param aContext OPTIONAL. the nsIDOMNode or nsIDOMWindow that
* initiated the request, or something that can QI
* to one of those; can be null if inapplicable.
*
* @param aMimeType the MIME type of the requested resource (e.g.,
* image/png), as reported by the networking library,
* if available (may be empty if inappropriate for
* the type, e.g., TYPE_REFRESH).
*
* @param aExtra an OPTIONAL argument, pass-through for non-Gecko
* callers to pass extra data to callees.
*
* @return ACCEPT or REJECT_*
*
* @note shouldProcess can be called while the DOM and layout of the document
* involved is in an inconsistent state. See the note on shouldLoad to see
* what this means for implementors of this method.
*/
short shouldProcess (in nsContentPolicyType aContentType, in nsIURI aContentLocation, in nsIURI aRequestOrigin, in nsISupports aContext, in ACString aMimeType, in nsISupports aExtra, [optional] in nsIPrincipal aRequestPrincipal);
Methods from Deref<Target = nsISupports>
pub fn coerce<T: nsISupportsCoerce>(&self) -> &T
[src]
Cast this nsISupports
to one of its base interfaces.
pub unsafe fn QueryInterface(
&self,
uuid: &nsIID,
result: *mut *mut c_void
) -> nsresult
[src]
&self,
uuid: &nsIID,
result: *mut *mut c_void
) -> nsresult
void QueryInterface (in nsIIDRef uuid, [iid_is (uuid), retval] out nsQIResult result);
pub unsafe fn AddRef(&self) -> nsrefcnt
[src]
[noscript,notxpcom] nsrefcnt AddRef ();
pub unsafe fn Release(&self) -> nsrefcnt
[src]
[noscript,notxpcom] nsrefcnt Release ();
Trait Implementations
impl XpCom for nsIContentPolicy
[src]
const IID: nsIID
IID: nsIID = nsID(3400355615, 53319, 18092, [174, 157, 220, 89, 142, 79, 185, 27])
fn query_interface<T: XpCom>(&self) -> Option<RefPtr<T>>
[src]
Perform a QueryInterface call on this object, attempting to dynamically cast it to the requested interface type. Returns Some(RefPtr) if the cast succeeded, and None otherwise. Read more
impl RefCounted for nsIContentPolicy
[src]
unsafe fn addref(&self)
[src]
Increment the reference count.
unsafe fn release(&self)
[src]
Decrement the reference count, potentially freeing backing memory.
impl Deref for nsIContentPolicy
[src]
type Target = nsISupports
The resulting type after dereferencing.
fn deref(&self) -> &nsISupports
[src]
Dereferences the value.