1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/image/test/crashtests/ownerdiscard.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,48 @@ 1.4 +<!DOCTYPE html> 1.5 +<html class="reftest-wait"> 1.6 +<body> 1.7 + <div id=tCF0> 1.8 + <img id=victim src=ie.png> 1.9 + <iframe src=discardframe.htm></iframe> 1.10 + </div> 1.11 + <script> 1.12 + const Ci = SpecialPowers.Ci; 1.13 + const Cc = SpecialPowers.Cc; 1.14 + 1.15 + function ImageDecoderObserverStub() 1.16 + { 1.17 + this.sizeAvailable = function sizeAvailable(aRequest) {} 1.18 + this.frameComplete = function frameComplete(aRequest) {} 1.19 + this.decodeComplete = function decodeComplete(aRequest) {} 1.20 + this.loadComplete = function loadComplete(aRequest) {} 1.21 + this.frameUpdate = function frameUpdate(aRequest) {} 1.22 + this.discard = function discard(aRequest) {} 1.23 + this.isAnimated = function isAnimated(aRequest) {} 1.24 + } 1.25 + var img = document.getElementById('victim'); 1.26 + var observer = new ImageDecoderObserverStub(); 1.27 + observer.discard = function() { 1.28 + SpecialPowers.clearUserPref('min_discard_timeout_ms'); 1.29 + imgLoadingContent.removeObserver(gObserver); 1.30 + setTimeout("document.documentElement.className = '';", 0); 1.31 + } 1.32 + observer = SpecialPowers.wrapCallbackObject(observer); 1.33 + var gObserver = Cc["@mozilla.org/image/tools;1"].getService(Ci.imgITools) 1.34 + .createScriptedObserver(observer); 1.35 + var imgLoadingContent = 1.36 + SpecialPowers.wrap(img).QueryInterface(Ci.nsIImageLoadingContent); 1.37 + imgLoadingContent.addObserver(gObserver); 1.38 + 1.39 + SpecialPowers.setBoolPref('min_discard_timeout_ms', 1); 1.40 + 1.41 + function initCF() { 1.42 + setTimeout(function() { document.adoptNode(tCF0); }, 0); 1.43 + } 1.44 + document.addEventListener("DOMContentLoaded", initCF, false); 1.45 + function finish() { 1.46 + setTimeout("document.documentElement.className = '';", 30000); 1.47 + } 1.48 + window.addEventListener("load", finish, false); 1.49 + </script> 1.50 +</body> 1.51 +</html>