summaryrefslogtreecommitdiffstats
path: root/testing/xpcshell/example/unit/check_profile.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--testing/xpcshell/example/unit/check_profile.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/testing/xpcshell/example/unit/check_profile.js b/testing/xpcshell/example/unit/check_profile.js
new file mode 100644
index 0000000000..57ecf5fd55
--- /dev/null
+++ b/testing/xpcshell/example/unit/check_profile.js
@@ -0,0 +1,44 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+function check_profile_dir(profd) {
+ Assert.ok(profd.exists());
+ Assert.ok(profd.isDirectory());
+ let profd2 = Services.dirsvc.get("ProfD", Ci.nsIFile);
+ Assert.ok(profd2.exists());
+ Assert.ok(profd2.isDirectory());
+ // make sure we got the same thing back...
+ Assert.ok(profd.equals(profd2));
+}
+
+function check_do_get_profile(fireProfileAfterChange) {
+ const observedTopics = new Map([
+ ["profile-do-change", 0],
+ ["profile-after-change", 0],
+ ]);
+ const expectedTopics = new Map(observedTopics);
+
+ for (let [topic] of observedTopics) {
+ Services.obs.addObserver(() => {
+ let val = observedTopics.get(topic) + 1;
+ observedTopics.set(topic, val);
+ }, topic);
+ }
+
+ // Trigger profile creation.
+ let profd = do_get_profile();
+ check_profile_dir(profd);
+
+ // Check the observed topics
+ expectedTopics.set("profile-do-change", 1);
+ if (fireProfileAfterChange) {
+ expectedTopics.set("profile-after-change", 1);
+ }
+ Assert.deepEqual(observedTopics, expectedTopics);
+
+ // A second do_get_profile() should not trigger more notifications.
+ profd = do_get_profile();
+ check_profile_dir(profd);
+ Assert.deepEqual(observedTopics, expectedTopics);
+}