зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 58fe37290a82 (bug 1364364)
This commit is contained in:
Родитель
a8efe436cc
Коммит
7a9c465cf3
|
@ -120,20 +120,6 @@ interface nsISHistoryInternal: nsISupports
|
|||
[noscript, notxpcom] void RemoveDynEntries(in long aIndex,
|
||||
in nsISHContainer aContainer);
|
||||
|
||||
/**
|
||||
* Similar to RemoveDynEntries, but instead of specifying an index, use the
|
||||
* given BFCacheEntry to find the index and remove dynamic entries from the
|
||||
* index.
|
||||
*
|
||||
* The method takes no effect if the bfcache entry is not or no longer hold
|
||||
* by the SHistory instance.
|
||||
*
|
||||
* @param aEntry
|
||||
* The bfcache entry to look up for index to remove dynamic entries
|
||||
* from.
|
||||
*/
|
||||
[noscript, notxpcom] void RemoveDynEntriesForBFCacheEntry(in nsIBFCacheEntry aEntry);
|
||||
|
||||
/**
|
||||
* Removes entries from the history if their docshellID is in
|
||||
* aIDs array.
|
||||
|
|
|
@ -213,7 +213,7 @@ nsSHistory::EvictContentViewerForTransaction(nsISHTransaction* aTrans)
|
|||
LOG_SHENTRY_SPEC(("Evicting content viewer 0x%p for "
|
||||
"owning SHEntry 0x%p at %s.",
|
||||
viewer.get(), ownerEntry.get(), _spec),
|
||||
ownerEntry);
|
||||
ownerEntry);
|
||||
|
||||
// Drop the presentation state before destroying the viewer, so that
|
||||
// document teardown is able to correctly persist the state.
|
||||
|
@ -1290,13 +1290,8 @@ nsSHistory::GloballyEvictContentViewers()
|
|||
}
|
||||
|
||||
nsresult
|
||||
nsSHistory::FindTransactionForBFCache(nsIBFCacheEntry* aEntry,
|
||||
nsISHTransaction** aResult,
|
||||
int32_t* aResultIndex)
|
||||
nsSHistory::EvictExpiredContentViewerForEntry(nsIBFCacheEntry* aEntry)
|
||||
{
|
||||
*aResult = nullptr;
|
||||
*aResultIndex = -1;
|
||||
|
||||
int32_t startIndex = std::max(0, mIndex - nsISHistory::VIEWER_WINDOW);
|
||||
int32_t endIndex = std::min(mLength - 1, mIndex + nsISHistory::VIEWER_WINDOW);
|
||||
nsCOMPtr<nsISHTransaction> trans;
|
||||
|
@ -1316,29 +1311,15 @@ nsSHistory::FindTransactionForBFCache(nsIBFCacheEntry* aEntry,
|
|||
temp->GetNext(getter_AddRefs(trans));
|
||||
}
|
||||
if (i > endIndex) {
|
||||
return NS_ERROR_FAILURE;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
trans.forget(aResult);
|
||||
*aResultIndex = i;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsSHistory::EvictExpiredContentViewerForEntry(nsIBFCacheEntry* aEntry)
|
||||
{
|
||||
int32_t index;
|
||||
nsCOMPtr<nsISHTransaction> trans;
|
||||
FindTransactionForBFCache(aEntry, getter_AddRefs(trans), &index);
|
||||
|
||||
if (index == mIndex) {
|
||||
if (i == mIndex) {
|
||||
NS_WARNING("How did the current SHEntry expire?");
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if (trans) {
|
||||
EvictContentViewerForTransaction(trans);
|
||||
}
|
||||
EvictContentViewerForTransaction(trans);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -1605,20 +1586,6 @@ nsSHistory::RemoveDynEntries(int32_t aIndex, nsISHContainer* aContainer)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsSHistory::RemoveDynEntriesForBFCacheEntry(nsIBFCacheEntry* aEntry)
|
||||
{
|
||||
int32_t index;
|
||||
nsCOMPtr<nsISHTransaction> trans;
|
||||
FindTransactionForBFCache(aEntry, getter_AddRefs(trans), &index);
|
||||
if (trans) {
|
||||
nsCOMPtr<nsISHEntry> entry;
|
||||
trans->GetSHEntry(getter_AddRefs(entry));
|
||||
nsCOMPtr<nsISHContainer> container(do_QueryInterface(entry));
|
||||
RemoveDynEntries(index, container);
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsSHistory::UpdateIndex()
|
||||
{
|
||||
|
|
|
@ -96,12 +96,6 @@ private:
|
|||
nsresult PrintHistory();
|
||||
#endif
|
||||
|
||||
// Find the transaction for a given bfcache entry. It only looks up between
|
||||
// the range where alive viewers may exist (i.e nsISHistory::VIEWER_WINDOW).
|
||||
nsresult FindTransactionForBFCache(nsIBFCacheEntry* aEntry,
|
||||
nsISHTransaction** aResult,
|
||||
int32_t* aResultIndex);
|
||||
|
||||
// Evict content viewers in this window which don't lie in the "safe" range
|
||||
// around aIndex.
|
||||
void EvictOutOfRangeWindowContentViewers(int32_t aIndex);
|
||||
|
|
Загрузка…
Ссылка в новой задаче