You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Reported by jteh on 2010-09-10 04:52
If a document contains sub-documents (iframes or frames) and one of the sub-documents finishes loading before the top document finishes loading, focus landing inside the loaded sub-document will cause a buffer to be created for that document. This is because we scan downward from the highest new focus ancestor and skip the top document because it's busy. Unfortunately, when the top document finishes loading, we don't render a buffer for it because we've already created a buffer for the sub-document. The user therefore remains stuck in the sub-document. We shouldn't render a buffer for a sub-document while the top document is still busy.
In the wild, I've seen this mostly on Blogger blogs and !PennyTel.
I think we need to do the following:
Rename !TreeInterceptor.isTransitioning to isReady.
Instantiate !VirtualBuffer objects for busy documents, but don't load the buffer and set isReady to False.
isReady should only be set to True once the buffer is loaded.
Change scriptHandler so that it doesn't pass scripts to buffers which aren't ready. (eventHandler already behaves as desired.)
The text was updated successfully, but these errors were encountered:
Comment 1 by jteh on 2010-10-19 08:14
Actually, we can't get rid of isTransitioning because the buffer should never be killed while loading, even if not isAlive. However, in the new case, the buffer might not be ready, but it should still be killed if not isAlive. Therefore, we need to:
Introduce a new propertty called isReady, which:
returns False if isTransitioning is True
returns False if VBufHandle is None
returns True otherwise.
scriptHandler, eventHandler, etc. will then check isReady. treeInterceptorHandler.update() will still check isTransitioning/isAlive.
eventHandler.doPreDocumentLoadComplete() will call a new notifyReady() method if an interceptor already exists but is not ready.
Comment 2 by jteh on 2010-10-22 01:58
So now we are getting rid of isTransitioning. Instead, buffers have isLoading and their isAlive returns True if isLoading is True to stop them from being killed while loading. isTransitioning was always a bit of a hack which didn't quite fit into the tree interceptor framework, so this is nicer.
Reported by jteh on 2010-09-10 04:52
If a document contains sub-documents (iframes or frames) and one of the sub-documents finishes loading before the top document finishes loading, focus landing inside the loaded sub-document will cause a buffer to be created for that document. This is because we scan downward from the highest new focus ancestor and skip the top document because it's busy. Unfortunately, when the top document finishes loading, we don't render a buffer for it because we've already created a buffer for the sub-document. The user therefore remains stuck in the sub-document. We shouldn't render a buffer for a sub-document while the top document is still busy.
In the wild, I've seen this mostly on Blogger blogs and !PennyTel.
I think we need to do the following:
The text was updated successfully, but these errors were encountered: