1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- <!DOCTYPE html>
- <html class="reftest-wait">
- <body>
- <div id=tCF0>
- <img id=victim src=ie.png>
- <iframe src=discardframe.htm></iframe>
- </div>
- <script>
- const Ci = SpecialPowers.Ci;
- const Cc = SpecialPowers.Cc;
- function ImageDecoderObserverStub()
- {
- this.sizeAvailable = function sizeAvailable(aRequest) {}
- this.frameComplete = function frameComplete(aRequest) {}
- this.decodeComplete = function decodeComplete(aRequest) {}
- this.loadComplete = function loadComplete(aRequest) {}
- this.frameUpdate = function frameUpdate(aRequest) {}
- this.discard = function discard(aRequest) {}
- this.isAnimated = function isAnimated(aRequest) {}
- }
- var img = document.getElementById('victim');
- var observer = new ImageDecoderObserverStub();
- observer.discard = function() {
- cleanupAndFinish();
- }
- observer = SpecialPowers.wrapCallbackObject(observer);
- var gObserver = Cc["@mozilla.org/image/tools;1"].getService(Ci.imgITools)
- .createScriptedObserver(observer);
- var imgLoadingContent =
- SpecialPowers.wrap(img).QueryInterface(Ci.nsIImageLoadingContent);
- imgLoadingContent.addObserver(gObserver);
- function initCF() {
- setTimeout(function() { document.adoptNode(tCF0); }, 0);
- }
- document.addEventListener("DOMContentLoaded", initCF, false);
- function cleanupAndFinish() {
- imgLoadingContent.removeObserver(gObserver);
- setTimeout("document.documentElement.className = '';", 0);
- }
- function loadhandler() {
- setTimeout("cleanupAndFinish();", 30000);
- }
- window.addEventListener("load", function() {
- SpecialPowers.pushPrefEnv({"set":[["min_discard_timeout_ms", 1]]}, loadhandler)}, false);
- </script>
- </body>
- </html>
|