61 lines
2.4 KiB
JavaScript
61 lines
2.4 KiB
JavaScript
/* -*- 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();
|
|
}
|