[scriptable, uuid(09fecea6-5453-43ba-bf91-3ff32618f037)]
interface nsISHEntry : nsIHistoryEntry


 An ID to help identify this entry from others during
 subframe navigation
attribute unsigned long ID
 attribute to set and get the cache key for the entry */
attribute nsISupports cacheKey
 attribute to indicate the content-type of the document that this
 is a session history entry for
attribute ACString contentType
 Content viewer, for fast restoration of presentation */
attribute nsIContentViewer contentViewer
 attribute to indicate whether the page is already expired in cache */
attribute boolean expirationStatus
 LayoutHistoryState for scroll position and form values */
attribute nsILayoutHistoryState layoutHistoryState
 The loadType for this entry. This is typically loadHistory except
 when reload is pressed, it has the appropriate reload flag
attribute unsigned long loadType
 Get the owner, if any, that was associated with the channel
 that the document that was loaded to create this history entry
 came from.
attribute nsISupports owner
 pageIdentifier is an integer that should be the same for two entries
 attached to the same docshell only if the two entries are entries for
 the same page in the sense that one could go from the state represented
 by one to the state represented by the other simply by scrolling (so the
 entries are separated by an anchor traversal or a subframe navigation in
 some other frame).
attribute unsigned long pageIdentifier
 parent of this entry */
attribute nsISHEntry parent
 Post Data for the document */
attribute nsIInputStream postData
 Referrer URI */
attribute nsIURI referrerURI
 Saved refresh URI list for the content viewer */
attribute nsISupportsArray refreshURIList
 attribute to indicate whether layoutHistoryState should be saved */
attribute boolean saveLayoutStateFlag
 Whether the content viewer is marked "sticky" */
attribute boolean sticky
 Saved state of the global window object */
attribute nsISupports windowState


 Saved child docshells corresponding to contentViewer.  The child shells
 are restored as children of the parent docshell, in this order, when the
 parent docshell restores a saved presentation.

 Append a child shell to the end of our list. */
void addChildShell(in nsIDocShellTreeItem shell)
 Get the child shell at |index|; returns null if |index| is out of bounds.
nsIDocShellTreeItem childShellAt(in long index)
 Clear the child shell list.
void clearChildShells()

nsISHEntry clone()
 Additional ways to create an entry */
[noscript] void create(in nsIURI URI, in AString title, in nsIInputStream inputStream, in nsILayoutHistoryState layoutHistoryState, in nsISupports cacheKey, in ACString contentType, in nsISupports owner)
 Gets the owning pointer to the editor data assosicated with
 this shistory entry. This forgets its pointer, so free it when
 you're done.
[noscript, notxpcom] nsDocShellEditorDataPtr forgetEditorData()
 Return any content viewer present in or below this node in the
        nsSHEntry tree.  This will differ from contentViewer in the case
        where a child nsSHEntry has the content viewer for this tree. */
nsIContentViewer getAnyContentViewer(out nsISHEntry ownerEntry)

void getScrollPosition(out long x, out long y)
 Saved position and dimensions of the content viewer; we must adjust the
 root view's widget accordingly if this has changed when the presentation
 is restored.
[noscript] void getViewerBounds(in nsIntRect bounds)
 Returns true if this shistory entry is storing a detached editor. */
[noscript, notxpcom] boolean hasDetachedEditor()
 Sets the owning pointer to the editor data assosicated with
 this shistory entry. Unless forgetEditorData() is called, this
 shentry will destroy the editor data when it's destroyed.
[noscript, notxpcom] void setEditorData(in nsDocShellEditorDataPtr aData)
 Attribute that indicates if this entry is for a subframe navigation */
void setIsSubFrame(in boolean aFlag)
 Set/Get scrollers' positon in anchored pages */
void setScrollPosition(in long x, in long y)
 Title for the document */
void setTitle(in AString aTitle)
 URI for the document */
void setURI(in nsIURI aURI)

[noscript] void setViewerBounds([const] in nsIntRect bounds)
 Ensure that the cached presentation members are self-consistent.
 If either |contentViewer| or |windowState| are null, then all of the
 following members are cleared/reset:
  contentViewer, sticky, windowState, viewerBounds, childShells,
void syncPresentationState()