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

/**
 * A container for policy information to be used during channel creation.
 *
 * This interface exists to allow the content policy mechanism to function
 * properly during channel redirects.  Channels can be created with this
 * interface placed in the property bag and upon redirect, the interface can
 * be transferred from the old channel to the new channel.
 */
[scriptable, uuid(18045e96-1afe-4162-837a-04691267158c)]
interface nsIChannelPolicy : nsISupports
{
  /**
   * Indicates what type of content is being loaded, e.g.
   * nsIContentPolicy::TYPE_IMAGE
   */
  attribute unsigned long loadType;

  /**
   * A nsIContentSecurityPolicy object to determine if the load should
   * be allowed.
   */
  attribute nsISupports contentSecurityPolicy;
};
