| 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 |