mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-19 14:57:32 +09:00
We're currently fairly vague and inconsistent about the values we provide to content policy implementations for requestOrigin and requestPrincipal. In some cases they're the triggering principal, sometimes the loading principal, sometimes the channel principal. Our existing content policy implementations which require or expect a loading principal currently retrieve it from the context node. Since no current callers require the principal to be the loading principal, and some already expect it to be the triggering principal (which there's currently no other way to retrieve), a choice was made to pass the triggering principal whenever possible, but use the loading principal to determine the origin URL.
137 lines
6.8 KiB
Text
137 lines
6.8 KiB
Text
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* 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"
|
|
#include "nsIContentPolicyBase.idl"
|
|
|
|
interface nsIURI;
|
|
interface nsIDOMNode;
|
|
interface nsIPrincipal;
|
|
|
|
/**
|
|
* 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).
|
|
*/
|
|
|
|
[scriptable,uuid(64a5ae16-6836-475c-9938-4b6cc1eee8fb)]
|
|
interface nsIContentPolicy : nsIContentPolicyBase
|
|
{
|
|
/**
|
|
* 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);
|
|
|
|
/**
|
|
* 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);
|
|
};
|