WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED CONFIGURATION CHANGED
17186
Fragment navigation within a page permanently cancels meta refresh
https://bugs.webkit.org/show_bug.cgi?id=17186
Summary
Fragment navigation within a page permanently cancels meta refresh
Tim S
Reported
2008-02-05 14:43:46 PST
1. Page containing a meta-refresh is loaded. 2. Click on a link to a fragment in the page. 3. When the timer for the refresh fires, FrameLoader::shouldReload returns false because it is an in-page navigation and so the meta tag is not re-parsed and the refresh will never be rescheduled. FF/IE do continue firing refreshes. Additionally in this case, while scrollToAnchor does reschedule _ONE_ instance of the refresh and dispatch a WillPerformClientRedirect, it does so without dispatching DidCancelClientRedirect first, so clients can't distinguish between the rescheduling and the _actual_ redirect navigation. It should probably first call stopRedirectionTimer.
Attachments
testcase
(187 bytes, text/html)
2008-02-05 14:48 PST
,
Tim S
no flags
Details
Fix is to reload the page on fragment nav if redirect notification has been sent.
(1.48 KB, patch)
2008-02-11 11:32 PST
,
Tim S
no flags
Details
Formatted Diff
Diff
patch with regression test
(6.50 KB, patch)
2008-02-24 21:01 PST
,
Darin Adler
darin
: review-
Details
Formatted Diff
Diff
patch
(9.35 KB, patch)
2008-02-24 22:03 PST
,
Darin Adler
no flags
Details
Formatted Diff
Diff
Show Obsolete
(2)
View All
Add attachment
proposed patch, testcase, etc.
Tim S
Comment 1
2008-02-05 14:48:24 PST
Created
attachment 18941
[details]
testcase Webkit/Safari: Clicking on the href will result in the page getting refreshed once and only once after. FF/IE: It will continue to be refreshed every 10 seconds as per the meta-refresh.
Mark Rowe (bdash)
Comment 2
2008-02-05 16:50:41 PST
<
rdar://problem/5726537
>
Tim S
Comment 3
2008-02-11 11:32:15 PST
Created
attachment 19071
[details]
Fix is to reload the page on fragment nav if redirect notification has been sent.
Darin Adler
Comment 4
2008-02-13 05:03:07 PST
If you can't make an automated test for this, can you at least add the test case to the patch in the WebCore/manual-tests directory? Also, I don't see why you can't make an automated test. It seems entirely possible to do so!
Tim S
Comment 5
2008-02-13 11:09:27 PST
Re: the test - I've asked around several times on #webkit for help and have spoken 1/1 with some webkit developers, and I spent a day or two trying to write a good test. But it is absolutely possible you know something I don't and I'd be willing to give it another go if you give me a pointer. The main problem: I don't see a way to use the layout test controller to maintain state (exposed to the page itself) across loads of the page, and I need to do this so that I know after I fake a link click on the anchor, how many times the page (with identical url) has been loaded. AFAIK, I can't add URL params or modify the urls involved to point at a "server side" script because that will cause FrameLoader::shouldReload to behave differently and I wont end up testing exactly this situation. I'm all ears.
Darin Adler
Comment 6
2008-02-24 20:09:31 PST
(In reply to
comment #5
)
> I don't see a way to use the layout test controller to maintain state > (exposed to the page itself) across loads of the page, and I need to do this so > that I know after I fake a link click on the anchor, how many times the page > (with identical url) has been loaded.
A few ideas come to mind: 1) Since DumpRenderTree supports multiple windows, you can do a window.open and store the persistent state in a separate window. 2) If the test can run in a subframe, then you can store the persistent state in the top frame. I don't see any reason this can't work in a subframe, but maybe I'm overlooking something. 3) If the test can't run in a subframe, we can add something to the test controller to let you load and store a persistent string. It's very simple to add that. I'm sure one of these will work.
Darin Adler
Comment 7
2008-02-24 20:50:31 PST
I got (2) to work and I have a test now.
Darin Adler
Comment 8
2008-02-24 21:01:14 PST
Created
attachment 19334
[details]
patch with regression test Here's a patch that includes a regression test. However, I'm almost certain this fix is incorrect. There are two things wrong with it: 1) The m_sentRedirectNotification flag is not the right thing to look at. That flag has a specific purpose relating to sending notifications to the FrameLoaderClient, and this is not an appropriate use of it. 2) Forcing a reload is not the correct behavior. We don't want to stop the meta refresh, but we also don't want to do a reload of the page for the same reason we don't reload other times. I'll investigate other fixes.
Darin Adler
Comment 9
2008-02-24 22:03:53 PST
Created
attachment 19339
[details]
patch
Anders Carlsson
Comment 10
2008-02-25 09:03:04 PST
Comment on
attachment 19339
[details]
patch r=me
Darin Adler
Comment 11
2008-02-25 09:35:12 PST
Committed revision 30571.
Alexey Proskuryakov
Comment 12
2008-03-04 01:13:38 PST
The fix was rolled out in
r30738
, because it caused
bug 17569
.
Alexey Proskuryakov
Comment 13
2008-03-04 01:13:56 PST
Comment on
attachment 19339
[details]
patch Clearing review flag.
Ahmad Saleem
Comment 14
2024-04-06 20:27:10 PDT
It seems to work fine in Safari 17.4.1 for me and tab is refreshed every 10 seconds and continues to do so similar to Chrome Canary 125. @Karl - can you double check and then we can mark this as 'RESOLVED CONFIGURATION CHANGED'?
Karl Dubost
Comment 15
2024-04-07 16:59:23 PDT
This is working, but it also surfaces something not very practical in the Web Inspector.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug