Left: | ||
Right: |
LEFT | RIGHT |
---|---|
1 /* This Source Code Form is subject to the terms of the Mozilla Public | 1 /* This Source Code Form is subject to the terms of the Mozilla Public |
2 * License, v. 2.0. If a copy of the MPL was not distributed with this | 2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
4 | 4 |
5 "use strict"; | 5 "use strict"; |
6 | 6 |
7 exports.addonName = {{ basename|json }}; | 7 exports.addonName = {{ basename|json }}; |
8 exports.addonVersion = {{ version|json }}; | 8 exports.addonVersion = {{ version|json }}; |
9 | 9 |
10 exports.application = "unknown"; | 10 exports.application = "unknown"; |
11 exports.applicationVersion = "0"; | 11 exports.applicationVersion = "0"; |
12 | 12 |
13 exports.platform = "gecko"; | 13 exports.platform = "gecko"; |
14 exports.platformVersion = "0"; | 14 exports.platformVersion = "0"; |
15 | 15 |
16 let match = /\brv:(\d+(?:\.\d+)?)\b/.exec(navigator.userAgent); | 16 let match = /\brv:(\d+(?:\.\d+)?)\b/.exec(navigator.userAgent); |
17 if (match) | 17 if (match) |
18 exports.platformVersion = match[1]; | 18 exports.platformVersion = match[1]; |
19 | 19 |
20 let exportApplicationInfo = info => | |
21 { | |
22 exports.application = info.name.toLowerCase(); | |
23 exports.applicationVersion = info.version; | |
24 }; | |
25 | |
26 // Firefox 50 does not support runtime.getBrowserInfo | 20 // Firefox 50 does not support runtime.getBrowserInfo |
27 if ("getBrowserInfo" in browser.runtime) | 21 if ("getBrowserInfo" in browser.runtime) |
28 { | 22 { |
29 browser.runtime.getBrowserInfo().then(exportApplicationInfo); | 23 browser.runtime.getBrowserInfo().then(browserInfo => |
24 { | |
25 exports.application = browserInfo.name.toLowerCase(); | |
26 exports.applicationVersion = browserInfo.version; | |
27 }); | |
30 } | 28 } |
31 else | 29 else |
32 { | 30 { |
33 // Based on the Firefox UA string reference: | 31 let browserInfo = /\bFirefox\/(\S+)/.exec(navigator.userAgent); |
34 // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefo x | 32 exports.application = "firefox"; |
35 // The regular expression here will capture the "appname/appversion" part of | |
36 // "Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail | |
37 // Firefox/firefoxversion appname/appversion" if present, otherwise it'll | |
38 // capture "Firefox/firefoxversion" | |
39 let browserInfo = | |
40 /\brv:(?:\d+(?:\.\d+)?)\) [^\/]+\/[^ ]+(?: ([^\/]+)\/([^ ]+))+\b/ | |
41 .exec(navigator.userAgent); | |
42 if (browserInfo) | 33 if (browserInfo) |
43 exportApplicationInfo({name: browserInfo[1], version: browserInfo[2]}); | 34 exports.applicationVersion = browserInfo[1]; |
Sebastian Noack
2017/09/13 17:38:01
There is only one application this code is possibl
Manish Jethani
2017/09/14 04:27:11
Hypothetically, suppose other Gecko-based browsers
Sebastian Noack
2017/09/14 04:33:41
This would only be relevant in the unlikely case t
Manish Jethani
2017/09/14 06:06:50
Done.
| |
44 } | 35 } |
LEFT | RIGHT |