nsIContentPolicy.idl

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- *//* vim: set ft=cpp tw=78 sw=2 et ts=8 : *//* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Mozilla code. * * The Initial Developer of the Original Code is * Zero-Knowledge Systems, Inc. * Portions created by the Initial Developer are Copyright (C) 2000 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Timothy Watt <riceman+bmo@mail.rit.edu> * * Alternatively, the contents of this file may be used under the terms of * either of the GNU General Public License Version 2 or later (the "GPL"), * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */#include "nsISupports.idl"
interface nsIURI;
interface nsIDOMNode;
/** * 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(58cf9dca-40b3-6211-a508-7351f437a53e)]
00055 interface nsIContentPolicy : nsISupports
{
constunsignedlong TYPE_OTHER = 1;
/** * Indicates an executable script (such as JavaScript). */00062constunsignedlong TYPE_SCRIPT = 2;
/** * Indicates an image (e.g., IMG elements). */00067constunsignedlong TYPE_IMAGE = 3;
/** * Indicates a stylesheet (e.g., STYLE elements). */00072constunsignedlong TYPE_STYLESHEET = 4;
/** * Indicates a generic object (plugin-handled content typically falls under * this category). */00078constunsignedlong TYPE_OBJECT = 5;
/** * Indicates a document at the top-level (i.e., in a browser). */00083constunsignedlong TYPE_DOCUMENT = 6;
/** * Indicates a document contained within another document (e.g., IFRAMEs, * FRAMES, and OBJECTs). */00089constunsignedlong TYPE_SUBDOCUMENT = 7;
/** * 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. */00101constunsignedlong TYPE_REFRESH = 8;
/** * Indicates an XBL binding request, triggered either by -moz-binding CSS * property or Document.addBinding method. */00107constunsignedlong TYPE_XBL = 9;
/** * Indicates a ping triggered by a click on <A PING="..."> element. */00112constunsignedlong TYPE_PING = 10;
/** * Indicates an XMLHttpRequest. */00117constunsignedlong TYPE_XMLHTTPREQUEST = 11;
/** * Indicates a request by a plugin. */00122constunsignedlong TYPE_OBJECT_SUBREQUEST = 12;
/** * Indicates a DTD loaded by an XML document. */00127constunsignedlong TYPE_DTD = 13;
////////////////////////////////////////////////////////////////////// /** * Returned from shouldLoad or shouldProcess if the load or process request * is rejected based on details of the request. */00135constshort REJECT_REQUEST = -1;
/** * 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. */00144constshort REJECT_TYPE = -2;
/** * 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. */00156constshort REJECT_SERVER = -3;
/** * 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. */00165constshort REJECT_OTHER = -4;
/** * Returned from shouldLoad or shouldProcess if the load or process request * is not rejected. */00171constshort ACCEPT = 1;
////////////////////////////////////////////////////////////////////// /** * 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 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 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. * * @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 unsignedlong aContentType,
in nsIURI aContentLocation,
in nsIURI aRequestOrigin,
in nsISupports aContext,
in ACString aMimeTypeGuess,
in nsISupports aExtra);
/** * 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 unsignedlong aContentType,
in nsIURI aContentLocation,
in nsIURI aRequestOrigin,
in nsISupports aContext,
in ACString aMimeType,
in nsISupports aExtra);
};