/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * 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 mozilla.org code. * * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 1999 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Radha Kulkarni (radha@netscape.com) * * Alternatively, the contents of this file may be used under the terms of * either of the GNU General Public License Version 2 or later (the "GPL"), * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsISupports.idl" interface nsIHistoryEntry; interface nsISHistoryListener; interface nsISimpleEnumerator; /** * An interface to the primary properties of the Session History * component. In an embedded browser environment, the nsIWebBrowser * object creates an instance of session history for each open window. * A handle to the session history object can be obtained from * nsIWebNavigation. In a non-embedded situation, the owner of the * session history component must create a instance of it and set * it in the nsIWebNavigation object. * This interface is accessible from javascript. * * @status FROZEN */ %{C++ #define NS_SHISTORY_CID \ {0x7294fe9c, 0x14d8, 0x11d5, {0x98, 0x82, 0x00, 0xC0, 0x4f, 0xa0, 0x2f, 0x40}} #define NS_SHISTORY_CONTRACTID "@mozilla.org/browser/shistory;1" %} [scriptable, uuid(9883609F-CDD8-4d83-9B55-868FF08AD433)] interface nsISHistory: nsISupports { /** * A readonly property of the interface that returns * the number of toplevel documents currently available * in session history. */ readonly attribute long count; /** * A readonly property of the interface that returns * the index of the current document in session history. */ readonly attribute long index; /** * A readonly property of the interface that returns * the index of the last document that started to load and * didn't finished yet. When document finishes the loading * value -1 is returned. */ readonly attribute long requestedIndex; /** * A read/write property of the interface, used to Get/Set * the maximum number of toplevel documents, session history * can hold for each instance. */ attribute long maxLength; /** * Called to obtain handle to the history entry at a * given index. * * @param index The index value whose entry is requested. * @param modifyIndex A boolean flag that indicates if the current * index of session history should be modified * to the parameter index. * * @return NS_OK history entry for * the index is obtained successfully. * NS_ERROR_FAILURE Error in obtaining * history entry for the given index. */ nsIHistoryEntry getEntryAtIndex(in long index, in boolean modifyIndex); /** * Called to purge older documents from history. * Documents can be removed from session history for various * reasons. For example to control memory usage of the browser, to * prevent users from loading documents from history, to erase evidence of * prior page loads etc... * * @param numEntries The number of toplevel documents to be * purged from history. During purge operation, * the latest documents are maintained and older * 'numEntries' documents are removed from history. * @throws NS_SUCCESS_LOSS_OF_INSIGNIFICANT_DATA Purge was vetod. * @throws NS_ERROR_FAILURE numEntries is * invalid or out of bounds with the size of history. * */ void PurgeHistory(in long numEntries); /** * Called to register a listener for the session history component. * Listeners are notified when pages are loaded or purged from history. * * @param aListener Listener object to be notified for all * page loads that initiate in session history. * * @note A listener object must implement * nsISHistoryListener and nsSupportsWeakReference * * @see nsISHistoryListener * @see nsSupportsWeakReference */ void addSHistoryListener(in nsISHistoryListener aListener); /** * Called to remove a listener for the session history component. * Listeners are notified when pages are loaded from history. * * @param aListener Listener object to be removed from * session history. * * @note A listener object must implement * nsISHistoryListener and nsSupportsWeakReference * @see nsISHistoryListener * @see nsSupportsWeakReference */ void removeSHistoryListener(in nsISHistoryListener aListener); /** * Called to obtain a enumerator for all the documents stored in * session history. The enumerator object thus returned by this method * can be traversed using nsISimpleEnumerator. * * @note To access individual history entries of the enumerator, perform the * following steps: * 1) Call nsISHistory->GetSHistoryEnumerator() to obtain handle * the nsISimpleEnumerator object. * 2) Use nsISimpleEnumerator->GetNext() on the object returned * by step #1 to obtain handle to the next object in the list. * The object returned by this step is of type nsISupports. * 3) Perform a QueryInterface on the object returned by step #2 * to nsIHistoryEntry. * 4) Use nsIHistoryEntry to access properties of each history entry. * * @see nsISimpleEnumerator * @see nsIHistoryEntry * @see QueryInterface() * @see do_QueryInterface() */ readonly attribute nsISimpleEnumerator SHistoryEnumerator; };