summaryrefslogtreecommitdiffstats
path: root/toolkit/components/places/tests/unit/test_isURIVisited.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/places/tests/unit/test_isURIVisited.js')
-rw-r--r--toolkit/components/places/tests/unit/test_isURIVisited.js84
1 files changed, 84 insertions, 0 deletions
diff --git a/toolkit/components/places/tests/unit/test_isURIVisited.js b/toolkit/components/places/tests/unit/test_isURIVisited.js
new file mode 100644
index 000000000..93c010e83
--- /dev/null
+++ b/toolkit/components/places/tests/unit/test_isURIVisited.js
@@ -0,0 +1,84 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// Tests functionality of the isURIVisited API.
+
+const SCHEMES = {
+ "http://": true,
+ "https://": true,
+ "ftp://": true,
+ "file:///": true,
+ "about:": false,
+// nsIIOService.newURI() can throw if e.g. the app knows about imap://
+// but the account is not set up and so the URL is invalid for it.
+// "imap://": false,
+ "news://": false,
+ "mailbox:": false,
+ "moz-anno:favicon:http://": false,
+ "view-source:http://": false,
+ "chrome://browser/content/browser.xul?": false,
+ "resource://": false,
+ "data:,": false,
+ "wyciwyg:/0/http://": false,
+ "javascript:": false,
+};
+
+var gRunner;
+function run_test()
+{
+ do_test_pending();
+ gRunner = step();
+ gRunner.next();
+}
+
+function* step()
+{
+ let history = Cc["@mozilla.org/browser/history;1"]
+ .getService(Ci.mozIAsyncHistory);
+
+ for (let scheme in SCHEMES) {
+ do_print("Testing scheme " + scheme);
+ for (let t in PlacesUtils.history.TRANSITIONS) {
+ do_print("With transition " + t);
+ let transition = PlacesUtils.history.TRANSITIONS[t];
+
+ let uri = NetUtil.newURI(scheme + "mozilla.org/");
+
+ history.isURIVisited(uri, function(aURI, aIsVisited) {
+ do_check_true(uri.equals(aURI));
+ do_check_false(aIsVisited);
+
+ let callback = {
+ handleError: function () {},
+ handleResult: function () {},
+ handleCompletion: function () {
+ do_print("Added visit to " + uri.spec);
+
+ history.isURIVisited(uri, function (aURI2, aIsVisited2) {
+ do_check_true(uri.equals(aURI2));
+ let checker = SCHEMES[scheme] ? do_check_true : do_check_false;
+ checker(aIsVisited2);
+
+ PlacesTestUtils.clearHistory().then(function () {
+ history.isURIVisited(uri, function(aURI3, aIsVisited3) {
+ do_check_true(uri.equals(aURI3));
+ do_check_false(aIsVisited3);
+ gRunner.next();
+ });
+ });
+ });
+ },
+ };
+
+ history.updatePlaces({ uri: uri
+ , visits: [ { transitionType: transition
+ , visitDate: Date.now() * 1000
+ } ]
+ }, callback);
+ });
+ yield undefined;
+ }
+ }
+
+ do_test_finished();
+}