|
1 |
| -async function remoteSettings(arguments) { |
2 |
| - |
3 |
| - /* |
4 |
| - Arguments contains 2 items. |
5 |
| - arguments[0] - the JEXL targeting string |
6 |
| - arguments[1] - the experiment recipe |
7 |
| - */ |
8 |
| - |
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. |
| 1 | +async function remoteSettings(targetingString, recipe) { |
12 | 2 | const { TelemetryEnvironment } = ChromeUtils.importESModule("resource://gre/modules/TelemetryEnvironment.sys.mjs");
|
13 | 3 | await TelemetryEnvironment.onInitialized();
|
14 | 4 |
|
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 |
| - } |
26 |
| - const ExperimentManager = ChromeUtils.importESModule("resource://nimbus/lib/ExperimentManager.sys.mjs"); |
27 |
| - const TargetingContext = ChromeUtils.importESModule("resource://messaging-system/targeting/Targeting.sys.mjs"); |
| 5 | + const { ASRouterTargeting } = ChromeUtils.importESModule("resource:///modules/asrouter/ASRouterTargeting.sys.mjs"); |
| 6 | + const { ExperimentAPI } = ChromeUtils.importESModule("resource://nimbus/ExperimentAPI.sys.mjs"); |
| 7 | + const { TargetingContext } = ChromeUtils.importESModule("resource://messaging-system/targeting/Targeting.sys.mjs"); |
28 | 8 |
|
29 |
| - const _experiment = JSON.parse(arguments[1]); |
| 9 | + const _experiment = JSON.parse(recipe); |
| 10 | + await ExperimentAPI.ready(); |
30 | 11 |
|
31 |
| - const context = TargetingContext.TargetingContext.combineContexts( |
| 12 | + const context = TargetingContext.combineContexts( |
32 | 13 | _experiment,
|
33 | 14 | {
|
34 | 15 | defaultProfile: {},
|
35 | 16 | attributionData: {},
|
36 | 17 | isMSIX: {},
|
37 | 18 | isDefaultHandler: {},
|
38 | 19 | defaultPDFHandler: {}
|
39 |
| - }, // Workaround for supporting background tasks |
40 |
| - ExperimentManager.ExperimentManager.createTargetingContext(), |
41 |
| - ASRouterTargeting.ASRouterTargeting.Environment |
| 20 | + }, |
| 21 | + ExperimentAPI._manager.createTargetingContext(), |
| 22 | + ASRouterTargeting.Environment |
42 | 23 | );
|
43 |
| - const targetingContext = new TargetingContext.TargetingContext(context); |
44 |
| - let result = false; |
| 24 | + const targetingContext = new TargetingContext(context); |
45 | 25 | try {
|
46 |
| - result = await targetingContext.evalWithDefault(arguments[0]) !== undefined; |
| 26 | + const evalResult = await targetingContext.evalWithDefault(targetingString); |
| 27 | + return evalResult !== undefined; |
47 | 28 | } catch (err) {
|
48 |
| - result = null; |
| 29 | + return null; |
49 | 30 | }
|
50 |
| - return result; |
51 | 31 | }
|
52 | 32 |
|
53 |
| -let results = remoteSettings(arguments); |
54 |
| - |
55 |
| -return results; |
| 33 | +/* |
| 34 | +Arguments contains 3 items. |
| 35 | +arguments[0] - the JEXL targeting string |
| 36 | +arguments[1] - the experiment recipe |
| 37 | +arguments[3] - the callback from selenium |
| 38 | +*/ |
| 39 | +const [targetingString, recipe, callback] = arguments; |
| 40 | + |
| 41 | +remoteSettings(targetingString, recipe) |
| 42 | + .then(result => { |
| 43 | + callback(result); |
| 44 | + }) |
| 45 | + .catch(err => { |
| 46 | + callback(null); |
| 47 | + }); |
0 commit comments