@@ -15,18 +15,42 @@ const Events = require("sdk/event/core");
15
15
// See also: https://bugzilla.mozilla.org/show_bug.cgi?id=912121
16
16
// We can't use the core/devtools.js module since this code is
17
17
// executed on the backend.
18
- var devtools ;
19
- try {
20
- devtools = Cu . import ( "resource://devtools/shared/Loader.jsm" , { } ) . devtools ;
21
- } catch ( err ) {
22
- try {
23
- devtools = Cu . import ( "resource://gre/modules/devtools/shared/Loader.jsm" , { } ) . devtools ;
24
- } catch ( err ) {
25
- devtools = Cu . import ( "resource://gre/modules/devtools/Loader.jsm" , { } ) . devtools ;
18
+ function safeImport ( ...args ) {
19
+ for ( var i = 0 ; i < args . length ; i ++ ) {
20
+ try {
21
+ return Cu [ "import" ] ( args [ i ] , { } ) ;
22
+ }
23
+ /* eslint-disable */
24
+ catch ( err ) {
25
+ }
26
+ /* eslint-enable */
27
+ }
28
+ return { } ;
29
+ }
30
+
31
+ function safeRequire ( devtools , ...args ) {
32
+ for ( var i = 0 ; i < args . length ; i ++ ) {
33
+ try {
34
+ return devtools [ "require" ] ( args [ i ] ) ;
35
+ }
36
+ catch ( err ) {
37
+ }
26
38
}
39
+ return { } ;
27
40
}
41
+
42
+ const devtools = safeImport (
43
+ "resource://devtools/shared/Loader.jsm" ,
44
+ "resource://gre/modules/devtools/shared/Loader.jsm" ,
45
+ "resource://gre/modules/devtools/Loader.jsm"
46
+ ) . devtools ;
47
+
48
+ const protocol = safeRequire ( devtools ,
49
+ "devtools/shared/protocol" ,
50
+ "devtools/server/protocol"
51
+ ) ;
52
+
28
53
const { expectState } = devtools [ "require" ] ( "devtools/server/actors/common" ) ;
29
- const protocol = devtools [ "require" ] ( "devtools/server/protocol" ) ;
30
54
31
55
// Platform
32
56
const { XPCOMUtils } = Cu . import ( "resource://gre/modules/XPCOMUtils.jsm" , { } ) ;
0 commit comments