Files
palemoon27/dom/base/nsISimpleContentPolicy.idl
T
roytam1 721ef90dc3 import changes from `dev' branch of rmottola/Arctic-Fox:
- Bug 1107096 - Suppress improper drawing of zero-width invisible glyphs in canvas. r=roc (6f78376bc)
- Bug 1107096 - Reftest for zero-width invisible glyphs in canvas. (ded6cb516)
- Bug 1153958 - Make manifest processor e10s friendly. r=ehsan (ba5f6edf5)
- Bug 1162808 - Add splash_screens support to web manifest processor. r=ehsan (688bbe3d6)
- Bug 1164235 - Add theme_color support to web manifest processor. r=ehsan (0134f58fe)
- Bug 1143879 - Implement lang member of Web manifest. r=ehsan. (0b426965a)
- Bug 1166405 - Consolidate classes into a general web manifest module. r=ehsan. (98a6a4531)
- Bug 1162729 - CORS check is always performed when fetching a manifest. r=ehsan (aab278c12)
- Bug 1167335 - Make manifest obtainer use Task.jsm. r=oyiptong. (a4a48d767)
- Bug 1089255 - Implement and test manifest-src CSP directive. r=bholley, r=dveditz, r=ckerschb (63353eff3)
- Bug 968520 - Use move assignment instead of fallible copy assignment in nsCSPUtils.cpp. r=froydnj (fcaa9e865)
- Bug 968520 - Add mozilla::fallible to Fallible{Auto,}TArray::ReplaceElementsAt calls. r=froydnj (fb81d2305)
- Bug 968520 - Use FallibleTArray::Clear instead of SetLength(0). r=froydnj (3945e3e86)
- Bug 968520 - Add mozilla::fallible to FallibleTArray::InsertElementSorted calls. r=froydnj (dda295d5b)
- make some calls fallible - to get 968520 working (7722d850e)
- Bug 968520 - Always require fallible argument with FallibleTArray calls. r=froydnj (b9e630a76)
- Bug 968520 - Add mozilla::fallible to FallibleArray calls in tests. r=froydnj (53b58ac40)
- Bug 968520 - Explicitly use infallible allocator for ShiftData call in nsTArray::RemoveElementsAt. r=froydnj (9453996c3)
- Bug 1182808 - Part 1: Add and use fallible variant of AlignedTArray_Impl::SetLength. r=padenot (f6330791d)
- Bug 1143575. Replace ImageContainer Lock methods with simplified AutoLockImage. r=nical (c87ffec51)
2021-03-20 10:41:54 +08:00

148 lines
7.1 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ft=cpp tw=78 sw=2 et ts=8 : */
/* 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 nsIDOMElement;
/**
* 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.
*
* This interface differs from nsIContentPolicy in that it offers less control
* (the DOM node doing the load is not provided) but more flexibility for
* Gecko. In particular, this interface allows an add-on in the chrome process
* to block loads without using cross-process wrappers (CPOWs). Add-ons should
* prefer this interface to nsIContentPolicy because it should be faster in
* e10s. In the future, it may also be run asynchronously.
*
* WARNING: do not block the caller from shouldLoad or shouldProcess (e.g.,
* by launching a dialog to prompt the user for something).
*/
[scriptable,uuid(704b4b8e-2287-498a-9c0a-d1bde547a2d4)]
interface nsISimpleContentPolicy : 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
* initiated this load request; can be null if
* inapplicable
*
* @param aTopFrameElement OPTIONAL. The top frame element (typically a
* <xul:browser> element) that initiated the
* request. In a content process, this argument
* will be null.
*
* @param aIsTopLevel OPTIONAL. True iff the request was initiated
* from a frame where |window.top === 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. For navigation events, this is
* the principal of the page that caused this load.
*
* @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 nsIDOMElement aTopFrameElement,
in boolean aIsTopLevel,
in ACString aMimeTypeGuess,
in nsISupports aExtra,
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 aTopFrameElement OPTIONAL. The top frame element (typically a
* <xul:browser> element) that initiated the
* request. In a content process, this argument
* will be null.
*
* @param aIsTopLevel OPTIONAL. True iff the request was initiated
* from a frame where |window.top === window|.
*
* @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 nsIDOMElement aTopFrameElement,
in boolean aIsTopLevel,
in ACString aMimeType,
in nsISupports aExtra,
in nsIPrincipal aRequestPrincipal);
};