Bug 727705 - remove two copies of pageloader from m-c. r=jmaher
authorJeff Hammel <jhammel@mozilla.com>
Wed, 22 Feb 2012 09:24:29 -0500
changeset 90337 90cb54bb0101f57ae31254b64f6b12cea6eaf632
parent 90336 5c24d8549c37a7e2496dbfbdcf26bd5228710646
child 90338 d82d9b9880a379ca6c409ea2caea992c43197b89
push id1
push usersledru@mozilla.com
push dateThu, 04 Dec 2014 17:57:20 +0000
reviewersjmaher
bugs727705
milestone13.0a1
Bug 727705 - remove two copies of pageloader from m-c. r=jmaher
layout/Makefile.in
layout/tools/pageloader/Makefile.in
layout/tools/pageloader/README
layout/tools/pageloader/jar.mn
layout/tools/pageloader/pageloader.js
layout/tools/pageloader/pageloader.xul
layout/tools/pageloader/quit.js
layout/tools/pageloader/report.js
layout/tools/pageloader/tp-cmdline.js
layout/tools/pageloader/tp-cmdline.manifest
testing/tools/pageloader/Makefile
testing/tools/pageloader/README
testing/tools/pageloader/chrome.manifest
testing/tools/pageloader/chrome/content/pageloader.css
testing/tools/pageloader/chrome/content/pageloader.js
testing/tools/pageloader/chrome/content/pageloader.xul
testing/tools/pageloader/chrome/content/report.js
testing/tools/pageloader/install.rdf
testing/tools/pageloader/test/chrome/content/pageloader.js
testing/tools/pageloader/test/chrome/content/report.js
toolkit/toolkit-makefiles.sh
--- a/layout/Makefile.in
+++ b/layout/Makefile.in
@@ -72,16 +72,15 @@ DIRS           += media
 ifdef ENABLE_TESTS
 PARALLEL_DIRS += \
   mathml/tests \
   xul/test \
   xul/base/test \
   $(NULL)
 
 TOOL_DIRS      += tools/reftest reftests/fonts reftests/fonts/mplus
-DIRS           += tools/pageloader
 
 ifdef MOZ_DEBUG
 DIRS            += tools/layout-debug
 endif
 endif
 
 include $(topsrcdir)/config/rules.mk
deleted file mode 100644
--- a/layout/tools/pageloader/Makefile.in
+++ /dev/null
@@ -1,52 +0,0 @@
-# vim: set shiftwidth=8 tabstop=8 autoindent noexpandtab copyindent:
-# ***** BEGIN LICENSE BLOCK *****
-# Version: MPL 1.1/GPL 2.0/LGPL 2.1
-#
-# The contents of this file are subject to the Mozilla Public License Version
-# 1.1 (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-# http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-# for the specific language governing rights and limitations under the
-# License.
-#
-# The Original Code is Mozilla's pageloader test
-#
-# The Initial Developer of the Original Code is the Mozilla Foundation.
-# Portions created by the Initial Developer are Copyright (C) 2007
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-#   Vladimir Vukicevic <vladimir@pobox.com>
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either the GNU General Public License Version 2 or later (the "GPL"), or
-# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-# in which case the provisions of the GPL or the LGPL are applicable instead
-# of those above. If you wish to allow use of your version of this file only
-# under the terms of either the GPL or the LGPL, and not to allow others to
-# use your version of this file under the terms of the MPL, indicate your
-# decision by deleting the provisions above and replace them with the notice
-# and other provisions required by the GPL or the LGPL. If you do not delete
-# the provisions above, a recipient may use your version of this file under
-# the terms of any one of the MPL, the GPL or the LGPL.
-#
-# ***** END LICENSE BLOCK *****
-
-DEPTH		= ../../..
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-
-MODULE		= layout
-
-EXTRA_COMPONENTS= \
-		tp-cmdline.js \
-		tp-cmdline.manifest \
-		$(NULL)
-
-include $(topsrcdir)/config/rules.mk
deleted file mode 100644
--- a/layout/tools/pageloader/README
+++ /dev/null
@@ -1,81 +0,0 @@
-Pageload Test Component
-=======================
-
-Usage:
-
-  ./firefox -tp file:///path/to/manifest.txt [-tpargs...]
-
-See ./firefox -help for other arguments.
-
-
-Manifest file format
-====================
-
-Comments in the manifest file start with a #.  Each line may be:
-
-* a URL (absolute or relative to the manifest)
-
-This URL is added to the list of tests.
-
-* one or more flags, followed by whitespace, followed by a URL
-
-The only flag supported currently is '%', which indicates that
-a test will do its own timing.  (See Self-timing Tests below.)
-
-* "include" followed by whitespace, followed by a URL
-
-Parse the given manifest file.
-
-Self-timing Tests
-=================
-
-Most timing tests are interested in timing how long it takes the page
-to load; that is, from the start of page loading until the 'load'
-event is dispatched.  By default, this is what the pageloader will
-time.  However, if a test URL has the % flag, the test is expected to
-report its own timing.  For this purpose, the pageloader will provide
-a function named "tpRecordTime" in the test's global object that it
-should call once it has performed whatever timing it wants to do.
-The given value will be used as the timing result for this test.
-
-Output format
-=============
-
-The result is a dump to stdout via dump() --
-browser.dom.window.dump.enabled must be set to true in the profile.  A
-number of output formats can be specified via the -tpformat command
-line option, currently 'js', 'text', and 'tinderbox' are supported.
-
-Sample 'js' format output:
-
-([({page:"1280x1024-PNG/index.html", value:133, stddev:20.049937655763422}),({page:"bugzilla.mozilla.org/index.html", value:233, stddev:36.66606060105176}),({page:"espn.go.com/index.html", value:117.6, stddev:1.2}),({page:"home.netscape.com/index.html", value:97.8, stddev:47.41898354035017}),])
-
-Sample 'text' format output:
-
-============================================================
-    Page                                     mean  stdd   min   max raw
-  0 1280x1024-PNG/index.html                  133    20   121   297 297,173,122,121,124,125
-  1 bugzilla.mozilla.org/index.html           233    37   192   395 395,273,223,192,198,279
-  2 espn.go.com/index.html                    118     1   116   254 254,117,116,119,119,117
-  3 home.netscape.com/index.html               98    47     3   124 3,121,120,124,124,121
-============================================================
-
-Sample 'tinderbox' format output:
-
-__start_tp_report
-_x_x_mozilla_page_load,778.5,NaN,NaN
-_x_x_mozilla_page_load_details,avgmedian|778.5|average|766.75|minimum|NaN|maximum|NaN|stddev|NaN|0;file:///c:/proj/mozilla-cvs/perf/tp2/base/www.cnn.com/index.html;778.5;766.75;722;1027;1027;788;777;722;780|...
-__end_tp_report
-
-Note that the minimum, maximum, stddev are not calculated; they're
-always reported as NaN.  (They were the minimum and maximum values of
-any sampled value, and the standard deviation across all sampled
-values -- not very useful.)
-
-TODO
-====
-
-* Command line option to choose whether to run with or without browser chrome.  Currently runs without.
-
-* Tinderbox-dropping style output
-  * better yet would be to teach tinderbox about JSON
deleted file mode 100644
--- a/layout/tools/pageloader/jar.mn
+++ /dev/null
@@ -1,6 +0,0 @@
-pageloader.jar:
-% content pageloader %content/
-* content/quit.js (quit.js)
-* content/pageloader.js (pageloader.js)
-  content/pageloader.xul (pageloader.xul)
-* content/report.js (report.js)
deleted file mode 100644
--- a/layout/tools/pageloader/pageloader.js
+++ /dev/null
@@ -1,441 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is tp.
- *
- * The Initial Developer of the Original Code is
- * Mozilla Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2007
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Rob Helmer <rhelmer@mozilla.com>
- *   Vladimir Vukicevic <vladimir@mozilla.com>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-var NUM_CYCLES = 5;
-
-var pageFilterRegexp = null;
-var reportFormat = "js";
-var useBrowser = true;
-var winWidth = 1024;
-var winHeight = 768;
-
-var doRenderTest = false;
-
-var pages;
-var pageIndex;
-var start_time;
-var cycle;
-var report;
-var renderReport;
-var noisy = false;
-var timeout = -1;
-var timeoutEvent = -1;
-var running = false;
-var forceCC = true;
-
-var content;
-
-var TEST_DOES_OWN_TIMING = 1;
-
-var browserWindow = null;
-
-// the io service
-var gIOS = null;
-
-function plInit() {
-  if (running) {
-    return;
-  }
-  running = true;
-
-  cycle = 0;
-
-  try {
-    var args = window.arguments[0].wrappedJSObject;
-
-    var manifestURI = args.manifest;
-    var startIndex = 0;
-    var endIndex = -1;
-    if (args.startIndex) startIndex = parseInt(args.startIndex);
-    if (args.endIndex) endIndex = parseInt(args.endIndex);
-    if (args.numCycles) NUM_CYCLES = parseInt(args.numCycles);
-    if (args.format) reportFormat = args.format;
-    if (args.width) winWidth = parseInt(args.width);
-    if (args.height) winHeight = parseInt(args.height);
-    if (args.filter) pageFilterRegexp = new RegExp(args.filter);
-    if (args.noisy) noisy = true;
-    if (args.timeout) timeout = parseInt(args.timeout);
-    forceCC = !args.noForceCC;
-    doRenderTest = args.doRender;
-
-    if (forceCC &&
-        !window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
-               .getInterface(Components.interfaces.nsIDOMWindowUtils)
-               .garbageCollect) {
-      forceCC = false;
-    }
-
-    gIOS = Cc["@mozilla.org/network/io-service;1"]
-      .getService(Ci.nsIIOService);
-    if (args.offline)
-      gIOS.offline = true;
-    var fileURI = gIOS.newURI(manifestURI, null, null);
-    pages = plLoadURLsFromURI(fileURI);
-
-    if (!pages) {
-      dumpLine('tp: could not load URLs, quitting');
-      plStop(true);
-    }
-
-    if (pages.length == 0) {
-      dumpLine('tp: no pages to test, quitting');
-      plStop(true);
-    }
-
-    if (startIndex < 0)
-      startIndex = 0;
-    if (endIndex == -1 || endIndex >= pages.length)
-      endIndex = pages.length-1;
-    if (startIndex > endIndex) {
-      dumpLine("tp: error: startIndex >= endIndex");
-      plStop(true);
-    }
-
-    pages = pages.slice(startIndex,endIndex+1);
-    var pageUrls = pages.map(function(p) { return p.url.spec.toString(); });
-    report = new Report(pageUrls);
-
-    if (doRenderTest)
-      renderReport = new Report(pageUrls);
-
-    pageIndex = 0;
-
-    if (args.useBrowserChrome) {
-      var wwatch = Cc["@mozilla.org/embedcomp/window-watcher;1"]
-        .getService(Ci.nsIWindowWatcher);
-      var blank = Cc["@mozilla.org/supports-string;1"]
-        .createInstance(Ci.nsISupportsString);
-      blank.data = "about:blank";
-      browserWindow = wwatch.openWindow
-        (null, "chrome://browser/content/", "_blank",
-         "chrome,dialog=no,width=" + winWidth + ",height=" + winHeight, blank);
-
-      // get our window out of the way
-      window.resizeTo(10,10);
-
-      var browserLoadFunc = function (ev) {
-        browserWindow.removeEventListener('load', browserLoadFunc, true);
-
-        // do this half a second after load, because we need to be
-        // able to resize the window and not have it get clobbered
-        // by the persisted values
-        setTimeout(function () {
-                     browserWindow.resizeTo(winWidth, winHeight);
-                     browserWindow.moveTo(0, 0);
-                     browserWindow.focus();
-
-                     content = browserWindow.getBrowser();
-                     setTimeout(plLoadPage, 100);
-                   }, 500);
-      };
-
-      browserWindow.addEventListener('load', browserLoadFunc, true);
-    } else {
-      window.resizeTo(winWidth, winHeight);
-
-      content = document.getElementById('contentPageloader');
-
-      setTimeout(plLoadPage, 250);
-    }
-  } catch(e) {
-    dumpLine(e);
-    plStop(true);
-  }
-}
-
-function plPageFlags() {
-  return pages[pageIndex].flags;
-}
-
-// load the current page, start timing
-var removeLastAddedListener = null;
-function plLoadPage() {
-  var pageName = pages[pageIndex].url.spec;
-
-  if (removeLastAddedListener)
-    removeLastAddedListener();
-
-  if (plPageFlags() & TEST_DOES_OWN_TIMING) {
-    // if the page does its own timing, use a capturing handler
-    // to make sure that we can set up the function for content to call
-    content.addEventListener('load', plLoadHandlerCapturing, true);
-    removeLastAddedListener = function() {
-      content.removeEventListener('load', plLoadHandlerCapturing, true);
-    };
-  } else {
-    // if the page doesn't do its own timing, use a bubbling handler
-    // to make sure that we're called after the page's own onload() handling
-
-    // XXX we use a capturing event here too -- load events don't bubble up
-    // to the <browser> element.  See bug 390263.
-    content.addEventListener('load', plLoadHandler, true);
-    removeLastAddedListener = function() {
-      content.removeEventListener('load', plLoadHandler, true);
-    };
-  }
-
-  if (timeout > 0) {
-    timeoutEvent = setTimeout('loadFail()', timeout);
-  } 
-  start_time = Date.now();
-  content.loadURI(pageName);
-}
-
-function loadFail() {
-  var pageName = pages[pageIndex].url.spec;
-  dumpLine("__FAILTimeout exceeded on " + pageName + "__FAIL")
-  plStop(true);
-}
-
-function plNextPage() {
-  if (pageIndex < pages.length-1) {
-    pageIndex++;
-
-    if (forceCC) {
-      var tccstart = new Date();
-      window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
-            .getInterface(Components.interfaces.nsIDOMWindowUtils)
-            .garbageCollect(); 
-      var tccend = new Date();
-      report.recordCCTime(tccend - tccstart);
-    }
-
-    setTimeout(plLoadPage, 250);
-  } else {
-    plStop(false);
-  }
-}
-
-function plRecordTime(time) {
-  var pageName = pages[pageIndex].url.spec;
-  var i = pageIndex
-  if (i < pages.length-1) {
-    i++;
-  } else {
-    i = 0;
-  }
-  var nextName = pages[i].url.spec;
-  report.recordTime(pageIndex, time);
-  if (noisy) {
-    dumpLine("Cycle " + (cycle+1) + ": loaded " + pageName + " (next: " + nextName + ")");
-  }
-}
-
-function plLoadHandlerCapturing(evt) {
-  // make sure we pick up the right load event
-  if (evt.type != 'load' ||
-       evt.originalTarget.defaultView.frameElement)
-      return;
-  if (timeout > 0) { 
-    clearTimeout(timeoutEvent);
-  }
-
-  if (!(plPageFlags() & TEST_DOES_OWN_TIMING)) {
-    dumpLine("tp: Capturing onload handler used with page that doesn't do its own timing?");
-    plStop(true);
-  }
-
-  // set up the function for content to call
-  content.contentWindow.wrappedJSObject.tpRecordTime = function (time) {
-    plRecordTime(time);
-    setTimeout(plNextPage, 250);
-  };
-}
-
-// the onload handler
-function plLoadHandler(evt) {
-  // make sure we pick up the right load event
-  if (evt.type != 'load' ||
-       evt.originalTarget.defaultView.frameElement)
-      return;
-  if (timeout > 0) { 
-    clearTimeout(timeoutEvent);
-  }
-  var end_time = Date.now();
-  var time = (end_time - start_time);
-
-  // does this page want to do its own timing?
-  // if so, we shouldn't be here
-  if (plPageFlags() & TEST_DOES_OWN_TIMING) {
-    dumpLine("tp: Bubbling onload handler used with page that does its own timing?");
-    plStop(true);
-  }
-
-  plRecordTime(time);
-
-  if (doRenderTest)
-    runRenderTest();
-
-  plNextPage();
-}
-
-function runRenderTest() {
-  const redrawsPerSample = 500;
-
-  if (!Ci.nsIDOMWindowUtils)
-    return;
-
-  var win;
-
-  if (browserWindow)
-    win = content.contentWindow;
-  else 
-    win = window;
-  var wu = win.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
-
-  var start = Date.now();
-  for (var j = 0; j < redrawsPerSample; j++)
-    wu.redraw();
-  var end = Date.now();
-
-  renderReport.recordTime(pageIndex, end - start);
-}
-
-function plStop(force) {
-  try {
-    if (force == false) {
-      pageIndex = 0;
-      if (cycle < NUM_CYCLES-1) {
-        cycle++;
-        setTimeout(plLoadPage, 250);
-        return;
-      }
-
-      var formats = reportFormat.split(",");
-
-      if (!renderReport) {
-        for each (var fmt in formats)
-          dumpLine(report.getReport(fmt));
-      }
-      else {
-        dumpLine ("*************** Render report *******************");
-        for each (var fmt in formats)
-          dumpLine(renderReport.getReport(fmt));
-      }
-    }
-  } catch (e) {
-    dumpLine(e);
-  }
-
-  if (content)
-    content.removeEventListener('load', plLoadHandler, true);
-
-  goQuitApplication();
-}
-
-/* Returns array */
-function plLoadURLsFromURI(manifestUri) {
-  var fstream = Cc["@mozilla.org/network/file-input-stream;1"]
-    .createInstance(Ci.nsIFileInputStream);
-  var uriFile = manifestUri.QueryInterface(Ci.nsIFileURL);
-
-  fstream.init(uriFile.file, -1, 0, 0);
-  var lstream = fstream.QueryInterface(Ci.nsILineInputStream);
-
-  var d = [];
-
-  var lineNo = 0;
-  var line = {value:null};
-  var more;
-  do {
-    lineNo++;
-    more = lstream.readLine(line);
-    var s = line.value;
-
-    // strip comments
-    s = s.replace(/#.*/, '');
-
-    // strip leading and trailing whitespace
-    s = s.replace(/^\s*/, '').replace(/s\*$/, '');
-
-    if (!s)
-      continue;
-
-    var flags = 0;
-    var urlspec = s;
-
-    // split on whitespace, and figure out if we have any flags
-    var items = s.split(/\s+/);
-    if (items[0] == "include") {
-      if (items.length != 2) {
-        dumpLine("tp: Error on line " + lineNo + " in " + manifestUri.spec + ": include must be followed by the manifest to include!");
-        return null;
-      }
-
-      var subManifest = gIOS.newURI(items[1], null, manifestUri);
-      if (subManifest == null) {
-        dumpLine("tp: invalid URI on line " + manifestUri.spec + ":" + lineNo + " : '" + line.value + "'");
-        return null;
-      }
-
-      var subItems = plLoadURLsFromURI(subManifest);
-      if (subItems == null)
-        return null;
-      d = d.concat(subItems);
-    } else {
-      if (items.length == 2) {
-        if (items[0].indexOf("%") != -1)
-          flags |= TEST_DOES_OWN_TIMING;
-
-        urlspec = items[1];
-      } else if (items.length != 1) {
-        dumpLine("tp: Error on line " + lineNo + " in " + manifestUri.spec + ": whitespace must be %-escaped!");
-        return null;
-      }
-
-      var url = gIOS.newURI(urlspec, null, manifestUri);
-
-      if (pageFilterRegexp && !pageFilterRegexp.test(url.spec))
-        continue;
-
-      d.push({   url: url,
-               flags: flags });
-    }
-  } while (more);
-
-  return d;
-}
-
-function dumpLine(str) {
-  dump(str);
-  dump("\n");
-}
deleted file mode 100644
--- a/layout/tools/pageloader/pageloader.xul
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0"?>
-<!-- ***** BEGIN LICENSE BLOCK *****
-   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
-   -
-   - The contents of this file are subject to the Mozilla Public License Version
-   - 1.1 (the "License"); you may not use this file except in compliance with
-   - the License. You may obtain a copy of the License at
-   - http://www.mozilla.org/MPL/
-   -
-   - Software distributed under the License is distributed on an "AS IS" basis,
-   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-   - for the specific language governing rights and limitations under the
-   - License.
-   -
-   - The Original Code is tp.
-   -
-   - The Initial Developer of the Original Code is the Mozilla Corporation.
-   - Portions created by the Initial Developer are Copyright (C) 2007
-   - the Initial Developer. All Rights Reserved.
-   -
-   - Contributor(s):
-   -   Rob Helmer <rhelmer@mozilla.com>
-   -   Vladimir Vukicevic <vladimir@mozilla.com>
-   -
-   - Alternatively, the contents of this file may be used under the terms of
-   - either the GNU General Public License Version 2 or later (the "GPL"), or
-   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-   - in which case the provisions of the GPL or the LGPL are applicable instead
-   - of those above. If you wish to allow use of your version of this file only
-   - under the terms of either the GPL or the LGPL, and not to allow others to
-   - use your version of this file under the terms of the MPL, indicate your
-   - decision by deleting the provisions above and replace them with the notice
-   - and other provisions required by the LGPL or the GPL. If you do not delete
-   - the provisions above, a recipient may use your version of this file under
-   - the terms of any one of the MPL, the GPL or the LGPL.
-   -
-   - ***** END LICENSE BLOCK ***** -->
-
-<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-
-<?xml-stylesheet href="pageloader.css" type="text/css"?>
-
-<window
-  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-  title="pageloader"
-  screenX="0" screenY="0"
-  onload="plInit()">
-
-  <script type="application/javascript"
-          src="chrome://global/content/globalOverlay.js"/>
-  <script type="application/javascript" src="report.js"/>
-  <script type="application/javascript" src="pageloader.js"/>
-  <script type="application/javascript" src="quit.js"/>
-
-  <browser id="contentPageloader" src="about:blank" 
-    type="content" flex="1"/>
-</window>
deleted file mode 100644
--- a/layout/tools/pageloader/quit.js
+++ /dev/null
@@ -1,110 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is The Original Code is Mozilla Automated Testing Code
- *
- * The Initial Developer of the Original Code is
- * Mozilla Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2005
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s): Bob Clary <bob@bclary.com>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-/*
-  From mozilla/toolkit/content
-  These files did not have a license
-*/
-
-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) 
-  {
-  }
-  return true;
-}
-
-function goQuitApplication()
-{
-  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';
-  }
-
-  try
-  {
-    appService.quit(forceQuit);
-  }
-  catch(ex)
-  {
-    throw('goQuitApplication: ' + ex);
-  }
-
-  return true;
-}
-
deleted file mode 100644
--- a/layout/tools/pageloader/report.js
+++ /dev/null
@@ -1,268 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is tp.
- *
- * The Initial Developer of the Original Code is
- * Mozilla Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2007
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Darin Fisher <darin@meer.net>
- *   Rob Helmer <rhelmer@mozilla.com>
- *   Vladimir Vukicevic <vladimir@mozilla.com>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-// Constructor
-function Report(pages) {
-  this.pages = pages;
-  this.timeVals = new Array(pages.length);  // matrix of times
-  for (var i = 0; i < this.timeVals.length; ++i) {
-    this.timeVals[i] = new Array();
-  }
-  this.totalCCTime = 0;
-  this.showTotalCCTime = false;
-}
-
-// given an array of strings, finds the longest common prefix
-function findCommonPrefixLength(strs) {
-  if (strs.length < 2)
-    return 0;
-
-  var len = 0;
-  do {
-    var newlen = len + 1;
-    var newprefix = null;
-    var failed = false;
-    for (var i = 0; i < strs.length; i++) {
-      if (newlen > strs[i].length) {
-	failed = true;
-	break;
-      }
-
-      var s = strs[i].substr(0, newlen);
-      if (newprefix == null) {
-	newprefix = s;
-      } else if (newprefix != s) {
-	failed = true;
-	break;
-      }
-    }
-
-    if (failed)
-      break;
-
-    len++;
-  } while (true);
-  return len;
-}
-
-function compareNumbers(a, b) {
-  return a - b;
-}
-
-// returns an object with the following properties:
-//   min  : min value of array elements
-//   max  : max value of array elements
-//   mean : mean value of array elements
-//   vari : variance computation
-//   stdd : standard deviation, sqrt(vari)
-//   indexOfMax : index of max element (the element that is
-//                removed from the mean computation)
-function getArrayStats(ary) {
-  var r = {};
-  r.min = ary[0];
-  r.max = ary[0];
-  r.indexOfMax = 0;
-  var sum = 0;
-  for (var i = 0; i < ary.length; ++i) {
-    if (ary[i] < r.min) {
-      r.min = ary[i];
-    } else if (ary[i] > r.max) {
-      r.max = ary[i];
-      r.indexOfMax = i;
-    }
-    sum = sum + ary[i];
-  }
-
-  // median
-  if (ary.length > 1) {
-      sorted_ary = ary.concat();
-      sorted_ary.sort(compareNumbers);
-      // remove longest run
-      sorted_ary.pop();
-      if (sorted_ary.length%2) {
-        r.median = sorted_ary[(sorted_ary.length-1)/2]; 
-      }else{
-        var n = Math.floor(sorted_ary.length / 2);
-        if (n >= sorted_ary.length)
-          r.median = sorted_ary[n];
-        else
-          r.median = (sorted_ary[n-1] + sorted_ary[n]) / 2;
-      }
-  }else{
-    r.median = ary[0];
-  }
-
-  // ignore max value when computing mean and stddev
-  if (ary.length > 1)
-    r.mean = (sum - r.max) / (ary.length - 1);
-  else
-    r.mean = ary[0];
-
-  r.vari = 0;
-  for (var i = 0; i < ary.length; ++i) {
-    if (i == r.indexOfMax)
-      continue;
-    var d = r.mean - ary[i];
-    r.vari = r.vari + d * d;
-  }
-
-  if (ary.length > 1) {
-    r.vari = r.vari / (ary.length - 1);
-    r.stdd = Math.sqrt(r.vari);
-  } else {
-    r.vari = 0.0;
-    r.stdd = 0.0;
-  }
-  return r;
-}
-
-function strPad(o, len, left) {
-  var str = o.toString();
-  if (!len)
-    len = 6;
-  if (left == null)
-    left = true;
-
-  if (str.length < len) {
-    len -= str.length;
-    while (--len) {
-      if (left)
-	str = " " + str;
-      else
-	str += " ";
-    }
-  }
-
-  str += " ";
-  return str;
-}
-
-function strPadFixed(n, len, left) {
-  return strPad(n.toFixed(0), len, left);
-}
-
-Report.prototype.getReport = function(format) {
-  // avg and avg median are cumulative for all the pages
-  var avgs = new Array();
-  var medians = new Array();
-  for (var i = 0; i < this.timeVals.length; ++i) {
-     avgs[i] = getArrayStats(this.timeVals[i]).mean;
-     medians[i] = getArrayStats(this.timeVals[i]).median;
-  }
-  var avg = getArrayStats(avgs).mean;
-  var avgmed = getArrayStats(medians).mean;
-
-  var report;
-
-  var prefixLen = findCommonPrefixLength(this.pages);
-
-  if (format == "js") {
-    // output "simple" js format;
-    // array of { page: "str", value: 123.4, stddev: 23.3 } objects
-    report = "([";
-    for (var i = 0; i < this.timeVals.length; i++) {
-      var stats = getArrayStats(this.timeVals[i]);
-      report += uneval({ page: this.pages[i].substr(prefixLen), value: stats.mean, stddev: stats.stdd});
-      report += ",";
-    }
-    report += "])";
-  } else if (format == "jsfull") {
-    // output "full" js format, with raw values
-  } else if (format == "text") {
-    // output text format suitable for dumping
-    report = "============================================================\n";
-    report += "    " + strPad("Page", 40, false) + strPad("mean") + strPad("stdd") + strPad("min") + strPad("max") + "raw" + "\n";
-    for (var i = 0; i < this.timeVals.length; i++) {
-      var stats = getArrayStats(this.timeVals[i]);
-      report +=
-        strPad(i, 4, true) +
-        strPad(this.pages[i].substr(prefixLen), 40, false) +
-        strPadFixed(stats.mean) +
-        strPadFixed(stats.stdd) +
-        strPadFixed(stats.min) +
-        strPadFixed(stats.max) +
-        this.timeVals[i] +
-        "\n";
-    }
-    if (this.showTotalCCTime) {
-      report += "Cycle collection: " + this.totalCCTime + "\n"
-    }
-    report += "============================================================\n";
-  } else if (format == "tinderbox") {
-    report = "__start_tp_report\n";
-    report += "_x_x_mozilla_page_load,"+avgmed+",NaN,NaN\n";  // max and min are just 0, ignored
-    report += "_x_x_mozilla_page_load_details,avgmedian|"+avgmed+"|average|"+avg.toFixed(2)+"|minimum|NaN|maximum|NaN|stddev|NaN\n";
-    report += "|i|pagename|median|mean|min|max|runs|\n";
-
-    for (var i = 0; i < this.timeVals.length; i++) {
-      var r = getArrayStats(this.timeVals[i]);
-      report += '|'+
-        i + ';'+
-        this.pages[i].substr(prefixLen) + ';'+
-        r.median + ';'+
-        r.mean + ';'+
-        r.min + ';'+
-        r.max + ';'+
-        this.timeVals[i].join(";") +
-        "\n";
-    }
-    report += "__end_tp_report\n";
-    if (this.showTotalCCTime) {
-      report += "__start_cc_report\n";
-      report += "_x_x_mozilla_cycle_collect," + this.totalCCTime + "\n";
-      report += "__end_cc_report\n";
-    }
-    var now = (new Date()).getTime();
-    report += "__startTimestamp" + now + "__endTimestamp\n"; //timestamp for determning shutdown time, used by talos
-  } else {
-    report = "Unknown report format";
-  }
-
-  return report;
-}
-
-Report.prototype.recordTime = function(pageIndex, ms) {
-  this.timeVals[pageIndex].push(ms);
-}
-
-Report.prototype.recordCCTime = function(ms) {
-  this.totalCCTime += ms;
-  this.showTotalCCTime = true;
-}
deleted file mode 100644
--- a/layout/tools/pageloader/tp-cmdline.js
+++ /dev/null
@@ -1,119 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is DOM Inspector.
- *
- * The Initial Developer of the Original Code is
- * Christopher A. Aillon <christopher@aillon.com>.
- * Portions created by the Initial Developer are Copyright (C) 2003
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Christopher A. Aillon <christopher@aillon.com>
- *   L. David Baron, Mozilla Corporation <dbaron@dbaron.org> (modified for reftest)
- *   Vladimir Vukicevic, Mozilla Corporation <dbaron@dbaron.org> (modified for tp)
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-// This only implements nsICommandLineHandler, since it needs
-// to handle multiple arguments.
-
-const nsISupports               = Components.interfaces.nsISupports;
-  
-const nsICommandLine            = Components.interfaces.nsICommandLine;
-const nsICommandLineHandler     = Components.interfaces.nsICommandLineHandler;
-const nsISupportsString         = Components.interfaces.nsISupportsString;
-const nsIWindowWatcher          = Components.interfaces.nsIWindowWatcher;
-
-function PageLoaderCmdLineHandler() {}
-PageLoaderCmdLineHandler.prototype =
-{
-  classID: Components.ID('{8AF052F5-8EFE-4359-8266-E16498A82E8B}'),
-
-  /* nsISupports */
-  QueryInterface : XPCOMUtils.generateQI([nsICommandLineHandler]),
-
-  /* nsICommandLineHandler */
-  handle : function handler_handle(cmdLine) {
-    var args = {};
-    try {
-      var uristr = cmdLine.handleFlagWithParam("tp", false);
-      if (uristr == null)
-        return;
-      try {
-        args.manifest = cmdLine.resolveURI(uristr).spec;
-      } catch (e) {
-        return;
-      }
-
-      args.numCycles = cmdLine.handleFlagWithParam("tpcycles", false);
-      args.startIndex = cmdLine.handleFlagWithParam("tpstart", false);
-      args.endIndex = cmdLine.handleFlagWithParam("tpend", false);
-      args.filter = cmdLine.handleFlagWithParam("tpfilter", false);
-      args.format = cmdLine.handleFlagWithParam("tpformat", false);
-      args.useBrowserChrome = cmdLine.handleFlag("tpchrome", false);
-      args.doRender = cmdLine.handleFlag("tprender", false);
-      args.width = cmdLine.handleFlagWithParam("tpwidth", false);
-      args.height = cmdLine.handleFlagWithParam("tpheight", false);
-      args.offline = cmdLine.handleFlag("tpoffline", false);
-      args.noisy = cmdLine.handleFlag("tpnoisy", false);
-      args.timeout = cmdLine.handleFlagWithParam("tptimeout", false);
-      args.noForceCC = cmdLine.handleFlag("tpnoforcecc", false);
-    }
-    catch (e) {
-      return;
-    }
-
-    // get our data through xpconnect
-    args.wrappedJSObject = args;
-
-    var wwatch = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
-                           .getService(nsIWindowWatcher);
-    wwatch.openWindow(null, "chrome://pageloader/content/pageloader.xul", "_blank",
-                      "chrome,dialog=no,all", args);
-    cmdLine.preventDefault = true;
-  },
-
-  helpInfo :
-  "  -tp <file>         Run pageload perf tests on given manifest\n" +
-  "  -tpfilter str      Only include pages from manifest that contain str (regexp)\n" +
-  "  -tpcycles n        Loop through pages n times\n" +
-  "  -tpstart n         Start at index n in the manifest\n" +
-  "  -tpend n           End with index n in the manifest\n" +
-  "  -tpformat f1,f2,.. Report format(s) to use\n" +
-  "  -tpchrome          Test with normal browser chrome\n" +
-  "  -tprender          Run render-only benchmark for each page\n" +
-  "  -tpwidth width     Width of window\n" +
-  "  -tpheight height   Height of window\n" +
-  "  -tpoffline         Force offline mode\n" +
-  "  -tpnoisy           Dump the name of the last loaded page to console\n" + 
-  "  -tptimeout         Max amount of time given for a page to load, quit if exceeded\n" +
-  "  -tpnoforcecc       Don't force cycle collection between each pageload\n"
-
-};
-
-var NSGetFactory = XPCOMUtils.generateNSGetFactory([PageLoaderCmdLineHandler]);
deleted file mode 100644
--- a/layout/tools/pageloader/tp-cmdline.manifest
+++ /dev/null
@@ -1,3 +0,0 @@
-component {8AF052F5-8EFE-4359-8266-E16498A82E8B} tp-cmdline.js
-contract @mozilla.org/commandlinehandler/general-startup;1?type=tp {8AF052F5-8EFE-4359-8266-E16498A82E8B}
-category command-line-handler m-tp @mozilla.org/commandlinehandler/general-startup;1?type=tp
deleted file mode 100644
--- a/testing/tools/pageloader/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-all:
-	zip -r pageloader.xpi chrome chrome.manifest install.rdf 
-
-check:
-	./test/chrome/content/report.js
-	./test/chrome/content/pageloader.js
deleted file mode 100644
--- a/testing/tools/pageloader/README
+++ /dev/null
@@ -1,13 +0,0 @@
-This is a pageloader extension for Firefox. It cycles through a list of URLs 
-specified in a text file by the user (one URL per line), and reports statistics
-and raw data about the time each page took to load.
-
-This data is dumped to the console, so the browser.dom.window.dump.enabled pref
-(boolean) must be set to "true", and on Windows Firefox must be run with the
-"-console" command line switch.
-
-This test is intended to be run standalone from a chrome URL, e.g.:
-firefox -chrome chrome://pageloader/content/pageloader.xul
-
-The window will close and the data will be dumped to the console when the
-test has completed.
deleted file mode 100644
--- a/testing/tools/pageloader/chrome.manifest
+++ /dev/null
@@ -1,1 +0,0 @@
-content pageloader chrome/content/
deleted file mode 100644
--- a/testing/tools/pageloader/chrome/content/pageloader.css
+++ /dev/null
@@ -1,3 +0,0 @@
-window {
-  background-color: #0088CC;  
-}
deleted file mode 100644
--- a/testing/tools/pageloader/chrome/content/pageloader.js
+++ /dev/null
@@ -1,199 +0,0 @@
-var NUM_CYCLES = 5;
-
-var pages;
-var pageIndex;
-var results;
-var start_time;
-var end_time;
-var cycle;
-var report;
-var running = false;
-
-function plInit() {
-  if (running) {
-    return;
-  }
-  running = true;
-  try { 
-    pageIndex = 0;
-    cycle = 0;
-    results = new Object();
-    if (! pages) {
-      var file;
-      try {
-        file = plDefaultFile();
-      } catch(e) {
-        dumpLine(e);
-      }
-      if (! file.exists()) {
-        try {
-          file = plFilePicker();
-        } catch(e) {
-          dumpLine(e);
-        }
-      }
-      pages = plLoadURLsFromFile(file);
-    }
-    if (! pages ) {
-      alert('could not load URLs, quitting');
-      plStop(true);
-    }
-    if (pages.length == 0) {
-      alert('no pages to test, quitting');
-      plStop(true);
-    }
-    report = new Report(pages);
-    plLoadPage();
-  } catch(e) {
-    dumpLine(e);
-    plStop(true);
-  }
-}
-
-function plLoadPage() {
-  try {
-    start_time = new Date();
-    p = pages[pageIndex];
-    this.content = document.getElementById('contentPageloader');
-    this.content.addEventListener('load', plLoadHandler, true);
-    this.content.loadURI(p);
-  } catch (e) {
-    dumpLine(e);
-    plStop(true);
-  }
-}
-
-function plLoadHandler(evt) {
-  if (evt.type == 'load') {
-    window.setTimeout('reallyHandle()', 500);
-  } else {
-    dumpLine('Unknown event type: '+evt.type);
-    plStop(true);
-  }
-}
-
-function reallyHandle() {
-    if (pageIndex < pages.length) {
-      try { 
-        end_time = new Date();    
-        var pageName = pages[pageIndex];
-        results[pageName] = (end_time - start_time);
-        start_time = new Date();
-        dumpLine(pageName+" took "+results[pageName]);
-        plReport();
-        pageIndex++;
-        plLoadPage();
-      } catch(e) {
-        dumpLine(e);
-        plStop(true);
-      }
-    } else {
-      plStop(false);
-    }
-}
-
-function plReport() {
-    try {
-      var reportNode = document.getElementById('report');
-      var pageName = pages[pageIndex];
-      var time = results[pageName];
-      report.recordTime(pageIndex, time);
-    } catch(e) {
-      dumpLine(e);
-      plStop(false);
-    }
-}
-
-function plStop(force) {
-  try {
-    if (force == false) {
-      pageIndex = 0;
-      results = new Object;
-      if (cycle < NUM_CYCLES) {
-        cycle++;
-        plLoadPage();
-        return;
-      } else {
-        dumpLine(report.getReport());
-      }
-    }
-    this.content.removeEventListener('load', plLoadHandler, true);
-  } catch(e) {
-    dumpLine(e);
-  }
-  goQuitApplication();
-}
-
-/* Returns nsilocalfile */
-function plDefaultFile() {
-  try {
-    const nsIIOService = Components.interfaces.nsIIOService;
-    var dirService = 
-      Components.classes["@mozilla.org/file/directory_service;1"].
-      getService(Components.interfaces.nsIProperties);
-    var profileDir = dirService.get("ProfD", 
-                     Components.interfaces.nsILocalFile);
-    var file = Components.classes["@mozilla.org/file/local;1"].
-               createInstance(Components.interfaces.nsILocalFile);
-    var path = profileDir.path;
-    file.initWithPath(path);
-    file.append("urls.txt");
-    dumpLine('will attempt to load default file '+file.path);
-    return file;
-  } catch (e) {
-    dumpLine(e);
-  }
-}
-
-
-/* Returns nsifile */
-function plFilePicker() {
-  try {
-    const nsIFilePicker = Components.interfaces.nsIFilePicker;
-    
-    var fp = Components.classes["@mozilla.org/filepicker;1"]
-                 .createInstance(nsIFilePicker);
-    fp.init(window, "Dialog Title", nsIFilePicker.modeOpen);
-    fp.appendFilters(nsIFilePicker.filterAll | nsIFilePicker.filterText);
-    var rv = fp.show();
-    if (rv == nsIFilePicker.returnOK) {
-      return fp.file;
-    }
-  } catch (e) {
-    dumpLine(e);
-  }
-}
-    
-/* Returns array */
-function plLoadURLsFromFile(file) {
-  try {
-    var data = "";
-    var fstream = 
-                Components.classes["@mozilla.org/network/file-input-stream;1"]
-                .createInstance(Components.interfaces.nsIFileInputStream);
-    var sstream = Components.classes["@mozilla.org/scriptableinputstream;1"]
-              .createInstance(Components.interfaces.nsIScriptableInputStream);
-    fstream.init(file, -1, 0, 0);
-    sstream.init(fstream); 
-    
-    var str = sstream.read(4096);
-    while (str.length > 0) {
-      data += str;
-      str = sstream.read(4096);
-    }
-    
-    sstream.close();
-    fstream.close();
-    var p = data.split("\n");
-    // discard result of final split (EOF)
-    p.pop()
-    return p;
-  } catch (e) {
-    dumpLine(e);
-  }
-}
-
-function dumpLine(str) {
-  dump(str);
-  dump("\n");
-}
deleted file mode 100644
--- a/testing/tools/pageloader/chrome/content/pageloader.xul
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet href="pageloader.css" type="text/css"?>
-<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-        onload="plInit()">
-  <script type="application/x-javascript" 
-          src="chrome://global/content/globalOverlay.js"/>
-  <script type="application/x-javascript" src="report.js"></script>
-  <script type="application/x-javascript" src="pageloader.js"></script>
-  <box align="center">
-    <browser id="contentPageloader" src="about:blank" 
-        type="content" flex="1" align="center" width="1024" height="768"/>
-  </box>
-</window>
deleted file mode 100644
--- a/testing/tools/pageloader/chrome/content/report.js
+++ /dev/null
@@ -1,112 +0,0 @@
-// Constructor
-function Report(pages) {
-  this.pages = pages;
-  this.timeVals = new Array(pages.length);  // matrix of times
-  for (var i = 0; i < this.timeVals.length; ++i) {
-    this.timeVals[i] = new Array;
-  }
-}
-
-// returns an object with the following properties:
-//   min  : min value of array elements
-//   max  : max value of array elements
-//   mean : mean value of array elements
-//   vari : variance computation
-//   stdd : standard deviation, sqrt(vari)
-//   indexOfMax : index of max element (the element that is
-//                removed from the mean computation)
-Report.prototype.getArrayStats = function(ary) {
-  var r = {};
-  r.min = ary[0];
-  r.max = ary[0];
-  r.indexOfMax = 0;
-  var sum = 0;
-  for (var i = 0; i < ary.length; ++i) {
-    if (ary[i] < r.min) {
-      r.min = ary[i];
-    } else if (ary[i] > r.max) {
-      r.max = ary[i];
-      r.indexOfMax = i;
-    }
-    sum = sum + ary[i];
-  }
-
-  // median
-  sorted_ary = ary.concat();
-  sorted_ary.sort();
-  // remove longest run
-  sorted_ary.pop();
-  if (sorted_ary.length%2) {
-    r.median = sorted_ary[(sorted_ary.length-1)/2]; 
-  }else{
-    var n = Math.floor(sorted_ary.length / 2);
-    r.median = (sorted_ary[n] + sorted_ary[n + 1]) / 2;
-  }
-
-  // ignore max value when computing mean and stddev
-  r.mean = (sum - r.max) / (ary.length - 1);
-
-  r.vari = 0;
-  for (var i = 0; i < ary.length; ++i) {
-    if (i == r.indexOfMax)
-      continue;
-    var d = r.mean - ary[i];
-    r.vari = r.vari + d * d;
-  }
-
-  r.vari = r.vari / (ary.length - 1);
-  r.stdd = Math.sqrt(r.vari);
-  return r;
-}
-
-Report.prototype.getReport = function() {
-  var all = new Array();
-  var counter = 0;
-  
-  for (var i = 0; i < this.timeVals.length; ++i) {
-    for (var j = 0; j < this.timeVals[i].length; ++j) {
-      all[counter] = this.timeVals[i][j];
-      ++counter;
-    }
-  }
-
-  // avg and avg median are cumulative for all the pages
-  var avgs = new Array();
-  var medians = new Array();
-  for (var i = 0; i < this.timeVals.length; ++i) {
-     avgs[i] = this.getArrayStats(this.timeVals[i]).mean;
-     medians[i] = this.getArrayStats(this.timeVals[i]).median;
-  }
-  var avg = this.getArrayStats(avgs).mean;
-  var avgmed = this.getArrayStats(medians).mean;
-
-  var r = this.getArrayStats(all);
-
-  var report = '';
-
-  report +=
-    "(tinderbox dropping follows)\n"+
-    "_x_x_mozilla_page_load,"+avgmed+","+r.max+","+r.min+"\n"+
-    "_x_x_mozilla_page_load_details,avgmedian|"+avgmed+"|average|"+avg.toFixed(2)+"|minimum|"+r.min+"|maximum|"+r.max+"|stddev|"+r.stdd.toFixed(2)+":"
-
-  for (var i = 0; i < this.timeVals.length; ++i) {
-    r = this.getArrayStats(this.timeVals[i]);
-    report +=
-      '|'+
-      i+';'+
-      pages[i]+';'+
-      r.median+';'+
-      r.mean+';'+
-      r.min+';'+
-      r.max
-    for (var j = 0; j < this.timeVals[i].length; ++j) {
-      report += 
-        ';'+this.timeVals[i][j]
-    }
-  } 
-  return report;
-}
-
-Report.prototype.recordTime = function(pageIndex, ms) {
-  this.timeVals[pageIndex].push(ms);
-}
deleted file mode 100644
--- a/testing/tools/pageloader/install.rdf
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
-  <Description about="urn:mozilla:install-manifest">
-    <em:id>pageloader@mozilla.org</em:id>
-    <em:version>0.5</em:version>
-    <em:type>2</em:type>
-   
-    <!-- Target Application this extension can install into, 
-         with minimum and maximum supported versions. --> 
-    <em:targetApplication>
-      <Description>
-        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-        <em:minVersion>1.0+</em:minVersion>
-        <em:maxVersion>4.0</em:maxVersion>
-      </Description>
-    </em:targetApplication>
-   
-    <!-- Front End MetaData -->
-    <em:name>PageLoader</em:name>
-    <em:description>A pageloader extension.</em:description>
-    <em:creator>Robert Helmer</em:creator>
-    <em:homepageURL>http://www.roberthelmer.com/</em:homepageURL>
-  </Description>      
-</RDF>
deleted file mode 100755
--- a/testing/tools/pageloader/test/chrome/content/pageloader.js
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/js
-
-// mock objects
-function alert(str) {
-  print(str);
-}
-function dump(str) {
-  print(str);
-}
-window = new Object();
-document = new Object();
-document.createEvent = function(str) {
-  obj = new Object();
-  obj.initMouseEvent = function() {}
-  return obj;
-}
-document.getElementById = function(str) {
-  obj = new Object(); 
-  if (str == 'contentPageloader') {
-    obj.content = new Object();
-    obj.content.addEventListener = function() {}
-    obj.content.removeEventListener = function() {}
-    obj.content.loadURI = function() {}
-    return obj.content;
-  } else if (str == 'plStartButton') {
-    obj.startButton = new Object();
-    obj.startButton.setAttribute = function(key, value) {}
-    return obj.startButton;
-  }
-}
-evt = new Object();
-evt.type = 'load';
-window.setTimeout = function() {}
-this.content = document.getElementById('content');
-
-// dummy data
-pages = ['http://google.com'];
-
-load(['chrome/content/pageloader.js']);
-load(['chrome/content/report.js']);
-
-plInit(true);
-plInit(false);
-for (cycle = 0; cycle < NUM_CYCLES*2; cycle++) {
-  plLoadHandler(evt);
-}
deleted file mode 100755
--- a/testing/tools/pageloader/test/chrome/content/report.js
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/js
-load(['chrome/content/report.js']);
-
-pages = [
-  'http://www.google.com',
-  'http://www.yahoo.com',
-  'http://www.msn.com',
-];
-
-cycle_time = 5;
-report = new Report(pages);
-
-for (var c=0; c < cycle_time; c++) {
-  for (var p=0; p < pages.length; p++) {
-    report.recordTime(p, c+1);
-  }
-}
-
-print(report.getReport());
--- a/toolkit/toolkit-makefiles.sh
+++ b/toolkit/toolkit-makefiles.sh
@@ -829,17 +829,16 @@ if [ "$ENABLE_TESTS" ]; then
     layout/inspector/tests/Makefile
     layout/inspector/tests/chrome/Makefile
     layout/mathml/tests/Makefile
     layout/reftests/fonts/Makefile
     layout/reftests/fonts/mplus/Makefile
     layout/style/test/Makefile
     layout/style/test/chrome/Makefile
     layout/tables/test/Makefile
-    layout/tools/pageloader/Makefile
     layout/tools/reftest/Makefile
     layout/xul/base/test/Makefile
     layout/xul/test/Makefile
     modules/libjar/test/Makefile
     modules/libjar/test/chrome/Makefile
     modules/libjar/test/mochitest/Makefile
     modules/libpref/test/Makefile
     netwerk/streamconv/test/Makefile