nsISessionStore keeps track of the current browsing state - i.e.
 tab history, cookies, scroll state, form data, POSTDATA and window features
 - and allows to restore everything into one browser window.

 The nsISessionStore API operates mostly on browser windows and the tabbrowser
 tabs contained in them:

 * "Browser windows" are those DOM windows having loaded
 chrome://browser/content/browser.xul . From overlays you can just pass the
 global |window| object to the API, though (or |top| from a sidebar).
 From elsewhere you can get browser windows through the nsIWindowMediator
 by looking for "navigator:browser" windows.

 * "Tabbrowser tabs" are all the child nodes of a browser window's
 |getBrowser().tabContainer| such as e.g. |getBrowser().selectedTab|.
[scriptable, uuid(4945acd7-aa25-43ee-b8e3-bf3cce289132)]
interface nsISessionStore : nsISupports

Methods

 @param aTab is the tabbrowser tab to get the value for.
 @param aKey is the value's name.
void deleteTabValue(in nsIDOMNode aTab, in AString aKey)
 @param aWindow is the browser window to get the value for.
 @param aKey    is the value's name.
void deleteWindowValue(in nsIDOMWindow aWindow, in AString aKey)
 Duplicates a given tab as thoroughly as possible.

 @param aWindow is the browser window into which the tab will be duplicated.
 @param aTab    is the tabbrowser tab to duplicate (can be from a different window).
 @returns a reference to the newly created tab.
nsIDOMNode duplicateTab(in nsIDOMWindow aWindow, in nsIDOMNode aTab)
 @param aWindow is the browser window associated with the closed tab.
 @param aIndex  is the index of the closed tab to be removed (FIFO ordered).
nsIDOMNode forgetClosedTab(in nsIDOMWindow aWindow, in unsigned long aIndex)
 Get the current browsing state.
 @returns a JSON string representing the session state.
AString getBrowserState()
 Get the number of restore-able tabs for a browser window
unsigned long getClosedTabCount(in nsIDOMWindow aWindow)
 Get closed tab data

 @param aWindow is the browser window for which to get closed tab data
 @returns a JSON string representing the list of closed tabs.
AString getClosedTabData(in nsIDOMWindow aWindow)
 Get the number of restore-able windows
unsigned long getClosedWindowCount()
 Get closed windows data

 @returns a JSON string representing the list of closed windows.
AString getClosedWindowData()
 @param aTab is the tabbrowser tab whose state is to be returned.
 
 @returns a JSON string representing the state of the tab
         (note: doesn't contain cookies - if you need them, use getWindowState instead).
AString getTabState(in nsIDOMNode aTab)
 @param aTab is the tabbrowser tab to get the value for.
 @param aKey is the value's name.
 
 @returns A string value or an empty string if none is set.
AString getTabValue(in nsIDOMNode aTab, in AString aKey)
 @param aWindow is the browser window whose state is to be returned.
 
 @returns a JSON string representing a session state with only one window.
AString getWindowState(in nsIDOMWindow aWindow)
 @param aWindow is the window to get the value for.
 @param aKey    is the value's name.
 
 @returns A string value or an empty string if none is set.
AString getWindowValue(in nsIDOMWindow aWindow, in AString aKey)
 Initialize the service
void init(in nsIDOMWindow aWindow)
 @param aName is the name of the attribute to save/restore for all tabbrowser tabs.
void persistTabAttribute(in AString aName)
 Set the browsing state.
 This will immediately restore the state of the whole application to the state
 passed in, *replacing* the current session.

 @param aState is a JSON string representing the session state.
void setBrowserState(in AString aState)
 @param aTab   is the tabbrowser tab whose state is to be set.
 @param aState is a JSON string representing a session state.
void setTabState(in nsIDOMNode aTab, in AString aState)
 @param aTab         is the tabbrowser tab to set the value for.
 @param aKey         is the value's name.
 @param aStringValue is the value itself (use toSource/eval before setting JS objects).
void setTabValue(in nsIDOMNode aTab, in AString aKey, in AString aStringValue)
 @param aWindow    is the browser window whose state is to be set.
 @param aState     is a JSON string representing a session state.
 @param aOverwrite boolean overwrite existing tabs
void setWindowState(in nsIDOMWindow aWindow, in AString aState, in boolean aOverwrite)
 @param aWindow      is the browser window to set the value for.
 @param aKey         is the value's name.
 @param aStringValue is the value itself (use toSource/eval before setting JS objects).
void setWindowValue(in nsIDOMWindow aWindow, in AString aKey, in AString aStringValue)
 @param aWindow is the browser window to reopen a closed tab in.
 @param aIndex  is the index of the tab to be restored (FIFO ordered).
 @returns a reference to the reopened tab.
nsIDOMNode undoCloseTab(in nsIDOMWindow aWindow, in unsigned long aIndex)
 @param aIndex is the index of the windows to be restored (FIFO ordered).
 @returns the nsIDOMWindow object of the reopened window
nsIDOMWindow undoCloseWindow(in unsigned long aIndex)