/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
 * The contents of this file are subject to the Mozilla Public
 * License Version 1.1 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of
 * the License at http://www.mozilla.org/MPL/
 * 
 * Software distributed under the License is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * rights and limitations under the License.
 * 
 * The Original Code is the Mozilla browser.
 * 
 * The Initial Developer of the Original Code is Netscape
 * Communications, Inc.  Portions created by Netscape are
 * Copyright (C) 1999, Mozilla.  All Rights Reserved.
 * 
 * Contributor(s):
 *   Travis Bogard <travis@netscape.com>
 */

#include "nsISupports.idl"
#include "domstubs.idl"

/**
 * The nsIBrowserEmbedNav    
 */

[scriptable, uuid(69E5DF01-7B8B-11d3-AF61-00A024FFC08C)]
interface nsIWebBrowserNav : nsISupports
{
	/*
	Indicates if the browser if it can go back.  If true this indicates that
	there is back session history available to navigate to.
	*/
	readonly attribute boolean canGoBack;

	/*
	Indicates if the browser if it can go forward.  If true this indicates that
	there is forward session history available to navigate to.
	*/
	readonly attribute boolean canGoForward;

	/*
	Tells the browser to navigate to the next Back session history item.
	*/
	void goBack();

	/*
	Tells the browser to navigate to the next Forward session history item.
	*/
	void goForward();

	/*
	Loads a given URI.  This will give priority to loading the requested URI
	in the object implementing	this interface.  If it can't be loaded here
	however, the URL dispatcher will go through its normal process of content
	loading.

	@param uri - The URI to load.
	*/
	void loadURI(in wstring uri);

	/*
	Loads a given URI through the specified adapter.  This will give priority
	to loading the requested URI in the object implementing this interface.
	If it can't be loaded here	however, the URL dispatcher will go through its
	normal process of content loading.

	@param uri - The URI to load.
	@param adapterBinding - The local IP address of the adapter to bind to.
	*/
	void loadURIVia(in wstring uri, in unsigned long adapterBinding);


	void reload(); //XXX Should take a cache parameter

	/*
	Stops a load of a URI.
	*/
	void stop();

	/*
	Set the document for the current webBrowser.  This will simulate the normal
	load process of a document being loaded.

	@param document - The document to be set.
	@param contentType - This is the content type to try and render the document
		as.  This may be null.  If this is null, the method will try to query
		the document to identify the content type of the document.  If the query
		fails, content type "HTML" will be assumed.
	*/
	void setDocument(in nsIDOMDocument document, in wstring contentType);
	
	/*
	Retrieves or sets the current Document for the WebBrowser.  When setting
	this will simulate the normal load process.
	*/
	readonly attribute nsIDOMDocument document;
	
	/*
	Retrieves the current URI that is loaded.
	*/
	readonly attribute wstring currentURI;		
};