image/test/crashtests/ownerdiscard.html

changeset 0
6474c204b198
     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>

mercurial