mirror of
https://github.com/arkenfox/user.js.git
synced 2025-09-01 17:38:30 +02:00
Compare commits
116 Commits
Author | SHA1 | Date | |
---|---|---|---|
07c128a190 | |||
5b1d56933b | |||
34cfcedc1b | |||
f9146fdf24 | |||
a1cdbc8324 | |||
cd07641a9d | |||
9c02949e04 | |||
1ef62a1036 | |||
5672bc8cc8 | |||
df1732745d | |||
30daf8640c | |||
4074a37e1d | |||
97043b0ce1 | |||
42ea484017 | |||
3f6340b69c | |||
884e84a4cb | |||
560acfc94f | |||
fb263f5624 | |||
19b392b83d | |||
2db76c95c3 | |||
b6fbf77dde | |||
a4ba22e912 | |||
163e18ce6d | |||
a13027905e | |||
8f76d9439f | |||
f0980b5cb8 | |||
450c9a9e0f | |||
6acfdaccbd | |||
a0e0a2a6c9 | |||
f67e729197 | |||
19526b573c | |||
b0221ec838 | |||
a3611b7cf8 | |||
bff1e84afa | |||
1d31da40ec | |||
0d57cfc44a | |||
0cfb2fb06d | |||
d5f297ed42 | |||
c13dbdf40d | |||
6173104a9e | |||
0c79b8b45b | |||
895f8d01d5 | |||
65dfad5c76 | |||
fdaf22780f | |||
16756646bb | |||
e4f80225d8 | |||
67eec9c85c | |||
539750d2f2 | |||
d91226ed55 | |||
301fcd059d | |||
1cc9a08a18 | |||
5d1857ddd8 | |||
226af6f679 | |||
7f2c92f654 | |||
5b82afd5bd | |||
d7b1877a1f | |||
1b6239eab8 | |||
ad0187122d | |||
624e50faac | |||
a9e9392172 | |||
201210111e | |||
53f8578749 | |||
dc4d9e4dae | |||
e1b0eae740 | |||
be0ccf6460 | |||
7c0a327b06 | |||
a35cba3914 | |||
e16425310f | |||
d503d96db0 | |||
335299a0cf | |||
7311cfdf84 | |||
3a9440aeea | |||
3210ab0ca8 | |||
2c734612f6 | |||
a12dd83b1f | |||
44d9ceaf05 | |||
be9d9ac9ca | |||
66cdb72927 | |||
953b96431e | |||
4d72ad90b0 | |||
cccb5b10b4 | |||
810045eb39 | |||
b47982bb9a | |||
0691b8babe | |||
8d1c95c650 | |||
19484e1a56 | |||
755ebf88fb | |||
d26ea4f39e | |||
a0f3da208f | |||
5166811bd5 | |||
86bfdd1470 | |||
90ef9e63eb | |||
f2200fd442 | |||
aff595b6ea | |||
6618bf5f76 | |||
9aa8e27ef4 | |||
9c782fbf57 | |||
931462b30b | |||
217553b367 | |||
469bbc1ab3 | |||
11dcc54b61 | |||
d40d7dbabd | |||
b80c515e88 | |||
ed735f875c | |||
55b720faec | |||
31567c7938 | |||
8f939c91fe | |||
27bd07d496 | |||
42281a9e52 | |||
8f40c97fd1 | |||
9642452c48 | |||
8f1c3018ca | |||
f85eb9d0c2 | |||
408a992893 | |||
23c884a5f8 | |||
51089fbad9 |
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -13,3 +13,4 @@
|
||||
.gitattributes export-ignore
|
||||
*.yml export-ignore
|
||||
/wikipiki export-ignore
|
||||
/.github export-ignore
|
||||
|
9
.github/ISSUE_TEMPLATE/tools.md
vendored
9
.github/ISSUE_TEMPLATE/tools.md
vendored
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: Tools
|
||||
about: Report issues with the updaters, troubleshooter, or any other tools.
|
||||
about: Report issues with the updaters, the troubleshooter, or any other tools.
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
@ -8,10 +8,11 @@ assignees: ''
|
||||
---
|
||||
|
||||
<!--
|
||||
Make sure to specify:
|
||||
Please specify:
|
||||
- the name of the file (i.e. updater.bat, updater.sh)
|
||||
- the OS where you used the tool (if applicable)
|
||||
- steps to reproduce the issue
|
||||
- expected result
|
||||
- actual result
|
||||
- expected result
|
||||
|
||||
Blank out this field before typing, or start typing after the next line.
|
||||
-->
|
||||
|
24
.github/ISSUE_TEMPLATE/troubleshooting-help.md
vendored
24
.github/ISSUE_TEMPLATE/troubleshooting-help.md
vendored
@ -1,30 +1,23 @@
|
||||
---
|
||||
name: Troubleshooting help
|
||||
about: Ask for help troubleshooting issues with user.js
|
||||
about: Ask for help to solve problems with user.js
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
Before you ask for help...
|
||||
Before you proceed...
|
||||
- Keep reading this. Seriously.
|
||||
- Note that we do not support forks (i.e. IceCat, Pale Moon, WaterFox, etc).
|
||||
- Make sure you searched for the setup tags in user.js.
|
||||
- Make sure you searched for the `[Setup` tags in the `user.js`.
|
||||
- Search the GitHub repository. The information you need is most likely here already.
|
||||
- See if you get the same problem in a new Firefox profile without user.js.
|
||||
- See if you get the same problem without extensions/add-ons.
|
||||
- Check out our wiki page on troubleshooting.
|
||||
https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.4-Troubleshooting
|
||||
- Check out our [troubleshooting](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.4-Troubleshooting) wiki page, including steps to see if the problem is caused by the `user.js` or an extension.
|
||||
|
||||
See also:
|
||||
- Extension breakage due to prefs
|
||||
https://github.com/ghacksuserjs/ghacks-user.js/issues/391
|
||||
- Prefs vs Recommended Extensions: Co-Existance+Enhancement | Conflicts
|
||||
https://github.com/ghacksuserjs/ghacks-user.js/issues/350
|
||||
- The extension CSP header modification game
|
||||
https://github.com/ghacksuserjs/ghacks-user.js/issues/664
|
||||
- Extension breakage due to prefs [issue 391](https://github.com/ghacksuserjs/ghacks-user.js/issues/391)
|
||||
- Prefs vs Recommended Extensions: Co-Existance+Enhancement | Conflicts [issue 350](https://github.com/ghacksuserjs/ghacks-user.js/issues/350)
|
||||
- The extension CSP header modification game [issue 664](https://github.com/ghacksuserjs/ghacks-user.js/issues/664)
|
||||
|
||||
If you still need help, help us help you by providing relevant information:
|
||||
- browser version
|
||||
@ -32,4 +25,5 @@ If you still need help, help us help you by providing relevant information:
|
||||
- actual result
|
||||
- expected result
|
||||
- anything else you deem worth mentioning
|
||||
-->
|
||||
|
||||
Clear all of this when you're ready to type.
|
||||
|
10
.github/ISSUE_TEMPLATE/user-js.md
vendored
10
.github/ISSUE_TEMPLATE/user-js.md
vendored
@ -1,5 +1,5 @@
|
||||
---
|
||||
name: User.js
|
||||
name: user.js
|
||||
about: Suggest changes to user.js
|
||||
title: ''
|
||||
labels: ''
|
||||
@ -7,7 +7,9 @@ assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
We value feedback in general, but we value feedback from informed users more. There is no need for you to be an expert to participate (most of us aren't), but we hope that you at least understand our decisions before questioning them. We discuss all changes openly, and we do not make changes lightly. So, if you don't understand why we decided to add/remove/change a certain pref, search the repo. The answer is most certainly here.
|
||||
If some change we made took you by surprise (in the wrong way), remember that keeping track of changes is your responsibility. Watch the repo, read the changelogs, compare revisions as you update your copy of user.js, or use any other method you prefer.
|
||||
-->
|
||||
|
||||
If some change we made took you by surprise (in the wrong way), remember that keeping track of changes is your responsibility. Watch the repo, read the [changelogs](https://github.com/ghacksuserjs/ghacks-user.js/issues?utf8=✓&q=is%3Aissue+label%3Achangelog), compare [releases](https://github.com/ghacksuserjs/ghacks-user.js/releases) as you update your copy of user.js, or use any other method you prefer.
|
||||
|
||||
Clear all of this when you're ready to type.
|
||||
|
||||
|
@ -8,7 +8,7 @@ Everyone, experts included, should at least read the [implementation](https://gi
|
||||
|
||||
Note that we do *not* recommend connecting over Tor on Firefox. Use the [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en) if your [threat model](https://www.torproject.org/about/torusers.html.en) calls for it, or for accessing hidden services.
|
||||
|
||||
Also be aware that this `user.js` is made specifically for Firefox. Using it as-is in other Gecko-based browsers can be counterproductive, especially in the Tor Browser.
|
||||
Also be aware that this `user.js` is made specifically for desktop Firefox. Using it as-is in other Gecko-based browsers can be counterproductive, especially in the Tor Browser.
|
||||
|
||||
Sitemap: [Releases](https://github.com/ghacksuserjs/ghacks-user.js/releases), [changelogs](https://github.com/ghacksuserjs/ghacks-user.js/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Achangelog), [Wiki](https://github.com/ghacksuserjs/ghacks-user.js/wiki), [stickies](https://github.com/ghacksuserjs/ghacks-user.js/issues?q=is%3Aissue+is%3Aopen+label%3A%22sticky+topic%22). [diffs](https://github.com/ghacksuserjs/ghacks-user.js/issues?q=is%3Aissue+label%3Adiffs)
|
||||
|
||||
@ -18,7 +18,7 @@ Literally thousands of sources, references and suggestions. That said...
|
||||
* Martin Brinkmann at [ghacks](https://www.ghacks.net/) <sup>1</sup>
|
||||
* The ghacks community and commentators
|
||||
* [12bytes](https://12bytes.org/articles/tech/firefox/firefoxgecko-configuration-guide-for-privacy-and-performance-buffs)
|
||||
* The 12bytes article now uses this user.js and supplements it with an additional JS hosted at [GitLab](https://gitlab.com/labwrat/Firefox-user.js/tree/master)
|
||||
* The 12bytes article now uses this user.js and supplements it with an additional JS hosted at [Codeberg](https://codeberg.org/12bytes.org/Firefox-user.js-supplement)
|
||||
|
||||
<sup>1</sup> The ghacks user.js was an independent project by [Thorin-Oakenpants](https://github.com/Thorin-Oakenpants) started in early 2015 and was [first published](https://www.ghacks.net/2015/08/18/a-comprehensive-list-of-firefox-privacy-and-security-settings/) at ghacks in August 2015. With Martin Brinkmann's blessing, it will keep the ghacks name.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/***
|
||||
This will reset the preferences that are under sections 4600 & 4700 in the ghacks user.js
|
||||
up to and including release 60-beta. These are the prefs that are no longer necessary,
|
||||
up to and including Firefox/ESR 68. These are the prefs that are no longer necessary,
|
||||
or they conflict with, privacy.resistFingerprinting if you have that enabled.
|
||||
|
||||
For instructions see:
|
||||
@ -22,6 +22,8 @@
|
||||
'dom.w3c_touch_events.enabled',
|
||||
'media.ondevicechange.enabled',
|
||||
'webgl.enable-debug-renderer-info',
|
||||
'dom.w3c_pointer_events.enabled',
|
||||
'ui.use_standins_for_native_colors',
|
||||
/* section 4700 */
|
||||
'general.useragent.override',
|
||||
'general.buildID.override',
|
@ -1,6 +1,6 @@
|
||||
/***
|
||||
This will reset the preferences that have been deprecated by Mozilla
|
||||
and used in the ghacks user.js up to and including release 60-beta
|
||||
and used in the ghacks user.js up to and including Firefox/ESR 68
|
||||
|
||||
It is in reverse order, so feel free to remove sections that do not apply
|
||||
|
||||
@ -12,8 +12,43 @@
|
||||
let ops = [
|
||||
/* deprecated */
|
||||
|
||||
/* ESR52.x users can remove sections 53-60 but it is not
|
||||
crucial as your user.js will reinstate them */
|
||||
/* 68 */
|
||||
'browser.newtabpage.activity-stream.disableSnippets',
|
||||
'browser.aboutHomeSnippets.updateUrl',
|
||||
'lightweightThemes.update.enabled',
|
||||
'security.csp.experimentalEnabled',
|
||||
/* F67 */
|
||||
'dom.event.highrestimestamp.enabled',
|
||||
'browser.newtabpage.activity-stream.asrouter.userprefs.cfr',
|
||||
/* 66 */
|
||||
'browser.chrome.errorReporter.enabled',
|
||||
'browser.chrome.errorReporter.submitUrl',
|
||||
'network.allow-experiments',
|
||||
/* 65 */
|
||||
'browser.urlbar.autocomplete.enabled',
|
||||
'browser.fixup.hide_user_pass',
|
||||
/* 64 */
|
||||
'browser.onboarding.enabled',
|
||||
'devtools.webide.autoinstallADBHelper',
|
||||
'devtools.webide.adbAddonURL',
|
||||
'security.csp.enable_violation_events',
|
||||
/* 63 */
|
||||
'browser.search.countryCode',
|
||||
'app.update.enabled',
|
||||
'shield.savant.enabled',
|
||||
'browser.chrome.favicons',
|
||||
'media.autoplay.enabled',
|
||||
'network.cookie.lifetime.days',
|
||||
'browser.ctrlTab.previews',
|
||||
/* 62 */
|
||||
'plugin.state.java',
|
||||
/* 61 */
|
||||
'experiments.enabled',
|
||||
'experiments.manifest.uri',
|
||||
'experiments.supported',
|
||||
'experiments.activeExperiment',
|
||||
'network.jar.block-remote-files',
|
||||
'network.jar.open-unsafe-types',
|
||||
/* 60 */
|
||||
'browser.newtabpage.directory.source',
|
||||
'browser.newtabpage.enhanced',
|
||||
@ -22,7 +57,6 @@
|
||||
'extensions.shield-recipe-client.api_url',
|
||||
'browser.newtabpage.activity-stream.enabled',
|
||||
'dom.workers.enabled',
|
||||
'view_source.tab',
|
||||
/* 59 */
|
||||
'intl.locale.matchOS',
|
||||
'general.useragent.locale',
|
||||
@ -76,8 +110,6 @@
|
||||
'plugin.scan.WindowsMediaPlayer',
|
||||
'media.getusermedia.screensharing.allow_on_old_platforms',
|
||||
'dom.beforeAfterKeyboardEvent.enabled',
|
||||
/* End of ESR52.x section */
|
||||
|
||||
/* 52 */
|
||||
'network.http.sendSecureXSiteReferrer',
|
||||
'media.gmp-eme-adobe.enabled',
|
@ -1,7 +1,7 @@
|
||||
/***
|
||||
This will reset the preferences that have been removed completely from the ghacks user.js.
|
||||
|
||||
Last updated: 12-June-2019
|
||||
Last updated: 19-December-2019
|
||||
|
||||
For instructions see:
|
||||
https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-Resetting-Inactive-Prefs-[Scripts]
|
||||
@ -168,14 +168,9 @@
|
||||
'signon.storeWhenAutocompleteOff',
|
||||
'xpinstall.whitelist.required',
|
||||
/* 67-beta: Blocklist, SB & TP cleanup: these were all inactive */
|
||||
'browser.safebrowsing.downloads.enabled',
|
||||
'browser.safebrowsing.downloads.remote.block_dangerous',
|
||||
'browser.safebrowsing.downloads.remote.block_dangerous_host',
|
||||
'browser.safebrowsing.downloads.remote.block_potentially_unwanted',
|
||||
'browser.safebrowsing.downloads.remote.block_uncommon',
|
||||
'browser.safebrowsing.blockedURIs.enabled',
|
||||
'browser.safebrowsing.malware.enabled',
|
||||
'browser.safebrowsing.phishing.enabled',
|
||||
'browser.safebrowsing.provider.google.gethashURL',
|
||||
'browser.safebrowsing.provider.google.updateURL',
|
||||
'browser.safebrowsing.provider.google4.gethashURL',
|
||||
@ -194,6 +189,7 @@
|
||||
'services.blocklist.update_enabled',
|
||||
'urlclassifier.trackingTable',
|
||||
/* 68-beta */
|
||||
'dom.forms.datetime',
|
||||
'font.blacklist.underline_offset',
|
||||
'font.name.monospace.x-unicode',
|
||||
'font.name.monospace.x-western',
|
||||
@ -203,6 +199,25 @@
|
||||
'font.name.serif.x-western',
|
||||
'layout.css.font-loading-api.enabled',
|
||||
'toolkit.telemetry.cachedClientID',
|
||||
/* 69-beta */
|
||||
'plugin.sessionPermissionNow.intervalInMinutes',
|
||||
/* 70-beta */
|
||||
'browser.cache.disk_cache_ssl',
|
||||
'browser.sessionhistory.max_entries',
|
||||
'dom.push.connection.enabled',
|
||||
'dom.push.serverURL',
|
||||
'extensions.getAddons.discovery.api_url',
|
||||
'extensions.htmlaboutaddons.discover.enabled',
|
||||
'extensions.webservice.discoverURL',
|
||||
'intl.locale.requested',
|
||||
'intl.regional_prefs.use_os_locales',
|
||||
'privacy.usercontext.about_newtab_segregation.enabled',
|
||||
'security.insecure_connection_icon.pbmode.enabled',
|
||||
'security.insecure_connection_text.pbmode.enabled',
|
||||
'webgl.dxgl.enabled',
|
||||
/* 71-beta */
|
||||
'media.block-autoplay-until-in-foreground',
|
||||
'middlemouse.paste',
|
||||
/* reset parrot: check your open about:config after running the script */
|
||||
'_user.js.parrot'
|
||||
]
|
||||
|
@ -1,65 +1,11 @@
|
||||
|
||||
/*** ghacks-user.js troubleshooter.js v1.5.2 ***/
|
||||
/*** ghacks-user.js troubleshooter.js v1.6.0 ***/
|
||||
|
||||
(function() {
|
||||
|
||||
if("undefined" === typeof(Services)) {
|
||||
alert("about:config needs to be the active tab!");
|
||||
return;
|
||||
}
|
||||
if ("undefined" === typeof(Services)) return alert('about:config needs to be the active tab!');
|
||||
|
||||
function getMyList(arr) {
|
||||
let aRet = [];
|
||||
let dummy = 0;
|
||||
for (let i = 0, len = arr.length; i < len; i++) {
|
||||
if (Services.prefs.prefHasUserValue(arr[i])) {
|
||||
dummy = Services.prefs.getPrefType(arr[i]);
|
||||
switch (dummy) {
|
||||
case 32: // string (see https://dxr.mozilla.org/mozilla-central/source/modules/libpref/nsIPrefBranch.idl#31)
|
||||
dummy = Services.prefs.getCharPref(arr[i]);
|
||||
aRet.push({'name':arr[i],'value': dummy,'type':32});
|
||||
break;
|
||||
case 64: // int
|
||||
dummy = Services.prefs.getIntPref(arr[i]);
|
||||
aRet.push({'name':arr[i],'value': dummy,'type':64});
|
||||
break;
|
||||
case 128: // boolean
|
||||
dummy = Services.prefs.getBoolPref(arr[i]);
|
||||
aRet.push({'name':arr[i],'value': dummy,'type':128});
|
||||
break;
|
||||
default:
|
||||
console.log("error detecting pref-type for '"+arr[i]+"' !");
|
||||
}
|
||||
}
|
||||
}
|
||||
return aRet;
|
||||
}
|
||||
|
||||
function reapply(arr) {
|
||||
for (let i = 0, len = arr.length; i < len; i++) {
|
||||
switch (arr[i].type) {
|
||||
case 32: // string
|
||||
Services.prefs.setCharPref(arr[i].name, arr[i].value);
|
||||
break;
|
||||
case 64: // int
|
||||
Services.prefs.setIntPref(arr[i].name, arr[i].value);
|
||||
break;
|
||||
case 128: // boolean
|
||||
Services.prefs.setBoolPref(arr[i].name, arr[i].value);
|
||||
break;
|
||||
default:
|
||||
console.log("error re-appyling value for '"+arr[i].name+"' !"); // should never happen
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function myreset(arr) {
|
||||
for (let i = 0, len = arr.length; i < len; i++) {
|
||||
Services.prefs.clearUserPref(arr[i].name);
|
||||
}
|
||||
}
|
||||
|
||||
let ops = [
|
||||
const aPREFS = [
|
||||
|
||||
/* known culprits */
|
||||
'network.cookie.cookieBehavior',
|
||||
@ -160,56 +106,108 @@
|
||||
'last.one.without.comma'
|
||||
]
|
||||
|
||||
// any runtime-set pref that everyone will have and that can be safely reset
|
||||
const oFILLER = { type: 64, name: 'extensions.blocklist.pingCountTotal', value: -1 };
|
||||
|
||||
// reset prefs that set the same value as FFs default value
|
||||
let aTEMP = getMyList(ops);
|
||||
myreset(aTEMP);
|
||||
reapply(aTEMP);
|
||||
function getMyList(arr) {
|
||||
const aRet = [];
|
||||
for (const sPname of arr) {
|
||||
if (Services.prefs.prefHasUserValue(sPname)) {
|
||||
const ptype = Services.prefs.getPrefType(sPname);
|
||||
switch (ptype) {
|
||||
case 32: // string (see https://dxr.mozilla.org/mozilla-central/source/modules/libpref/nsIPrefBranch.idl#31)
|
||||
aRet.push({'type':ptype,'name':sPname,'value':Services.prefs.getCharPref(sPname)});
|
||||
break;
|
||||
case 64: // int
|
||||
aRet.push({'type':ptype,'name':sPname,'value':Services.prefs.getIntPref(sPname)});
|
||||
break;
|
||||
case 128: // boolean
|
||||
aRet.push({'type':ptype,'name':sPname,'value':Services.prefs.getBoolPref(sPname)});
|
||||
break;
|
||||
default:
|
||||
console.log("error detecting pref-type for '"+sPname+"' !");
|
||||
}
|
||||
}
|
||||
}
|
||||
return aRet;
|
||||
}
|
||||
|
||||
const aBACKUP = getMyList(ops);
|
||||
//console.log(aBACKUP.length, "user-set prefs from our list detected and their values stored.");
|
||||
function reapply(arr) {
|
||||
for (const oPref of arr) {
|
||||
switch (oPref.type) {
|
||||
case 32: // string
|
||||
Services.prefs.setCharPref(oPref.name, oPref.value);
|
||||
break;
|
||||
case 64: // int
|
||||
Services.prefs.setIntPref(oPref.name, oPref.value);
|
||||
break;
|
||||
case 128: // boolean
|
||||
Services.prefs.setBoolPref(oPref.name, oPref.value);
|
||||
break;
|
||||
default:
|
||||
console.log("error re-appyling value for '"+oPref.name+"' !"); // should never happen
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let myArr = aBACKUP;
|
||||
let found = false;
|
||||
let aDbg = [];
|
||||
focus();
|
||||
myreset(aBACKUP); // reset all detected prefs
|
||||
if (confirm("all detected prefs reset.\n\n!! KEEP THIS PROMPT OPEN AND TEST THE SITE IN ANOTHER TAB !!\n\nIF the problem still exists, this script can't help you - click cancel to re-apply your values and exit.\n\nClick OK if your problem is fixed.")) {
|
||||
aDbg = myArr;
|
||||
reapply(aBACKUP);
|
||||
myreset(myArr.slice(0, parseInt(myArr.length/2)));
|
||||
while (myArr.length >= 2) {
|
||||
function myreset(arr) {
|
||||
for (const oPref of arr) Services.prefs.clearUserPref(oPref.name);
|
||||
}
|
||||
|
||||
function resetAllMatchingDefault(arr) {
|
||||
const aTmp = getMyList(arr);
|
||||
myreset(aTmp);
|
||||
reapply(aTmp);
|
||||
}
|
||||
|
||||
function _main(aALL) {
|
||||
const _h = (arr) => Math.ceil(arr.length/2);
|
||||
|
||||
let aTmp = aALL, aDbg = aALL;
|
||||
reapply(aALL);
|
||||
myreset(aTmp.slice(0, _h(aTmp)));
|
||||
while (aTmp.length) {
|
||||
alert("NOW TEST AGAIN !");
|
||||
if (confirm("if the problem still exists click OK, otherwise click cancel.")) {
|
||||
myArr = myArr.slice(parseInt(myArr.length/2));
|
||||
if (myArr.length == 1) {
|
||||
alert("The problem is caused by more than 1 pref !\n\nNarrowed it down to "+ aDbg.length.toString() +" prefs, check the console ...");
|
||||
break;
|
||||
}
|
||||
aTmp = aTmp.slice(_h(aTmp));
|
||||
} else {
|
||||
myArr = myArr.slice(0, parseInt(myArr.length/2));
|
||||
aDbg = myArr;
|
||||
if (myArr.length == 1) { found = true; break; }
|
||||
aTmp = aTmp.slice(0, _h(aTmp));
|
||||
aDbg = aTmp; // update narrowed down list
|
||||
if (aDbg.length == 1) break;
|
||||
}
|
||||
reapply(aBACKUP);
|
||||
myreset(myArr.slice(0, parseInt(myArr.length/2))); // reset half of the remaining prefs
|
||||
reapply(aALL);
|
||||
myreset(aTmp.slice(0, _h(aTmp))); // reset half of the remaining prefs
|
||||
}
|
||||
reapply(aBACKUP);
|
||||
reapply(aALL);
|
||||
|
||||
if (aDbg.length == 1) return alert("narrowed it down to:\n\n"+aDbg[0].name+"\n");
|
||||
if (aDbg.length == aALL.length) {
|
||||
let msg = "Failed to narrow it down beyond the initial "+aALL.length+" prefs. The problem is most likely caused by at least 2 prefs!\n\n";
|
||||
msg += "Either those prefs are too far apart in the list or there are exactly 2 culprits and they just happen to be at the wrong place.\n\n";
|
||||
msg += "In case it's the latter, the script can add a dummy pref and you can try again - Try again?";
|
||||
if (confirm(msg)) return _main([...aALL, oFILLER]);
|
||||
} else if (aDbg.length > 10 && confirm("Narrowed it down to "+aDbg.length+" prefs. Try narrowing it down further?")) {
|
||||
return _main(aDbg.reverse());
|
||||
}
|
||||
else {
|
||||
reapply(aBACKUP);
|
||||
|
||||
alert("Narrowed it down to "+ aDbg.length.toString() +" prefs, check the console ...");
|
||||
console.log("The problem is caused by 2 or more of these prefs:");
|
||||
for (const oPref of aDbg) console.log(oPref.name);
|
||||
}
|
||||
|
||||
|
||||
resetAllMatchingDefault(aPREFS); // reset user-set prefs matching FFs default value
|
||||
|
||||
const aBAK = getMyList(aPREFS);
|
||||
//console.log(aBAK.length, "user-set prefs from our list detected and their values stored.");
|
||||
|
||||
focus();
|
||||
myreset(aBAK);
|
||||
if (!confirm("all detected prefs reset.\n\n!! KEEP THIS PROMPT OPEN AND TEST THE SITE IN ANOTHER TAB !!\n\nIF the problem still exists, this script can't help you - click cancel to re-apply your values and exit.\n\nClick OK if your problem is fixed.")) {
|
||||
reapply(aBAK);
|
||||
return;
|
||||
}
|
||||
|
||||
if (found) {
|
||||
alert("narrowed it down to:\n\n"+myArr[0].name+"\n");
|
||||
myreset(myArr); // reset the culprit
|
||||
}
|
||||
else {
|
||||
console.log("the problem is caused by a combination of the following prefs:");
|
||||
for (let i = 0, len = aDbg.length; i < len; i++) {
|
||||
console.log(aDbg[i].name);
|
||||
}
|
||||
}
|
||||
_main(aBAK);
|
||||
|
||||
})();
|
||||
|
Reference in New Issue
Block a user