2010-07-30 Mihai Parparita <mihaip@chromium.org>
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 31 Jul 2010 05:39:24 +0000 (05:39 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 31 Jul 2010 05:39:24 +0000 (05:39 +0000)
commit813d10659ceb6aa9e54d10c2615c55bc99c7a22e
tree448c44966be3ddf6505b735515853e981120e169
parentbbc5dd481649214f3b8f83ad83da9b582c4a6d7a
2010-07-30  Mihai Parparita  <mihaip@chromium.org>

        Reviewed by Darin Fisher.

        Session history should skip over JS redirects
        https://bugs.webkit.org/show_bug.cgi?id=42861

        Lock the back/forward list for location changes that happen before the
        onload event fires that are not the result of user gestures.

        http/tests/history tests now pass, their expectatiosn were updated
        accordingly. Other tests needed a setTimeout wrapper around location
        changes during onload, otherwise they would not generate history
        entries as expected anymore.

        * fast/css/target-fragment-match.html:
        * fast/dom/Window/timer-resume-on-navigation-back.html:
        * fast/dom/location-hash.html:
        * fast/events/pageshow-pagehide-on-back-cached-with-frames-expected.txt:
        * fast/events/pageshow-pagehide-on-back-cached-with-frames.html:
        * fast/frames/resources/cached-page-1.html:
        * fast/frames/resources/cached-page-2.html:
        * fast/harness/resources/cached-page-1.html:
        * fast/harness/resources/cached-page-with-data-urls.html:
        * fast/history/gesture-before-onload-expected.txt: Added.
        * fast/history/gesture-before-onload.html: Added.
        * fast/history/history-length.html:
        * fast/history/resources/gesture-before-onload-target.html: Added.
        * fast/history/saves-state-after-fragment-nav.html:
        * fast/loader/input-element-page-cache-crash.html:
        * fast/loader/stateobjects/document-destroyed-navigate-back.html:
        * fast/loader/stateobjects/pushstate-clears-forward-history.html:
        * fast/loader/subframe-navigate-during-main-frame-load.html:
        * http/tests/history/redirect-js-document-location-before-load-expected.txt:
        * http/tests/history/redirect-js-location-assign-before-load-expected.txt:
        * http/tests/history/redirect-js-location-before-load-expected.txt:
        * http/tests/history/redirect-js-location-href-before-load-expected.txt:
        * http/tests/navigation/resources/document-location.js:
        (start):
        * security/autocomplete-cleared-on-back.html:
        * storage/hash-change-with-xhr.js:
        (updateDatabase):
        (invokeBack):
        (runTest):
        (runTestsInner):
2010-07-30  Mihai Parparita  <mihaip@chromium.org>

        Reviewed by Darin Fisher.

        Session history should skip over JS redirects
        https://bugs.webkit.org/show_bug.cgi?id=42861

        Lock the back/forward list for location changes that happen before the
        onload event fires that are not the result of user gestures.

        Test: fast/history/gesture-before-onload.html and updated expectations
        for http/tests/history tests that used to fail.

        * loader/RedirectScheduler.cpp:
        (WebCore::RedirectScheduler::scheduleRedirect):
        (WebCore::RedirectScheduler::mustLockBackForwardList):
        (WebCore::RedirectScheduler::scheduleLocationChange):
        (WebCore::RedirectScheduler::scheduleFormSubmission):
        * loader/RedirectScheduler.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@64408 268f45cc-cd09-0410-ab3c-d52691b4dbfc
29 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/css/target-fragment-match.html
LayoutTests/fast/dom/Window/timer-resume-on-navigation-back.html
LayoutTests/fast/dom/location-hash.html
LayoutTests/fast/events/pageshow-pagehide-on-back-cached-with-frames-expected.txt
LayoutTests/fast/events/pageshow-pagehide-on-back-cached-with-frames.html
LayoutTests/fast/frames/resources/cached-page-1.html
LayoutTests/fast/frames/resources/cached-page-2.html
LayoutTests/fast/harness/resources/cached-page-1.html
LayoutTests/fast/harness/resources/cached-page-with-data-urls.html
LayoutTests/fast/history/gesture-before-onload-expected.txt [new file with mode: 0644]
LayoutTests/fast/history/gesture-before-onload.html [new file with mode: 0644]
LayoutTests/fast/history/history-length.html
LayoutTests/fast/history/resources/gesture-before-onload-target.html [new file with mode: 0644]
LayoutTests/fast/history/saves-state-after-fragment-nav.html
LayoutTests/fast/loader/input-element-page-cache-crash.html
LayoutTests/fast/loader/stateobjects/document-destroyed-navigate-back.html
LayoutTests/fast/loader/stateobjects/pushstate-clears-forward-history.html
LayoutTests/fast/loader/subframe-navigate-during-main-frame-load.html
LayoutTests/http/tests/history/redirect-js-document-location-before-load-expected.txt
LayoutTests/http/tests/history/redirect-js-location-assign-before-load-expected.txt
LayoutTests/http/tests/history/redirect-js-location-before-load-expected.txt
LayoutTests/http/tests/history/redirect-js-location-href-before-load-expected.txt
LayoutTests/http/tests/navigation/resources/document-location.js
LayoutTests/security/autocomplete-cleared-on-back.html
LayoutTests/storage/hash-change-with-xhr.js
WebCore/ChangeLog
WebCore/loader/RedirectScheduler.cpp
WebCore/loader/RedirectScheduler.h