Yep, looks like a pretty straightforward problem – the timer nesting level should also be being cleared before the early return in DOMTimer::fired.
Please file a bug! cheers, G. > On Oct 10, 2014, at 8:19 AM, 陈浩 <[email protected]> wrote: > > Hi, all, > > I am confused about the nesting level of DOMTimer. > > First, there is a long story which come from: > https://bugs.webkit.org/show_bug.cgi?id=42861 > > Current situation is the timer could forward the gesture state only if the > nesting level is zero. The problem is the nesting level is managed in the > Document (ScriptExecutionContext), that means all timers in the same document > share one nesting level. If one repeat timer was launched, all other timers > after that could not forward the gesture state, due to all of them has a > non-zero nesting level. > > Below is my testing page, three images at the end of page could delay the > onload event. You could follow below steps to reproduce what I met: > 1. Click "Start repeating timer" first > 2. After the text change to "Running...", click "Goto next page" > 3. When WebKit page come out, click back button. > > What I see is the page before the testing page, because the > NavigationScheduler::mustLockBackForwardList refused the creation of new > history item. > <html> > <head> > </head> > <body> > <input type="button" value="Goto next page" onclick="gotoNextPage();"> > <input type="button" value="Start repeating timer" > onclick="startRepeatingTimer();"> > <p> > <div id="Timer">Paused</div> > </p> > <script type="text/javascript"> > > function gotoNextPage(){ > setTimeout(function(){location.href="http://www.webkit.org/";},300); > } > > function startRepeatingTimer(){ > setInterval(function(){document.getElementById("Timer").innerHTML="Running...";},500); > } > </script> > > <img > src="http://therecoveringpolitician.com/wp-content/uploads/2013/01/moderate.jpg" > width="640" height="480"> > <img > src="http://cullogo.com/full/wallpapers-high-resolution-widescreen-hd-pk.jpg" > width="640" height="480"> > <img > src="http://www.highresolutionwallpapers.net/wallpapers/autumn-1680x1050.jpg" > width="640" height="480"> > </body> > </html> > > According to Web App APIs > defintion(http://www.w3.org/html/wg/drafts/html/CR/webappapis.html#timer-nesting-level), > the nesting level of repeating timer will be increased in the loop. I doubt > that the nesting level should owned by the timer itself, do not share with > others. Just as described in the defintion, that is task's nesting level. > > That's appreciate to get your comment! > > Thanks & Best Regards! > Hao > > > > > > > _______________________________________________ > webkit-dev mailing list > [email protected] > https://lists.webkit.org/mailman/listinfo/webkit-dev _______________________________________________ webkit-dev mailing list [email protected] https://lists.webkit.org/mailman/listinfo/webkit-dev

