build/pgo/index.html
author Max Li <maxli@maxli.ca>
Sun, 21 Apr 2013 21:23:19 -0400
changeset 129499 7567cbe92349b3f1d3b88377fbc7a0b529fe475c
parent 107907 a8583bee3c377dd9878dca774d3ff01adcbea3c5
child 144092 984f2350c97f16a52f40998bf168a9b862ebdea5
permissions -rw-r--r--
Bug 858016 - Double click does not enable fullscreen mode. r=jaws

<script>
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
   
 function quitHook()
 {
   var xhr = new XMLHttpRequest();
   xhr.open("GET", "http://" + location.host + "/server/shutdown", true);
   xhr.onreadystatechange = function (event)
     {
       if (xhr.readyState == 4)
         goQuitApplication();
     };
   xhr.send(null);
 }
  
 function canQuitApplication()
 {
   var os = Components.classes["@mozilla.org/observer-service;1"]
     .getService(Components.interfaces.nsIObserverService);
   if (!os) 
   {
     return true;
   }
   
   try 
   {
     var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"]
       .createInstance(Components.interfaces.nsISupportsPRBool);
     os.notifyObservers(cancelQuit, "quit-application-requested", null);
     
     // Something aborted the quit process. 
     if (cancelQuit.data)
     {
       return false;
     }
   }
   catch (ex) 
   {
   }
   os.notifyObservers(null, "quit-application-granted", null);
   return true;
 }
 
 function goQuitApplication()
 {
   const privs = 'UniversalXPConnect';
 
   try
   {
     netscape.security.PrivilegeManager.enablePrivilege(privs);
   }
   catch(ex)
   {
     throw('goQuitApplication: privilege failure ' + ex);
   }
 
   if (!canQuitApplication())
   {
     return false;
   }
 
   const kAppStartup = '@mozilla.org/toolkit/app-startup;1';
   const kAppShell   = '@mozilla.org/appshell/appShellService;1';
   var   appService;
   var   forceQuit;
 
   if (kAppStartup in Components.classes)
   {
     appService = Components.classes[kAppStartup].
       getService(Components.interfaces.nsIAppStartup);
     forceQuit  = Components.interfaces.nsIAppStartup.eForceQuit;
 
   }
   else if (kAppShell in Components.classes)
   {
     appService = Components.classes[kAppShell].
       getService(Components.interfaces.nsIAppShellService);
     forceQuit = Components.interfaces.nsIAppShellService.eForceQuit;
   }
   else
   {
     throw 'goQuitApplication: no AppStartup/appShell';
   }
 
   var windowManager = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService();
 
   var windowManagerInterface = windowManager.
     QueryInterface(Components.interfaces.nsIWindowMediator);
 
   var enumerator = windowManagerInterface.getEnumerator(null);
 
   while (enumerator.hasMoreElements())
   {
     var domWindow = enumerator.getNext();
     if (("tryToClose" in domWindow) && !domWindow.tryToClose())
     {
       return false;
     }
     domWindow.close();
   }
 
   try
   {
     appService.quit(forceQuit);
   }
   catch(ex)
   {
     throw('goQuitApplication: ' + ex);
   }
 
   return true;
 }
 
 var list = 
     [
  "blueprint/sample.html",
  "blueprint/forms.html",
  "blueprint/grid.html",
  "blueprint/elements.html",
  "js-input/3d-cube.html",
  "js-input/3d-morph.html",
  "js-input/3d-raytrace.html",
  "js-input/3d-thingy.html",
  "js-input/access-binary-trees.html",
  "js-input/access-fannkuch.html",
  "js-input/access-nbody.html",
  "js-input/access-nsieve.html",
  "js-input/bitops-3bit-bits-in-byte.html",
  "js-input/bitops-bits-in-byte.html",
  "js-input/bitops-bitwise-and.html",
  "js-input/bitops-nsieve-bits.html",
  "js-input/controlflow-recursive.html",
  "js-input/crypto-aes.html",
  "js-input/crypto-md5.html",
  "js-input/crypto-sha1.html",
  "js-input/crypto-otp.html",
  "js-input/date-format-tofte.html",
  "js-input/date-format-xparb.html",
  "js-input/math-cordic.html",
  "js-input/math-partial-sums.html",
  "js-input/math-spectral-norm.html",
  "js-input/regexp-dna.html",
  "js-input/string-base64.html",
  "js-input/string-fasta.html",
  "js-input/string-tagcloud.html",
  "js-input/string-unpack-code.html",
  "js-input/string-validate-input.html"
     ];
 var interval = 3000; // 15000
 var idx = 0;
 var w;
 
 window.onload = function () {
     w = window.open("about:blank");
     window.setTimeout(loadURL, interval); 
 };
 function loadURL () {
     w.location.href = list[idx++];
     if (idx < list.length) {
 	window.setTimeout(loadURL, interval);
     } else {
         window.setTimeout(goQuitApplication, interval);
     }
 }
 var i;
 
 for(i=0; i < list.length;i++) {
     document.write(list[i]);
     document.write("<br>");
 }
  </script>