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]

[src]

Cast this nsIContentPolicy to one of its base interfaces.

impl nsIContentPolicy
[src]

TYPE_INVALID: i64 = 0
/**
   * Indicates a unset or bogus policy type.
   */

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.
   */

TYPE_SCRIPT: i64 = 2
/**
   * Indicates an executable script (such as JavaScript).
   */

TYPE_IMAGE: i64 = 3
/**
   * Indicates an image (e.g., IMG elements).
   */

TYPE_STYLESHEET: i64 = 4
/**
   * Indicates a stylesheet (e.g., STYLE elements).
   */

TYPE_OBJECT: i64 = 5
/**
   * Indicates a generic object (plugin-handled content typically falls under
   * this category).
   */

TYPE_DOCUMENT: i64 = 6
/**
   * Indicates a document at the top-level (i.e., in a browser).
   */

TYPE_SUBDOCUMENT: i64 = 7
/**
   * Indicates a document contained within another document (e.g., IFRAMEs,
   * FRAMES, and OBJECTs).
   */

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.
   */

TYPE_XBL: i64 = 9
/**
   * Indicates an XBL binding request, triggered either by -moz-binding CSS
   * property.
   */

TYPE_PING: i64 = 10
/**
   * Indicates a ping triggered by a click on <A PING="..."> element.
   */

TYPE_XMLHTTPREQUEST: i64 = 11
/**
   * Indicates an XMLHttpRequest. Also used for document.load and for EventSource.
   */

TYPE_DATAREQUEST: i64 = 11

TYPE_OBJECT_SUBREQUEST: i64 = 12
/**
   * Indicates a request by a plugin.
   */

TYPE_DTD: i64 = 13
/**
   * Indicates a DTD loaded by an XML document.
   */

TYPE_FONT: i64 = 14
/**
   * Indicates a font loaded via @font-face rule.
   */

TYPE_MEDIA: i64 = 15
/**
   * Indicates a video or audio load.
   */

TYPE_WEBSOCKET: i64 = 16
/**
   * Indicates a WebSocket load.
   */

TYPE_CSP_REPORT: i64 = 17
/**
   * Indicates a Content Security Policy report.
   */

TYPE_XSLT: i64 = 18
/**
   * Indicates a style sheet transformation.
   */

TYPE_BEACON: i64 = 19
/**
   * Indicates a beacon post.
   */

TYPE_FETCH: i64 = 20
/**
   * Indicates a load initiated by the fetch() function from the Fetch
   * specification.
   */

TYPE_IMAGESET: i64 = 21
/**
   * Indicates a <img srcset> or <picture> request.
   */

TYPE_WEB_MANIFEST: i64 = 22
/**
   * Indicates a web manifest.
   */

TYPE_SAVEAS_DOWNLOAD: i64 = 43
/**
   * Indicates an save-as link download from the front-end code.
   */

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.
   */

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.
   */

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.
   */

TYPE_INTERNAL_EMBED: i64 = 26
/**
   * Indicates an internal constant for content loaded from embed elements.
   *
   * This will be mapped to TYPE_OBJECT.
   */

TYPE_INTERNAL_OBJECT: i64 = 27
/**
   * Indicates an internal constant for content loaded from object elements.
   *
   * This will be mapped to TYPE_OBJECT.
   */

TYPE_INTERNAL_FRAME: i64 = 28
/**
   * Indicates an internal constant for content loaded from frame elements.
   *
   * This will be mapped to TYPE_SUBDOCUMENT.
   */

TYPE_INTERNAL_IFRAME: i64 = 29
/**
   * Indicates an internal constant for content loaded from iframe elements.
   *
   * This will be mapped to TYPE_SUBDOCUMENT.
   */

TYPE_INTERNAL_AUDIO: i64 = 30
/**
   * Indicates an internal constant for content loaded from audio elements.
   *
   * This will be mapped to TYPE_MEDIA.
   */

TYPE_INTERNAL_VIDEO: i64 = 31
/**
   * Indicates an internal constant for content loaded from video elements.
   *
   * This will be mapped to TYPE_MEDIA.
   */

TYPE_INTERNAL_TRACK: i64 = 32
/**
   * Indicates an internal constant for content loaded from track elements.
   *
   * This will be mapped to TYPE_MEDIA.
   */

TYPE_INTERNAL_XMLHTTPREQUEST: i64 = 33
/**
   * Indicates an internal constant for an XMLHttpRequest.
   *
   * This will be mapped to TYPE_XMLHTTPREQUEST.
   */

TYPE_INTERNAL_EVENTSOURCE: i64 = 34
/**
   * Indicates an internal constant for EventSource.
   *
   * This will be mapped to TYPE_DATAREQUEST.
   */

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.
   */

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.
   */

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.
   */

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.
   */

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.
   */

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.
   */

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.
   */

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.
   */

REJECT_REQUEST: i64 = -1
/**
   * Returned from shouldLoad or shouldProcess if the load or process request
   * is rejected based on details of the request.
   */

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.
   */

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.
   */

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.
   */

ACCEPT: i64 = 1
/**
   * Returned from shouldLoad or shouldProcess if the load or process request
   * is not rejected.
   */

[src]

/**
   * 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);

[src]

/**
   * 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>

[src]

Cast this nsISupports to one of its base interfaces.

[src]

void QueryInterface (in nsIIDRef uuid, [iid_is (uuid), retval] out nsQIResult result);

[src]

[noscript,notxpcom] nsrefcnt AddRef ();

[src]

[noscript,notxpcom] nsrefcnt Release ();

Trait Implementations

impl XpCom for nsIContentPolicy
[src]

IID: nsIID = nsID(3400355615, 53319, 18092, [174, 157, 220, 89, 142, 79, 185, 27])

[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]

[src]

Increment the reference count.

[src]

Decrement the reference count, potentially freeing backing memory.

impl Deref for nsIContentPolicy
[src]

The resulting type after dereferencing.

[src]

Dereferences the value.