/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm"); const { AttributionCode } = ChromeUtils.import( "resource:///modules/AttributionCode.jsm" ); add_task(async function test_attribution() { let appPath = Services.dirsvc.get("GreD", Ci.nsIFile).parent.parent.path; let attributionSvc = Cc["@mozilla.org/mac-attribution;1"].getService( Ci.nsIMacAttributionService ); attributionSvc.setReferrerUrl(appPath, "", true); let referrer = attributionSvc.getReferrerUrl(appPath); equal(referrer, "", "force an empty referrer url"); // Set a url referrer, testing both utm and non-utm codes let url = "http://example.com?content=foo&utm_source=bar&utm_content=baz"; attributionSvc.setReferrerUrl(appPath, url, true); referrer = attributionSvc.getReferrerUrl(appPath); equal(referrer, url, "overwrite referrer url"); // Does not overwrite existing properties. attributionSvc.setReferrerUrl(appPath, "http://test.com", false); referrer = attributionSvc.getReferrerUrl(appPath); equal(referrer, url, "referrer url is not changed"); let result = await AttributionCode.getAttrDataAsync(); Assert.deepEqual( result, { content: "foo", source: "bar" }, "parsed attributes match" ); });