* SUMMARY After loading this page and going forward, then back, the animated gif stops animating. * STEPS TO REPRODUCE 1. Load http://en.wikipedia.org/wiki/Methadone 2. Click the animated gif 3. Hit the back button * RESULTS Gif no longer animates.
<rdar://problem/9228639>
When loading the page from the b/f cache, document()->view()->isOffscreen() returns true in RenderObject::willRenderImage(), so BitmapImage::startAnimation() returns without actually kicking off the animation. In WebKit1, the ScrollView is a platform widget, so ScrollView::isOffscreen() calls [NSWindow isVisible]. In WebKit2, the ScrollView isn't a platform widget so it asks the WebCore Widget whether or not it is visible. It always returns false since setParentVisible(false) was called on the old ScrollView before navigating to a new page, but setParentVisible(true) is never called when restoring it from the back/forward cache.
It's sad that I'm fixing a WebKit2-specific bug that'll have to be skipped for now on the WebKit2 bots due to <https://bugs.webkit.org/show_bug.cgi?id=42197> :(
Created attachment 90450 [details] Patch
Comment on attachment 90450 [details] Patch r=me
Committed r84443: <http://trac.webkit.org/changeset/84443>
http://trac.webkit.org/changeset/84443 might have broken Windows 7 Release (Tests) The following tests are not passing: fast/images/animated-gif-restored-from-bfcache.html