author Karl Tomlinson <>
Mon, 24 Aug 2015 19:30:36 +1200
changeset 261782 e4fb01e4e3cd2eed2668c0efc85c35f8a8d42224
parent 225081 a629bc251c8167827149af1a66ea3f9ff4ae44d8
child 264424 86a7be21dfc8ef0a3c3080d58ef508732ce2d154
permissions -rw-r--r--
bug 1198656 delay AudioBuffer allocation until required r=padenot This saves an allocation and zeroing for buffers generated by AudioNodes and avoids allocation altogether for empty buffers. Incidentally, RestoreJSChannelData() now avoids unnecessary recreation of Float32Arrays if they already exist after a previous call failed.

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 * vim: ft=cpp tw=78 sw=2 et ts=2 sts=2 cin
 * 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 */

#include "nsISupports.idl"

interface nsIDOMWindow;
interface nsIDOMElement;

 * An nsILoadContext represents the context of a load.  This interface
 * can be queried for various information about where the load is
 * happening.
[scriptable, uuid(6ec837fa-af93-4350-bbb8-0985d54c74ca)]
interface nsILoadContext : nsISupports
   * associatedWindow is the window with which the load is associated, if any.
   * Note that the load may be triggered by a document which is different from
   * the document in associatedWindow, and in fact the source of the load need
   * not be same-origin with the document in associatedWindow.  This attribute
   * may be null if there is no associated window.
  readonly attribute nsIDOMWindow associatedWindow;

   * topWindow is the top window which is of same type as associatedWindow.
   * This is equivalent to, but is provided here as a
   * convenience.  All the same caveats as associatedWindow of apply, of
   * course.  This attribute may be null if there is no associated window.
  readonly attribute nsIDOMWindow topWindow;

   * topFrameElement is the <iframe>, <frame>, or <browser> element which
   * contains the topWindow with which the load is associated.
   * Note that we may have a topFrameElement even when we don't have an
   * associatedWindow, if the topFrameElement's content lives out of process.
   * topFrameElement is available in single-process and multiprocess contexts.
   * Note that topFrameElement may be in chrome even when the nsILoadContext is
   * associated with content.
  readonly attribute nsIDOMElement topFrameElement;

   * If this LoadContext corresponds to a nested remote iframe, we don't have
   * access to the topFrameElement.  Instead, we must use this id to send
   * messages. A return value of 0 signifies that this load context is not for
   * a nested frame.
  readonly attribute unsigned long long nestedFrameId;

   * Check whether the load is happening in a particular type of application.
   * @param an application type.  For now, the constants to be passed here are
   *        the nsIDocShell APP_TYPE_* constants.
   * @return whether there is some ancestor of the associatedWindow that is of
   *         the given app type.
  boolean isAppOfType(in unsigned long appType);

   * True if the load context is content (as opposed to chrome).  This is
   * determined based on the type of window the load is performed in, NOT based
   * on any URIs that might be around.
  readonly attribute boolean isContent;

   * Attribute that determines if private browsing should be used.
  attribute boolean usePrivateBrowsing;

   * Attribute that determines if remote (out-of-process) tabs should be used.
  readonly attribute boolean useRemoteTabs;

   * De-XPCOMed getter to make call-sites cleaner.
  bool UsePrivateBrowsing() {
    bool usingPB;
    return usingPB;

  bool UseRemoteTabs() {
    bool usingRT;
    return usingRT;

   * Set the private browsing state of the load context, meant to be used internally.
  [noscript] void SetPrivateBrowsing(in boolean aInPrivateBrowsing);

   * Set the remote tabs state of the load context, meant to be used internally.
  [noscript] void SetRemoteTabs(in boolean aUseRemoteTabs);

   * Returns true iff the load is occurring inside a browser element.
  readonly attribute boolean isInBrowserElement;

   * Returns the app id of the app the load is occurring is in. Returns
   * nsIScriptSecurityManager::NO_APP_ID if the load is not part of an app.
  readonly attribute unsigned long appId;