Closed Bug 292954 Opened 20 years ago Closed 20 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: 20 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: