summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/general/browser_lastAccessedTab.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/general/browser_lastAccessedTab.js')
-rw-r--r--browser/base/content/test/general/browser_lastAccessedTab.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/browser/base/content/test/general/browser_lastAccessedTab.js b/browser/base/content/test/general/browser_lastAccessedTab.js
new file mode 100644
index 000000000..57bd330ae
--- /dev/null
+++ b/browser/base/content/test/general/browser_lastAccessedTab.js
@@ -0,0 +1,47 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// gBrowser.selectedTab.lastAccessed and Date.now() called from this test can't
+// run concurrently, and therefore don't always match exactly.
+const CURRENT_TIME_TOLERANCE_MS = 15;
+
+function isCurrent(tab, msg) {
+ const DIFF = Math.abs(Date.now() - tab.lastAccessed);
+ ok(DIFF <= CURRENT_TIME_TOLERANCE_MS, msg + " (difference: " + DIFF + ")");
+}
+
+function nextStep(fn) {
+ setTimeout(fn, CURRENT_TIME_TOLERANCE_MS + 10);
+}
+
+var originalTab;
+var newTab;
+
+function test() {
+ waitForExplicitFinish();
+
+ originalTab = gBrowser.selectedTab;
+ nextStep(step2);
+}
+
+function step2() {
+ isCurrent(originalTab, "selected tab has the current timestamp");
+ newTab = gBrowser.addTab("about:blank", {skipAnimation: true});
+ nextStep(step3);
+}
+
+function step3() {
+ ok(newTab.lastAccessed < Date.now(), "new tab hasn't been selected so far");
+ gBrowser.selectedTab = newTab;
+ isCurrent(newTab, "new tab has the current timestamp after being selected");
+ nextStep(step4);
+}
+
+function step4() {
+ ok(originalTab.lastAccessed < Date.now(),
+ "original tab has old timestamp after being deselected");
+ isCurrent(newTab, "new tab has the current timestamp since it's still selected");
+
+ gBrowser.removeTab(newTab);
+ finish();
+}