Skip to content

Commit 8ef9718

Browse files
authored
Merge pull request #2855 from uProxy/dborkan-zork-metrics-file
Setting isMetricsEnabled flag in Zork Firefox app based on options file
2 parents ffab27e + 89f60bc commit 8ef9718

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed
Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,40 @@
11
const {Cu} = require("chrome");
22
var self = require("sdk/self");
33
var {setTimeout} = require("sdk/timers");
4+
const {TextDecoder, OS} = Cu.import("resource://gre/modules/osfile.jsm", {});
45

56
Cu.import(self.data.url("freedom-for-firefox/freedom-for-firefox.jsm"));
67

8+
const OPTIONS_FILE_PATH = '/zork-options';
9+
10+
// Returns Promise<boolean>
11+
function checkIfMetricsEnabled() {
12+
return OS.File.read(OPTIONS_FILE_PATH).then((array) => {
13+
try {
14+
const decoder = new TextDecoder();
15+
const text = decoder.decode(array);
16+
const options = JSON.parse(text);
17+
return options['isMetricsEnabled'] === true;
18+
} catch (e) {
19+
console.error('Could not parse options file');
20+
return false;
21+
}
22+
}).catch((e) => {
23+
console.warn('Could not find options file');
24+
return false; // Options file not found, not an error.
25+
});
26+
}
27+
728
var manifest = self.data.url("lib/zork/freedom-module.json");
829
var loggingProviderManifest = self.data.url("lib/loggingprovider/freedom-module.json");
930
freedom(manifest, {
1031
'logger': loggingProviderManifest,
1132
'debug': 'debug'
1233
}).then(function(moduleFactory) {
13-
moduleFactory();
34+
const provider = moduleFactory();
35+
checkIfMetricsEnabled().then(function(isEnabled) {
36+
provider.emit('setMetricsEnablement', isEnabled);
37+
});
1438
}, function() {
1539
console.error('could not load freedomjs module');
1640
});

src/lib/zork/freedom-module.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,14 @@ var PORTS = [9000, 9010, 9020];
4343
// Number of getters.
4444
let numOfGetters = 0;
4545

46+
let isMetricsEnabled = false;
47+
if (typeof freedom !== 'undefined') {
48+
const parentFreedomModule = freedom();
49+
parentFreedomModule.on('setMetricsEnablement', function(newValue) {
50+
isMetricsEnabled = newValue;
51+
});
52+
}
53+
4654
// Starts a TCP server on the first free port listed in PORTS.
4755
// Rejects if no port is free.
4856
function bind(i:number = 0) : Promise<tcp.Server> {

0 commit comments

Comments
 (0)