Go to : https://github.com/claustromaniac/Compare-UserJS
-- original post
I just want to share with you all my latest scripting endeavor. I hope you don't mind.
All feedback is welcome.
Feel free to close this issue whenever you want, since it's not really an issue.
Thanks.
sounds cool - maybe we can add it here. I'll have a play with it in the next week.
PS: you need a space between elegant and [Citation needed.]
I tested it and compared the output from my script with yours ...
1.txt - certain part of the ghacks user.js (253 prefs)
2.txt - TBB v8a9 default prefs (3336 prefs)
yours only detects 3333 in 2.txt
mine detected 76 matching prefs (yours: 72), 156 with different values (yours: 450! you need to divide by 3, thus 150 actual prefs) and 21 not declared in 2.txt (same as yours)
your script also detects 10 prefs exist in both files but are inactive in 2.txt but there are no inactive prefs in 2.txt. Probably due to prefs like this (note the /* in https://*):
user_pref("extensions.webextensions.base-content-security-policy", "script-src 'self' https://* moz-extension: blob: filesystem: 'unsafe-eval' 'unsafe-inline'; object-src 'self' https://* moz-extension: blob: filesystem:;");
IDK if that's the only thing it stumbles on though
FYI when I pasted the content of 2.txt I hadn't opened the file as UTF-8 and thus some chars are fubar-ed (fe in font.system.whitelist). It doesn't really matter for the purpose of this comparison but if you want the original UTF-8 file I can upload it somewhere. Or maybe it's recoverable from the pasty, IDK.
maybe we can add it here.
Sure, if you want.
you need a space between elegant and [Citation needed.]
You're right :+1:
@earthlng Thanks for testing it! I noticed the wrong number of different prefs yesterday but I was busy so I didn't touch it. The thing about prefs with https://*is a great catch. I will fix those things soon.
I still see some room for improvements, other than that. I could make the algorithm smarter in more than a few ways, really, but there might be a significant trade-off in performance, so I'll probably just retouch the regexes a bit, for starters. I also noticed that sometimes it takes it a pretty long while to parse some files. I don't have much experience with PowerShell, but with some more analysis I may eventually come up with some way to make it faster.
EDIT: OK, I noticed a handful of things I can try. Will probably be a bit busy today, but I have some significant improvements in mind for later.
v1.1 overview: I noticed some other minor issues, and I fixed them all. The thing is also a bit smarter, it can even parse *pref() calls that include line breaks in the syntax (as long as the breaks are not in the prefname or value parameters). There are still many things it can't understand, but it should be more than sufficiently good for typical use, I guess.
I also streamlined the code overall. Some lines weren't necessary at all. The output looks slightly different, too.
I considered making more changes, maybe add more parameters for additional options and whatnot.
Hmph. I came across one weird bug already. STR: Compare ghacks-user.js to master-branch pyllyukko's. If you don't get toolkit.telemetry.unified as having a possible syntax error, then it's something on my end, which I doubt.
Weird shit seems to chase me everywhere I go. There's no obvious reason for that to happen. I'll look into it later.
I tested it with the version of the script I had of your initial v1.1 release and it didn't have that problem.
Then I downloaded your latest master and it does show that pref as possibly broken.
Diffing the 2 scripts shows that you changed 4 lines in your latest version:
in Get-UserJSPrefs():
old lines:
$val = ($line -creplace "^.*pref\s*\(\s*['""][^'""]+['""]\s*,\s*(?:(?:['""](.*?)['""])|(true|false|-?[0-9]+))\s*\).*", '$1$2')
if ($broken) {$val = ($line -creplace "^.*pref\s*\(\s*['""][^'""]+['""]\s*,(.*?)\).*", '$1')}
new:
$val = ($line -creplace "^.*pref\(['""][^'""]+['""],(?:(?:['""](.*?)['""])|(true|false|-?[0-9]+))\);.*", '$1$2')
if ($broken) {$val = ($line -creplace "^.*pref\(['""][^'""]+['""],(.*?)\);.*", '$1')}
in Main Execution:
old lines:
# Remove unnecessary space and new-line characters within the target JS expressions.
$fileA = ($fileA -creplace "(?s)pref\s*\(\s*(\S.+?)\s*,\s*(.+?)\s*\)\s*;", 'pref($1,$2);')
$fileB = ($fileB -creplace "(?s)pref\s*\(\s*(\S.+?)\s*,\s*(.+?)\s*\)\s*;", 'pref($1,$2);')
new:
# Remove unnecessary space and new-line characters within the target JS expressions.
$fileA = ($fileA -creplace "(?s)pref\s*\(\s*(.+?)\s*,\s*(.+?)\s*\)\s*;", 'pref($1,$2);')
$fileB = ($fileB -creplace "(?s)pref\s*\(\s*(.+?)\s*,\s*(.+?)\s*\)\s*;", 'pref($1,$2);')
From looking at the output (it should be ==>+1 space+1 tab+pref value) it detects the pref value as 1 space+false. A bit more debugging shows that it removes the spaces in the description of 0330 instead of the pref line:
original:
/* 0330: disable telemetry
* the pref (.unified) affects the behaviour of the pref (.enabled)
* ...
* or release builds (true and false respectively), see [2]
* ... ***/
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.enabled", false);
after Remove unnecessary space and new-line characters within the target JS expressions:
/* 0330: disable telemetry
* the pref(.unified) affects the behaviour of the pref (.enabled)
* ...
* or release builds (true and false respectively),see [2]
* ... ***/
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.enabled",false);
ps: change $sep to use $nl instead of \n
An option to hide the matching prefs would be nice fe if I'd use this to compare FF's default values for our Diffs. I'd still like to know the number of matching prefs but don't need the 3000+ prefs in the output.
maybe something like this (not sure if this is the correct syntax!):
if ($matching_prefs) {... + " prefs match:" + $nl+$nl + $(If ($hideMatching) {""} Else {$matching_prefs}) + $nl}
And maybe show which of the matching and different prefs are inactive, fe like this:
extensions.pocket.enabled ==> false
(inactive) general.appname.override ==> Netscape
...
(inactive) xpinstall.signatures.required
ghacks.js: false
pk.js: true
Showing the number of combined unique prefs in the report would also be nice to have IMO. Maybe together with a breakdown of each category and making it a bit clearer what each category means value and state-wise, for example:
Compared files: ghacks.js, pk.js
590 prefs in ghacks.js (ghacks.js)
305 prefs in pk.js (pk.js)
xxxx combined unique prefs
139 matching prefs, both value and state (active/inactive)
14 prefs with different values but matching state
78 prefs not declared in ghacks.js
363 prefs not declared in pk.js
67 prefs with matching values but inactive in ghacks.js
7 prefs with matching values but inactive in pk.js
As for the not declared they could also show the (inactive) in front of the prefname as well as the prefvalue behind them.
If you prefer the output as is then maybe add an option the enable the more detailed output.
An option to hide the matching prefs
similarly when I compare a user.js against the 3000+ default values of FF, I don't care about the ~2800 prefs not declared in the user.js. A bitflag to hide the output of matching and/or the 2 not declared would be a neat solution and would only require 1 additional int parameter.
Like, 7 would be the default and show everything (if bitflag < 0 or bitflag > 7 then bitflag = 7); subtract 4 to hide the matching prefs and/or sub 1 and/or 2 to hide the not declared in either fileA and/or fileB.
Do you have any good links to documents and/or references that you used to learn PS? On the only official MS documentation I found there's wasn't even anything about available variable types and shit.
Oh and FUCK Microsoft for apparently being unable to create ANY fucking page that works without JS ffs!
The complete Go Programming Language Specification is a single static page that works perfectly fine without JS - why the fuck can't MS do anything right?! (sorry for the rant :)
Thanks for all the feedback mate! You're a time saver.
I'll be looking into the issue with toolkit.telemetry.unified in a while. I had too some of the ideas you brought up, especially the ones about hiding part of the output. I'll try to implement all those changes, it shouldn't be much work.
FUCK Microsoft for apparently being unable to create ANY fucking page that works without JS ffs!
IKR. I mostly use SS64.com for that very reason. Look here and here, mostly.
Thanks for the links, that looks to be exactly what I need :+1:
Without having tested anything yet, I can see the issue clearly now. Did I mention you're a time saver?
It's the regex for removing spaces. For some reason I don't remember (probably sleep-deprived logic), I removed the quotes from the part that is meant to match the prefname.
The regex reads:
(?s)pref\s*\(\s*(.+?)\s*,\s*(.+?)\s*\)\s*;
When it should be a bit more strict, at the very least something like:
(?s)pref\s*\(\s*['""](.+?)['""]\s*,\s*(.+?)\s*\)\s*;
Without specifying the quotes, that regex interpets this as the prefname:
.unified) affects the behaviour of the pref (.enabled)
* ...
* or release builds (true and false respectively)
... and this as the value:
see [2]
* ... ***/
user_pref("toolkit.telemetry.unified", false
:man_facepalming:
I think I'll use this regex for removing spaces instead:
(?s)pref\s*\(\s*['""](\S*?)['""]\s*,\s*(.+?)\s*\)\s*;
It matches as many non-space non-newline characters as it can as the prefname. It should even be faster too.
that regex interpets this as the prefname
Yeah from looking only at the code that's what I initially thought too but it's not what's happening. It wouldn't be able to report toolkit.telemetry.unified as a broken pref if it matched that long ass string as its prefname.
I think I'll use this regex for removing spaces instead:
while that would fix this specific case it would still be possible to break it. I think regardless of what you do in the Remove unnecessary space and new-line characters within the target JS expressions part, you should still put the whitespace checks back in the regexes within Get-UserJSPrefs()
It wouldn't be able to report toolkit.telemetry.unified as a broken pref if it matched that long ass string as its prefname.
No, because that regex only removes spaces and line breaks, it doesn't extract prefname and value. That part is done in the Get-UserJSPref function.
while that would fix this specific case it would still be possible to break it.
No, because ... what I just said :grin: That part is taken care of ahead in the flow.
What do you think about having the script default to hiding the matching prefs and an option for showing the full report (instead of an option for hiding the matches)? I think I'd like that better myself.
No, because ... what I just said
Thinking it through... Something like this should break it:
/* the syntax usually begins with user_pref("prefname", but you already know that.
All of this is also part of the value. I'm such a troll.
*/
user_pref("blabla", true);
It would be uncommon, but I guess it is possible after all. Alright, I'll add spaces to that specific part of the regex in the Get-UserJSPrefs function.
IMO showing the matching prefs by default is probably more in line with what people want (in most cases)
Thinking it through... Something like this should break it
told you :smiley_cat:
you two are such nerds .. get a room already
Look who's talking. :laughing: I'd say we're all nerds around here. GitHub is pretty much full of nerds.
I'll take it as a compiment, though.
@earthlng, regarding the option for hiding part of the output, what do you think about something like this?
-hideMask <int>
0 - hide nothing (default)
1 - hide matches
2 - hide differences
4 - hide declared in A but not in B
8 - hide declared in B but not in A
16 - hide inactive in A but active in B
32 - hide inactive in B but active in A
I can use bitwise operators to keep the code looking clean.
I don't know why anyone would ever want to hide fe pref differences but I guess it's better to have the option and not need it than to not have the option at all.
Yup. If someone _does_ want it, they have it. It didn't cost even a single extra line of code, just ~25 bytes per filter, so there was no real good reason not to include those options too.
I still want to test this more, but it is already looking quite complete for me. I hope I'm not missing/overlooking anything.
does it ignore the parrots :bird:
I don't see why that would be necessary. The output wouldn't be completely honest if it ignored arbitrary prefs, either.
Click to see what the output looks like. :point_left:
:::::::::::: { Compare-UserJS Report } ::::::::::::
(date removed)
Compared files: ghacks.js, pk.js
592 unique prefs in ghacks.js
305 unique prefs in pk.js
670 combined unique prefs
136 matching prefs, both value and state (active/inactive)
13 prefs with different values but same matching state
78 prefs not declared in ghacks.js
365 prefs not declared in pk.js
71 prefs with matching values but inactive in ghacks.js
7 prefs with matching values but inactive in pk.js
------------------------------------------------------------------------------
The following 136 prefs match:
app.shield.optoutstudies.enabled ==> false
beacon.enabled ==> false
breakpad.reportURL ==> ""
browser.cache.disk.enable ==> false
browser.cache.disk_cache_ssl ==> false
(inactive) browser.cache.memory.enable ==> false
browser.crashReports.unsubmittedCheck.enabled ==> false
browser.display.use_document_fonts ==> 0
browser.download.folderList ==> 2
browser.download.useDownloadDir ==> false
browser.fixup.alternate.enabled ==> false
browser.fixup.hide_user_pass ==> true
browser.formfill.enable ==> false
browser.helperApps.deleteTempFileOnExit ==> true
browser.newtab.preload ==> false
browser.newtabpage.enabled ==> false
browser.pagethumbnails.capturing_disabled ==> true
browser.safebrowsing.downloads.remote.enabled ==> false
browser.search.countryCode ==> "US"
browser.search.geoip.url ==> ""
browser.search.geoSpecificDefaults ==> false
browser.search.region ==> "US"
browser.search.suggest.enabled ==> false
browser.search.update ==> false
browser.send_pings ==> false
browser.send_pings.require_same_host ==> true
browser.sessionstore.privacy_level ==> 2
browser.shell.checkDefaultBrowser ==> false
browser.shell.shortcutFavicons ==> false
browser.ssl_override_behavior ==> 1
browser.tabs.crashReporting.sendReport ==> false
browser.uitour.enabled ==> false
browser.urlbar.autocomplete.enabled ==> false
browser.urlbar.autoFill ==> false
browser.urlbar.autoFill.typed ==> false
browser.urlbar.filter.javascript ==> true
browser.urlbar.suggest.history ==> false
browser.urlbar.suggest.searches ==> false
browser.urlbar.trimURLs ==> false
datareporting.healthreport.uploadEnabled ==> false
datareporting.policy.dataSubmissionEnabled ==> false
devtools.chrome.enabled ==> false
devtools.debugger.remote-enabled ==> false
devtools.webide.autoinstallADBHelper ==> false
devtools.webide.enabled ==> false
dom.allow_cut_copy ==> false
dom.event.clipboardevents.enabled ==> false
(inactive) dom.event.contextmenu.enabled ==> false
(inactive) dom.indexedDB.enabled ==> false
dom.ipc.plugins.flash.subprocess.crashreporter.enabled ==> false
dom.ipc.plugins.reportCrashURL ==> false
dom.serviceWorkers.enabled ==> false
(inactive) dom.storage.enabled ==> false
dom.vibrator.enabled ==> false
dom.webaudio.enabled ==> false
dom.webnotifications.enabled ==> false
extensions.blocklist.enabled ==> true
extensions.getAddons.cache.enabled ==> false
extensions.pocket.enabled ==> false
(inactive) general.appname.override ==> "Netscape"
(inactive) general.appversion.override ==> "5.0 (Windows)"
(inactive) general.oscpu.override ==> "Windows NT 6.1"
(inactive) general.platform.override ==> "Win32"
geo.wifi.uri ==> "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"
gfx.font_rendering.opentype_svg.enabled ==> false
intl.accept_languages ==> "en-US, en"
javascript.options.asmjs ==> false
javascript.use_us_english_locale ==> true
keyword.enabled ==> false
layout.css.visited_links_enabled ==> false
lightweightThemes.update.enabled ==> false
(inactive) loop.enabled ==> false
media.getusermedia.audiocapture.enabled ==> false
media.getusermedia.screensharing.enabled ==> false
media.gmp-gmpopenh264.enabled ==> false
media.navigator.enabled ==> false
media.navigator.video.enabled ==> false
media.peerconnection.enabled ==> false
media.peerconnection.ice.default_address_only ==> true
media.peerconnection.ice.no_host ==> true
network.allow-experiments ==> false
network.captive-portal-service.enabled ==> false
network.cookie.thirdparty.sessionOnly ==> true
network.dns.disablePrefetch ==> true
network.dns.disablePrefetchFromHTTPS ==> true
network.http.speculative-parallel-limit ==> 0
network.IDN_show_punycode ==> true
network.predictor.enabled ==> false
network.prefetch-next ==> false
network.proxy.socks_remote_dns ==> true
plugin.state.flash ==> 0
plugin.state.java ==> 0
plugins.click_to_play ==> true
privacy.clearOnShutdown.cache ==> true
privacy.clearOnShutdown.downloads ==> true
privacy.clearOnShutdown.formdata ==> true
privacy.clearOnShutdown.history ==> true
privacy.clearOnShutdown.offlineApps ==> true
privacy.clearOnShutdown.sessions ==> true
privacy.cpd.cache ==> true
privacy.cpd.formdata ==> true
privacy.cpd.history ==> true
privacy.cpd.offlineApps ==> true
privacy.cpd.sessions ==> true
privacy.firstparty.isolate ==> true
privacy.resistFingerprinting ==> true
privacy.sanitize.sanitizeOnShutdown ==> true
privacy.sanitize.timeSpan ==> 0
security.ask_for_password ==> 2
security.cert_pinning.enforcement_level ==> 2
security.csp.enable ==> true
security.csp.experimentalEnabled ==> true
security.insecure_field_warning.contextual.enabled ==> true
security.insecure_password.ui.enabled ==> true
security.mixed_content.block_active_content ==> true
security.mixed_content.block_display_content ==> true
security.OCSP.enabled ==> 1
security.OCSP.require ==> true
security.pki.sha1_enforcement_level ==> 1
security.ssl.disable_session_identifiers ==> true
security.ssl.enable_ocsp_stapling ==> true
security.ssl.errorReporting.automatic ==> false
(inactive) security.ssl.require_safe_negotiation ==> true
security.ssl.treat_unsafe_negotiation_as_broken ==> true
security.tls.version.fallback-limit ==> 3
security.tls.version.max ==> 4
services.blocklist.update_enabled ==> true
signon.autofillForms ==> false
signon.autofillForms.http ==> false
signon.formlessCapture.enabled ==> false
toolkit.telemetry.enabled ==> false
toolkit.telemetry.unified ==> false
webgl.disabled ==> true
webgl.disable-extensions ==> true
webgl.disable-fail-if-major-performance-caveat ==> true
webgl.min_capability_mode ==> true
------------------------------------------------------------------------------
The following 13 prefs have different values:
(inactive) browser.aboutHomeSnippets.updateUrl
ghacks.js: "data:,"
pk.js: ""
(inactive) extensions.blocklist.url
ghacks.js: "https://blocklists.settings.services.mozilla.com/v1/blocklist/3/%APP_ID%/%APP_VERSION%/"
pk.js: "https://blocklist.addons.mozilla.org/blocklist/3/%APP_ID%/%APP_VERSION%/"
(inactive) general.useragent.override
ghacks.js: "Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0"
pk.js: "Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0"
(inactive) media.gmp-manager.url
ghacks.js: "data:text/plain,"
pk.js: ""
(inactive) network.cookie.cookieBehavior
ghacks.js: 2
pk.js: 1
(inactive) network.http.referer.spoofSource
ghacks.js: false
pk.js: true
(inactive) pdfjs.disabled
ghacks.js: false
pk.js: true
(inactive) privacy.clearOnShutdown.cookies
ghacks.js: false
pk.js: true
(inactive) privacy.cpd.cookies
ghacks.js: false
pk.js: true
(inactive) security.dialog_enable_delay
ghacks.js: 700
pk.js: 1000
(inactive) security.password_lifetime
ghacks.js: 5
pk.js: 1
(inactive) security.tls.version.min
ghacks.js: 3
pk.js: 1
(inactive) xpinstall.signatures.required
ghacks.js: false
pk.js: true
------------------------------------------------------------------------------
The following 78 prefs are not declared in ghacks.js:
browser.download.manager.retention ==> 0
browser.formfill.expire_days ==> 0
browser.newtab.url ==> "about:blank"
browser.newtabpage.activity-stream.feeds.section.topstories ==> false
browser.offline-apps.notify ==> true
browser.startup.homepage_override.buildID ==> 20100101
devtools.debugger.force-local ==> true
dom.mozTCPSocket.enabled ==> false
media.webspeech.recognition.enable ==> false
network.dns.blockDotOnion ==> true
(inactive) network.http.keep-alive.timeout ==> 15
network.negotiate-auth.allow-insecure-ntlm-v1 ==> false
(inactive) network.negotiate-auth.allow-insecure-ntlm-v1-https ==> false
network.protocol-handler.expose.about ==> true
network.protocol-handler.expose.blob ==> true
network.protocol-handler.expose.chrome ==> true
network.protocol-handler.expose.data ==> true
network.protocol-handler.expose.file ==> true
network.protocol-handler.expose.ftp ==> true
network.protocol-handler.expose.http ==> true
network.protocol-handler.expose.https ==> true
network.protocol-handler.expose.javascript ==> true
network.protocol-handler.expose.moz-extension ==> true
network.protocol-handler.expose-all ==> false
network.protocol-handler.external.about ==> false
network.protocol-handler.external.blob ==> false
network.protocol-handler.external.chrome ==> false
network.protocol-handler.external.data ==> false
network.protocol-handler.external.file ==> false
network.protocol-handler.external.ftp ==> false
network.protocol-handler.external.http ==> false
network.protocol-handler.external.https ==> false
network.protocol-handler.external.javascript ==> false
network.protocol-handler.external.moz-extension ==> false
network.protocol-handler.warn-external-default ==> true
network.stricttransportsecurity.preloadlist ==> true
plugin.state.libgnome-shell-browser-plugin ==> 0
security.fileuri.strict_origin_policy ==> true
security.sri.enable ==> true
security.ssl.enable_ocsp_must_staple ==> true
security.ssl3.dhe_dss_aes_128_sha ==> false
security.ssl3.dhe_dss_aes_256_sha ==> false
security.ssl3.dhe_dss_camellia_128_sha ==> false
security.ssl3.dhe_dss_camellia_256_sha ==> false
security.ssl3.dhe_dss_des_ede3_sha ==> false
security.ssl3.dhe_rsa_camellia_128_sha ==> false
security.ssl3.dhe_rsa_camellia_256_sha ==> false
security.ssl3.dhe_rsa_des_ede3_sha ==> false
security.ssl3.ecdh_ecdsa_aes_128_sha ==> false
security.ssl3.ecdh_ecdsa_aes_256_sha ==> false
security.ssl3.ecdh_ecdsa_des_ede3_sha ==> false
security.ssl3.ecdh_ecdsa_null_sha ==> false
security.ssl3.ecdh_ecdsa_rc4_128_sha ==> false
security.ssl3.ecdh_rsa_aes_128_sha ==> false
security.ssl3.ecdh_rsa_aes_256_sha ==> false
security.ssl3.ecdh_rsa_des_ede3_sha ==> false
security.ssl3.ecdh_rsa_null_sha ==> false
security.ssl3.ecdh_rsa_rc4_128_sha ==> false
security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256 ==> true
security.ssl3.ecdhe_ecdsa_aes_256_sha ==> true
security.ssl3.ecdhe_ecdsa_chacha20_poly1305_sha256 ==> true
security.ssl3.ecdhe_ecdsa_des_ede3_sha ==> false
security.ssl3.ecdhe_ecdsa_null_sha ==> false
security.ssl3.ecdhe_rsa_aes_128_gcm_sha256 ==> true
security.ssl3.ecdhe_rsa_aes_256_sha ==> true
security.ssl3.ecdhe_rsa_chacha20_poly1305_sha256 ==> true
security.ssl3.ecdhe_rsa_des_ede3_sha ==> false
security.ssl3.ecdhe_rsa_null_sha ==> false
security.ssl3.rsa_1024_rc4_56_sha ==> false
security.ssl3.rsa_camellia_128_sha ==> false
security.ssl3.rsa_camellia_256_sha ==> false
security.ssl3.rsa_fips_des_ede3_sha ==> false
security.ssl3.rsa_null_md5 ==> false
security.ssl3.rsa_null_sha ==> false
security.ssl3.rsa_rc2_40_md5 ==> false
security.ssl3.rsa_rc4_40_md5 ==> false
security.ssl3.rsa_seed_sha ==> false
shumway.disabled ==> true
------------------------------------------------------------------------------
The following 365 prefs are not declared in pk.js:
_user.js.parrot ==> "SUCCESS: No no he's not dead, he's, he's restin'!"
accessibility.force_disabled ==> 1
(inactive) accessibility.typeaheadfind ==> true
alerts.showFavicons ==> false
app.normandy.api_url ==> ""
app.normandy.enabled ==> false
app.update.service.enabled ==> false
app.update.silent ==> false
app.update.staging.enabled ==> false
(inactive) browser.backspace_action ==> 2
(inactive) browser.bookmarks.showRecentlyBookmarked ==> false
browser.cache.disk.capacity ==> 0
browser.cache.disk.smart_size.enabled ==> false
browser.cache.disk.smart_size.first_run ==> false
browser.cache.frecency_experiment ==> -1
(inactive) browser.cache.memory.capacity ==> 0
browser.cache.offline.insecure.enable ==> false
browser.chrome.errorReporter.enabled ==> false
browser.chrome.errorReporter.submitUrl ==> ""
(inactive) browser.chrome.favicons ==> false
(inactive) browser.chrome.site_icons ==> false
browser.crashReports.unsubmittedCheck.autoSubmit ==> false
browser.crashReports.unsubmittedCheck.autoSubmit2 ==> false
(inactive) browser.ctrlTab.previews ==> true
(inactive) browser.download.autohideButton ==> false
browser.download.forbid_open_with ==> true
browser.download.hide_plugins_without_extensions ==> false
browser.download.manager.addToRecentDocs ==> false
browser.eme.ui.enabled ==> false
(inactive) browser.formautofill.enabled ==> false
(inactive) browser.formfill.saveHttpsForms ==> false
(inactive) browser.fullscreen.animate ==> false
(inactive) browser.history.allowPopState ==> false
(inactive) browser.history.allowPushState ==> false
(inactive) browser.history.allowReplaceState ==> false
browser.library.activity-stream.enabled ==> false
browser.link.open_newwindow ==> 3
browser.link.open_newwindow.restriction ==> 0
(inactive) browser.newtabpage.introShown ==> true
browser.onboarding.enabled ==> false
browser.ping-centre.telemetry ==> false
(inactive) browser.pocket.api ==> ""
(inactive) browser.pocket.oAuthConsumerKey ==> ""
(inactive) browser.pocket.site ==> ""
(inactive) browser.polaris.enabled ==> false
(inactive) browser.safebrowsing.allowOverride ==> false
(inactive) browser.safebrowsing.appRepURL ==> ""
(inactive) browser.safebrowsing.downloads.enabled ==> false
(inactive) browser.safebrowsing.downloads.remote.block_dangerous ==> false
(inactive) browser.safebrowsing.downloads.remote.block_dangerous_host ==> false
(inactive) browser.safebrowsing.downloads.remote.block_potentially_unwanted ==> false
(inactive) browser.safebrowsing.downloads.remote.block_uncommon ==> false
browser.safebrowsing.downloads.remote.url ==> ""
(inactive) browser.safebrowsing.gethashURL ==> ""
(inactive) browser.safebrowsing.malware.reportURL ==> ""
(inactive) browser.safebrowsing.provider.google.appRepURL ==> ""
(inactive) browser.safebrowsing.provider.google.gethashURL ==> ""
browser.safebrowsing.provider.google.reportMalwareMistakeURL ==> ""
browser.safebrowsing.provider.google.reportPhishMistakeURL ==> ""
browser.safebrowsing.provider.google.reportURL ==> ""
(inactive) browser.safebrowsing.provider.google.updateURL ==> ""
browser.safebrowsing.provider.google4.dataSharing.enabled ==> false
browser.safebrowsing.provider.google4.dataSharingURL ==> ""
(inactive) browser.safebrowsing.provider.google4.gethashURL ==> ""
browser.safebrowsing.provider.google4.reportMalwareMistakeURL ==> ""
browser.safebrowsing.provider.google4.reportPhishMistakeURL ==> ""
browser.safebrowsing.provider.google4.reportURL ==> ""
(inactive) browser.safebrowsing.provider.google4.updateURL ==> ""
(inactive) browser.safebrowsing.provider.mozilla.gethashURL ==> ""
(inactive) browser.safebrowsing.provider.mozilla.updateURL ==> ""
(inactive) browser.safebrowsing.reportErrorURL ==> ""
(inactive) browser.safebrowsing.reportGenericURL ==> ""
(inactive) browser.safebrowsing.reportMalwareErrorURL ==> ""
(inactive) browser.safebrowsing.reportMalwareMistakeURL ==> ""
(inactive) browser.safebrowsing.reportMalwareURL ==> ""
(inactive) browser.safebrowsing.reportPhishMistakeURL ==> ""
browser.safebrowsing.reportPhishURL ==> ""
(inactive) browser.safebrowsing.reportURL ==> ""
(inactive) browser.safebrowsing.updateURL ==> ""
browser.search.geoSpecificDefaults.url ==> ""
(inactive) browser.search.showOneOffButtons ==> false
(inactive) browser.selfsupport.enabled ==> false
browser.sessionhistory.max_entries ==> 10
(inactive) browser.sessionhistory.max_total_viewers ==> 0
browser.sessionstore.interval ==> 30000
browser.sessionstore.max_tabs_undo ==> 0
browser.sessionstore.max_windows_undo ==> 0
(inactive) browser.sessionstore.privacy_level_deferred ==> 2
browser.sessionstore.resume_from_crash ==> false
(inactive) browser.startup.homepage ==> "https://www.example.com/"
(inactive) browser.startup.homepage_override.mstone ==> "ignore"
(inactive) browser.startup.page ==> 0
(inactive) browser.tabs.animate ==> false
(inactive) browser.tabs.closeWindowWithLastTab ==> false
(inactive) browser.tabs.loadBookmarksInTabs ==> true
browser.tabs.remote.allowLinkedWebInFileUriProcess ==> false
(inactive) browser.tabs.warnOnClose ==> false
(inactive) browser.tabs.warnOnCloseOtherTabs ==> false
(inactive) browser.tabs.warnOnOpen ==> false
browser.taskbar.lists.enabled ==> false
browser.taskbar.lists.frequent.enabled ==> false
browser.taskbar.lists.recent.enabled ==> false
browser.taskbar.lists.tasks.enabled ==> false
browser.taskbar.previews.enable ==> false
(inactive) browser.trackingprotection.gethashURL ==> ""
(inactive) browser.trackingprotection.updateURL ==> ""
browser.uitour.url ==> ""
(inactive) browser.urlbar.decodeURLsOnCopy ==> true
browser.urlbar.maxHistoricalSearchSuggestions ==> 0
(inactive) browser.urlbar.maxRichResults ==> 0
browser.urlbar.oneOffSearches ==> false
browser.urlbar.speculativeConnect.enabled ==> false
browser.urlbar.suggest.bookmark ==> false
browser.urlbar.suggest.openpage ==> false
(inactive) browser.urlbar.unifiedcomplete ==> false
browser.urlbar.usepreloadedtopurls.enabled ==> false
browser.urlbar.userMadeSearchSuggestionsChoice ==> true
(inactive) browser.usedOnWindows10.introURL ==> ""
browser.xul.error_pages.expert_bad_cert ==> true
(inactive) browser.zoom.siteSpecific ==> false
(inactive) camera.control.autofocus_moving_callback.enabled ==> false
canvas.capturestream.enabled ==> false
captivedetect.canonicalURL ==> ""
(inactive) datareporting.healthreport.about.reportUrl ==> "data:text/plain,"
(inactive) datareporting.healthreport.about.reportUrlUnified ==> "data:text/plain,"
(inactive) datareporting.healthreport.documentServerURI ==> ""
(inactive) datareporting.policy.dataSubmissionEnabled.v2 ==> false
(inactive) dom.beforeAfterKeyboardEvent.enabled ==> false
dom.caches.enabled ==> false
(inactive) dom.disable_image_src_set ==> true
dom.disable_open_during_load ==> true
dom.disable_window_move_resize ==> true
dom.disable_window_open_feature.close ==> true
dom.disable_window_open_feature.location ==> true
dom.disable_window_open_feature.menubar ==> true
dom.disable_window_open_feature.minimizable ==> true
dom.disable_window_open_feature.personalbar ==> true
dom.disable_window_open_feature.resizable ==> true
(inactive) dom.disable_window_open_feature.scrollbars ==> true
dom.disable_window_open_feature.status ==> true
dom.disable_window_open_feature.titlebar ==> true
dom.disable_window_open_feature.toolbar ==> true
(inactive) dom.disable_window_status_change ==> true
(inactive) dom.idle-observers-api.enabled ==> false
dom.imagecapture.enabled ==> false
dom.IntersectionObserver.enabled ==> false
(inactive) dom.keyboardevent.code.enabled ==> false
dom.popup_allowed_events ==> "click dblclick"
dom.popup_maximum ==> 3
dom.push.connection.enabled ==> false
dom.push.enabled ==> false
dom.push.serverURL ==> ""
(inactive) dom.push.udp.wakeupEnabled ==> false
dom.push.userAgentID ==> ""
(inactive) dom.storageManager.enabled ==> false
(inactive) dom.vr.oculus050.enabled ==> false
dom.w3c_pointer_events.enabled ==> false
(inactive) dom.w3c_touch_events.enabled ==> 0
dom.webnotifications.serviceworker.enabled ==> false
(inactive) dom.workers.sharedWorkers.enabled ==> false
(inactive) experiments.activeExperiment ==> false
extensions.autoDisableScopes ==> 15
extensions.enabledScopes ==> 1
extensions.formautofill.addresses.enabled ==> false
extensions.formautofill.available ==> "off"
extensions.formautofill.creditCards.enabled ==> false
(inactive) extensions.formautofill.experimental ==> false
extensions.formautofill.heuristics.enabled ==> false
extensions.getAddons.showPane ==> false
(inactive) extensions.screenshots.disabled ==> true
(inactive) extensions.screenshots.system-disabled ==> true
(inactive) extensions.screenshots.upload-disabled ==> true
(inactive) extensions.shield-recipe-client.api_url ==> ""
(inactive) extensions.systemAddon.update.enabled ==> false
(inactive) extensions.systemAddon.update.url ==> ""
extensions.update.autoUpdateDefault ==> false
extensions.webcompat-reporter.enabled ==> false
extensions.webextensions.keepStorageOnUninstall ==> false
extensions.webextensions.keepUuidOnUninstall ==> false
(inactive) extensions.webextensions.restrictedDomains ==> ""
extensions.webservice.discoverURL ==> ""
font.blacklist.underline_offset ==> ""
(inactive) font.name.monospace.x-unicode ==> "Lucida Console"
(inactive) font.name.monospace.x-western ==> "Lucida Console"
(inactive) font.name.sans-serif.x-unicode ==> "Arial"
(inactive) font.name.sans-serif.x-western ==> "Arial"
(inactive) font.name.serif.x-unicode ==> "Georgia"
(inactive) font.name.serif.x-western ==> "Georgia"
(inactive) font.system.whitelist ==> ""
(inactive) full-screen-api.approval-required ==> false
full-screen-api.enabled ==> false
(inactive) full-screen-api.warning.delay ==> 0
(inactive) full-screen-api.warning.timeout ==> 0
(inactive) general.autoScroll ==> false
(inactive) general.useragent.locale ==> "en-US"
general.warnOnAboutConfig ==> false
(inactive) geo.security.allowinsecure ==> false
(inactive) gfx.direct2d.disabled ==> true
gfx.downloadable_fonts.enabled ==> true
gfx.downloadable_fonts.woff2.enabled ==> false
gfx.font_rendering.graphite.enabled ==> false
gfx.offscreencanvas.enabled ==> false
(inactive) identity.fxaccounts.enabled ==> false
intl.locale.requested ==> "en-US"
intl.regional_prefs.use_os_locales ==> false
(inactive) javascript.options.baselinejit ==> false
(inactive) javascript.options.ion ==> false
javascript.options.shared_memory ==> false
javascript.options.wasm ==> false
layers.acceleration.disabled ==> true
layout.css.font-loading-api.enabled ==> false
(inactive) layout.spellcheckDefault ==> 2
(inactive) loop.facebook.appId ==> ""
(inactive) loop.facebook.enabled ==> false
(inactive) loop.facebook.fallbackUrl ==> ""
(inactive) loop.facebook.shareUrl ==> ""
(inactive) loop.feedback.formURL ==> ""
(inactive) loop.feedback.manualFormURL ==> ""
(inactive) loop.server ==> ""
mathml.disabled ==> true
media.autoplay.enabled ==> false
media.block-autoplay-until-in-foreground ==> true
(inactive) media.block-play-until-visible ==> true
(inactive) media.eme.apiVisible ==> false
(inactive) media.eme.chromium-api.enabled ==> false
media.eme.enabled ==> false
media.getusermedia.browser.enabled ==> false
(inactive) media.getusermedia.screensharing.allow_on_old_platforms ==> false
(inactive) media.getusermedia.screensharing.allowed_domains ==> ""
media.gmp.trial-create.enabled ==> false
(inactive) media.gmp-eme-adobe.autoupdate ==> false
(inactive) media.gmp-eme-adobe.enabled ==> false
(inactive) media.gmp-eme-adobe.visible ==> false
media.gmp-gmpopenh264.autoupdate ==> false
media.gmp-manager.updateEnabled ==> false
media.gmp-manager.url.override ==> "data:text/plain,"
media.gmp-widevinecdm.autoupdate ==> false
media.gmp-widevinecdm.enabled ==> false
media.gmp-widevinecdm.visible ==> false
(inactive) media.ondevicechange.enabled ==> false
media.peerconnection.ice.tcp ==> false
media.peerconnection.identity.enabled ==> false
media.peerconnection.identity.timeout ==> 1
media.peerconnection.turn.disable ==> true
media.peerconnection.use_document_iceservers ==> false
media.peerconnection.video.enabled ==> false
middlemouse.contentLoadURL ==> false
network.auth.subresource-img-cross-origin-http-auth-allow ==> false
network.cookie.leave-secure-alone ==> true
(inactive) network.cookie.lifetime.days ==> 90
(inactive) network.cookie.same-site.enabled ==> true
network.cookie.thirdparty.nonsecureSessionOnly ==> true
(inactive) network.dns.disableIPv6 ==> true
(inactive) network.dnsCacheEntries ==> 400
(inactive) network.dnsCacheExpiration ==> 60
network.file.disable_unc_paths ==> true
(inactive) network.ftp.enabled ==> false
network.http.altsvc.enabled ==> false
network.http.altsvc.oe ==> false
network.http.redirection-limit ==> 10
network.http.referer.defaultPolicy ==> 3
network.http.referer.defaultPolicy.pbmode ==> 2
network.http.referer.hideOnionSource ==> true
network.http.referer.trimmingPolicy ==> 0
(inactive) network.http.referer.userControlPolicy ==> 3
network.http.referer.XOriginTrimmingPolicy ==> 0
network.http.sendRefererHeader ==> 2
(inactive) network.http.sendSecureXSiteReferrer ==> false
network.http.spdy.enabled ==> false
network.http.spdy.enabled.deps ==> false
network.http.spdy.enabled.http2 ==> false
(inactive) network.http.spdy.enabled.http2draft ==> false
(inactive) network.http.spdy.enabled.v3-1 ==> false
(inactive) network.jar.block-remote-files ==> true
network.predictor.enable-prefetch ==> false
network.protocol-handler.external.ms-windows-store ==> false
network.proxy.autoconfig_url.include_path ==> false
(inactive) network.trr.bootstrapAddress ==> ""
(inactive) network.trr.mode ==> 0
(inactive) network.trr.uri ==> ""
(inactive) network.websocket.enabled ==> false
offline-apps.allow_by_default ==> false
(inactive) pageThumbs.enabled ==> false
(inactive) permissions.default.camera ==> 2
(inactive) permissions.default.desktop-notification ==> 2
permissions.default.geo ==> 2
(inactive) permissions.default.microphone ==> 2
(inactive) permissions.default.shortcuts ==> 2
permissions.manager.defaultsUrl ==> ""
(inactive) permissions.memory_only ==> true
(inactive) pfs.datasource.url ==> ""
plugin.default.state ==> 0
plugin.defaultXpi.state ==> 0
(inactive) plugin.scan.Acrobat ==> 99999
plugin.scan.plid.all ==> false
(inactive) plugin.scan.Quicktime ==> 99999
(inactive) plugin.scan.WindowsMediaPlayer ==> 99999
plugin.sessionPermissionNow.intervalInMinutes ==> 0
(inactive) plugins.enumerable_names ==> ""
(inactive) plugins.update.url ==> ""
(inactive) privacy.clearOnShutdown.passwords ==> false
privacy.clearOnShutdown.siteSettings ==> false
(inactive) privacy.cpd.openWindows ==> true
privacy.cpd.passwords ==> false
privacy.cpd.siteSettings ==> false
(inactive) privacy.donottrackheader.value ==> 1
privacy.firstparty.isolate.restrict_opener_access ==> true
privacy.resistFingerprinting.block_mozAddonManager ==> true
(inactive) privacy.trackingprotection.annotate_channels ==> false
(inactive) privacy.trackingprotection.lower_network_priority ==> false
privacy.trackingprotection.ui.enabled ==> true
(inactive) privacy.usercontext.about_newtab_segregation.enabled ==> true
(inactive) privacy.userContext.longPressBehavior ==> 2
(inactive) privacy.userContext.ui.enabled ==> true
(inactive) privacy.window.maxInnerHeight ==> 900
(inactive) privacy.window.maxInnerWidth ==> 1600
(inactive) reader.parse-on-load.enabled ==> false
security.csp.enable_violation_events ==> false
security.data_uri.block_toplevel_data_uri_navigations ==> true
security.family_safety.mode ==> 0
security.insecure_connection_icon.enabled ==> true
(inactive) security.insecure_connection_icon.pbmode.enabled ==> true
security.insecure_connection_text.enabled ==> true
(inactive) security.insecure_connection_text.pbmode.enabled ==> true
(inactive) security.mixed_content.send_hsts_priming ==> false
(inactive) security.mixed_content.use_hsts ==> true
(inactive) security.nocertdb ==> true
security.ssl.errorReporting.enabled ==> false
security.ssl.errorReporting.url ==> ""
security.tls.enable_0rtt_data ==> false
(inactive) security.tls.insecure_fallback_hosts.use_static_list ==> false
(inactive) services.blocklist.addons.collection ==> ""
(inactive) services.blocklist.gfx.collection ==> ""
(inactive) services.blocklist.onecrl.collection ==> ""
(inactive) services.blocklist.plugins.collection ==> ""
shield.savant.enabled ==> false
(inactive) social.directories ==> ""
(inactive) social.enabled ==> false
(inactive) social.remote-install.enabled ==> false
(inactive) social.share.activationPanelEnabled ==> false
(inactive) social.shareDirectory ==> ""
(inactive) social.toast-notifications.enabled ==> false
(inactive) social.whitelist ==> ""
(inactive) startup.homepage_override_url ==> ""
(inactive) startup.homepage_welcome_url ==> ""
(inactive) startup.homepage_welcome_url.additional ==> ""
(inactive) toolkit.cosmeticAnimations.enabled ==> false
toolkit.telemetry.archive.enabled ==> false
toolkit.telemetry.bhrPing.enabled ==> false
toolkit.telemetry.cachedClientID ==> ""
toolkit.telemetry.firstShutdownPing.enabled ==> false
toolkit.telemetry.hybridContent.enabled ==> false
toolkit.telemetry.newProfilePing.enabled ==> false
toolkit.telemetry.server ==> "data:,"
toolkit.telemetry.shutdownPingSender.enabled ==> false
(inactive) toolkit.telemetry.unifiedIsOptIn ==> true
toolkit.telemetry.updatePing.enabled ==> false
(inactive) ui.key.menuAccessKey ==> 0
ui.use_standins_for_native_colors ==> true
(inactive) urlclassifier.trackingTable ==> "test-track-simple,base-track-digest256"
(inactive) view_source.tab ==> false
webchannel.allowObject.urlWhitelist ==> ""
webgl.dxgl.enabled ==> false
webgl.enable-webgl2 ==> false
xpinstall.whitelist.required ==> true
------------------------------------------------------------------------------
The following 71 prefs exist in both files but are inactive (commented out) in ghacks.js:
app.update.enabled
browser.bookmarks.max_backups
browser.cache.offline.enable
browser.casting.enabled
browser.newtabpage.activity-stream.enabled
browser.newtabpage.directory.ping
browser.newtabpage.directory.source
browser.newtabpage.enhanced
browser.pocket.enabled
browser.privatebrowsing.autostart
browser.safebrowsing.blockedURIs.enabled
browser.safebrowsing.enabled
browser.safebrowsing.malware.enabled
browser.safebrowsing.phishing.enabled
browser.selfsupport.url
camera.control.face_detection.enabled
clipboard.autocopy
datareporting.healthreport.service.enabled
device.sensors.enabled
devtools.webide.autoinstallFxdtAdapters
dom.archivereader.enabled
dom.battery.enabled
dom.enable_performance
dom.enable_resource_timing
dom.enable_user_timing
dom.flyweb.enabled
dom.gamepad.enabled
dom.maxHardwareConcurrency
dom.netinfo.enabled
dom.network.enabled
dom.telephony.enabled
dom.vr.enabled
dom.workers.enabled
experiments.enabled
experiments.manifest.uri
experiments.supported
extensions.shield-recipe-client.enabled
extensions.update.enabled
general.buildID.override
geo.enabled
geo.wifi.logging.enabled
intl.locale.matchOS
loop.logDomains
media.video_stats.enabled
media.webspeech.synth.enabled
network.cookie.lifetimePolicy
network.jar.open-unsafe-types
network.manage-offline-status
places.history.enabled
plugins.update.notifyUser
privacy.clearOnShutdown.openWindows
privacy.cpd.downloads
privacy.trackingprotection.enabled
privacy.trackingprotection.pbmode.enabled
privacy.userContext.enabled
security.ssl3.dhe_rsa_aes_128_sha
security.ssl3.dhe_rsa_aes_256_sha
security.ssl3.ecdhe_ecdsa_aes_128_sha
security.ssl3.ecdhe_ecdsa_rc4_128_sha
security.ssl3.ecdhe_rsa_aes_128_sha
security.ssl3.ecdhe_rsa_rc4_128_sha
security.ssl3.rsa_aes_128_sha
security.ssl3.rsa_aes_256_sha
security.ssl3.rsa_des_ede3_sha
security.ssl3.rsa_rc4_128_md5
security.ssl3.rsa_rc4_128_sha
security.tls.unrestricted_rc4_fallback
security.xpconnect.plugin.unrestricted
signon.rememberSignons
svg.disabled
webgl.enable-debug-renderer-info
------------------------------------------------------------------------------
The following 7 prefs exist in both files but are inactive (commented out) in pk.js:
app.update.auto
dom.disable_beforeunload
media.gmp-provider.enabled
network.http.referer.XOriginPolicy
pdfjs.enableWebGL
privacy.donottrackheader.enabled
signon.storeWhenAutocompleteOff
prefs with matching values but inactive in ghacks.js
I noticed I should remove that part. I got lazy and copy-pasted what earthlng suggested above, forgetting that I don't check for equality when only one of them is inactive (to avoid unnecessary overhead).
When the report says a pref is inactive in one file, the value doesn't necessarily match the value of the same pref in the other file. I'll remove that misleading bit.
nit
app.update.silent ==> false
app.update.staging.enabled ==> false
(inactive) browser.backspace_action ==> 2
(inactive) browser.bookmarks.showRecentlyBookmarked ==> false
browser.cache.disk.capacity ==> 0
browser.cache.disk.smart_size.enabled ==> false
browser.cache.disk.smart_size.first_run ==> false
browser.cache.frecency_experiment ==> -1
(inactive) browser.cache.memory.capacity ==> 0
browser.cache.offline.insecure.enable ==> false
browser.chrome.errorReporter.enabled ==> false
browser.chrome.errorReporter.submitUrl ==> ""
(inactive) browser.chrome.favicons ==> false
(inactive) browser.chrome.site_icons ==> false
Are those tabs? Anyway, I find this incredible hard to visually parse and would prefer spaces, not tabs, and something like this
app.update.silent ==> false
app.update.staging.enabled ==> false
[i] browser.backspace_action ==> 2
[i] browser.bookmarks.showRecentlyBookmarked ==> false
browser.cache.disk.capacity ==> 0
browser.cache.disk.smart_size.enabled ==> false
browser.cache.disk.smart_size.first_run ==> false
browser.cache.frecency_experiment ==> -1
[i] browser.cache.memory.capacity ==> 0
browser.cache.offline.insecure.enable ==> false
browser.chrome.errorReporter.enabled ==> false
browser.chrome.errorReporter.submitUrl ==> ""
[i] browser.chrome.favicons ==> false
[i] browser.chrome.site_icons ==> false
71 prefs with matching values but inactive in ghacks.js
7 prefs with matching values but inactive in pk.js
for both these sections you don't output the value, which would be helpful
Yeah, I'm not fully convinced about the format either.
BTW I just noticed another weird thing going on. The list of differences seems to always mark prefs as inactive, even when they're not. I'll have to test a few things. EDIT: It was a ninja underscore that sneaked into a var name.
for both these sections you don't output the value, which would be helpful
Look well. Those are by the bottom of the report.
and just because I know you can pad ...
670 combined unique prefs
136 matching prefs, both value and state (active/inactive)
13 prefs with different values but same matching state
78 prefs not declared in ghacks.js
365 prefs not declared in pk.js
71 prefs with matching values but inactive in ghacks.js
7 prefs with matching values but inactive in pk.js
136 matching prefs, both value and state (active/inactive)
13 prefs with different values but same matching state
78 prefs not declared in ghacks.js
365 prefs not declared in pk.js
71 prefs with matching values but inactive in ghacks.js
7 prefs with matching values but inactive in pk.js
---
670 combined unique prefs
:jeans: likes numbers ~~left~ right aligned, and totals at the bottom with a line separator (edit, I meant right aligned, I need a break)
Look well. Those are by the bottom of the report.
I don't follow?
Oh, before I forget - these are just nits (but fucking good nits, mind you) - but first and foremost, fukkin good job :cat2:
I don't follow?
Have a second look at the report, starting from the bottom. The prefs you mentioned _are_ in there.
^^ have a second read of my comment
for both these sections you don't output the value, which would be helpful
the sections are there, the pref names are there - the pref values are not, unless I'm going mad
edit: the two sections are "matching values" so you only need list it once
Sorry. That's what happens when I attempt to do more than one thing at a time.
^^ Ahhh, so not a female cat then j/k
You'll never know for sure :stuck_out_tongue_winking_eye:
I'm calling it quits for the day, need a :hankey: anyway .. take a break dude, catch you tomorrow when I expect all my nits fixed :grin:
does it ignore the parrots :bird:
I don't see why that would be necessary. The output wouldn't be completely honest if it ignored arbitrary prefs, either.
I agree
When the report says a pref is inactive in one file, the value doesn't necessarily match the value of the same pref in the other file.
sorry my bad. Well, nice effort mate but I guess I'll keep using my script then :trollface:
ps: 1 of the examples is wrong now due to the removal of the aliases
Click to see what the output looks like now. :point_left:
:::::::::::: { Compare-UserJS Report } ::::::::::::
(date removed)
Compared files: ghacks.js, pk.js
592 unique prefs in ghacks.js
305 unique prefs in pk.js
670 combined unique prefs
136 matching prefs, both value and state (active/inactive)
13 prefs with different values but matching state
78 prefs not declared in ghacks.js
365 prefs not declared in pk.js
57 prefs with matching values but inactive in ghacks.js
4 prefs with matching values but inactive in pk.js
Reference: [i] = Inactive pref
------------------------------------------------------------------------------
The following 136 prefs match:
app.shield.optoutstudies.enabled false
beacon.enabled false
breakpad.reportURL ""
browser.cache.disk.enable false
browser.cache.disk_cache_ssl false
[i] browser.cache.memory.enable false
browser.crashReports.unsubmittedCheck.enabled false
browser.display.use_document_fonts 0
browser.download.folderList 2
browser.download.useDownloadDir false
browser.fixup.alternate.enabled false
browser.fixup.hide_user_pass true
browser.formfill.enable false
browser.helperApps.deleteTempFileOnExit true
browser.newtab.preload false
browser.newtabpage.enabled false
browser.pagethumbnails.capturing_disabled true
browser.safebrowsing.downloads.remote.enabled false
browser.search.countryCode "US"
browser.search.geoip.url ""
browser.search.geoSpecificDefaults false
browser.search.region "US"
browser.search.suggest.enabled false
browser.search.update false
browser.send_pings false
browser.send_pings.require_same_host true
browser.sessionstore.privacy_level 2
browser.shell.checkDefaultBrowser false
browser.shell.shortcutFavicons false
browser.ssl_override_behavior 1
browser.tabs.crashReporting.sendReport false
browser.uitour.enabled false
browser.urlbar.autocomplete.enabled false
browser.urlbar.autoFill false
browser.urlbar.autoFill.typed false
browser.urlbar.filter.javascript true
browser.urlbar.suggest.history false
browser.urlbar.suggest.searches false
browser.urlbar.trimURLs false
datareporting.healthreport.uploadEnabled false
datareporting.policy.dataSubmissionEnabled false
devtools.chrome.enabled false
devtools.debugger.remote-enabled false
devtools.webide.autoinstallADBHelper false
devtools.webide.enabled false
dom.allow_cut_copy false
dom.event.clipboardevents.enabled false
[i] dom.event.contextmenu.enabled false
[i] dom.indexedDB.enabled false
dom.ipc.plugins.flash.subprocess.crashreporter.enabled false
dom.ipc.plugins.reportCrashURL false
dom.serviceWorkers.enabled false
[i] dom.storage.enabled false
dom.vibrator.enabled false
dom.webaudio.enabled false
dom.webnotifications.enabled false
extensions.blocklist.enabled true
extensions.getAddons.cache.enabled false
extensions.pocket.enabled false
[i] general.appname.override "Netscape"
[i] general.appversion.override "5.0 (Windows)"
[i] general.oscpu.override "Windows NT 6.1"
[i] general.platform.override "Win32"
geo.wifi.uri "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"
gfx.font_rendering.opentype_svg.enabled false
intl.accept_languages "en-US, en"
javascript.options.asmjs false
javascript.use_us_english_locale true
keyword.enabled false
layout.css.visited_links_enabled false
lightweightThemes.update.enabled false
[i] loop.enabled false
media.getusermedia.audiocapture.enabled false
media.getusermedia.screensharing.enabled false
media.gmp-gmpopenh264.enabled false
media.navigator.enabled false
media.navigator.video.enabled false
media.peerconnection.enabled false
media.peerconnection.ice.default_address_only true
media.peerconnection.ice.no_host true
network.allow-experiments false
network.captive-portal-service.enabled false
network.cookie.thirdparty.sessionOnly true
network.dns.disablePrefetch true
network.dns.disablePrefetchFromHTTPS true
network.http.speculative-parallel-limit 0
network.IDN_show_punycode true
network.predictor.enabled false
network.prefetch-next false
network.proxy.socks_remote_dns true
plugin.state.flash 0
plugin.state.java 0
plugins.click_to_play true
privacy.clearOnShutdown.cache true
privacy.clearOnShutdown.downloads true
privacy.clearOnShutdown.formdata true
privacy.clearOnShutdown.history true
privacy.clearOnShutdown.offlineApps true
privacy.clearOnShutdown.sessions true
privacy.cpd.cache true
privacy.cpd.formdata true
privacy.cpd.history true
privacy.cpd.offlineApps true
privacy.cpd.sessions true
privacy.firstparty.isolate true
privacy.resistFingerprinting true
privacy.sanitize.sanitizeOnShutdown true
privacy.sanitize.timeSpan 0
security.ask_for_password 2
security.cert_pinning.enforcement_level 2
security.csp.enable true
security.csp.experimentalEnabled true
security.insecure_field_warning.contextual.enabled true
security.insecure_password.ui.enabled true
security.mixed_content.block_active_content true
security.mixed_content.block_display_content true
security.OCSP.enabled 1
security.OCSP.require true
security.pki.sha1_enforcement_level 1
security.ssl.disable_session_identifiers true
security.ssl.enable_ocsp_stapling true
security.ssl.errorReporting.automatic false
[i] security.ssl.require_safe_negotiation true
security.ssl.treat_unsafe_negotiation_as_broken true
security.tls.version.fallback-limit 3
security.tls.version.max 4
services.blocklist.update_enabled true
signon.autofillForms false
signon.autofillForms.http false
signon.formlessCapture.enabled false
toolkit.telemetry.enabled false
toolkit.telemetry.unified false
webgl.disabled true
webgl.disable-extensions true
webgl.disable-fail-if-major-performance-caveat true
webgl.min_capability_mode true
------------------------------------------------------------------------------
The following 13 prefs have different values:
browser.aboutHomeSnippets.updateUrl
ghacks.js "data:,"
pk.js ""
extensions.blocklist.url
ghacks.js "https://blocklists.settings.services.mozilla.com/v1/blocklist/3/%APP_ID%/%APP_VERSION%/"
pk.js "https://blocklist.addons.mozilla.org/blocklist/3/%APP_ID%/%APP_VERSION%/"
[i] general.useragent.override
ghacks.js "Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0"
pk.js "Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0"
media.gmp-manager.url
ghacks.js "data:text/plain,"
pk.js ""
network.cookie.cookieBehavior
ghacks.js 2
pk.js 1
network.http.referer.spoofSource
ghacks.js false
pk.js true
pdfjs.disabled
ghacks.js false
pk.js true
privacy.clearOnShutdown.cookies
ghacks.js false
pk.js true
privacy.cpd.cookies
ghacks.js false
pk.js true
security.dialog_enable_delay
ghacks.js 700
pk.js 1000
security.password_lifetime
ghacks.js 5
pk.js 1
security.tls.version.min
ghacks.js 3
pk.js 1
[i] xpinstall.signatures.required
ghacks.js false
pk.js true
------------------------------------------------------------------------------
The following 78 prefs are not declared in ghacks.js:
browser.download.manager.retention 0
browser.formfill.expire_days 0
browser.newtab.url "about:blank"
browser.newtabpage.activity-stream.feeds.section.topstories false
browser.offline-apps.notify true
browser.startup.homepage_override.buildID 20100101
devtools.debugger.force-local true
dom.mozTCPSocket.enabled false
media.webspeech.recognition.enable false
network.dns.blockDotOnion true
[i] network.http.keep-alive.timeout 15
network.negotiate-auth.allow-insecure-ntlm-v1 false
[i] network.negotiate-auth.allow-insecure-ntlm-v1-https false
network.protocol-handler.expose.about true
network.protocol-handler.expose.blob true
network.protocol-handler.expose.chrome true
network.protocol-handler.expose.data true
network.protocol-handler.expose.file true
network.protocol-handler.expose.ftp true
network.protocol-handler.expose.http true
network.protocol-handler.expose.https true
network.protocol-handler.expose.javascript true
network.protocol-handler.expose.moz-extension true
network.protocol-handler.expose-all false
network.protocol-handler.external.about false
network.protocol-handler.external.blob false
network.protocol-handler.external.chrome false
network.protocol-handler.external.data false
network.protocol-handler.external.file false
network.protocol-handler.external.ftp false
network.protocol-handler.external.http false
network.protocol-handler.external.https false
network.protocol-handler.external.javascript false
network.protocol-handler.external.moz-extension false
network.protocol-handler.warn-external-default true
network.stricttransportsecurity.preloadlist true
plugin.state.libgnome-shell-browser-plugin 0
security.fileuri.strict_origin_policy true
security.sri.enable true
security.ssl.enable_ocsp_must_staple true
security.ssl3.dhe_dss_aes_128_sha false
security.ssl3.dhe_dss_aes_256_sha false
security.ssl3.dhe_dss_camellia_128_sha false
security.ssl3.dhe_dss_camellia_256_sha false
security.ssl3.dhe_dss_des_ede3_sha false
security.ssl3.dhe_rsa_camellia_128_sha false
security.ssl3.dhe_rsa_camellia_256_sha false
security.ssl3.dhe_rsa_des_ede3_sha false
security.ssl3.ecdh_ecdsa_aes_128_sha false
security.ssl3.ecdh_ecdsa_aes_256_sha false
security.ssl3.ecdh_ecdsa_des_ede3_sha false
security.ssl3.ecdh_ecdsa_null_sha false
security.ssl3.ecdh_ecdsa_rc4_128_sha false
security.ssl3.ecdh_rsa_aes_128_sha false
security.ssl3.ecdh_rsa_aes_256_sha false
security.ssl3.ecdh_rsa_des_ede3_sha false
security.ssl3.ecdh_rsa_null_sha false
security.ssl3.ecdh_rsa_rc4_128_sha false
security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256 true
security.ssl3.ecdhe_ecdsa_aes_256_sha true
security.ssl3.ecdhe_ecdsa_chacha20_poly1305_sha256 true
security.ssl3.ecdhe_ecdsa_des_ede3_sha false
security.ssl3.ecdhe_ecdsa_null_sha false
security.ssl3.ecdhe_rsa_aes_128_gcm_sha256 true
security.ssl3.ecdhe_rsa_aes_256_sha true
security.ssl3.ecdhe_rsa_chacha20_poly1305_sha256 true
security.ssl3.ecdhe_rsa_des_ede3_sha false
security.ssl3.ecdhe_rsa_null_sha false
security.ssl3.rsa_1024_rc4_56_sha false
security.ssl3.rsa_camellia_128_sha false
security.ssl3.rsa_camellia_256_sha false
security.ssl3.rsa_fips_des_ede3_sha false
security.ssl3.rsa_null_md5 false
security.ssl3.rsa_null_sha false
security.ssl3.rsa_rc2_40_md5 false
security.ssl3.rsa_rc4_40_md5 false
security.ssl3.rsa_seed_sha false
shumway.disabled true
------------------------------------------------------------------------------
The following 365 prefs are not declared in pk.js:
_user.js.parrot "SUCCESS: No no he's not dead, he's, he's restin'!"
accessibility.force_disabled 1
[i] accessibility.typeaheadfind true
alerts.showFavicons false
app.normandy.api_url ""
app.normandy.enabled false
app.update.service.enabled false
app.update.silent false
app.update.staging.enabled false
[i] browser.backspace_action 2
[i] browser.bookmarks.showRecentlyBookmarked false
browser.cache.disk.capacity 0
browser.cache.disk.smart_size.enabled false
browser.cache.disk.smart_size.first_run false
browser.cache.frecency_experiment -1
[i] browser.cache.memory.capacity 0
browser.cache.offline.insecure.enable false
browser.chrome.errorReporter.enabled false
browser.chrome.errorReporter.submitUrl ""
[i] browser.chrome.favicons false
[i] browser.chrome.site_icons false
browser.crashReports.unsubmittedCheck.autoSubmit false
browser.crashReports.unsubmittedCheck.autoSubmit2 false
[i] browser.ctrlTab.previews true
[i] browser.download.autohideButton false
browser.download.forbid_open_with true
browser.download.hide_plugins_without_extensions false
browser.download.manager.addToRecentDocs false
browser.eme.ui.enabled false
[i] browser.formautofill.enabled false
[i] browser.formfill.saveHttpsForms false
[i] browser.fullscreen.animate false
[i] browser.history.allowPopState false
[i] browser.history.allowPushState false
[i] browser.history.allowReplaceState false
browser.library.activity-stream.enabled false
browser.link.open_newwindow 3
browser.link.open_newwindow.restriction 0
[i] browser.newtabpage.introShown true
browser.onboarding.enabled false
browser.ping-centre.telemetry false
[i] browser.pocket.api ""
[i] browser.pocket.oAuthConsumerKey ""
[i] browser.pocket.site ""
[i] browser.polaris.enabled false
[i] browser.safebrowsing.allowOverride false
[i] browser.safebrowsing.appRepURL ""
[i] browser.safebrowsing.downloads.enabled false
[i] browser.safebrowsing.downloads.remote.block_dangerous false
[i] browser.safebrowsing.downloads.remote.block_dangerous_host false
[i] browser.safebrowsing.downloads.remote.block_potentially_unwanted false
[i] browser.safebrowsing.downloads.remote.block_uncommon false
browser.safebrowsing.downloads.remote.url ""
[i] browser.safebrowsing.gethashURL ""
[i] browser.safebrowsing.malware.reportURL ""
[i] browser.safebrowsing.provider.google.appRepURL ""
[i] browser.safebrowsing.provider.google.gethashURL ""
browser.safebrowsing.provider.google.reportMalwareMistakeURL ""
browser.safebrowsing.provider.google.reportPhishMistakeURL ""
browser.safebrowsing.provider.google.reportURL ""
[i] browser.safebrowsing.provider.google.updateURL ""
browser.safebrowsing.provider.google4.dataSharing.enabled false
browser.safebrowsing.provider.google4.dataSharingURL ""
[i] browser.safebrowsing.provider.google4.gethashURL ""
browser.safebrowsing.provider.google4.reportMalwareMistakeURL ""
browser.safebrowsing.provider.google4.reportPhishMistakeURL ""
browser.safebrowsing.provider.google4.reportURL ""
[i] browser.safebrowsing.provider.google4.updateURL ""
[i] browser.safebrowsing.provider.mozilla.gethashURL ""
[i] browser.safebrowsing.provider.mozilla.updateURL ""
[i] browser.safebrowsing.reportErrorURL ""
[i] browser.safebrowsing.reportGenericURL ""
[i] browser.safebrowsing.reportMalwareErrorURL ""
[i] browser.safebrowsing.reportMalwareMistakeURL ""
[i] browser.safebrowsing.reportMalwareURL ""
[i] browser.safebrowsing.reportPhishMistakeURL ""
browser.safebrowsing.reportPhishURL ""
[i] browser.safebrowsing.reportURL ""
[i] browser.safebrowsing.updateURL ""
browser.search.geoSpecificDefaults.url ""
[i] browser.search.showOneOffButtons false
[i] browser.selfsupport.enabled false
browser.sessionhistory.max_entries 10
[i] browser.sessionhistory.max_total_viewers 0
browser.sessionstore.interval 30000
browser.sessionstore.max_tabs_undo 0
browser.sessionstore.max_windows_undo 0
[i] browser.sessionstore.privacy_level_deferred 2
browser.sessionstore.resume_from_crash false
[i] browser.startup.homepage "https://www.example.com/"
[i] browser.startup.homepage_override.mstone "ignore"
[i] browser.startup.page 0
[i] browser.tabs.animate false
[i] browser.tabs.closeWindowWithLastTab false
[i] browser.tabs.loadBookmarksInTabs true
browser.tabs.remote.allowLinkedWebInFileUriProcess false
[i] browser.tabs.warnOnClose false
[i] browser.tabs.warnOnCloseOtherTabs false
[i] browser.tabs.warnOnOpen false
browser.taskbar.lists.enabled false
browser.taskbar.lists.frequent.enabled false
browser.taskbar.lists.recent.enabled false
browser.taskbar.lists.tasks.enabled false
browser.taskbar.previews.enable false
[i] browser.trackingprotection.gethashURL ""
[i] browser.trackingprotection.updateURL ""
browser.uitour.url ""
[i] browser.urlbar.decodeURLsOnCopy true
browser.urlbar.maxHistoricalSearchSuggestions 0
[i] browser.urlbar.maxRichResults 0
browser.urlbar.oneOffSearches false
browser.urlbar.speculativeConnect.enabled false
browser.urlbar.suggest.bookmark false
browser.urlbar.suggest.openpage false
[i] browser.urlbar.unifiedcomplete false
browser.urlbar.usepreloadedtopurls.enabled false
browser.urlbar.userMadeSearchSuggestionsChoice true
[i] browser.usedOnWindows10.introURL ""
browser.xul.error_pages.expert_bad_cert true
[i] browser.zoom.siteSpecific false
[i] camera.control.autofocus_moving_callback.enabled false
canvas.capturestream.enabled false
captivedetect.canonicalURL ""
[i] datareporting.healthreport.about.reportUrl "data:text/plain,"
[i] datareporting.healthreport.about.reportUrlUnified "data:text/plain,"
[i] datareporting.healthreport.documentServerURI ""
[i] datareporting.policy.dataSubmissionEnabled.v2 false
[i] dom.beforeAfterKeyboardEvent.enabled false
dom.caches.enabled false
[i] dom.disable_image_src_set true
dom.disable_open_during_load true
dom.disable_window_move_resize true
dom.disable_window_open_feature.close true
dom.disable_window_open_feature.location true
dom.disable_window_open_feature.menubar true
dom.disable_window_open_feature.minimizable true
dom.disable_window_open_feature.personalbar true
dom.disable_window_open_feature.resizable true
[i] dom.disable_window_open_feature.scrollbars true
dom.disable_window_open_feature.status true
dom.disable_window_open_feature.titlebar true
dom.disable_window_open_feature.toolbar true
[i] dom.disable_window_status_change true
[i] dom.idle-observers-api.enabled false
dom.imagecapture.enabled false
dom.IntersectionObserver.enabled false
[i] dom.keyboardevent.code.enabled false
dom.popup_allowed_events "click dblclick"
dom.popup_maximum 3
dom.push.connection.enabled false
dom.push.enabled false
dom.push.serverURL ""
[i] dom.push.udp.wakeupEnabled false
dom.push.userAgentID ""
[i] dom.storageManager.enabled false
[i] dom.vr.oculus050.enabled false
dom.w3c_pointer_events.enabled false
[i] dom.w3c_touch_events.enabled 0
dom.webnotifications.serviceworker.enabled false
[i] dom.workers.sharedWorkers.enabled false
[i] experiments.activeExperiment false
extensions.autoDisableScopes 15
extensions.enabledScopes 1
extensions.formautofill.addresses.enabled false
extensions.formautofill.available "off"
extensions.formautofill.creditCards.enabled false
[i] extensions.formautofill.experimental false
extensions.formautofill.heuristics.enabled false
extensions.getAddons.showPane false
[i] extensions.screenshots.disabled true
[i] extensions.screenshots.system-disabled true
[i] extensions.screenshots.upload-disabled true
[i] extensions.shield-recipe-client.api_url ""
[i] extensions.systemAddon.update.enabled false
[i] extensions.systemAddon.update.url ""
extensions.update.autoUpdateDefault false
extensions.webcompat-reporter.enabled false
extensions.webextensions.keepStorageOnUninstall false
extensions.webextensions.keepUuidOnUninstall false
[i] extensions.webextensions.restrictedDomains ""
extensions.webservice.discoverURL ""
font.blacklist.underline_offset ""
[i] font.name.monospace.x-unicode "Lucida Console"
[i] font.name.monospace.x-western "Lucida Console"
[i] font.name.sans-serif.x-unicode "Arial"
[i] font.name.sans-serif.x-western "Arial"
[i] font.name.serif.x-unicode "Georgia"
[i] font.name.serif.x-western "Georgia"
[i] font.system.whitelist ""
[i] full-screen-api.approval-required false
full-screen-api.enabled false
[i] full-screen-api.warning.delay 0
[i] full-screen-api.warning.timeout 0
[i] general.autoScroll false
[i] general.useragent.locale "en-US"
general.warnOnAboutConfig false
[i] geo.security.allowinsecure false
[i] gfx.direct2d.disabled true
gfx.downloadable_fonts.enabled true
gfx.downloadable_fonts.woff2.enabled false
gfx.font_rendering.graphite.enabled false
gfx.offscreencanvas.enabled false
[i] identity.fxaccounts.enabled false
intl.locale.requested "en-US"
intl.regional_prefs.use_os_locales false
[i] javascript.options.baselinejit false
[i] javascript.options.ion false
javascript.options.shared_memory false
javascript.options.wasm false
layers.acceleration.disabled true
layout.css.font-loading-api.enabled false
[i] layout.spellcheckDefault 2
[i] loop.facebook.appId ""
[i] loop.facebook.enabled false
[i] loop.facebook.fallbackUrl ""
[i] loop.facebook.shareUrl ""
[i] loop.feedback.formURL ""
[i] loop.feedback.manualFormURL ""
[i] loop.server ""
mathml.disabled true
media.autoplay.enabled false
media.block-autoplay-until-in-foreground true
[i] media.block-play-until-visible true
[i] media.eme.apiVisible false
[i] media.eme.chromium-api.enabled false
media.eme.enabled false
media.getusermedia.browser.enabled false
[i] media.getusermedia.screensharing.allow_on_old_platforms false
[i] media.getusermedia.screensharing.allowed_domains ""
media.gmp.trial-create.enabled false
[i] media.gmp-eme-adobe.autoupdate false
[i] media.gmp-eme-adobe.enabled false
[i] media.gmp-eme-adobe.visible false
media.gmp-gmpopenh264.autoupdate false
media.gmp-manager.updateEnabled false
media.gmp-manager.url.override "data:text/plain,"
media.gmp-widevinecdm.autoupdate false
media.gmp-widevinecdm.enabled false
media.gmp-widevinecdm.visible false
[i] media.ondevicechange.enabled false
media.peerconnection.ice.tcp false
media.peerconnection.identity.enabled false
media.peerconnection.identity.timeout 1
media.peerconnection.turn.disable true
media.peerconnection.use_document_iceservers false
media.peerconnection.video.enabled false
middlemouse.contentLoadURL false
network.auth.subresource-img-cross-origin-http-auth-allow false
network.cookie.leave-secure-alone true
[i] network.cookie.lifetime.days 90
[i] network.cookie.same-site.enabled true
network.cookie.thirdparty.nonsecureSessionOnly true
[i] network.dns.disableIPv6 true
[i] network.dnsCacheEntries 400
[i] network.dnsCacheExpiration 60
network.file.disable_unc_paths true
[i] network.ftp.enabled false
network.http.altsvc.enabled false
network.http.altsvc.oe false
network.http.redirection-limit 10
network.http.referer.defaultPolicy 3
network.http.referer.defaultPolicy.pbmode 2
network.http.referer.hideOnionSource true
network.http.referer.trimmingPolicy 0
[i] network.http.referer.userControlPolicy 3
network.http.referer.XOriginTrimmingPolicy 0
network.http.sendRefererHeader 2
[i] network.http.sendSecureXSiteReferrer false
network.http.spdy.enabled false
network.http.spdy.enabled.deps false
network.http.spdy.enabled.http2 false
[i] network.http.spdy.enabled.http2draft false
[i] network.http.spdy.enabled.v3-1 false
[i] network.jar.block-remote-files true
network.predictor.enable-prefetch false
network.protocol-handler.external.ms-windows-store false
network.proxy.autoconfig_url.include_path false
[i] network.trr.bootstrapAddress ""
[i] network.trr.mode 0
[i] network.trr.uri ""
[i] network.websocket.enabled false
offline-apps.allow_by_default false
[i] pageThumbs.enabled false
[i] permissions.default.camera 2
[i] permissions.default.desktop-notification 2
permissions.default.geo 2
[i] permissions.default.microphone 2
[i] permissions.default.shortcuts 2
permissions.manager.defaultsUrl ""
[i] permissions.memory_only true
[i] pfs.datasource.url ""
plugin.default.state 0
plugin.defaultXpi.state 0
[i] plugin.scan.Acrobat 99999
plugin.scan.plid.all false
[i] plugin.scan.Quicktime 99999
[i] plugin.scan.WindowsMediaPlayer 99999
plugin.sessionPermissionNow.intervalInMinutes 0
[i] plugins.enumerable_names ""
[i] plugins.update.url ""
[i] privacy.clearOnShutdown.passwords false
privacy.clearOnShutdown.siteSettings false
[i] privacy.cpd.openWindows true
privacy.cpd.passwords false
privacy.cpd.siteSettings false
[i] privacy.donottrackheader.value 1
privacy.firstparty.isolate.restrict_opener_access true
privacy.resistFingerprinting.block_mozAddonManager true
[i] privacy.trackingprotection.annotate_channels false
[i] privacy.trackingprotection.lower_network_priority false
privacy.trackingprotection.ui.enabled true
[i] privacy.usercontext.about_newtab_segregation.enabled true
[i] privacy.userContext.longPressBehavior 2
[i] privacy.userContext.ui.enabled true
[i] privacy.window.maxInnerHeight 900
[i] privacy.window.maxInnerWidth 1600
[i] reader.parse-on-load.enabled false
security.csp.enable_violation_events false
security.data_uri.block_toplevel_data_uri_navigations true
security.family_safety.mode 0
security.insecure_connection_icon.enabled true
[i] security.insecure_connection_icon.pbmode.enabled true
security.insecure_connection_text.enabled true
[i] security.insecure_connection_text.pbmode.enabled true
[i] security.mixed_content.send_hsts_priming false
[i] security.mixed_content.use_hsts true
[i] security.nocertdb true
security.ssl.errorReporting.enabled false
security.ssl.errorReporting.url ""
security.tls.enable_0rtt_data false
[i] security.tls.insecure_fallback_hosts.use_static_list false
[i] services.blocklist.addons.collection ""
[i] services.blocklist.gfx.collection ""
[i] services.blocklist.onecrl.collection ""
[i] services.blocklist.plugins.collection ""
shield.savant.enabled false
[i] social.directories ""
[i] social.enabled false
[i] social.remote-install.enabled false
[i] social.share.activationPanelEnabled false
[i] social.shareDirectory ""
[i] social.toast-notifications.enabled false
[i] social.whitelist ""
[i] startup.homepage_override_url ""
[i] startup.homepage_welcome_url ""
[i] startup.homepage_welcome_url.additional ""
[i] toolkit.cosmeticAnimations.enabled false
toolkit.telemetry.archive.enabled false
toolkit.telemetry.bhrPing.enabled false
toolkit.telemetry.cachedClientID ""
toolkit.telemetry.firstShutdownPing.enabled false
toolkit.telemetry.hybridContent.enabled false
toolkit.telemetry.newProfilePing.enabled false
toolkit.telemetry.server "data:,"
toolkit.telemetry.shutdownPingSender.enabled false
[i] toolkit.telemetry.unifiedIsOptIn true
toolkit.telemetry.updatePing.enabled false
[i] ui.key.menuAccessKey 0
ui.use_standins_for_native_colors true
[i] urlclassifier.trackingTable "test-track-simple,base-track-digest256"
[i] view_source.tab false
webchannel.allowObject.urlWhitelist ""
webgl.dxgl.enabled false
webgl.enable-webgl2 false
xpinstall.whitelist.required true
------------------------------------------------------------------------------
The following 78 prefs exist in both files but are inactive (commented out) in only one of them:
app.update.auto
ghacks.js false
[i] pk.js true
app.update.enabled
[i] ghacks.js false
pk.js true
browser.bookmarks.max_backups
[i] ghacks.js 2
pk.js 0
browser.cache.offline.enable
[i] ghacks.js false
pk.js false
browser.casting.enabled
[i] ghacks.js false
pk.js false
browser.newtabpage.activity-stream.enabled
[i] ghacks.js false
pk.js false
browser.newtabpage.directory.ping
[i] ghacks.js "data:text/plain,"
pk.js ""
browser.newtabpage.directory.source
[i] ghacks.js "data:text/plain,"
pk.js "data:text/plain,{}"
browser.newtabpage.enhanced
[i] ghacks.js false
pk.js false
browser.pocket.enabled
[i] ghacks.js false
pk.js false
browser.privatebrowsing.autostart
[i] ghacks.js true
pk.js true
browser.safebrowsing.blockedURIs.enabled
[i] ghacks.js false
pk.js true
browser.safebrowsing.enabled
[i] ghacks.js false
pk.js true
browser.safebrowsing.malware.enabled
[i] ghacks.js false
pk.js true
browser.safebrowsing.phishing.enabled
[i] ghacks.js false
pk.js true
browser.selfsupport.url
[i] ghacks.js ""
pk.js ""
camera.control.face_detection.enabled
[i] ghacks.js false
pk.js false
clipboard.autocopy
[i] ghacks.js false
pk.js false
datareporting.healthreport.service.enabled
[i] ghacks.js false
pk.js false
device.sensors.enabled
[i] ghacks.js false
pk.js false
devtools.webide.autoinstallFxdtAdapters
[i] ghacks.js false
pk.js false
dom.archivereader.enabled
[i] ghacks.js false
pk.js false
dom.battery.enabled
[i] ghacks.js false
pk.js false
dom.disable_beforeunload
ghacks.js true
[i] pk.js true
dom.enable_performance
[i] ghacks.js false
pk.js false
dom.enable_resource_timing
[i] ghacks.js false
pk.js false
dom.enable_user_timing
[i] ghacks.js false
pk.js false
dom.flyweb.enabled
[i] ghacks.js false
pk.js false
dom.gamepad.enabled
[i] ghacks.js false
pk.js false
dom.maxHardwareConcurrency
[i] ghacks.js 2
pk.js 2
dom.netinfo.enabled
[i] ghacks.js false
pk.js false
dom.network.enabled
[i] ghacks.js false
pk.js false
dom.telephony.enabled
[i] ghacks.js false
pk.js false
dom.vr.enabled
[i] ghacks.js false
pk.js false
dom.workers.enabled
[i] ghacks.js false
pk.js false
experiments.enabled
[i] ghacks.js false
pk.js false
experiments.manifest.uri
[i] ghacks.js ""
pk.js ""
experiments.supported
[i] ghacks.js false
pk.js false
extensions.shield-recipe-client.enabled
[i] ghacks.js false
pk.js false
extensions.update.enabled
[i] ghacks.js false
pk.js true
general.buildID.override
[i] ghacks.js 20100101
pk.js 20100101
geo.enabled
[i] ghacks.js false
pk.js false
geo.wifi.logging.enabled
[i] ghacks.js true
pk.js false
intl.locale.matchOS
[i] ghacks.js false
pk.js false
loop.logDomains
[i] ghacks.js false
pk.js false
media.gmp-provider.enabled
ghacks.js false
[i] pk.js false
media.video_stats.enabled
[i] ghacks.js false
pk.js false
media.webspeech.synth.enabled
[i] ghacks.js false
pk.js false
network.cookie.lifetimePolicy
[i] ghacks.js 0
pk.js 2
network.http.referer.XOriginPolicy
ghacks.js 1
[i] pk.js 2
network.jar.open-unsafe-types
[i] ghacks.js false
pk.js false
network.manage-offline-status
[i] ghacks.js false
pk.js false
pdfjs.enableWebGL
ghacks.js false
[i] pk.js false
places.history.enabled
[i] ghacks.js false
pk.js false
plugins.update.notifyUser
[i] ghacks.js false
pk.js true
privacy.clearOnShutdown.openWindows
[i] ghacks.js true
pk.js true
privacy.cpd.downloads
[i] ghacks.js true
pk.js true
privacy.donottrackheader.enabled
ghacks.js true
[i] pk.js true
privacy.trackingprotection.enabled
[i] ghacks.js true
pk.js true
privacy.trackingprotection.pbmode.enabled
[i] ghacks.js true
pk.js true
privacy.userContext.enabled
[i] ghacks.js true
pk.js true
security.ssl3.dhe_rsa_aes_128_sha
[i] ghacks.js false
pk.js false
security.ssl3.dhe_rsa_aes_256_sha
[i] ghacks.js false
pk.js false
security.ssl3.ecdhe_ecdsa_aes_128_sha
[i] ghacks.js false
pk.js false
security.ssl3.ecdhe_ecdsa_rc4_128_sha
[i] ghacks.js false
pk.js false
security.ssl3.ecdhe_rsa_aes_128_sha
[i] ghacks.js false
pk.js false
security.ssl3.ecdhe_rsa_rc4_128_sha
[i] ghacks.js false
pk.js false
security.ssl3.rsa_aes_128_sha
[i] ghacks.js false
pk.js true
security.ssl3.rsa_aes_256_sha
[i] ghacks.js false
pk.js true
security.ssl3.rsa_des_ede3_sha
[i] ghacks.js false
pk.js false
security.ssl3.rsa_rc4_128_md5
[i] ghacks.js false
pk.js false
security.ssl3.rsa_rc4_128_sha
[i] ghacks.js false
pk.js false
security.tls.unrestricted_rc4_fallback
[i] ghacks.js false
pk.js false
security.xpconnect.plugin.unrestricted
[i] ghacks.js false
pk.js false
signon.rememberSignons
[i] ghacks.js false
pk.js false
signon.storeWhenAutocompleteOff
ghacks.js true
[i] pk.js false
svg.disabled
[i] ghacks.js true
pk.js true
webgl.enable-debug-renderer-info
[i] ghacks.js false
pk.js false
:jeans: said...
71 prefs with matching values but inactive in ghacks.js 7 prefs with matching values but inactive in pk.jsfor both these sections you don't output the value, which would be helpful
...then earthlng said...
When the report says a pref is inactive in one file, the value doesn't necessarily match the value of the same pref in the other file.
sorry my bad. Well, nice effort mate but I guess I'll keep using my script then :trollface:
My solution:
...
57 prefs with matching values but inactive in ghacks.js
4 prefs with matching values but inactive in pk.js
...
...
The following 78 prefs exist in both files but are inactive (commented out) in only one of them:
app.update.auto
ghacks.js false
[i] pk.js true
app.update.enabled
[i] ghacks.js false
pk.js true
browser.bookmarks.max_backups
[i] ghacks.js 2
pk.js 0
browser.cache.offline.enable
[i] ghacks.js false
pk.js false
...
The numbers in the header don't add up to the combined unique prefs anymore in the output you posted
They're not meant to add up.
They added up when I didn't care about equality in the prefs with different state, but now that the script cares (because you seemed to be asking for it) they don't add up. It's precise. If you want the combined unique prefs to not count some prefs, then it shouldn't be called "combined unique prefs".
shit must be accountable, you know, like in accounting - rows and columns and row totals/ column totals must be in equalibrium - its a morbid fear I have, like clowns (I don;t have a fear of clowns, it was an example) .. i want my numbers and items and rows and columns and all add up correctly :) When stuff doesn't add up, I cannot sleep
row totals/ column totals
There are no such totals in the output generated by this script.
^^ I was explaining accounting to ya! The two totals via rows and via columns should match - its a fundamental check
You know what? I'll add an EXTRA row in the summary just so your numbers add up. Deal? Dammit. :laughing:
No .. adding an extra row is called "cooking the books" :grin:
But back to what earthlng was saying: "The numbers in the header don't add up to the combined unique prefs anymore in the output you posted" <-- the point is they should add up
If they should add up, then I need an extra row:
prefs that don't match _and_ have different states
And that's exactly what I'll do.
v1.3.1
header
670 combined unique prefs
136 matching prefs, both value and state (active/inactive)
13 prefs with different values but matching state
78 prefs not declared in ghacks.js
365 prefs not declared in pk.js
57 prefs with matching values but inactive in ghacks.js
4 prefs with matching values but inactive in pk.js
but they add up to 653
body sections
The following 136 prefs match
The following 13 prefs have different values:
The following 78 prefs are not declared in ghacks.js:
The following 365 prefs are not declared in pk.js:
so far so good, and then it diverges from the header
The following 78 prefs exist in both files but are inactive (commented out) in only one of them:
and then it ends
and the body section numnbers add up to 670
So what changed to make the header lines differ from the section header lines - why did 57+4 get merged with the missing item(s) in the header into a new 78
The following 78 prefs exist in both files but are inactive (commented out) in only one of them:
That's three things:
As things are now, the rest of the summary doesn't match the number of combined unique prefs simpy because I didn't add an extra row with the items that don't match and have different states.
The alternative would be separating those 3 things into different lists, just so they match your dear headers.
My point is that the numbers above will never match unless I add that extra row, or unless I change the "combined unique prefs" header, because if it didn't count the prefs that don't match and don't have the same state, it would be one lying header.
no worries, when I said adding extra rows was cooking the books, that was an accounting joke. I had not analyzed earthlng's analysis and clearly the number of header lines no longer matches the number of sections - so they need to be brought back into balance - so that means adding lines back in
So, I'll assume no one likes this format then:
app.update.auto
ghacks.js false
[i] pk.js true
app.update.enabled
[i] ghacks.js false
pk.js true
browser.bookmarks.max_backups
[i] ghacks.js 2
pk.js 0
browser.cache.offline.enable
[i] ghacks.js false
pk.js false
I shouldn't have assumed you guys would understand what I wanted you to see, even after trying to show it to you separated from the rest of the output. My bad. I should've explained things a bit.
If you guys prefer three different lists for the three things that I mentioned before, then I'll ditch that. No problem. I just thought it was a nice way to present all the information.
The following 78 prefs exist in both files but are inactive (commented out) in only one of them:
That's three things:
I don't mind if the three things are combined, as long as it is in the header totals. The first two should be combined for sure. See what earthlng says. The format, is that your example in the post right above this one?
The first two should be combined for sure.
From what I've seen so far, I doubt earthlng would agree with that.
See what earthlng says.
Not sure what you mean, sorry.
The format, is that your example in the post right above this one?
It's the same I posted above. I'm going to split that list into the three relevant parts, but I'm still gonna use that format for listing the prefs that have both mismatching values and states, unless you have a better idea.
Possibly the final version.
Wanna know what the output looks like? run it.
Thanks :cat2: .. Ima gonna reopen this as my trigger for testing it out and stuff, and for adding some info about it into the wiki (maybe in getting started for those who already have a user.js, probably have its own page with a purdy picture). And did we want to host this here - we don't have to, but it would be cool.
Possibly the final version.
Wanna know what the output looks like? run it.
lol, found the salty guy :)
sorry mate, don't take anything I write too seriously, I was just messing with you a little bit.
It's a great script and it helped me get started with PS which I've avoided to learn for too long, so thanks for that.
It's better if @claustromaniac hosts it himself because he can make all the changes he wants without me needing to review them. We can just link to it.
Thanks again for all the feedback... you nitpicking bastards.
I had other ideas that I didn't implement, but I may eventually do it. Anyway, glad to make another small contribution.
you nitpicking bastards.
Do you need a hug, bro? :kiss:
Nah. My skin is thick enough, thanks.
I was just kidding. I generally try not to, because it is very easy to give false impressions via text, at least for me. Also, in the event of a misunderstanding, it is generally harder to find the motivation to clarify things, because I simply don't care. But if I don't, I risk coming across as a prick, and I certainly wouldn't want random strangers to think bad of me. See what I did there?
It is also even harder to tell what others are thinking than it is in person, which leads me to explain unnecessary stuff, like I'm doing right now. Plus, this isn't even my native tongue.
Plus, I'm an oddball.
I'll just stop typing right now.
You're right about text lacking nuance/tone/inflections/timing and you can add language/regional/slang/dialect and other factors .. that said, I think "reactions" say a lot more than the typed word ... and having said that, I think we all know you have a sense of humour (like The Big E and myself) and that we understand that most of us here only mean to be constructive - its never personal :)
Anyway .. thanks for the awesome work (sure beats my semi-manual approach). Still intrigued why earthlng has never shared his version (boo!). Do you plan on keeping your gist, or creating a repo so we can raise issues etc? I only ask in advance of [probably] adding a wiki page :)
There. Nitpick at your leisure.
_Says it's possibly the final version._
_Pushes 42 commits in a matter of two weeks._
Yep, that's me alright. The good news is all of your feedback helped me find a bunch of minor (and not-so) issues with the script and I learned a lot of PowerShell gotchas and specifics in that short span, so thanks again. You guys are really helpful.
This should be as reliable and fast as it gets... I hope. I may eventually improve the documentation though. I may even consider making it more SERIOUS and everything, who knows. For now I'll just keep breaking other stuff.
Good boy!
MOAR exposure
https://github.com/ghacksuserjs/ghacks-user.js/wiki/4.1-Extensions#small_orange_diamond-extensions-tools

https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.3-Implementation

That should do it. PS, sorry about sticking a drawing pin right in yer face
As always, it is my honor to pollute your wiki with my garbage!
I'll have to seriously reconsider improving the documentation now, though. Yeah... I should probably do that, shouldn't I?
sorry about sticking a drawing pin right in yer face
Don't worry about it, I'm used to that shit......(don't ask.)
Honestly, I don't feel it deserves to stand next to all of the awesome extensions. :cold_sweat: That being said, I don't know where else I'd put it if I were you.
I'm starting to feel the pressure. Now I'll have to roll the WEB APP to feel more comfortable about it.
Most helpful comment
Updated to
v1.2v1.2.1v1.2.2.