Skip to content

Commit

Permalink
Support Thunderbird addons site #111
Browse files Browse the repository at this point in the history
Support addons.thunderbird.net and addons-stage.thunderbird.net
  • Loading branch information
Rob--W committed Mar 19, 2022
1 parent 67dfa1d commit b727d3e
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 11 deletions.
8 changes: 4 additions & 4 deletions src/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

/* globals navigator */
/* globals chrome, cws_match_pattern, mea_match_pattern, ows_match_pattern, amo_match_patterns,
cws_pattern, mea_pattern, ows_pattern, amo_pattern,
/* globals chrome, cws_match_pattern, mea_match_pattern, ows_match_pattern, amo_match_patterns, atn_match_patterns,
cws_pattern, mea_pattern, ows_pattern, amo_pattern, atn_pattern,
*/

'use strict';
Expand Down Expand Up @@ -56,7 +56,7 @@ function togglePageAction(isEnabled) {
}
}
browser.tabs.query({
url: [cws_match_pattern, mea_match_pattern, ows_match_pattern].concat(amo_match_patterns),
url: [cws_match_pattern, mea_match_pattern, ows_match_pattern].concat(amo_match_patterns, atn_match_patterns),
}).then(function(tabs) {
tabs.forEach(showPageActionIfNeeded);
});
Expand Down Expand Up @@ -86,6 +86,6 @@ function showPageActionIfNeeded(tab) {
}
function isPageActionNeededForUrl(url) {
return cws_pattern.test(url) || mea_pattern.test(url) || ows_pattern.test(url) ||
amo_pattern.test(url);
amo_pattern.test(url) || atn_pattern.test(url);
}
//#endif
6 changes: 3 additions & 3 deletions src/bg-contextmenu.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

/* jshint browser:true, devel:true */
/* globals chrome, cws_match_pattern, mea_match_pattern, ows_match_pattern, amo_match_patterns, get_crx_url */
/* globals chrome, cws_match_pattern, mea_match_pattern, ows_match_pattern, amo_match_patterns, atn_match_patterns, get_crx_url */
/* globals encodeQueryString */

'use strict';
Expand Down Expand Up @@ -173,7 +173,7 @@
id: MENU_ID_AMO_APPROVED_LINK,
title: 'View linked extension source (latest approved version)',
contexts: ['link'],
targetUrlPatterns: amo_match_patterns,
targetUrlPatterns: amo_match_patterns.concat(atn_match_patterns),
});
chrome.contextMenus.create({
id: MENU_ID_PAGE,
Expand All @@ -191,7 +191,7 @@
id: MENU_ID_AMO_APPROVED_PAGE,
title: 'View extension source (latest approved version)',
contexts: ['page', 'frame', 'link'],
documentUrlPatterns: amo_match_patterns,
documentUrlPatterns: amo_match_patterns.concat(atn_match_patterns),
});
}
function hide() {
Expand Down
29 changes: 26 additions & 3 deletions src/cws_pattern.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

/* globals location, getPlatformInfo, navigator */
/* exported cws_match_pattern, mea_match_pattern, ows_match_pattern, amo_match_patterns */
/* exported cws_pattern, mea_pattern, ows_pattern, amo_pattern */
/* exported cws_match_pattern, mea_match_pattern, ows_match_pattern, amo_match_patterns, atn_match_patterns */
/* exported cws_pattern, mea_pattern, ows_pattern, amo_pattern, atn_pattern */
/* exported can_viewsource_crx_url */
/* exported get_crx_url, get_webstore_url, get_zip_name, is_not_crx_url, getParam */
/* exported is_crx_download_url, is_webstore_url */
Expand Down Expand Up @@ -47,6 +47,14 @@ var amo_match_patterns = [
// Depends on: https://bugzilla.mozilla.org/show_bug.cgi?id=1620084
var amo_xpi_cdn_pattern = /^https?:\/\/(?:addons\.cdn\.mozilla\.net|addons-dev-cdn\.allizom\.org)\/user-media\/addons\//;

// Thunderbird
var atn_pattern = /^https?:\/\/((?:addons|addons-stage)\.thunderbird\.net)\/.*?\/addon\/([^/?#]+)/;
var atn_download_pattern = /^https?:\/\/((?:addons|addons-stage)\.thunderbird\.net)\/[^?#]*\/downloads\/latest\/([^/?#]+)/;
var atn_match_patterns = [
'*://addons.thunderbird.net/*addon/*',
'*://addons-stage.thunderbird.net/*addon/*',
];

// page_action.show_matches (in manifest_firefox.json) uses:
// cws_match_pattern, mea_match_pattern, ows_match_pattern, amo_match_patterns
//
Expand Down Expand Up @@ -109,6 +117,11 @@ function get_crx_url(extensionID_or_url) {
if (match) {
return get_xpi_url(match[1], match[2]);
}
match = atn_pattern.exec(extensionID_or_url);
if (match) {
// Although /firefox/ works too, let's prefer /thunderbird/.
return get_xpi_url(match[1], match[2]).replace('/firefox/', '/thunderbird/');
}
match = mea_pattern.exec(extensionID_or_url) || mea_download_pattern.exec(extensionID_or_url);
if (match) {
return 'https://edge.microsoft.com/extensionwebstorebase/v1/crx?response=redirect&x=id%3D' + match[1] + '%26installsource%3Dondemand%26uc';
Expand Down Expand Up @@ -184,6 +197,10 @@ function get_webstore_url(url) {
if (amo) {
return 'https://' + get_amo_domain(url) + '/firefox/addon/' + amo;
}
var atn = atn_pattern.exec(url) || atn_download_pattern.exec(url);
if (atn) {
return 'https://' + atn[1] + '/thunderbird/addon/' + atn[2];
}
}

// Return the suggested name of the zip file.
Expand Down Expand Up @@ -288,6 +305,7 @@ function is_not_crx_url(url) {
// Firefox-based browsers use XPI, which is not a CRX with certainty.
if (
amo_pattern.test(url) || amo_domain_pattern.test(url) ||
atn_pattern.test(url) || atn_download_pattern.test(url) ||
/\.xpi([#?]|$)/.test(url)
) {
return true;
Expand All @@ -302,12 +320,17 @@ function is_crx_download_url(url) {
mea_download_pattern.test(url) ||
ows_download_pattern.test(url) ||
amo_download_pattern.test(url) ||
atn_download_pattern.test(url) ||
/\.(crx|nex|xpi)\b/.test(url);
}

function is_webstore_url(url) {
// Keep logic in sync with get_webstore_url.
return cws_pattern.test(url) || mea_pattern.test(url) || ows_pattern.test(url) || amo_pattern.test(url);
return cws_pattern.test(url) ||
mea_pattern.test(url) ||
ows_pattern.test(url) ||
amo_pattern.test(url) ||
atn_pattern.test(url);
}

// |name| should not contain special RegExp characters, except possibly maybe a '[]' at the end.
Expand Down
12 changes: 12 additions & 0 deletions src/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,18 @@
"hostSuffix": "addons-dev.allizom.org",
"pathContains": "review/"
}
}, {
"type": "declarativeContent.PageStateMatcher",
"pageUrl": {
"hostEquals": "addons.thunderbird.net",
"pathContains": "addon/"
}
}, {
"type": "declarativeContent.PageStateMatcher",
"pageUrl": {
"hostSuffix": "addons-stage.thunderbird.net",
"pathContains": "addon/"
}
}]
}],
"icons": {
Expand Down
4 changes: 3 additions & 1 deletion src/manifest_firefox.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@
"*://addons.allizom.org/*addon/*",
"*://*.addons.allizom.org/*review/*",
"*://addons-dev.allizom.org/*addon/*",
"*://*.addons-dev.allizom.org/*review/*"
"*://*.addons-dev.allizom.org/*review/*",
"*://addons.thunderbird.net/*addon/*",
"*://addons-stage.thunderbird.net/*addon/*"
]
},
"icons": {
Expand Down
12 changes: 12 additions & 0 deletions src/manifest_opera.json
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,18 @@
"hostSuffix": "addons-dev.allizom.org",
"pathContains": "review/"
}
}, {
"type": "declarativeContent.PageStateMatcher",
"pageUrl": {
"hostEquals": "addons.thunderbird.net",
"pathContains": "addon/"
}
}, {
"type": "declarativeContent.PageStateMatcher",
"pageUrl": {
"hostSuffix": "addons-stage.thunderbird.net",
"pathContains": "addon/"
}
}]
}],
"icons": {
Expand Down

0 comments on commit b727d3e

Please sign in to comment.