|
1 | 1 | const {Cu} = require("chrome"); |
2 | 2 | var self = require("sdk/self"); |
3 | 3 | var {setTimeout} = require("sdk/timers"); |
| 4 | +const {TextDecoder, OS} = Cu.import("resource://gre/modules/osfile.jsm", {}); |
4 | 5 |
|
5 | 6 | Cu.import(self.data.url("freedom-for-firefox/freedom-for-firefox.jsm")); |
6 | 7 |
|
| 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 | + |
7 | 28 | var manifest = self.data.url("lib/zork/freedom-module.json"); |
8 | 29 | var loggingProviderManifest = self.data.url("lib/loggingprovider/freedom-module.json"); |
9 | 30 | freedom(manifest, { |
10 | 31 | 'logger': loggingProviderManifest, |
11 | 32 | 'debug': 'debug' |
12 | 33 | }).then(function(moduleFactory) { |
13 | | - moduleFactory(); |
| 34 | + const provider = moduleFactory(); |
| 35 | + checkIfMetricsEnabled().then(function(isEnabled) { |
| 36 | + provider.emit('setMetricsEnablement', isEnabled); |
| 37 | + }); |
14 | 38 | }, function() { |
15 | 39 | console.error('could not load freedomjs module'); |
16 | 40 | }); |
0 commit comments