Skip to content

Commit

Permalink
Workaround false Australis detection in Pale Moon 29+
Browse files Browse the repository at this point in the history
  • Loading branch information
JustOff committed Feb 1, 2021
1 parent 99fbc75 commit 2c04ee3
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 0 deletions.
36 changes: 36 additions & 0 deletions bootstrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,37 @@ function patchAndInstall(win, srcFile) {
manifestData = manifestData.replace(/^\xEF\xBB\xBF/, "");
let origManifest = manifestData;
manifestData = manifestData.replace(/\{ec8030f7\-c20a\-464f\-9b0e\-13a3a9e97384\}/gi, "{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}");
manifestData = manifestData.replace(/appversion<(=28|29)/gi, "appversion<99");
manifestData = manifestData.replace(/appversion>(28|=29)/gi, "appversion>99");
if (manifestData != origManifest) {
manifestData += "\n\n# Original data:\n#\n# " + origManifest.split(/\r?\n/).join("\n# ");
}

manifestStream = converter.convertToInputStream(manifestData);
}

let jsFixArray = [];
let entries = zipReader.findEntries('*.(js|JS|jsm|JSM)$');
while (entries.hasMore()) {
let entryPointer = entries.getNext();
let entry = zipReader.getEntry(entryPointer);
if (!entry.isDirectory) {
inputStream = zipReader.getInputStream(entryPointer);
sInputStream.init(inputStream);
let entryData = converter.ConvertToUnicode(sInputStream.read(entry.realSize));
sInputStream.close();

entryData = entryData.replace(/^\xEF\xBB\xBF/, "");
let origData = entryData;
entryData = entryData.replace(/nsIXULAppInfo\)\.version/g, "nsIXULAppInfo).version.slice(0,0) + \"28.99\"");
entryData = entryData.replace(/(Services\.appinfo\.version|xulAppInfo\.version|AppInfo\.version)/gi, "\"28.99\"");
if (entryData != origData) {
jsFixArray.push({name: entryPointer,
stream: converter.convertToInputStream(entryData),
origStream: converter.convertToInputStream(origData)});
}
}
}
zipReader.close();

instData = instData.replace(/^\xEF\xBB\xBF/, "");
Expand Down Expand Up @@ -127,6 +152,17 @@ function patchAndInstall(win, srcFile) {
zipWriter.removeEntry(manifestName, false);
zipWriter.addEntryStream(manifestName, Date.now(), Ci.nsIZipWriter.COMPRESSION_DEFAULT, manifestStream, false);
}
if (jsFixArray.length && Services.prompt.confirm(win, locale.get("jsfix.title"), locale.get("jsfix.text"))) {
for (let jsFix of jsFixArray) {
zipWriter.removeEntry(jsFix.name, false);
zipWriter.addEntryStream(jsFix.name, Date.now(), Ci.nsIZipWriter.COMPRESSION_DEFAULT, jsFix.stream, false);
let saveName = jsFix.name + ".mtt";
if (zipWriter.hasEntry(saveName)) {
zipWriter.removeEntry(saveName, false);
}
zipWriter.addEntryStream(saveName, Date.now(), Ci.nsIZipWriter.COMPRESSION_DEFAULT, jsFix.origStream, false);
}
}
zipWriter.close();

AddonManager.addInstallListener(installListener);
Expand Down
2 changes: 2 additions & 0 deletions install.rdf
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

Extra features:
- Update chrome.manifest rules to be compatible with Pale Moon
- Workaround false Australis detection in Pale Moon 29.0 and later
- Disable automatic update for add-ons with forced compatibility
- Allow to save installed add-ons from context menu
- Help to re-install add-ons in compatibility mode
Expand All @@ -30,6 +31,7 @@ If you find the add-on that runs well, you have to contact its author and ask th

Дополнительные возможности:
- Обновление правил chrome.manifest для совместимости с Pale Moon
- Предотвращение ложного обнаружения Australis в Pale Moon 29.0 и старше
- Отключение автоматического обновления дополнений с форсированной совместимостью
- Возможность сохранения установленных дополнений из контекстного меню
- Помощь в переустановке дополнений в режиме совместимости
Expand Down
2 changes: 2 additions & 0 deletions locale/en-US/moonttool.properties
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,5 @@ disclaimer.message=I acknowledge that I have fully read, understood, and do here
warning.title=Moon Tester Tool :: Warning
warning.text=You are going to save an Add-on modified by Moon Tester Tool.\n\nPlease note that redistribution of such files is strictly prohibited!\n\n
warning.message=I have read, understood, and accept these conditions.
jsfix.title=Moon Tester Tool :: Workaround for detecting the browser version
jsfix.text=The extension to be installed contains code to detect the browser version. In some cases this can cause it to not work properly in Pale Moon 29.0 and later.\n\nMoon Tester Tool can try to fix this issue, but the workaround it applies has its own drawbacks, so it is recommended that you try to do without it first.\n\nDo you want to apply the workaround for detecting the browser version?\n\n
2 changes: 2 additions & 0 deletions locale/ru-RU/moonttool.properties
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,5 @@ disclaimer.message=Я подтверждаю, что я полностью пр
warning.title=Moon Tester Tool :: Предупреждение
warning.text=Вы собираетесь сохранить дополнение, модифицированное с помощью Moon Tester Tool.\n\nПожалуйста обратите внимание, что распространение таких файлов строго запрещено!\n\n
warning.message=Я прочел, понял и согласен с этими условиями.
jsfix.title=Moon Tester Tool :: Обходное решение для определения версии браузера
jsfix.text=Устанавливаемое расширение содержит код для определения версии браузера. В некоторых случаях это может привести к неправильной работе в Pale Moon 29.0 и старше.\n\nMoon Tester Tool может попытаться решить эту проблему, но используемое решение имеет свои недостатки, поэтому рекомендуется сначала попробовать обойтись без него.\n\nВы хотите применить обходное решение для определения версии браузера?\n\n

0 comments on commit 2c04ee3

Please sign in to comment.