Closed Bug 292954 Opened 19 years ago Closed 19 years ago

bfcache/fastback doesn't play nicely with existing loads

Categories

(Core :: DOM: Navigation, defect)

defect
Not set
normal

Tracking

()

VERIFIED FIXED

People

(Reporter: bzbarsky, Assigned: bryner)

References

()

Details

Attachments

(1 file, 2 obsolete files)

See bug 274784, the "resuming network activity on back" testcase.  Basically,
loads that are in-progress when we leave a page are stopped and not restarted on
fastback.
*** Bug 293752 has been marked as a duplicate of this bug. ***
Ok, it seems that the reason that the testcase fails is that by the time we do
the _second_ CanSavePresentation check (the one that happens from
CreateContentViewer), the request in the iframe document's load group has
already been removed.

This seems like a pretty good argument for finding a way to only do the
CanSavePresentation check once, in InternalLoad(), storing the result off
somewhere.  Once we've called Stop(), it's probably too late.
Attached patch patch (obsolete) — Splinter Review
Only call CanSavePresentation once, before we call Stop().  Use
mSavingOldViewer to retain the result.

I also discovered that when loading the iframe, mOSHE == mLSHE for the initial
load (with both of them pointing to the SHEntry for the newly-loading
document).  I'm not sure whether this is correct or not, but in any case, we
probably shouldn't try to save state in this case since we'll be saving state
into a session history entry which we're still going to be displaying.
Attachment #186706 - Flags: superreview?(bzbarsky)
Attachment #186706 - Flags: review?(bzbarsky)
I won't be able to do a thorough review until I get back in July (have to catch
a plane within the next 12 hours, and no email till I get back after that), but
that patch looks wrong -- a load that starts after the initial InternalLoad but
before we actually load the new document will be killed off by the Stop() we do
when the new data starts coming in and not restarted on back.  I also suspect
the patch doesn't handle cases when InternalLoad is called before the previous
load "completes" (or even returns from server) well.
Ok, so perhaps we save the presentation only if there were no pending requests 
in InternalLoad and there are also no pending requests when the new data 
arrives.  That's easy enough.  What's important is that we not lose the fact 
that there were pending requests before the first Stop().

Note: the entire extent to which I'm planning to resolve this right now is to 
avoid caching the presentation if there is anything to be loaded, restarting 
things is too difficult given the time constraints.

I'll check out that approach and have Darin review, I think he has a good 
handle on DocShell loading.
Blocks: 298293
Attached patch patch (obsolete) — Splinter Review
Check for pending loads again when new data arrives, but only go ahead with
saving the presentation if there were also no pending loads before calling
Stop().
Attachment #186706 - Attachment is obsolete: true
Attachment #186963 - Flags: superreview?(darin)
Attachment #186963 - Flags: review?(darin)
Attachment #186706 - Flags: superreview?(bzbarsky)
Attachment #186706 - Flags: review?(bzbarsky)
Attached patch patchSplinter Review
Ok, this actually addresses a couple of additional issues:

1. fixed the reload on assert (bug 292950)
2. fixed a problem where we were examining the previous load type instead of
the current load type when determining whether to cache.  this leads to the
page not being cached if you had just reloaded it before leaving.

This is all rolled into one patch because it all touches the same methods and I
don't want to spend time untangling it.
Attachment #186963 - Attachment is obsolete: true
Attachment #186974 - Flags: superreview?(darin)
Attachment #186974 - Flags: review?(darin)
Attachment #186963 - Flags: superreview?(darin)
Attachment #186963 - Flags: review?(darin)
Comment on attachment 186974 [details] [diff] [review]
patch

r+sr=darin
Attachment #186974 - Flags: superreview?(darin)
Attachment #186974 - Flags: superreview+
Attachment #186974 - Flags: review?(darin)
Attachment #186974 - Flags: review+
Comment on attachment 186974 [details] [diff] [review]
patch

requesting approval, only affects fastback
Attachment #186974 - Flags: approval1.8b3?
Attachment #186974 - Flags: approval1.8b3? → approval1.8b3+
checked in
Status: NEW → RESOLVED
Closed: 19 years ago
Resolution: --- → FIXED
Brian, thanks for fixing this!  Verified on the testcase in a current trunk build.
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: