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
- }
26
- const { ExperimentAPI } = ChromeUtils . importESModule ( "resource://nimbus/ExperimentAPI.sys.mjs" ) ;
16
+ const ASRouterTargeting = ChromeUtils . importESModule ( "resource:///modules/asrouter/ASRouterTargeting.sys.mjs" ) ; const { ExperimentAPI } = ChromeUtils . importESModule ( "resource://nimbus/ExperimentAPI.sys.mjs" ) ;
27
17
const TargetingContext = ChromeUtils . importESModule ( "resource://messaging-system/targeting/Targeting.sys.mjs" ) ;
28
18
29
- const _experiment = JSON . parse ( arguments [ 1 ] ) ;
30
- ExperimentAPI . ready ( ) ;
19
+ const _experiment = JSON . parse ( recipe ) ;
20
+ await ExperimentAPI . ready ( ) ;
31
21
32
22
const context = TargetingContext . TargetingContext . combineContexts (
33
23
_experiment ,
@@ -37,20 +27,22 @@ async function remoteSettings(arguments) {
37
27
isMSIX : { } ,
38
28
isDefaultHandler : { } ,
39
29
defaultPDFHandler : { }
40
- } , // Workaround for supporting background tasks
30
+ } ,
41
31
ExperimentAPI . _manager . createTargetingContext ( ) ,
42
32
ASRouterTargeting . ASRouterTargeting . Environment
43
33
) ;
34
+
44
35
const targetingContext = new TargetingContext . TargetingContext ( context ) ;
45
- let result = false ;
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
+ // Get the Selenium callback
45
+ const [ targetingString , recipe ] = arguments ;
46
+ const callback = arguments [ arguments . length - 1 ]
55
47
56
- return results ;
48
+ remoteSettings ( targetingString , recipe ) . then ( callback ) . catch ( ( ) => callback ( null ) ) ;
0 commit comments