summaryrefslogtreecommitdiffstats
path: root/widget/tests/unit/test_macsharingservice.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--widget/tests/unit/test_macsharingservice.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/widget/tests/unit/test_macsharingservice.js b/widget/tests/unit/test_macsharingservice.js
new file mode 100644
index 0000000000..f6b0a8e3fc
--- /dev/null
+++ b/widget/tests/unit/test_macsharingservice.js
@@ -0,0 +1,61 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* 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/. */
+
+// Basic tests to verify that MacSharingService returns expected data
+
+function test_getSharingProviders() {
+ let sharingService = Cc["@mozilla.org/widget/macsharingservice;1"].getService(
+ Ci.nsIMacSharingService
+ );
+
+ // Ensure these URL's are accepted without error by the getSharingProviders()
+ // method. This does not test if the URL's are interpreted correctly by
+ // the platform implementation and does not test that the URL will be
+ // successfully shared to the target application if the shareURL method is
+ // used. It does indicate the Mac API's used to get the sharing providers
+ // successfully created a URL object for the URL provided and returned at
+ // least one provider.
+ let urls = [
+ "http://example.org",
+ "http://example.org/#",
+ "http://example.org/dkl??",
+ "http://example.org/dkl?a=b;c=d#thisisaref",
+ "http://example.org/dkl?a=b;c=d#thisisaref#double",
+ "http://example.org/#/",
+ "http://example.org/#/#",
+ "http://example.org/#/#/",
+ // This test fails due to the '|' in the path which needs additional
+ // encoding before conversion to NSURL. See bug 1740565.
+ // "http://example.org/foo/bar/x|page.html#this_is_a_fragment",
+ "http://example.org/page.html#this_is_a_fragment",
+ "http://example.org/page.html#this_is_a_fragment#and_another",
+ "http://example.org/foo/bar;#foo",
+ "http://example.org/a file with spaces.html",
+ "https://chat.mozilla.org/#/room/#macdev:mozilla.org",
+ "https://chat.mozilla.org/#/room/%23macdev:mozilla.org",
+ ];
+
+ urls.forEach(url => testGetSharingProvidersForUrl(sharingService, url));
+}
+
+function testGetSharingProvidersForUrl(sharingService, url) {
+ let providers = sharingService.getSharingProviders(url);
+ Assert.greater(providers.length, 1, "There are providers returned");
+ providers.forEach(provider => {
+ Assert.ok("name" in provider, "Provider has name");
+ Assert.ok("menuItemTitle" in provider, "Provider has menuItemTitle");
+ Assert.ok("image" in provider, "Provider has image");
+
+ Assert.notEqual(
+ provider.title,
+ "Mail",
+ "Known filtered provider not returned"
+ );
+ });
+}
+
+function run_test() {
+ test_getSharingProviders();
+}