|
1 |
| -async function remoteSettings(arguments) { |
2 |
| - |
| 1 | +async function remoteSettings(targetingString, recipe) { |
3 | 2 | /*
|
4 |
| - Arguments contains 2 items. |
5 |
| - arguments[0] - the JEXL targeting string |
6 |
| - arguments[1] - the experiment recipe |
| 3 | + Arguments contains 2 items. |
| 4 | + arguments[0] - the JEXL targeting string |
| 5 | + arguments[1] - the experiment recipe |
7 | 6 | */
|
8 | 7 |
|
9 |
| - // See https://bugzilla.mozilla.org/show_bug.cgi?id=1868838 - |
10 |
| - // ASRouterTargeting was moved from browser/components/newtab into |
11 |
| - // browser/components/asrouter and its import path changed. |
12 | 8 | const { TelemetryEnvironment } = ChromeUtils.importESModule("resource://gre/modules/TelemetryEnvironment.sys.mjs");
|
13 | 9 | await TelemetryEnvironment.onInitialized();
|
14 | 10 |
|
15 |
| - let ASRouterTargeting; |
16 |
| - |
17 |
| - try { |
18 |
| - ASRouterTargeting = ChromeUtils.importESModule("resource:///modules/asrouter/ASRouterTargeting.sys.mjs"); |
19 |
| - } catch (ex) { |
20 |
| - if (ex.result === Cr.NS_ERROR_FILE_NOT_FOUND) { |
21 |
| - ASRouterTargeting = ChromeUtils.importESModule("resource://activity-stream/lib/ASRouterTargeting.sys.mjs"); |
22 |
| - } else { |
23 |
| - throw ex; |
24 |
| - } |
25 |
| - } |
| 11 | + const { ASRouterTargeting } = ChromeUtils.importESModule("resource:///modules/asrouter/ASRouterTargeting.sys.mjs"); |
26 | 12 | const { ExperimentAPI } = ChromeUtils.importESModule("resource://nimbus/ExperimentAPI.sys.mjs");
|
27 |
| - const TargetingContext = ChromeUtils.importESModule("resource://messaging-system/targeting/Targeting.sys.mjs"); |
| 13 | + const { TargetingContext } = ChromeUtils.importESModule("resource://messaging-system/targeting/Targeting.sys.mjs"); |
28 | 14 |
|
29 |
| - const _experiment = JSON.parse(arguments[1]); |
30 |
| - ExperimentAPI.ready(); |
| 15 | + const _experiment = JSON.parse(recipe); |
| 16 | + await ExperimentAPI.ready(); |
31 | 17 |
|
32 |
| - const context = TargetingContext.TargetingContext.combineContexts( |
| 18 | + const context = TargetingContext.combineContexts( |
33 | 19 | _experiment,
|
34 | 20 | {
|
35 | 21 | defaultProfile: {},
|
36 | 22 | attributionData: {},
|
37 | 23 | isMSIX: {},
|
38 | 24 | isDefaultHandler: {},
|
39 | 25 | defaultPDFHandler: {}
|
40 |
| - }, // Workaround for supporting background tasks |
| 26 | + }, |
41 | 27 | ExperimentAPI._manager.createTargetingContext(),
|
42 |
| - ASRouterTargeting.ASRouterTargeting.Environment |
| 28 | + ASRouterTargeting.Environment |
43 | 29 | );
|
44 |
| - const targetingContext = new TargetingContext.TargetingContext(context); |
45 |
| - let result = false; |
| 30 | + const targetingContext = new TargetingContext(context); |
46 | 31 | try {
|
47 |
| - result = await targetingContext.evalWithDefault(arguments[0]) !== undefined; |
| 32 | + const evalResult = await targetingContext.evalWithDefault(targetingString); |
| 33 | + return evalResult !== undefined; |
48 | 34 | } catch (err) {
|
49 |
| - result = null; |
| 35 | + return null; |
50 | 36 | }
|
51 |
| - return result; |
52 | 37 | }
|
53 | 38 |
|
54 |
| -let results = remoteSettings(arguments); |
| 39 | +const [targetingString, recipe] = arguments; |
| 40 | +const callback = arguments[arguments.length - 1] |
55 | 41 |
|
56 |
| -return results; |
| 42 | +remoteSettings(targetingString, recipe) |
| 43 | + .then(result => { |
| 44 | + callback(result); |
| 45 | + }) |
| 46 | + .catch(err => { |
| 47 | + callback(null); |
| 48 | + }); |
0 commit comments