Backed out changeset 80451fb8f11c (bug 585152) as per discussion in the bug.
authorJonathan Kew <jfkthame@gmail.com>
Wed, 13 Apr 2011 14:35:06 +0100
changeset 68052 3b5aeb2747b123aa4e152afcd07503fc8e88c6a2
parent 68007 80451fb8f11c98bce7c98ae0a6683612616ce067
child 68053 2a343ee6acd3131d8e6f04afc346e069d74e101f
push id19490
push userjkew@mozilla.com
push dateWed, 13 Apr 2011 13:41:18 +0000
treeherdermozilla-central@2a343ee6acd3 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs585152
milestone2.2a1pre
backs out80451fb8f11c98bce7c98ae0a6683612616ce067
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out changeset 80451fb8f11c (bug 585152) as per discussion in the bug.
browser/base/content/tabbrowser.xml
browser/base/content/test/browser_inspector_domPanel.js
browser/components/places/tests/unit/test_placesTxn.js
browser/components/sessionstore/src/nsSessionStore.js
browser/components/sessionstore/test/browser/browser_248970_b.js
browser/components/sessionstore/test/browser/browser_345898.js
browser/components/sessionstore/test/browser/browser_346337.js
browser/components/sessionstore/test/browser/browser_350525.js
browser/components/sessionstore/test/browser/browser_393716.js
browser/components/sessionstore/test/browser/browser_394759.js
browser/components/sessionstore/test/browser/browser_394759_privatebrowsing.js
browser/components/sessionstore/test/browser/browser_448741.js
browser/components/sessionstore/test/browser/browser_459906.js
browser/components/sessionstore/test/browser/browser_465215.js
browser/components/sessionstore/test/browser/browser_465223.js
browser/components/sessionstore/test/browser/browser_476161.js
browser/components/sessionstore/test/browser/browser_477657.js
browser/components/sessionstore/test/browser/browser_524745.js
browser/components/sessionstore/test/browser/browser_586068-cascaded_restore.js
browser/components/sessionstore/test/browser/browser_590268.js
browser/components/sessionstore/test/browser/browser_607016.js
browser/components/sessionstore/test/browser/head.js
content/base/test/test_CrossSiteXHR_cache.html
content/html/content/test/test_bug209275.xhtml
content/html/content/test/test_bug481335.xhtml
docshell/test/bug413310-post.sjs
dom/tests/mochitest/whatwg/test_bug500328.html
extensions/cookie/test/unit/test_permmanager_expiration.js
extensions/cookie/test/unit/test_permmanager_notifications.js
js/src/jsdate.cpp
layout/tools/reftest/reftest.js
toolkit/components/console/hudservice/HUDService.jsm
toolkit/components/console/hudservice/tests/browser/browser_webconsole_basic_net_logging.js
toolkit/components/console/hudservice/tests/browser/browser_webconsole_bug_583816_tab_focus.js
toolkit/components/downloads/test/unit/test_bug_401430.js
toolkit/content/widgets/toolbar.xml
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -1266,17 +1266,17 @@
             // Add the Message and the Browser to the box
             var notificationbox = document.createElementNS(
                                     "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
                                     "notificationbox");
             notificationbox.setAttribute("flex", "1");
             notificationbox.appendChild(stack);
 
             var position = this.tabs.length - 1;
-            var uniqueId = "panel" + Math.floor(Date.now()) + position;
+            var uniqueId = "panel" + Date.now() + position;
             notificationbox.id = uniqueId;
             t.linkedPanel = uniqueId;
             t.linkedBrowser = b;
             t._tPos = position;
             if (t.previousSibling.selected)
               t.setAttribute("afterselected", true);
 
             // NB: this appendChild call causes us to run constructors for the
--- a/browser/base/content/test/browser_inspector_domPanel.js
+++ b/browser/base/content/test/browser_inspector_domPanel.js
@@ -60,35 +60,35 @@ function createDocument()
   doc.title = "Inspector DOM Test";
   Services.obs.addObserver(runDOMTests, "inspector-opened", false);
   InspectorUI.openInspectorUI();
 }
 
 function nodeGenerator()
 {
   let body = doc.body;
-  newProperty = "rand" + Math.floor(Date.now());
+  newProperty = "rand" + Date.now();
   body[newProperty] = Math.round(Math.random() * 100);
   InspectorUI.inspectNode(body);
   yield;
 
   let h1 = doc.querySelector("h1");
-  newProperty = "rand2" + Math.floor(Date.now());
+  newProperty = "rand2" + Date.now();
   h1[newProperty] = "test" + Math.random();
   InspectorUI.inspectNode(h1);
   yield;
 
   let first = doc.getElementById("first");
-  newProperty = "rand3" + Math.floor(Date.now());
+  newProperty = "rand3" + Date.now();
   first[newProperty] = null;
   InspectorUI.inspectNode(first);
   yield;
 
   let closing = doc.getElementById("closing");
-  newProperty = "bazbaz" + Math.floor(Date.now());
+  newProperty = "bazbaz" + Date.now();
   closing[newProperty] = false;
   InspectorUI.inspectNode(closing);
   yield;
 }
 
 function runDOMTests()
 {
   InspectorUI._log("runDOMtests");
--- a/browser/components/places/tests/unit/test_placesTxn.js
+++ b/browser/components/places/tests/unit/test_placesTxn.js
@@ -95,21 +95,16 @@ var observer = {
   }
 };
 bmsvc.addObserver(observer, false);
 
 // index at which items should begin
 var bmStartIndex = 0;
 
 // main
-
-function time() {
-    return (new Date()).getTime();
-}
-
 function run_test() {
   // get bookmarks root index
   var root = bmsvc.bookmarksMenuFolder;
 
   //Test creating a folder with a description
   const TEST_DESCRIPTION = "this is my test description";
   var annos = [{ name: PlacesUIUtils.DESCRIPTION_ANNO,
                  type: annosvc.TYPE_STRING,
@@ -537,17 +532,17 @@ function run_test() {
   // Test generic page annotation
   var pageAnnoObj = { name: "testAnno/testInt",
                       type: Ci.nsIAnnotationService.TYPE_INT32,
                       flags: 0,
                       value: 123,
                       expires: Ci.nsIAnnotationService.EXPIRE_NEVER };
   var hs = Cc["@mozilla.org/browser/nav-history-service;1"].
            getService(Ci.nsINavHistoryService);
-  hs.addVisit(uri("http://www.mozilla.org/"), time() * 1000, null,
+  hs.addVisit(uri("http://www.mozilla.org/"), Date.now() * 1000, null,
               hs.TRANSITION_TYPED, false, 0);
   var genPageAnnoTxn = ptSvc.setPageAnnotation(uri("http://www.mozilla.org/"), pageAnnoObj);
   genPageAnnoTxn.doTransaction();
   do_check_true(annosvc.pageHasAnnotation(uri("http://www.mozilla.org/"), "testAnno/testInt"));
   genPageAnnoTxn.undoTransaction();
   do_check_false(annosvc.pageHasAnnotation(uri("http://www.mozilla.org/"), "testAnno/testInt"));
   genPageAnnoTxn.redoTransaction();
   do_check_true(annosvc.pageHasAnnotation(uri("http://www.mozilla.org/"), "testAnno/testInt"));
@@ -612,26 +607,26 @@ function run_test() {
   postDataTxn.doTransaction();
   do_check_true(annosvc.itemHasAnnotation(postDataId, POST_DATA_ANNO))
   do_check_eq(annosvc.getItemAnnotation(postDataId, POST_DATA_ANNO), postData);
   postDataTxn.undoTransaction();
   do_check_false(annosvc.itemHasAnnotation(postDataId, POST_DATA_ANNO))
 
   // Test editing item date added
   var oldAdded = bmsvc.getItemDateAdded(bkmk1Id);
-  var newAdded = time();
+  var newAdded = Date.now();
   var eidaTxn = ptSvc.editItemDateAdded(bkmk1Id, newAdded);
   eidaTxn.doTransaction();
   do_check_eq(newAdded, bmsvc.getItemDateAdded(bkmk1Id));
   eidaTxn.undoTransaction();
   do_check_eq(oldAdded, bmsvc.getItemDateAdded(bkmk1Id));
 
   // Test editing item last modified 
   var oldModified = bmsvc.getItemLastModified(bkmk1Id);
-  var newModified = time();
+  var newModified = Date.now();
   var eilmTxn = ptSvc.editItemLastModified(bkmk1Id, newModified);
   eilmTxn.doTransaction();
   do_check_eq(newModified, bmsvc.getItemLastModified(bkmk1Id));
   eilmTxn.undoTransaction();
   do_check_eq(oldModified, bmsvc.getItemLastModified(bkmk1Id));
 
   // Test tagURI/untagURI
   var tagURI = uri("http://foo.tld");
@@ -729,17 +724,17 @@ function run_test() {
   do_check_eq(bmsvc.getItemType(newBkmk3_3Id), bmsvc.TYPE_FOLDER);
   do_check_eq(bmsvc.getItemTitle(newBkmk3_3Id), "folder");
   // Check last added back item id.
   // Notice items are restored in reverse order.
   do_check_eq(observer._itemAddedId, newBkmk1Id);
 
   // Test creating an item with child transactions.
   var childTxns = [];
-  var newDateAdded = time() - 20000;
+  var newDateAdded = Date.now() - 20000;
   childTxns.push(ptSvc.editItemDateAdded(null, newDateAdded));
   var itemChildAnnoObj = { name: "testAnno/testInt",
                            type: Ci.nsIAnnotationService.TYPE_INT32,
                            flags: 0,
                            value: 123,
                            expires: Ci.nsIAnnotationService.EXPIRE_NEVER };
   childTxns.push(ptSvc.setItemAnnotation(null, itemChildAnnoObj));
   var itemWChildTxn = ptSvc.createItem(uri("http://www.example.com"), root,
--- a/browser/components/sessionstore/src/nsSessionStore.js
+++ b/browser/components/sessionstore/src/nsSessionStore.js
@@ -708,17 +708,17 @@ SessionStoreService.prototype = {
       return;
 
     // ignore non-browser windows and windows opened while shutting down
     if (aWindow.document.documentElement.getAttribute("windowtype") != "navigator:browser" ||
         this._loadState == STATE_QUITTING)
       return;
 
     // assign it a unique identifier (timestamp)
-    aWindow.__SSi = "window" + Math.floor(Date.now());
+    aWindow.__SSi = "window" + Date.now();
 
     // and create its data object
     this._windows[aWindow.__SSi] = { tabs: [], selected: 0, _closedTabs: [] };
     if (!this._isWindowLoaded(aWindow))
       this._windows[aWindow.__SSi]._restoring = true;
     if (!aWindow.toolbar.visible)
       this._windows[aWindow.__SSi].isPopup = true;
     
@@ -838,17 +838,17 @@ SessionStoreService.prototype = {
    * @param aWindow
    *        Window reference
    */
   onClose: function sss_onClose(aWindow) {
     // this window was about to be restored - conserve its original data, if any
     let isFullyLoaded = this._isWindowLoaded(aWindow);
     if (!isFullyLoaded) {
       if (!aWindow.__SSi)
-        aWindow.__SSi = "window" + Math.floor(Date.now());
+        aWindow.__SSi = "window" + Date.now();
       this._windows[aWindow.__SSi] = this._statesToRestore[aWindow.__SS_restoreID];
       delete this._statesToRestore[aWindow.__SS_restoreID];
       delete aWindow.__SS_restoreID;
     }
     
     // ignore windows not tracked by SessionStore
     if (!aWindow.__SSi || !this._windows[aWindow.__SSi]) {
       return;
@@ -2976,17 +2976,17 @@ SessionStoreService.prototype = {
       shEntry.cacheKey = cacheKey;
     }
 
     if (aEntry.ID) {
       // get a new unique ID for this frame (since the one from the last
       // start might already be in use)
       var id = aIdMap[aEntry.ID] || 0;
       if (!id) {
-        for (id = Math.floor(Date.now()); id in aIdMap.used; id++);
+        for (id = Date.now(); id in aIdMap.used; id++);
         aIdMap[aEntry.ID] = id;
         aIdMap.used[id] = true;
       }
       shEntry.ID = id;
     }
 
     if (aEntry.docshellID)
       shEntry.docshellID = aEntry.docshellID;
@@ -3746,17 +3746,17 @@ SessionStoreService.prototype = {
         // - _closedTabs
         // - extData
         // - isPopup
         // - hidden
 
         // Assign a unique ID to correlate the window to be opened with the
         // remaining data
         window.__lastSessionWindowID = pinnedWindowState.__lastSessionWindowID
-                                     = "" + Math.floor(Date.now()) + Math.random();
+                                     = "" + Date.now() + Math.random();
 
         // Extract the cookies that belong with each pinned tab
         this._splitCookiesFromWindow(window, pinnedWindowState);
 
         // Actually add this window to our defaultState
         defaultState.windows.push(pinnedWindowState);
         // Remove the window from the state if it doesn't have any tabs
         if (!window.tabs.length) {
--- a/browser/components/sessionstore/test/browser/browser_248970_b.js
+++ b/browser/components/sessionstore/test/browser/browser_248970_b.js
@@ -46,17 +46,17 @@ function test() {
   }
 
   var file = Components.classes["@mozilla.org/file/directory_service;1"]
              .getService(Components.interfaces.nsIProperties)
              .get("TmpD", Components.interfaces.nsIFile);
   filePath = file.path;
 
   let fieldList = {
-    "//input[@name='input']":     Math.floor(Date.now()).toString(),
+    "//input[@name='input']":     Date.now().toString(),
     "//input[@name='spaced 1']":  Math.random().toString(),
     "//input[3]":                 "three",
     "//input[@type='checkbox']":  true,
     "//input[@name='uncheck']":   false,
     "//input[@type='radio'][1]":  false,
     "//input[@type='radio'][2]":  true,
     "//input[@type='radio'][3]":  false,
     "//select":                   2,
--- a/browser/components/sessionstore/test/browser/browser_345898.js
+++ b/browser/components/sessionstore/test/browser/browser_345898.js
@@ -73,13 +73,13 @@ function test() {
   ok(test(function() ss.getWindowValue({}, "")),
      "Invalid window for getWindowValue throws");
   ok(test(function() ss.getWindowValue({}, "")),
      "Invalid window for getWindowValue throws");
   ok(test(function() ss.getWindowValue({}, "", "")),
      "Invalid window for setWindowValue throws");
   ok(test(function() ss.deleteWindowValue({}, "")),
      "Invalid window for deleteWindowValue throws");
-  ok(test(function() ss.deleteWindowValue(window, Math.floor(Date.now()).toString())),
+  ok(test(function() ss.deleteWindowValue(window, Date.now().toString())),
      "Nonexistent value for deleteWindowValue throws");
-  ok(test(function() ss.deleteTabValue(gBrowser.selectedTab, Math.floor(Date.now()).toString())),
+  ok(test(function() ss.deleteTabValue(gBrowser.selectedTab, Date.now().toString())),
      "Nonexistent value for deleteTabValue throws");
 }
--- a/browser/components/sessionstore/test/browser/browser_346337.js
+++ b/browser/components/sessionstore/test/browser/browser_346337.js
@@ -46,17 +46,17 @@ function test() {
   file = Components.classes["@mozilla.org/file/directory_service;1"]
              .getService(Components.interfaces.nsIProperties)
              .get("TmpD", Components.interfaces.nsILocalFile);
   file.append("346337_test2.file");
   file.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0666);
   filePath2 = file.path;
   
   let fieldList = {
-    "//input[@name='input']":     Math.floor(Date.now()).toString(),
+    "//input[@name='input']":     Date.now().toString(),
     "//input[@name='spaced 1']":  Math.random().toString(),
     "//input[3]":                 "three",
     "//input[@type='checkbox']":  true,
     "//input[@name='uncheck']":   false,
     "//input[@type='radio'][1]":  false,
     "//input[@type='radio'][2]":  true,
     "//input[@type='radio'][3]":  false,
     "//select":                   2,
--- a/browser/components/sessionstore/test/browser/browser_350525.js
+++ b/browser/components/sessionstore/test/browser/browser_350525.js
@@ -19,17 +19,17 @@ function test() {
   
   // service
   let ss = test(function() ssComponent.getService(Ci.nsISessionStore));
   ok(ss, "reference the sessionstore service");
   
   ////////////////////////////
   // setWindowValue, et al. //
   ////////////////////////////
-  let key = "Unique name: " + Math.floor(Date.now());
+  let key = "Unique name: " + Date.now();
   let value = "Unique value: " + Math.random();
   
   // test adding
   ok(test(function() ss.setWindowValue(window, key, value)), "set a window value");
   
   // test retrieving
   is(ss.getWindowValue(window, key), value, "stored window value matches original");
   
@@ -38,17 +38,17 @@ function test() {
   
   // value should not exist post-delete
   is(ss.getWindowValue(window, key), "", "window value was deleted");
   
   /////////////////////////
   // setTabValue, et al. //
   /////////////////////////
   key = "Unique name: " + Math.random();
-  value = "Unique value: " + Math.floor(Date.now());
+  value = "Unique value: " + Date.now();
   let tab = tabbrowser.addTab();
   tab.linkedBrowser.stop();
   
   // test adding
   ok(test(function() ss.setTabValue(tab, key, value)), "store a tab value");
   
   // test retrieving
   is(ss.getTabValue(tab, key), value, "stored tab value match original");
--- a/browser/components/sessionstore/test/browser/browser_393716.js
+++ b/browser/components/sessionstore/test/browser/browser_393716.js
@@ -8,17 +8,17 @@ function test() {
   catch (ex) { }
   ok(ss, "SessionStore service is available");
   let tabbrowser = gBrowser;
   waitForExplicitFinish();
   
   /////////////////
   // getTabState //
   /////////////////
-  let key = "Unique key: " + Math.floor(Date.now());
+  let key = "Unique key: " + Date.now();
   let value = "Unique value: " + Math.random();
   let testURL = "about:config";
   
   // create a new tab
   let tab = tabbrowser.addTab(testURL);
   ss.setTabValue(tab, key, value);
   tab.linkedBrowser.addEventListener("load", function(aEvent) {
     this.removeEventListener("load", arguments.callee, true);
@@ -39,17 +39,17 @@ function test() {
     tabbrowser.removeTab(tab);
   }, true);
   
   //////////////////////////////////
   // setTabState and duplicateTab //
   //////////////////////////////////
   let key2 = "key2";
   let value2 = "Value " + Math.random();
-  let value3 = "Another value: " + Math.floor(Date.now());
+  let value3 = "Another value: " + Date.now();
   let state = { entries: [{ url: testURL }], extData: { key2: value2 } };
   
   // create a new tab
   let tab2 = tabbrowser.addTab();
   // set the tab's state
   ss.setTabState(tab2, JSON.stringify(state));
   tab2.linkedBrowser.addEventListener("load", function(aEvent) {
     this.removeEventListener("load", arguments.callee, true);
--- a/browser/components/sessionstore/test/browser/browser_394759.js
+++ b/browser/components/sessionstore/test/browser/browser_394759.js
@@ -55,17 +55,17 @@ function test() {
   let ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);
   let pb = Cc["@mozilla.org/privatebrowsing;1"].getService(Ci.nsIPrivateBrowsingService);
   waitForExplicitFinish();
   
   function test_basic(callback) {
   
     let testURL = "about:config";
     let uniqueKey = "bug 394759";
-    let uniqueValue = "unik" + Math.floor(Date.now());
+    let uniqueValue = "unik" + Date.now();
     let uniqueText = "pi != " + Math.random();
   
   
     // make sure that the next closed window will increase getClosedWindowCount
     let max_windows_undo = gPrefService.getIntPref("browser.sessionstore.max_windows_undo");
     gPrefService.setIntPref("browser.sessionstore.max_windows_undo", max_windows_undo + 1);
     let closedWindowCount = ss.getClosedWindowCount();
   
--- a/browser/components/sessionstore/test/browser/browser_394759_privatebrowsing.js
+++ b/browser/components/sessionstore/test/browser/browser_394759_privatebrowsing.js
@@ -100,17 +100,17 @@ function continue_test() {
   ok(!pb.privateBrowsingEnabled, "Private Browsing is disabled");
   let ss = Cc["@mozilla.org/browser/sessionstore;1"].
            getService(Ci.nsISessionStore);
 
   let closedWindowCount = ss.getClosedWindowCount();
   is(closedWindowCount, 0, "Correctly set window count");
 
   // Prevent VM timers issues, cache now and increment it manually.
-  let now = Math.floor(Date.now());
+  let now = Date.now();
   const TESTS = [
     { url: "about:config",
       key: "bug 394759 Non-PB",
       value: "uniq" + (++now) },
     { url: "about:mozilla",
       key: "bug 394759 PB",
       value: "uniq" + (++now) },
   ];
--- a/browser/components/sessionstore/test/browser/browser_448741.js
+++ b/browser/components/sessionstore/test/browser/browser_448741.js
@@ -37,17 +37,17 @@
 function test() {
   /** Test for Bug 448741 **/
 
   // test setup
   let ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);
   waitForExplicitFinish();
 
   let uniqueName = "bug 448741";
-  let uniqueValue = "as good as unique: " + Math.floor(Date.now());
+  let uniqueValue = "as good as unique: " + Date.now();
 
   // set a unique value on a new, blank tab
   var tab = gBrowser.addTab();
   tab.linkedBrowser.stop();
   ss.setTabValue(tab, uniqueName, uniqueValue);
   let valueWasCleaned = false;
 
   // prevent our value from being written to disk
--- a/browser/components/sessionstore/test/browser/browser_459906.js
+++ b/browser/components/sessionstore/test/browser/browser_459906.js
@@ -36,17 +36,17 @@
 
 function test() {
   /** Test for Bug 459906 **/
 
   waitForExplicitFinish();
 
   let testURL = "http://mochi.test:8888/browser/" +
     "browser/components/sessionstore/test/browser/browser_459906_sample.html";
-  let uniqueValue = "<b>Unique:</b> " + Math.floor(Date.now());
+  let uniqueValue = "<b>Unique:</b> " + Date.now();
 
   var frameCount = 0;
   let tab = gBrowser.addTab(testURL);
   tab.linkedBrowser.addEventListener("load", function(aEvent) {
     // wait for all frames to load completely
     if (frameCount++ < 2)
       return;
     tab.linkedBrowser.removeEventListener("load", arguments.callee, true);
--- a/browser/components/sessionstore/test/browser/browser_465215.js
+++ b/browser/components/sessionstore/test/browser/browser_465215.js
@@ -36,17 +36,17 @@
 
 function test() {
   /** Test for Bug 465215 **/
   
   let ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);
   waitForExplicitFinish();
   
   let uniqueName = "bug 465215";
-  let uniqueValue1 = "as good as unique: " + Math.floor(Date.now());
+  let uniqueValue1 = "as good as unique: " + Date.now();
   let uniqueValue2 = "as good as unique: " + Math.random();
   
   // set a unique value on a new, blank tab
   let tab1 = gBrowser.addTab();
   tab1.linkedBrowser.addEventListener("load", function() {
     tab1.linkedBrowser.removeEventListener("load", arguments.callee, true);
     ss.setTabValue(tab1, uniqueName, uniqueValue1);
     
--- a/browser/components/sessionstore/test/browser/browser_465223.js
+++ b/browser/components/sessionstore/test/browser/browser_465223.js
@@ -49,17 +49,17 @@ function test() {
   is(browserWindowsCount(), 1, "Only one browser window should be open initially");
   
   // test setup
   let ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);
   waitForExplicitFinish();
   
   let uniqueKey1 = "bug 465223.1";
   let uniqueKey2 = "bug 465223.2";
-  let uniqueValue1 = "unik" + Math.floor(Date.now());
+  let uniqueValue1 = "unik" + Date.now();
   let uniqueValue2 = "pi != " + Math.random();
   
   // open a window and set a value on it
   let newWin = openDialog(location, "_blank", "chrome,all,dialog=no");
   newWin.addEventListener("load", function(aEvent) {
     ss.setWindowValue(newWin, uniqueKey1, uniqueValue1);
     
     let newState = { windows: [{ tabs:[{ entries: [] }], extData: {} }] };
--- a/browser/components/sessionstore/test/browser/browser_476161.js
+++ b/browser/components/sessionstore/test/browser/browser_476161.js
@@ -42,17 +42,17 @@ function test() {
   let testURL = "http://mochi.test:8888/browser/" +
     "browser/components/sessionstore/test/browser/browser_476161_sample.html";
   let tab = gBrowser.addTab(testURL);
   tab.linkedBrowser.addEventListener("load", function(aEvent) {
     tab.linkedBrowser.removeEventListener("load", arguments.callee, true);
     let doc = tab.linkedBrowser.contentDocument;
     
     doc.getElementById("modify1").value += Math.random();
-    doc.getElementById("modify2").value += " " + Math.floor(Date.now());
+    doc.getElementById("modify2").value += " " + Date.now();
     
     let tab2 = gBrowser.duplicateTab(tab);
     tab2.linkedBrowser.addEventListener("load", function(aEvent) {
       tab2.linkedBrowser.removeEventListener("load", arguments.callee, true);
       let doc = tab2.linkedBrowser.contentDocument;
       let changed = doc.getElementById("changed").textContent.trim().split();
       
       is(changed.sort().join(" "), "modify1 modify2",
--- a/browser/components/sessionstore/test/browser/browser_477657.js
+++ b/browser/components/sessionstore/test/browser/browser_477657.js
@@ -62,17 +62,17 @@ function test() {
       _closedTabs: [{
         state: { entries: [{ url: "about:" }]},
         title: "About:"
       }],
       sizemode: "maximized"
     }] };
     
     let uniqueKey = "bug 477657";
-    let uniqueValue = "unik" + Math.floor(Date.now());
+    let uniqueValue = "unik" + Date.now();
   
     ss.setWindowValue(newWin, uniqueKey, uniqueValue);
     is(ss.getWindowValue(newWin, uniqueKey), uniqueValue,
        "window value was set before the window was overwritten");
     ss.setWindowState(newWin, JSON.stringify(newState), true);
     
     // use setTimeout(..., 0) to mirror sss_restoreWindowFeatures
     setTimeout(function() {
--- a/browser/components/sessionstore/test/browser/browser_524745.js
+++ b/browser/components/sessionstore/test/browser/browser_524745.js
@@ -47,17 +47,17 @@ function browserWindowsCount() {
 
 function test() {
   /** Test for Bug 524745 **/
   is(browserWindowsCount(), 1, "Only one browser window should be open initially");
 
   let ss = Cc["@mozilla.org/browser/sessionstore;1"].
            getService(Ci.nsISessionStore);
   let uniqKey = "bug524745";
-  let uniqVal = Math.floor(Date.now());
+  let uniqVal = Date.now();
 
   waitForExplicitFinish();
 
   let window_B = openDialog(location, "_blank", "chrome,all,dialog=no");
   window_B.addEventListener("load", function(aEvent) {
     window_B.removeEventListener("load", arguments.callee, false);
 
       waitForFocus(function() {
--- a/browser/components/sessionstore/test/browser/browser_586068-cascaded_restore.js
+++ b/browser/components/sessionstore/test/browser/browser_586068-cascaded_restore.js
@@ -756,10 +756,10 @@ function countTabs() {
       else
         wasRestored++;
     }
   }
   return [needsRestore, isRestoring, wasRestored];
 }
 
 function r() {
-  return "" + Math.floor(Date.now()) + Math.random();
+  return "" + Date.now() + Math.random();
 }
--- a/browser/components/sessionstore/test/browser/browser_590268.js
+++ b/browser/components/sessionstore/test/browser/browser_590268.js
@@ -1,10 +1,9 @@
 /* ***** 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,
@@ -169,10 +168,10 @@ function test() {
   gBrowser.tabContainer.addEventListener("SSTabRestored", onSSTabRestored, true);
   gBrowser.tabContainer.addEventListener("TabOpen", onTabOpen, false);
   // Restore state
   ss.setBrowserState(JSON.stringify(state));
 }
 
 // Helper function to create a random value
 function r() {
-  return "" + Math.floor(Date.now()) + Math.random();
+  return "" + Date.now() + Math.random();
 }
--- a/browser/components/sessionstore/test/browser/browser_607016.js
+++ b/browser/components/sessionstore/test/browser/browser_607016.js
@@ -145,10 +145,10 @@ function test() {
   }
 
   window.gBrowser.addTabsProgressListener(progressListener);
   ss.setBrowserState(JSON.stringify(state));
 }
 
 // Helper function to create a random value
 function r() {
-  return "" + Math.floor(Date.now()) + Math.random();
+  return "" + Date.now() + Math.random();
 }
--- a/browser/components/sessionstore/test/browser/head.js
+++ b/browser/components/sessionstore/test/browser/head.js
@@ -95,10 +95,10 @@ function waitForSaveState(aSaveStateCall
   let topic = "sessionstore-state-write";
   Services.obs.addObserver(function() {
     Services.obs.removeObserver(arguments.callee, topic, false);
     executeSoon(aSaveStateCallback);
   }, topic, false);
 };
 
 function r() {
-  return Math.floor(Date.now()) + Math.random();
+  return Date.now() + Math.random();
 }
--- a/content/base/test/test_CrossSiteXHR_cache.html
+++ b/content/base/test/test_CrossSiteXHR_cache.html
@@ -418,17 +418,17 @@ function runTest() {
              method: "DELETE"
            },
            ];
 
   baseURL = "http://mochi.test:8888/tests/content/base/test/" +
              "file_CrossSiteXHR_cache_server.sjs?";
   setStateURL = baseURL + "setState=";
 
-  var unique = Math.floor(Date.now());
+  var unique = Date.now();
   for each (test in tests) {
     if (test.newTest) {
       unique++;
       continue;
     }
     if (test.pause) {
       setTimeout(function() { gen.next() }, test.pause * 1000);
       yield;
--- a/content/html/content/test/test_bug209275.xhtml
+++ b/content/html/content/test/test_bug209275.xhtml
@@ -108,17 +108,17 @@ function run() {
   var iframeCw = iframe.contentWindow;
 
   // First, set the visited/unvisited link/ellipse colors.
   const unvisitedColor = "rgb(0, 0, 238)";
   const visitedColor = "rgb(85, 26, 139)";
   const unvisitedFill = "rgb(0, 0, 255)";
   const visitedFill = "rgb(128, 0, 128)";
 
-  const rand = Math.floor(Date.now()) + "-" + Math.random();
+  const rand = Date.now() + "-" + Math.random();
 
   // Now we can start the tests in earnest.
 
   var loc = location;
   // everything from the location up to and including the final forward slash
   var path = /(.*\/)[^\/]*/.exec(location)[1];
 
   // Set colorlink's href so we can check that it changes colors after we
--- a/content/html/content/test/test_bug481335.xhtml
+++ b/content/html/content/test/test_bug481335.xhtml
@@ -21,17 +21,17 @@ https://bugzilla.mozilla.org/show_bug.cg
 <p id="newparent" xml:base="http://www.example.com/"></p>
 <div id="content" style="display: none"></div>
 <pre id="test">
 <script type="application/javascript;version=1.7">
 <![CDATA[
 
 /** Test for Bug 481335 **/
 SimpleTest.waitForExplicitFinish();
-var rand = Math.floor(Date.now()) + "-" + Math.random();
+var rand = Date.now() + "-" + Math.random();
 
 is($("t").href, "",
    "Unexpected href before set");
 is($("t").href, "",
    "Unexpected cached href before set");
 
 $("t").setAttribute("href", rand);
 is($("t").href,
--- a/docshell/test/bug413310-post.sjs
+++ b/docshell/test/bug413310-post.sjs
@@ -1,7 +1,7 @@
 function handleRequest(request, response) {
   response.setHeader("Content-Type", "text/html");
   response.write("<body onload='window.parent.onloadCount++'>" +
                  request.method + " " +
-		 Math.floor(Date.now()) +
+		 Date.now() +
 		 "</body>");
 }
--- a/dom/tests/mochitest/whatwg/test_bug500328.html
+++ b/dom/tests/mochitest/whatwg/test_bug500328.html
@@ -341,17 +341,17 @@ function runTest() {
   yield;
   enableChildLoadCallback();
   iframeCw.location = "file_bug500328_1.html";
   yield;
   noPopStateExpected("No popstate after re-loading file_bug500328_1.html");
   statusMsg("Done loading file_bug500328_1.html for the second time.");
 
   var ifLink = iframeCw.document.getElementById("link-anchor1");
-  var rand = Math.floor(Date.now()) + "-" + Math.random();
+  var rand = Date.now() + "-" + Math.random();
   ifLink.href = rand;
 
   // Poll the document until the link has the correct color, or this test times
   // out.  Unfortunately I can't come up with a more elegant way to do this.
   // We could listen to MozAfterPaint, but that doesn't guarantee that we'll
   // observe the new color.
   while (getColor(ifLink) != unvisitedColor) {
     // Dump so something shows up in the mochitest logs if we spin here.
--- a/extensions/cookie/test/unit/test_permmanager_expiration.js
+++ b/extensions/cookie/test/unit/test_permmanager_expiration.js
@@ -16,17 +16,17 @@ function continue_test()
 }
 
 function do_run_test() {
   // Set up a profile.
   let profile = do_get_profile();
 
   let pm = Services.permissions;
   let permURI = NetUtil.newURI("http://example.com");
-  let now = Math.floor(Date.now());
+  let now = Number(Date.now());
 
   // add a permission with *now* expiration
   pm.add(permURI, "test/expiration-perm-exp", 1, pm.EXPIRE_TIME, now);
 
   // add a permission with future expiration (100 milliseconds)
   pm.add(permURI, "test/expiration-perm-exp2", 1, pm.EXPIRE_TIME, now + 100);
 
   // add a permission with future expiration (1000 seconds)
--- a/extensions/cookie/test/unit/test_permmanager_notifications.js
+++ b/extensions/cookie/test/unit/test_permmanager_notifications.js
@@ -17,17 +17,17 @@ function continue_test()
 }
 
 function do_run_test() {
   // Set up a profile.
   let profile = do_get_profile();
 
   let pm = Services.permissions;
   let permURI = NetUtil.newURI("http://example.com");
-  let now = (new Date()).getTime();
+  let now = Number(Date.now());
   let permType = "test/expiration-perm";
 
   let observer = new permission_observer(test_generator, now, permType);
   Services.obs.addObserver(observer, "perm-changed", false);
 
   // Add a permission, to test the 'add' notification. Note that we use
   // do_execute_soon() so that we can use our generator to continue the test
   // where we left off.
--- a/js/src/jsdate.cpp
+++ b/js/src/jsdate.cpp
@@ -1184,34 +1184,28 @@ date_parse(JSContext *cx, uintN argc, Va
 }
 
 static inline jsdouble
 NowAsMillis()
 {
     return (jsdouble) (PRMJ_Now() / PRMJ_USEC_PER_MSEC);
 }
 
-static inline jsdouble
-NowAsFractionalsMillis()
-{
-    return (jsdouble) (PRMJ_Now() / double(PRMJ_USEC_PER_MSEC));
-}
-
 static JSBool
 date_now(JSContext *cx, uintN argc, Value *vp)
 {
-    vp->setDouble(NowAsFractionalsMillis());
+    vp->setDouble(NowAsMillis());
     return JS_TRUE;
 }
 
 #ifdef JS_TRACER
 static jsdouble FASTCALL
 date_now_tn(JSContext*)
 {
-    return NowAsFractionalsMillis();
+    return NowAsMillis();
 }
 #endif
 
 /*
  * Get UTC time from the date object. Returns false if the object is not
  * Date type.
  */
 static JSBool
--- a/layout/tools/reftest/reftest.js
+++ b/layout/tools/reftest/reftest.js
@@ -773,17 +773,17 @@ function ServeFiles(manifestURL, depth, 
     var dirPath = "/";
     while (depth > 0) {
         dirPath = "/" + directory.leafName + dirPath;
         directory = directory.parent;
         --depth;
     }
 
     gCount++;
-    var path = "/" + Math.floor(Date.now()) + "/" + gCount;
+    var path = "/" + Date.now() + "/" + gCount;
     gServer.registerDirectory(path + "/", directory);
 
     var secMan = CC[NS_SCRIPTSECURITYMANAGER_CONTRACTID]
                      .getService(CI.nsIScriptSecurityManager);
 
     var testbase = gIOService.newURI("http://localhost:" + HTTP_SERVER_PORT +
                                          path + dirPath,
                                      null, null);
--- a/toolkit/components/console/hudservice/HUDService.jsm
+++ b/toolkit/components/console/hudservice/HUDService.jsm
@@ -4958,17 +4958,17 @@ ConsoleUtils = {
 
   /**
    * Generates a millisecond resolution timestamp.
    *
    * @returns integer
    */
   timestamp: function ConsoleUtils_timestamp()
   {
-    return Math.floor(Date.now());
+    return Date.now();
   },
 
   /**
    * Generates a formatted timestamp string for displaying in console messages.
    *
    * @param integer [ms] Optional, allows you to specify the timestamp in
    * milliseconds since the UNIX epoch.
    * @returns string The timestamp formatted for display.
--- a/toolkit/components/console/hudservice/tests/browser/browser_webconsole_basic_net_logging.js
+++ b/toolkit/components/console/hudservice/tests/browser/browser_webconsole_basic_net_logging.js
@@ -36,17 +36,17 @@
  * 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 ***** */
 
 // Tests that the page's resources are displayed in the console as they're
 // loaded
 
-const TEST_NETWORK_URI = "http://example.com/browser/toolkit/components/console/hudservice/tests/browser/test-network.html" + "?_date=" + Math.floor(Date.now());
+const TEST_NETWORK_URI = "http://example.com/browser/toolkit/components/console/hudservice/tests/browser/test-network.html" + "?_date=" + Date.now();
 
 function test() {
   addTab("data:text/html,Web Console basic network logging test");
   browser.addEventListener("load", onLoad, true);
 }
 
 function onLoad(aEvent) {
   browser.removeEventListener(aEvent.type, arguments.callee, true);
--- a/toolkit/components/console/hudservice/tests/browser/browser_webconsole_bug_583816_tab_focus.js
+++ b/toolkit/components/console/hudservice/tests/browser/browser_webconsole_bug_583816_tab_focus.js
@@ -35,17 +35,17 @@ function tabLoad(aEvent) {
 }
 
 function firstTab(aEvent) {
   this.removeEventListener(aEvent.type, arguments.callee, false);
 
   is(inputNode.getAttribute("focused"), "true", "inputNode is still focused");
   isnot(this.value, "doc", "input autocompleted");
 
-  HUD.jsterm.setInputValue("foobarbaz" + Math.floor(Date.now()));
+  HUD.jsterm.setInputValue("foobarbaz" + Date.now());
 
   EventUtils.synthesizeKey("VK_TAB", {});
 
   executeSoon(secondTab);
 }
 
 function secondTab() {
   isnot(inputNode.getAttribute("focused"), "true",
--- a/toolkit/components/downloads/test/unit/test_bug_401430.js
+++ b/toolkit/components/downloads/test/unit/test_bug_401430.js
@@ -39,17 +39,17 @@
 
 const nsIDownloadManager = Ci.nsIDownloadManager;
 const dm = Cc["@mozilla.org/download-manager;1"].getService(nsIDownloadManager);
 
 // Make sure Unicode is supported:
 // U+00E3 : LATIN SMALL LETTER A WITH TILDE
 // U+041B : CYRILLIC CAPITAL LETTER EL
 // U+3056 : HIRAGANA LETTER ZA
-const resultFileName = "test\u00e3\u041b\u3056" + Math.floor(Date.now()) + ".doc";
+const resultFileName = "test\u00e3\u041b\u3056" + Date.now() + ".doc";
 
 // Milliseconds between polls.
 const POLL_REGISTRY_TIMEOUT = 200;
 // Max number of polls.
 const POLL_REGISTRY_MAX_LOOPS = 25;
 
 function checkResult() {
   // delete the saved file (this doesn't affect the "recent documents" list)
--- a/toolkit/content/widgets/toolbar.xml
+++ b/toolkit/content/widgets/toolbar.xml
@@ -291,17 +291,17 @@
               // Handle special cases
               case "separator":
               case "spring":
               case "spacer":
                 newItem = document.createElementNS(XUL_NS, "toolbar" + aId);
                 // Due to timers resolution Date.now() can be the same for
                 // elements created in small timeframes.  So ids are
                 // differentiated through a unique count suffix.
-                newItem.id = aId + Math.floor(Date.now()) + (++this._newElementCount);
+                newItem.id = aId + Date.now() + (++this._newElementCount);
                 if (aId == "spring")
                   newItem.flex = 1;
                 break;
               default:
                 var toolbox = this.toolbox;
                 if (!toolbox)
                   break;