TestRunner: Remove deactivated frame from loading
If a frame is navigated away before finishing loading, the navigation is not responsible to call DidStopLoading for the old frame. This can make TestRunner's |loading_frames_| list inconsistent, if no other events manages the list. If we enable same-site backward/forward cache, the situation happens. This CL makes TestRunner work for the case. Bug: 1132180 Change-Id: I260883b326781ff98187bfef44c63f6ab25925b8 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2509074 Commit-Queue: Hitoshi Yoshida <peria@chromium.org> Reviewed-by: danakj <danakj@chromium.org> Cr-Commit-Position: refs/heads/master@{#824486}
This commit is contained in:

committed by
Commit Bot

parent
7782b103b6
commit
de5221f1f8
@ -2571,6 +2571,9 @@ void TestRunner::OnFrameDeactivated(WebFrameTestProxy* frame) {
|
|||||||
DCHECK(frame->IsMainFrame());
|
DCHECK(frame->IsMainFrame());
|
||||||
RemoveMainFrame(frame);
|
RemoveMainFrame(frame);
|
||||||
RemoveRenderView(frame->GetWebViewTestProxy());
|
RemoveRenderView(frame->GetWebViewTestProxy());
|
||||||
|
|
||||||
|
if (frame->GetWebFrame()->IsLoading())
|
||||||
|
RemoveLoadingFrame(frame->GetWebFrame());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestRunner::OnFrameReactivated(WebFrameTestProxy* frame) {
|
void TestRunner::OnFrameReactivated(WebFrameTestProxy* frame) {
|
||||||
@ -2579,6 +2582,10 @@ void TestRunner::OnFrameReactivated(WebFrameTestProxy* frame) {
|
|||||||
|
|
||||||
DCHECK(frame->IsMainFrame());
|
DCHECK(frame->IsMainFrame());
|
||||||
|
|
||||||
|
if (frame->GetWebFrame()->IsLoading()) {
|
||||||
|
AddLoadingFrame(frame->GetWebFrame());
|
||||||
|
}
|
||||||
|
|
||||||
// A WorkQueueItem that navigates reports that it will start a load, but when
|
// A WorkQueueItem that navigates reports that it will start a load, but when
|
||||||
// a frame comes from the back/forward cache, it is already loaded so
|
// a frame comes from the back/forward cache, it is already loaded so
|
||||||
// AddLoadingFrame() will not occur. This informs the system that the load is
|
// AddLoadingFrame() will not occur. This informs the system that the load is
|
||||||
|
Reference in New Issue
Block a user