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