/* -*- 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 nsIDocShellTreeOwner;
interface nsPIDOMWindowOuter;
webidl Document;
webidl BrowsingContext;
/**
 * The nsIDocShellTreeItem supplies the methods that are required of any item
 * that wishes to be able to live within the docshell tree either as a middle
 * node or a leaf.
 */
[scriptable, builtinclass, uuid(9b7c586f-9214-480c-a2c4-49b526fff1a6)]
interface nsIDocShellTreeItem : nsISupports
{
  /*
  name of the DocShellTreeItem
  */
  attribute AString name;
  /**
   * Compares the provided name against the item's name and
   * returns the appropriate result.
   *
   * @return PR_TRUE if names match;
   *         PR_FALSE otherwise.
   */
  boolean nameEquals(in AString name);
  /*
  Definitions for the item types.
  */
  const long typeChrome=0;            // typeChrome must equal 0
  const long typeContent=1;           // typeContent must equal 1
  const long typeContentWrapper=2;    // typeContentWrapper must equal 2
  const long typeChromeWrapper=3;     // typeChromeWrapper must equal 3
  const long typeAll=0x7FFFFFFF;
  /*
  The type this item is.
  */
  readonly attribute long itemType;
  [noscript,notxpcom,nostdcall] long ItemType();
  /*
  Parent DocShell.
  @deprecated: Use `BrowsingContext::GetParent()` instead.
  (NOTE: `BrowsingContext::GetParent()` will not cross isolation boundaries)
  */
  [binaryname(InProcessParent)]
  readonly attribute nsIDocShellTreeItem parent;
  /*
  This getter returns the same thing parent does however if the parent
  is of a different itemType, or if the parent is an