/* 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 "nsIWebBrowserChrome2.idl"
#include "nsIURI.idl"
#include "nsIDOMNode.idl"

/**
 * nsIWebBrowserChrome3 is an extension to nsIWebBrowserChrome2.
 */
[scriptable, uuid(7f2aa813-b250-4e46-afeb-97b1e91bc9a5)]
interface nsIWebBrowserChrome3 : nsIWebBrowserChrome2
{
  /**
   * Determines the appropriate target for a link.
   *
   * @param originalTarget
   *        The original link target.
   * @param linkURI
   *        Link destination URI.
   * @param aDOMNode
   *        Link DOM node.
   * @param isAppTab
   *        Whether or not the link is in an app tab.
   * @returns A new link target, if appropriate.
   *          Otherwise returns originalTarget.
   */
  AString onBeforeLinkTraversal(in AString originalTarget,
                                in nsIURI linkURI,
                                in nsIDOMNode linkNode,
                                in boolean isAppTab);
};
