uriloader/base/nsIWebProgress.idl
author Tom Schuster <evilpies@gmail.com>
Sun, 14 Jun 2020 18:59:08 +0000
changeset 535622 c68fe15a81fc2dc9fc5765f3be2573519c09b6c1
parent 454745 f2b15591bb21fdf2eab19f347fe0fc1d135eab38
child 536684 74d89cb24414f0ddbfe8ef43ce659581d0dd96f2
permissions -rw-r--r--
Bug 1644878 - Don't define Map/Set identical iterator methods in self-hosted JS. r=arai I think we were defining those methods in self-hosted JS, because that automatically gives us the property that they all have the same identity. This causes bad error messages. Instead redefine them in the finishInit ClassSpec hook. We still have the "wrong" methods in the 'methods' array so that JSXray tests continue to pass. Differential Revision: https://phabricator.services.mozilla.com/D79615

/* -*- Mode: IDL; tab-width: 4; 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"

interface mozIDOMWindowProxy;
interface nsIEventTarget;
interface nsIWebProgressListener;

/**
 * The nsIWebProgress interface is used to add or remove nsIWebProgressListener
 * instances to observe the loading of asynchronous requests (usually in the
 * context of a DOM window).
 *
 * nsIWebProgress instances may be arranged in a parent-child configuration,
 * corresponding to the parent-child configuration of their respective DOM
 * windows.  However, in some cases a nsIWebProgress instance may not have an
 * associated DOM window.  The parent-child relationship of nsIWebProgress
 * instances is not made explicit by this interface, but the relationship may
 * exist in some implementations.
 *
 * A nsIWebProgressListener instance receives notifications for the
 * nsIWebProgress instance to which it added itself, and it may also receive
 * notifications from any nsIWebProgress instances that are children of that
 * nsIWebProgress instance.
 */
[scriptable, uuid(c4d64640-b332-4db6-a2a5-e08566000dc9)]
interface nsIWebProgress : nsISupports
{
  /**
   * The following flags may be combined to form the aNotifyMask parameter for
   * the addProgressListener method.  They limit the set of events that are
   * delivered to an nsIWebProgressListener instance.
   */

  /**
   * These flags indicate the state transistions to observe, corresponding to
   * nsIWebProgressListener::onStateChange.
   *
   * NOTIFY_STATE_REQUEST
   *   Only receive the onStateChange event if the aStateFlags parameter
   *   includes nsIWebProgressListener::STATE_IS_REQUEST.
   *
   * NOTIFY_STATE_DOCUMENT
   *   Only receive the onStateChange event if the aStateFlags parameter
   *   includes nsIWebProgressListener::STATE_IS_DOCUMENT.
   *
   * NOTIFY_STATE_NETWORK
   *   Only receive the onStateChange event if the aStateFlags parameter
   *   includes nsIWebProgressListener::STATE_IS_NETWORK.
   *
   * NOTIFY_STATE_WINDOW
   *   Only receive the onStateChange event if the aStateFlags parameter
   *   includes nsIWebProgressListener::STATE_IS_WINDOW.
   *
   * NOTIFY_STATE_ALL
   *   Receive all onStateChange events.
   */
  const unsigned long NOTIFY_STATE_REQUEST  = 0x00000001;
  const unsigned long NOTIFY_STATE_DOCUMENT = 0x00000002;
  const unsigned long NOTIFY_STATE_NETWORK  = 0x00000004;
  const unsigned long NOTIFY_STATE_WINDOW   = 0x00000008;
  const unsigned long NOTIFY_STATE_ALL      = 0x0000000f;

  /**
   * These flags indicate the other events to observe, corresponding to the
   * other four methods defined on nsIWebProgressListener.
   *
   * NOTIFY_PROGRESS
   *   Receive onProgressChange events.
   *
   * NOTIFY_STATUS
   *   Receive onStatusChange events.
   *
   * NOTIFY_SECURITY
   *   Receive onSecurityChange events.
   *
   * NOTIFY_LOCATION
   *   Receive onLocationChange events.
   *
   * NOTIFY_CONTENT_BLOCKING
   *   Receive onContentBlockingEvent events.
   *
   * NOTIFY_REFRESH
   *   Receive onRefreshAttempted events.
   *   This is defined on nsIWebProgressListener2.
   */
  const unsigned long NOTIFY_PROGRESS         = 0x00000010;
  const unsigned long NOTIFY_STATUS           = 0x00000020;
  const unsigned long NOTIFY_SECURITY         = 0x00000040;
  const unsigned long NOTIFY_LOCATION         = 0x00000080;
  const unsigned long NOTIFY_REFRESH          = 0x00000100;
  const unsigned long NOTIFY_CONTENT_BLOCKING = 0x00000200;

  /**
   * This flag enables all notifications.
   */
  const unsigned long NOTIFY_ALL              = 0x000003ff;

  /**
   * Registers a listener to receive web progress events.
   *
   * @param aListener
   *        The listener interface to be called when a progress event occurs.
   *        This object must also implement nsISupportsWeakReference.
   * @param aNotifyMask
   *        The types of notifications to receive.
   *
   * @throw NS_ERROR_INVALID_ARG
   *        Indicates that aListener was either null or that it does not
   *        support weak references.
   * @throw NS_ERROR_FAILURE
   *        Indicates that aListener was already registered.
   */
  void addProgressListener(in nsIWebProgressListener aListener,
                           in unsigned long aNotifyMask);

  /**
   * Removes a previously registered listener of progress events.
   *
   * @param aListener
   *        The listener interface previously registered with a call to
   *        addProgressListener.
   *
   * @throw NS_ERROR_FAILURE
   *        Indicates that aListener was not registered.
   */
  void removeProgressListener(in nsIWebProgressListener aListener);

  /**
   * The DOM window associated with this nsIWebProgress instance.
   *
   * @throw NS_ERROR_FAILURE
   *        Indicates that there is no associated DOM window.
   */
  readonly attribute mozIDOMWindowProxy DOMWindow;
  readonly attribute uint64_t DOMWindowID;
  readonly attribute uint64_t innerDOMWindowID;

  /**
   * Indicates whether DOMWindow.top == DOMWindow.
   */
  readonly attribute boolean isTopLevel;

  /**
   * Indicates whether or not a document is currently being loaded
   * in the context of this nsIWebProgress instance.
   */
  readonly attribute boolean isLoadingDocument;

  /**
   * Contains a load type as specified by the load* constants in
   * nsIDocShellLoadInfo.idl.
   */
  readonly attribute unsigned long loadType;

  /**
   * Main thread event target to which progress updates should be
   * dispatched. This typically will be a SchedulerEventTarget
   * corresponding to the tab requesting updates.
   */
  attribute nsIEventTarget target;
};