| Index: chromeInfo.js.tmpl |
| =================================================================== |
| --- a/chromeInfo.js.tmpl |
| +++ b/chromeInfo.js.tmpl |
| @@ -2,25 +2,55 @@ |
| * License, v. 2.0. If a copy of the MPL was not distributed with this |
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| -require.scopes.info = { |
| - addonName: {{metadata.get('general', 'basename')|json}}, |
| - addonVersion: {{version|json}}, |
| +(function() { |
| + var platformVersion = null; |
| + var application = null; |
| + var applicationVersion; |
| - application: {{type|json}}, |
| - get applicationVersion() |
| + var regexp = /(\S+)\/(\S+)(?:\s*\(.*?\))?/g; |
| + var match; |
| + |
| + while (match = regexp.exec(navigator.userAgent)) |
| { |
| - {%- if type == 'opera' %} |
| - var match = /\bOPR\/(\S+)/.exec(navigator.userAgent); |
| - return (match ? match[1] : "0"); |
| - {%- else %} |
| - return this.platformVersion; |
| - {%- endif %} |
| - }, |
| + var app = match[1]; |
| + var ver = match[2]; |
| - platform: "chromium", |
| - get platformVersion() |
| + if (app == "Chrome") |
| + { |
| + platformVersion = ver; |
| + } |
| + else if (app != "Mozilla" && app != "AppleWebKit" && app != "Safari") |
| + { |
| + // For compatibility with legacy websites, Chrome's UA |
| + // also includes a Mozilla, AppleWebKit and Safari token. |
| + // Any further name/version pair indicates a fork. |
| + application = app == "OPR" ? "opera" : app.toLowerCase(); |
| + applicationVersion = ver; |
| + } |
| + } |
| + |
| + // not a Chromium-based UA, probably modifed by the user |
| + if (!platformVersion) |
| { |
| - var match = /\bChrome\/(\S+)/.exec(navigator.userAgent); |
| - return (match ? match[1] : "0"); |
| + application = "unknown"; |
| + applicationVersion = platformVersion = "0"; |
| } |
| -}; |
| + |
| + // no additional name/version, so this is upstream Chrome |
| + if (!application) |
| + { |
| + application = "chrome"; |
| + applicationVersion = platformVersion; |
| + } |
| + |
| + require.scopes.info = { |
| + addonName: {{ metadata.get('general', 'basename')|json }}, |
| + addonVersion: {{ version|json }}, |
| + |
| + application: application, |
| + applicationVersion: applicationVersion, |
| + |
| + platform: "chromium", |
| + platformVersion: platformVersion |
| + }; |
| +})(); |