summaryrefslogtreecommitdiffstats
path: root/docshell/test/unit/test_nsIDownloadHistory.js
diff options
context:
space:
mode:
Diffstat (limited to 'docshell/test/unit/test_nsIDownloadHistory.js')
-rw-r--r--docshell/test/unit/test_nsIDownloadHistory.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/docshell/test/unit/test_nsIDownloadHistory.js b/docshell/test/unit/test_nsIDownloadHistory.js
new file mode 100644
index 000000000..2030f0702
--- /dev/null
+++ b/docshell/test/unit/test_nsIDownloadHistory.js
@@ -0,0 +1,68 @@
+/* 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/. */
+
+const NS_DOWNLOADHISTORY_CID = "{2ee83680-2af0-4bcb-bfa0-c9705f6554f1}";
+
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+
+XPCOMUtils.defineLazyGetter(this, "Services", function() {
+ Components.utils.import("resource://gre/modules/Services.jsm");
+ return Services;
+});
+
+function testLinkVistedObserver()
+{
+ const NS_LINK_VISITED_EVENT_TOPIC = "link-visited";
+ var ios = Cc["@mozilla.org/network/io-service;1"].
+ getService(Ci.nsIIOService);
+ var testURI = ios.newURI("http://google.com/", null, null);
+
+ var gh = Cc["@mozilla.org/browser/global-history;2"].
+ getService(Ci.nsIGlobalHistory2);
+ do_check_false(gh.isVisited(testURI));
+
+ var topicReceived = false;
+ var obs = {
+ observe: function tlvo_observe(aSubject, aTopic, aData)
+ {
+ if (NS_LINK_VISITED_EVENT_TOPIC == aTopic) {
+ do_check_eq(testURI, aSubject);
+ topicReceived = true;
+ }
+ }
+ };
+
+ var os = Cc["@mozilla.org/observer-service;1"].
+ getService(Ci.nsIObserverService);
+ os.addObserver(obs, NS_LINK_VISITED_EVENT_TOPIC, false);
+
+ var dh = Components.classesByID[NS_DOWNLOADHISTORY_CID].
+ getService(Ci.nsIDownloadHistory);
+ dh.addDownload(testURI);
+ do_check_true(topicReceived);
+ do_check_true(gh.isVisited(testURI));
+}
+
+var tests = [testLinkVistedObserver];
+
+function run_test()
+{
+ // Not everyone uses/defines an nsGlobalHistory* service. Especially if
+ // MOZ_PLACES is not defined. If getService fails, then abort gracefully.
+ try {
+ Cc["@mozilla.org/browser/global-history;2"].
+ getService(Ci.nsIGlobalHistory2);
+ }
+ catch (ex) {
+ return;
+ }
+
+ // Needed to properly setup and shutdown the profile.
+ do_get_profile();
+
+ for (var i = 0; i < tests.length; i++)
+ tests[i]();
+
+ cleanup();
+}