Bug 1413989 - include Timer.jsm in MigrationUtils.jsm r?MattN draft
authorDoug Thayer <dothayer@mozilla.com>
Tue, 07 Nov 2017 15:48:02 -0800
changeset 695007 c13d806f90de0cc64138b4b1d53735cef5e9249d
parent 689632 3f627210c55d6b2b0a0635683cc4a29102a90270
child 739488 28b6e253d9ca901030485886fdb59f0922edb4b6
push id88303
push userbmo:dothayer@mozilla.com
push dateWed, 08 Nov 2017 16:27:02 +0000
reviewersMattN
bugs1413989
milestone58.0a1
Bug 1413989 - include Timer.jsm in MigrationUtils.jsm r?MattN setTimeout was previously undefined. Created a test specifically for MigrationUtils, since trying to test this through an actual Chrome migration path seemed trickier and more fragile. MozReview-Commit-ID: 33U7ZzzG1CC
browser/components/migration/MigrationUtils.jsm
browser/components/migration/tests/unit/test_MigrationUtils_timedRetry.js
browser/components/migration/tests/unit/xpcshell.ini
--- a/browser/components/migration/MigrationUtils.jsm
+++ b/browser/components/migration/MigrationUtils.jsm
@@ -30,16 +30,18 @@ XPCOMUtils.defineLazyModuleGetter(this, 
 XPCOMUtils.defineLazyModuleGetter(this, "ResponsivenessMonitor",
                                   "resource://gre/modules/ResponsivenessMonitor.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "Sqlite",
                                   "resource://gre/modules/Sqlite.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "TelemetryStopwatch",
                                   "resource://gre/modules/TelemetryStopwatch.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "WindowsRegistry",
                                   "resource://gre/modules/WindowsRegistry.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "setTimeout",
+                                  "resource://gre/modules/Timer.jsm");
 
 var gMigrators = null;
 var gProfileStartup = null;
 var gMigrationBundle = null;
 var gPreviousDefaultBrowserKey = "";
 
 let gKeepUndoData = false;
 let gUndoData = null;
new file mode 100644
--- /dev/null
+++ b/browser/components/migration/tests/unit/test_MigrationUtils_timedRetry.js
@@ -0,0 +1,26 @@
+"use strict";
+
+XPCOMUtils.defineLazyModuleGetter(this, "OS",
+                                  "resource://gre/modules/osfile.jsm");
+
+let tmpFile = FileUtils.getDir("TmpD", [], true);
+let dbConn;
+
+add_task(async function setup() {
+  tmpFile.append("TestDB");
+  dbConn = await Sqlite.openConnection({ path: tmpFile.path });
+
+  do_register_cleanup(() => {
+    dbConn.close();
+    OS.File.remove(tmpFile.path);
+  });
+});
+
+add_task(async function testgetRowsFromDBWithoutLocksRetries() {
+  let promise = MigrationUtils.getRowsFromDBWithoutLocks(tmpFile.path,
+                                                         "Temp DB",
+                                                         "SELECT * FROM moz_temp_table");
+  await new Promise(resolve => do_timeout(50, resolve));
+  dbConn.execute("CREATE TABLE moz_temp_table (id INTEGER PRIMARY KEY)");
+  await promise;
+});
--- a/browser/components/migration/tests/unit/xpcshell.ini
+++ b/browser/components/migration/tests/unit/xpcshell.ini
@@ -18,10 +18,11 @@ skip-if = os != "win"
 skip-if = os != "win"
 [test_fx_telemetry.js]
 [test_IE_bookmarks.js]
 skip-if = !(os == "win" && bits == 64) # bug 1392396
 [test_IE_cookies.js]
 skip-if = os != "win"
 [test_IE7_passwords.js]
 skip-if = os != "win"
+[test_MigrationUtils_timedRetry.js]
 [test_Safari_bookmarks.js]
 skip-if = os != "mac"