Separate out the concepts of "history entries separated by just a scroll" and

"history entries with the same postdata".  The latter is implied by the former,
but not conversely.  Bug 264964, r=biesi, sr=darin
This commit is contained in:
bzbarsky%mit.edu 2005-08-18 11:16:57 +00:00
Родитель 4c888e369f
Коммит e32ce5af8f
3 изменённых файлов: 26 добавлений и 1 удалений

Просмотреть файл

@ -49,7 +49,7 @@
interface nsILayoutHistoryState;
interface nsIDOMDocument;
[scriptable, uuid(65281BA1-988A-11d3-BDC7-0050040A9B44)]
[scriptable, uuid(6b596e1f-a3bd-40f9-a7ee-ab3edc7f9960)]
interface nsISHEntry : nsISupports
{
@ -86,6 +86,16 @@ attribute unsigned long loadType;
*/
attribute unsigned long ID;
/**
* 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;
/** attribute to set and get the cache key for the entry */
attribute nsISupports cacheKey;

Просмотреть файл

@ -52,6 +52,7 @@ static PRUint32 gEntryID = 0;
nsSHEntry::nsSHEntry()
: mLoadType(0)
, mID(gEntryID++)
, mPageIdentifier(mID)
, mScrollPositionX(0)
, mScrollPositionY(0)
, mIsFrameNavigation(PR_FALSE)
@ -70,6 +71,7 @@ nsSHEntry::nsSHEntry(const nsSHEntry &other)
, mLayoutHistoryState(other.mLayoutHistoryState)
, mLoadType(0) // XXX why not copy?
, mID(other.mID)
, mPageIdentifier(other.mPageIdentifier)
, mScrollPositionX(0) // XXX why not copy?
, mScrollPositionY(0) // XXX why not copy?
, mIsFrameNavigation(other.mIsFrameNavigation)
@ -215,6 +217,18 @@ NS_IMETHODIMP nsSHEntry::SetID(PRUint32 aID)
return NS_OK;
}
NS_IMETHODIMP nsSHEntry::GetPageIdentifier(PRUint32 * aResult)
{
*aResult = mPageIdentifier;
return NS_OK;
}
NS_IMETHODIMP nsSHEntry::SetPageIdentifier(PRUint32 aPageIdentifier)
{
mPageIdentifier = aPageIdentifier;
return NS_OK;
}
NS_IMETHODIMP nsSHEntry::GetIsSubFrame(PRBool * aFlag)
{
*aFlag = mIsFrameNavigation;

Просмотреть файл

@ -80,6 +80,7 @@ private:
nsCOMArray<nsISHEntry> mChildren;
PRUint32 mLoadType;
PRUint32 mID;
PRUint32 mPageIdentifier;
PRInt32 mScrollPositionX;
PRInt32 mScrollPositionY;
PRPackedBool mIsFrameNavigation;