Compare commits

...
Author SHA1 Message Date
Moonchild baca5bb914 Issue #2390 - Part 1: Base implementation of Intl.ListFormat. 2026-05-16 19:48:16 +02:00
Moonchild 3583e443dd [js] Increase RecoverOffset size (64-bit) 2026-05-12 19:42:44 +02:00
Moonchild afc6210b2c [DOM] Add nullcheck on thumb dragging event ranges. 2026-05-12 09:58:43 +02:00
Moonchild 6fb98414ef [DOM] Add nullcheck on document for requestSubmit 2026-05-12 09:57:56 +02:00
Moonchild 1268c5055a Merge pull request 'Cherry pick some things from Dactyloidae' (#3086) from dactyloidae-ports into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3086
2026-05-11 08:59:14 +00:00
Moonchild 30a1c98c9d Revert "Issue #3030 - Implement lazy-loading for image elements."
This reverts commit 7574161abe.
2026-05-09 10:23:04 +02:00
Moonchild 17b7e131b4 Issue #3030 - Improve image cache entry handling.
This:
- increases max image cache entry size and adjusts related parameters.
- makes the cache entry timeout configurable for advanced tweaking.
- adds a mechanism to keep commonly-used, small image sizes in cache
  longer.
2026-05-09 08:26:44 +02:00
ownedbywuigi 7574161abe Issue #3030 - Implement lazy-loading for image elements. 2026-05-09 08:08:45 +02:00
ownedbywuigi 5185da6cf0 Issue #3030 - Prevent unnecessary event allocation.
Reuse the same event object when dispatching bubbling/capturing phases
instead of allocating new ones.
2026-05-09 08:08:14 +02:00
ownedbywuigi a5c925df20 Issue #3030 - Account for custom elements in attribute value checking.
Refactors MaybeCheckSameAttrVal to streamline old value storage for
custom elements.
2026-05-09 08:06:50 +02:00
ownedbywuigi e794163e05 Issue #3030 - Block auth prompt if there is a sync XHR active.
This attempts to fix https://forum.palemoon.org/viewtopic.php?f=3&t=33260
2026-05-09 08:03:43 +02:00
Moonchild 2690911551 Merge pull request 'Set glx as OpenGL backend default until egl bugs can be investigated' (#3084) from Basilisk-Dev/UXP-contrib:egl-followup into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3084
2026-05-08 06:47:21 +00:00
Basilisk-Dev 6cc0c04b5c Issue #3079 followup - set glx as OpenGL backend default until egl bugs can be investigated 2026-05-07 21:03:15 -04:00
Moonchild edd0f13910 Merge branch 'ANGLE-fixes' 2026-05-07 20:09:23 +02:00
Moonchild c57f1ec98c Merge branch '150.0.2' 2026-05-07 20:09:12 +02:00
Moonchild f757e38c04 [layout] Check offset against start of skip range. 2026-05-07 20:07:33 +02:00
Moonchild 00ab986cb8 [gfx] Fix integer overflow in cairo PDF surface image emission 2026-05-07 19:39:49 +02:00
Valentin Gosu cd873c87d5 Bug 2034352 - Make URL::SearchParams return an already_AddRefed 2026-05-07 19:39:42 +02:00
Moonchild bd3ea8d98d Issue #3083 - Fix incorrect nullcheck. 2026-05-07 19:39:04 +02:00
Moonchild 865d547992 Issue #3083 - Add sanity check to EmulatedIndexedStorage::getNativeStorage 2026-05-07 19:38:17 +02:00
Moonchild 2c4ea0bc88 Issue #3083 - Turn debug-only assert into a skip. 2026-05-07 19:37:46 +02:00
Moonchild 001f950041 Merge pull request 'Enable EGL as the default OpenGL context backend on Linux with GLX fallback' (#3080) from Basilisk-Dev/UXP-contrib:egl into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3080
2026-05-05 20:51:55 +00:00
Basilisk-Dev ca839a4b0f Issue #3079 - only build the X11-specific GL code on X11 systems 2026-05-05 14:07:55 -04:00
Basilisk-Dev 807faf43b0 Issue #3079 - Silence EGL library load logging 2026-05-05 10:13:33 -04:00
Basilisk-Dev 2edc704e4f Issue #3079 - Use desktop OpenGL for X11 EGL 2026-05-05 07:58:40 -04:00
Basilisk-Dev becff6c0d2 Issue #3079 - Add EGL-aware X11 GL probing and fallback 2026-05-05 07:58:26 -04:00
Moonchild 06caa2f30f Merge pull request 'Backport 1398140 and 1377238 - Ion Multithreading Improvements' (#3076) from Basilisk-Dev/UXP-contrib:bugzilla-performance-backports into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3076
2026-05-03 11:57:55 +00:00
Moonchild ac0f516a1a Merge pull request 'Upgrade mimalloc to 3.3.1' (#3056) from Basilisk-Dev/UXP-contrib:mimalloc into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3056
2026-05-03 09:18:12 +00:00
Basilisk-Dev 6d4244e049 Issue #3075 - Backport bug 1398140 - Remove the Ion helper thread pausing 2026-04-30 08:46:31 -04:00
Basilisk-Dev d5d43c7221 Issue #3075 - Backport bug 1377238 - Free finished IonBuilders off-thread. 2026-04-30 08:43:37 -04:00
Moonchild 3a5950ae65 Issue #3066 - Follow-up: use cpuCount for maxParseThreads.
Addressing the confusing naming here:
cpuCount is the number of _logical_ processors as reported by the system,
not the physical cores.
threadCount is that number with some extras. This should be used with care.
2026-04-30 10:51:52 +02:00
Moonchild 58a00fe63b Revert "Issue #3066 - Follow-up: Reserve threads for burst use cases."
This reverts commit 3259bdc1c1.
2026-04-30 10:47:03 +02:00
Moonchild b486a37ba1 Revert "Issue #3066 - Follow-up: Change the way HelperThread counts are calculated."
This reverts commit a1bde368ab.
2026-04-30 10:46:54 +02:00
Moonchild a1bde368ab Issue #3066 - Follow-up: Change the way HelperThread counts are calculated. 2026-04-30 10:39:09 +02:00
Moonchild dc2cb047aa Platform version bump. 2026-04-29 15:08:29 +02:00
Moonchild a06d5a80a1 [gfx] Add sanity checks in ANGLE D3D11 renderer. 2026-04-29 14:57:03 +02:00
Moonchild 2dbf5e90d6 [DOM] Do not interrupt worker execution if already scheduled. 2026-04-29 13:28:06 +02:00
Moonchild 3259bdc1c1 Issue #3066 - Follow-up: Reserve threads for burst use cases. 2026-04-29 12:10:41 +02:00
Moonchild d8fc800bb6 [DOM] Validate size in FileReader. 2026-04-29 11:30:43 +02:00
Moonchild 2f48cd27d5 [DOM/media] Add some sanity checks to MP3 demuxer.
Note: `vbr.NumAudioFrames()` is already checked in `vbr.IsComplete()`
2026-04-29 11:10:41 +02:00
Iain Ireland 5da410af19 Bug 2029806: Handle ill-formed UTF16 2026-04-29 10:38:42 +02:00
Karl Tomlinson 11b676d033 Bug 2027433 use nullptr for silent up-mix channels 2026-04-29 10:16:55 +02:00
Karl Tomlinson 68f88c7b49 Bug 2027433 Treat null input channels as zero in AudioChannelsDownMix() 2026-04-29 10:03:32 +02:00
Karl Tomlinson b887dd8f37 Bug 2027433 Treat null input channels as zero in InterleaveAndConvertBuffer()
The loop nesting is inverted so as not to add a null check to the inner
loop, but this change would also have some impact on cache use:

* The loop ordering might perhaps not be the ideal for two channels and
large sample counts, for example, because it means going through the
output/largest buffer twice.
* It does, however, avoid pathological situations of iterating across
planar channel buffers, likely to load set-associative cache lines if
the channel buffers are page aligned, due to having 1024 (or somewhat
fewer) floats, for example.
2026-04-29 09:49:46 +02:00
Moonchild 9be79d5b97 Revert "[DOM] Ensure the GC sees consistent states while adopting DOM nodes."
This reverts commit 07c08f37be.
2026-04-28 18:12:15 +02:00
Moonchild ed4b5d4214 Merge pull request 'Issue #3038 - Fix ./mach help command on Python 3.14.' (#3072) from athenian200/UXP:mach_help_fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3072
2026-04-28 13:29:05 +00:00
Moonchild 2aeecda75f Merge pull request 'Fix non-English output corruption and issues surrounding Python cl wrapper.' (#3069) from athenian200/UXP:foreign_msvc_fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3069
2026-04-28 13:25:49 +00:00
Moonchild 633de098f8 Merge pull request 'Implement full LoongArch64 Baseline/Ion/wasm JIT backend' (#3067) from Basilisk-Dev/UXP-contrib:loongjit into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3067
2026-04-28 13:06:32 +00:00
Jeremy Andrews 241f9c3965 Issue #3038 - Fix ./mach help command on Python 3.14.
This was a deliberate change in Python 3.14 specifically, should be noted that the old code worked
on every earlier Python version before this. It also was not documented in the release notes,
but it was easy to find people complaining about them tightening the API here.

Ref: https://discuss.python.org/t/argparse-valueerror-action-store-true-is-not-valid-for-positional-arguments/106355
2026-04-27 12:53:09 -05:00
Moonchild 3749fabef9 Merge pull request 'Issue #3066 - on systems with 2 or less CPU cores, use cpuCount for number of helper threads instead of threadCount to prevent performance issues' (#3071) from Basilisk-Dev/UXP-contrib:cpuCount-fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3071
2026-04-27 17:38:31 +00:00
Basilisk-Dev ab6fdd555a Issue #3066 - on systems with 2 or less CPU cores, use cpuCount for number of helper threads instead of threadCount to prevent performance issues 2026-04-27 12:57:08 -04:00
Moonchild 6dcb20949a [NSS] Restore dropped 'S' :P 2026-04-27 16:36:01 +02:00
Jeremy Andrews 2ad83109ee Issue #3068 - Implement C++ wrapper.
I looked at the Python wrapper so many times and felt like I was
writing C by proxy to clean up Python assumptions, and started
wondering if C++ was the right tool for this job instead of Python.
Here's my attempt at a C++ version of this wrapper. I'm offering both
options, you can revert this commit if you prefer the Python version.
2026-04-27 01:21:42 -05:00
Jeremy Andrews 993f6947d0 Issue #3068 - Fix non-English MSVC text corruption.
This fixes the original Python wrapper. So basically, the Python developers
have a poor grasp of how Windows handles anything outside of UTF-16 and
the W APIs, and barely understand ANSI codepages, let alone console codepages.
Both MSYS1 and Python 3 seem to treat Windows NT like Windows 9x way too often.
Not the kind of 1990s nostalgia trip we had in mind, but it's the one we got.
2026-04-27 01:21:27 -05:00
Basilisk-Dev a0ee7ae1d7 Issue #3049 - loongarch64: remove remaining MIPS file diffs 2026-04-26 16:20:22 -04:00
Basilisk-Dev 140226f9ee Issue #3049 - loongarch64: drop whitespace-only mips64 diff 2026-04-26 16:20:22 -04:00
Basilisk-Dev 4729e6299e Issue #3049 - loongarch64: localize shared JIT cleanup 2026-04-26 16:20:22 -04:00
Basilisk-Dev b6a9734757 Issue #3049 - loongarch64: drop inert minimal JIT path 2026-04-26 16:20:21 -04:00
Basilisk-Dev 426edd0c41 Issue #3049 - loongarch64: trim non-JIT PR fallout 2026-04-26 16:20:21 -04:00
Basilisk-Dev 5cc9593b41 Issue #3049 - loongarch64: fill scalar macroassembler NYI helpers 2026-04-26 16:20:21 -04:00
Basilisk-Dev bd3a1d801a Issue #3049 - loongarch64: implement baseline wasm atomics 2026-04-26 16:20:21 -04:00
Basilisk-Dev 007e595a33 Issue #3049 - loongarch64: fix JIT uint8 clamp lowering 2026-04-26 16:20:20 -04:00
Basilisk-Dev 537bbfa821 Issue #3049 - loongarch64: fix wasm and debug-trap jit-test regressions 2026-04-26 16:20:20 -04:00
Basilisk-Dev 4b340a1d4d Issue #3049 - loongarch64: retire stale JIT TODOs 2026-04-26 16:20:20 -04:00
Basilisk-Dev 8ef06683c6 Issue #3049 - loongarch64: clarify stale shared-code fallback guards 2026-04-26 16:20:20 -04:00
Basilisk-Dev 2f1765ef22 Issue #3049 - loongarch64: direct wasm baseline truncation 2026-04-26 16:20:20 -04:00
Basilisk-Dev 569f912ffd Issue #3049 - loongarch64: restore pre-barrier link register correctly 2026-04-26 16:20:19 -04:00
Basilisk-Dev 7bd4bfeb06 Issue #3049 - loongarch64: flush icache after JIT runtime patching 2026-04-26 16:20:19 -04:00
Basilisk-Dev 043c98373e Issue #3049 - loongarch64: allocate Ion temps for post-write barriers 2026-04-26 16:20:19 -04:00
Basilisk-Dev c02d8f1d61 Issue #3049 - loongarch64: reserve extract temps in shared IC register pools 2026-04-26 16:20:19 -04:00
Basilisk-Dev c2aeecbf38 Issue #3049 - loongarch64: use explicit VM wrapper tail-call contracts 2026-04-26 16:20:19 -04:00
Basilisk-Dev 3869453bba Issue #3049 - loongarch64: fix scaled JIT memory addressing 2026-04-26 16:20:18 -04:00
Basilisk-Dev 14d2e10576 Issue #3049 - loongarch64: fix pointer immediates and scratch aliasing 2026-04-26 16:20:18 -04:00
Basilisk-Dev d667906533 Issue #3049 - loongarch64: fix JIT value boxing and unboxing 2026-04-26 16:20:18 -04:00
Basilisk-Dev 6b4b7dadb2 Issue #3049 - Save loongarch64 regexp JIT link register 2026-04-26 16:20:18 -04:00
Basilisk-Dev 9f73d5bb49 Issue #3049 - Fix loongarch64 wasm JIT dispatch and truncation 2026-04-26 16:20:17 -04:00
Basilisk-Dev 802aebd0dd Issue #3049 - Fix loongarch64 wasm profiling integration 2026-04-26 16:20:17 -04:00
Basilisk-Dev 88a7b76bfe Issue #3049 - Fix loongarch64 wasm baseline integration 2026-04-26 16:20:17 -04:00
Basilisk-Dev 0164ef4a07 Issue #3049 - Fix loongarch64 wasm runtime plumbing 2026-04-26 16:20:17 -04:00
Basilisk-Dev cd1e02de12 Issue #3049 - Enable loongarch64 wasm baseline compiler 2026-04-26 16:20:17 -04:00
Basilisk-Dev 265bdc3076 Issue #3049 - Remove loongarch64 native call IC fallback 2026-04-26 16:20:16 -04:00
Basilisk-Dev 0f54499203 Issue #3049 - Re-enable loongarch64 asm.js and native regexp 2026-04-26 16:20:16 -04:00
Basilisk-Dev cd028bb746 Issue #3049 - Enable loongarch64 wasm profiling patching 2026-04-26 16:20:16 -04:00
Basilisk-Dev 1b15cf18d7 Issue #3049 - Enable loongarch64 Ion environments 2026-04-26 16:20:16 -04:00
Basilisk-Dev da0cf2149f Issue #3049 - Enable loongarch64 JIT atomics 2026-04-26 16:20:15 -04:00
Basilisk-Dev e079c83629 Issue #3049 - Split loongarch64 Ion lowering from mips64 2026-04-26 16:20:15 -04:00
Basilisk-Dev fc489dc3ad Issue #3049 - Harden loongarch64 Ion call and environment paths 2026-04-26 16:20:15 -04:00
Basilisk-Dev 983e140fbc Issue #3049 - Fix loongarch64 nursery chunk JIT checks 2026-04-26 16:20:15 -04:00
Basilisk-Dev bc826af721 Issue #3049 - Stabilize loongarch64 Ion patching and wasm loads 2026-04-26 16:20:15 -04:00
Basilisk-Dev ade8a91835 Issue #3049 - Enable loongarch64 wasm runtime and Ion patching 2026-04-26 16:20:14 -04:00
Basilisk-Dev 7a9e340ba4 Issue #3049 - Add loongarch64 wasm backend build support 2026-04-26 16:20:14 -04:00
Basilisk-Dev 907d5eb3a0 Issue #3049 - Enable loongarch64 Ion backend build and runtime 2026-04-26 16:20:14 -04:00
Basilisk-Dev 9ae455ac7d Issue #3049 - Wire up loongarch64 Ion backend compilation 2026-04-26 16:20:14 -04:00
Basilisk-Dev ac2c809f8c Issue #3049 - Fix loongarch64 string extraction in JIT stubs 2026-04-26 16:20:13 -04:00
Basilisk-Dev 86d942f9b5 Issue #3049 - Normalize loongarch64 VM wrapper return setup 2026-04-26 16:20:13 -04:00
Basilisk-Dev 0581d130fe Issue #3049 - Fix loongarch64 value decoding and exception tail 2026-04-26 16:20:13 -04:00
Basilisk-Dev 5e74610f98 Issue #3049 - Preserve loongarch64 ra across baseline helper calls 2026-04-26 16:20:13 -04:00
Basilisk-Dev 2710214767 Issue #3049 - Disable native regexp JIT on loongarch64 2026-04-26 16:20:13 -04:00
Basilisk-Dev efd34d3137 Issue #3049 - Handle loongarch64 unary baseline inc and dec 2026-04-26 16:20:12 -04:00
Moonchild e051599073 [NSS] Update NSS version for release.
Add (UXP) to the version display string to signify this is our variant of
NSS 3.90 to avoid confusion with the 3.90 branch used in Firefox 115 ESR.
This version has backported considerably more fixes than Mozilla's NSS.
2026-04-26 15:44:48 +02:00
Moonchild 002b1d928e [parser] Handle foster parenting properly. 2026-04-26 12:16:13 +02:00
Moonchild 79aa36ef10 [media] Spot-fix for ffvpx handling of bad video data. 2026-04-26 12:00:21 +02:00
Moonchild 1842de878f [image] Don't do unnecessary work if the image is being destroyed. 2026-04-26 11:48:42 +02:00
Iain Ireland 81cc4e7d9e Bug 2029727: Update RegExpStatics data after realloc 2026-04-26 11:31:06 +02:00
Moonchild 0d69bdc104 [gfx] OTS/HB: Correct bounds checks. 2026-04-26 11:06:48 +02:00
Moonchild eb235f0675 [js] Use isElement in UnmappedArgSetter to check if the argument was marked as deleted.
This is more consistent with `UnmappedArgGetter` and better handles the
case where the property was marked deleted in `RareArgumentsData` but not
actually deleted from the object due to OOM. Unfortunately this scenario
is hard to prevent because the property is marked as deleted in the
`ArgumentsObject::obj_delProperty` class hook and after that
`NativeDeleteProperty` tries to remove the property and this can fail.
2026-04-26 10:49:29 +02:00
Dennis Jackson 2729d6cae9 Bug 2029323 - Improve size calculations in CMS content buffering 2026-04-26 10:31:29 +02:00
John Schanck da3b8fc623 Bug 2029425 - Heap use-after-free in cert_VerifyCertChainOld via dangling certsList[] entry on NameConstraints violation. 2026-04-26 10:27:35 +02:00
Moonchild 58f6eb679b [image] Hold a strong ref on mInnerImage when requesting a refresh. 2026-04-26 10:23:39 +02:00
Moonchild e4db1b8fdc [DOM] Add some death grips to TextTrackManager. 2026-04-26 10:13:02 +02:00
Moonchild 6f68647251 [DOM/media] Use extended channel data as-appropriate. 2026-04-26 10:06:09 +02:00
John Schanck 867bd1549b Bug 2030135 - improve error handling in PK11_ImportPrivateKeyInfoAndReturnKey 2026-04-26 09:18:06 +02:00
Moonchild bb3275468d Revert "[gfx] Use local statics for harfbuzz callback pointers"
This reverts commit 60a96d9cd2.
2026-04-26 07:50:58 +02:00
Moonchild bfc67972ed No issue - Update our in-tree brotli library to 1.2.0+
This includes a minor patch to encode.c to work around the "static init"
check that actually doesn't do anything in its default state, but, due to
compiler subtleties in handling duplicate object names, would not be able
to link brotli.exe because it would refuse to expose all symbols for
duplicate objects (a later one would just be ignored).
Unsure how clang does this but it's not portable across compilers.
(we need the brotli.exe tool for resource package compression)
2026-04-26 00:55:29 +02:00
John Schanck c04c33e327 Bug 2029462 - store email on subject cache_entry in NSS trust domain.
remove_email_entry used cert->email of the last-destroyed cert to locate
the hash entry to clean up. If that cert had no email, the entry was
silently skipped, leaving a dangling subjectList pointer after the arena
was freed. Store the registration-time email on the subject cache_entry
(mirroring ce->nickname) and thread it through remove_subject_entry so
removal always uses the correct email regardless of destruction order.
2026-04-25 22:59:08 +02:00
Moonchild a64033be06 [security] Ensure DispatchToMainThreadAndWait isn't interrupted.
In some cases, `lock.wait()` can be interrupted by spurious wake-ups
before processing is done. To ensure things are, in fact, synchronous,
loop over `wait()` until it is actually done.
2026-04-25 17:17:08 +02:00
Timothy Nikkel 1805114b8b Bug 2029291. 2026-04-25 16:31:01 +02:00
Jan de Mooij d0465ae9e5 Bug 2029317 - Create RareArgumentsData before mutating the arguments object in MappedArgumentsObject::obj_defineProperty. 2026-04-25 16:16:00 +02:00
Jan-Ivar Bruaroey 533b487b3b Bug 2029423 - Reset post_proc state. 2026-04-25 15:58:00 +02:00
Andy Leiserson 7899aa0e49 Bug 2029427 - Fix format string 2026-04-25 15:49:02 +02:00
Moonchild 2ac6f05047 [gfx] Explicitly cast calculation to int32. 2026-04-25 15:25:11 +02:00
Moonchild 6bd4859ef6 [gfx] Port libyuv upstream bounds check. 2026-04-25 15:10:43 +02:00
Simon Farre 120f8bebe4 Bug 2025973 - Use value-semantics for txExecutionState::TemplateRule
TemplateRule is a wrapper around references mostly and can for the
purposes of this function be copied to the stack, given that
TemplateRule::mModeNsId is not mutated there.
2026-04-25 15:03:37 +02:00
Dennis Jackson 84a3ff050c [NSS] Clarify extension negotiation mechanism for TLS Handshakes. 2026-04-25 14:14:21 +02:00
Moonchild b822fda771 [js] Only allow strings as function name. 2026-04-25 11:44:48 +02:00
athenian200 3e38744f8b No Issue - Fix non-fatal powershell invocation on Windows.
This only happened because Python 3 no longer has the limitation of requiring VS 2009 to build binary extensions, and Python uses powershell to build those on Windows for some reason. Was an optional module anyway, not worth the annoyance it caused some users.
2026-04-25 09:20:32 +00:00
ownedbywuigi ffeaec8710 Issue #3030 - Reduce layout stalls due to compositor hang-ups. 2026-04-25 11:11:40 +02:00
Olli Pettay bbeb397619 Bug 2025370 - Properly handle error case in EventListenerManager::GetTypedEventHandler 2026-04-25 11:03:41 +02:00
Moonchild 0e0e2eed28 [DOM/XSLT] Don't use txXPathNode by reference.
Follow-up to previous XSLT fixes.
2026-04-25 10:51:24 +02:00
Moonchild 0541bf3363 [gfx] Stop using binary arithmetic in software filtering.
There was some weird binary arithmetic to artificially clamp values in
calculations for dot products. (multiply by (x >= 0)...)
Switch to `std::clamp()` on the initial value instead.
2026-04-25 10:22:15 +02:00
Tom Schuster 8c677506b2 Bug 2025332 - ErrorResult should call ClearUnionData more. 2026-04-25 09:32:58 +02:00
Karl Tomlinson d77bac2b73 Bug 2025483 update mBeginProcessing even on speex_resampler_set_rate() error 2026-04-25 09:03:05 +02:00
Moonchild 4f8122c97c [NSS] Deep copy profile data in CERT_FindSMimeProfile. 2026-04-25 08:52:27 +02:00
Moonchild 7db3518bcb [DOM/XSLT] Prevent circular indexing
Added additional flag to txIndexedKeyHashEntry to signal whether or not
this entry is already in the process of indexing.

The XSL specs 3.0 talk about recursion being fine, but circularity not
being ok, which is the case when a key is already being looked up.
2026-04-24 21:35:24 +02:00
Moonchild 509b1c9c9d No issue - Deduplicate HTMLAllCollection::GetSupportedNames code.
This was duplicated with a minor difference from the code present in
nsContentList::GetSupportedNames.
2026-04-24 21:21:00 +02:00
Moonchild ceb04b11aa [NSS] Reject excessively large ASN.1 SEQUENCE OF in quickder. 2026-04-24 20:55:33 +02:00
Moonchild 1fb0e5ad2e [DOM] Avoid leaks in nsXMLPrettyPrinter. 2026-04-24 20:38:39 +02:00
Moonchild 0d778af5a1 [DOM/WebCrypto] Reject absurdly large salt values. 2026-04-24 20:34:09 +02:00
Moonchild 1983e6dc6e [DOM] Add a death grip and use locals in BaseMediaResource::ModifyLoadFlags. 2026-04-24 16:55:15 +02:00
Moonchild 851cfe1a41 [DOM] Add a SequenceRooter to ConsoleProfile. 2026-04-24 16:34:52 +02:00
Moonchild 86cbf4a9f3 [widget] Improve clearing of data during clipboard operations. 2026-04-24 16:25:17 +02:00
Daniel Holbert af8cda32de Bug 2026293: Block scripts when initiating async scrollbar activity. 2026-04-24 15:59:17 +02:00
Moonchild 6b9f39b933 [accessibility] Hold a strong ref to mParent in AccIterator. 2026-04-24 15:21:29 +02:00
Moonchild ac7a61a9be [gfx] Don't return dummy surfaces. 2026-04-24 14:39:16 +02:00
Moonchild 017cc7ef84 [webrtc] Fix off-by-one comparison. 2026-04-24 14:17:19 +02:00
Simon Farre 72b2c2c555 Bug 2025971 - Use txSingleNodeContext getter of owned txXPathNode.
eContext gets a copy of aNode. The function should use that one's member
as it's not a shared reference, which we can't know the life time of.
2026-04-24 14:09:59 +02:00
Moonchild aec1c42d17 Bug 2025976 - Follow-up: Make txXPathNode() a public class member. 2026-04-24 14:08:54 +02:00
Moonchild a84dbb6281 [DOM/XSLT] Re-fetch index entry. 2026-04-24 13:47:43 +02:00
Simon Farre 951c54835b Bug 2025976 - Make txxPathNode be a value instead of reference.
txxPathNode has value semantics (it's a smart pointer + uint32_t index;
two different objects of this instance with the same contents are the same
thing).

Increase correctness by making a copy instead of a reference.
2026-04-24 11:30:00 +02:00
Moonchild 142dca26f4 [NSS] Improve input validation in DSAU signature decoding 2026-04-24 11:09:35 +02:00
Moonchild 6f74b59900 [image] Hold a strong ref on error. 2026-04-24 10:37:01 +02:00
Moonchild 07c08f37be [DOM] Ensure the GC sees consistent states while adopting DOM nodes.
This should prevent some intermittent CC crashes when the wrapper cache
has an incorrect state.
2026-04-24 10:04:44 +02:00
Moonchild a703325af2 [DOM] Improve CC/WrapperCache for nursery objects. 2026-04-24 09:15:19 +02:00
Basilisk-Dev acf54dc358 Issue #3049 - Add loongarch64 JIT link-time compatibility stubs 2026-04-24 00:38:15 -04:00
Basilisk-Dev edee1158ee Issue #3049 - Wire up loongarch64 SpiderMonkey baseline backend 2026-04-23 23:41:12 -04:00
Basilisk-Dev 4f7803881b Issue #3049 - Disable wasm signal handlers on loongarch64 2026-04-23 22:04:40 -04:00
Basilisk-Dev a54d8527c8 Issue #3049 - Disable unsupported JIT features in loongarch64 contexts 2026-04-23 21:42:15 -04:00
Basilisk-Dev 7ddab852c3 Issue #3049 - Normalize loongarch64 baseline frame register use 2026-04-23 21:17:14 -04:00
Basilisk-Dev ffc4084854 Issue #3049 - Use s5 for loongarch64 baseline frames 2026-04-23 21:06:53 -04:00
Basilisk-Dev 367dec14bc Issue #3049 - Preserve loongarch64 callee-save JIT entry regs 2026-04-23 20:53:40 -04:00
Basilisk-Dev 522b1c58df Issue #3049 - Fix loongarch64 baseline IC integer compare stub 2026-04-23 20:19:29 -04:00
Basilisk-Dev f5c28ff4d6 Issue #3049 - Adapt loongarch64 baseline macroassembler to old JIT APIs 2026-04-23 20:03:41 -04:00
Basilisk-Dev 11aa5a7586 Issue #3049 - Fix loongarch64 JIT header compatibility 2026-04-23 19:30:19 -04:00
Basilisk-Dev f3eb80a55b Issue #3049 - Adapt loongarch64 JIT glue to older JS APIs 2026-04-23 19:21:46 -04:00
Basilisk-Dev 5a606f322e Issue #3049 - Wire loongarch64 non-Ion frame and patch hooks 2026-04-23 19:16:28 -04:00
Basilisk-Dev fb9098d69b Issue #3049 - Rename and wire loongarch64 baseline JIT backend 2026-04-23 19:09:10 -04:00
Basilisk-Dev 7e1d721f20 Issue #3049 - Extend LoongArch minimal JIT frame slots 2026-04-23 17:48:36 -04:00
Moonchild 55fe29cbb7 [network] Ensure UDPSocket remains alive during CloseWithReason. 2026-04-23 19:35:41 +02:00
Moonchild 044736c889 [network] Hold strong ref in nsSyncStreamListener::Available. 2026-04-23 19:32:33 +02:00
Moonchild 875b73823e [network] Force NUL termination in ToStringBuffer AF_LOCAL.
Also reject AF_LOCAL in IPC reader (just in case).
2026-04-23 19:14:31 +02:00
Moonchild 74fc0fc150 [webrtc] Hold a self-ref on behalf of sigslot, just in case.
Also, stop using these PC_AUTO_ENTER_API_CALL... macros
in functions that aren't actually JS API.
2026-04-23 15:07:09 +02:00
Moonchild a4c8f55faf [DOM] Fix access to shared RuntimeService::mNavigatorProperties. 2026-04-23 14:29:43 +02:00
Moonchild 8405bea921 Issue #3060 - Align cookie magic prefix handling with the updated spec.
This adds `__Http-` and `__Host-Http-` magic prefixes, and aligns
our checks with RFC6265bis.

Resolves #3060
2026-04-23 12:07:59 +02:00
Basilisk-Dev feda33fbec Issue #3049 - Allow more LoongArch minimal JIT arguments 2026-04-23 03:36:42 -04:00
Basilisk-Dev 741112d29c Issue #3049 - Support more LoongArch minimal JIT branch ops 2026-04-23 03:31:22 -04:00
Basilisk-Dev afe857516d Issue #3049 - Track LoongArch minimal JIT control flow state 2026-04-23 03:26:35 -04:00
Moonchild 101c6c1ca8 [network] Handle WebSocketChannel::IsPersistentFramePtr correctly. 2026-04-23 09:23:51 +02:00
Basilisk-Dev 6d70806439 Issue #3049 - Handle more LoongArch minimal JIT stack ops 2026-04-23 03:19:20 -04:00
Moonchild 6aed69f637 [network] Hold strong ref in nsDownloader::OnDataAvailable. 2026-04-23 09:14:05 +02:00
Moonchild fc8ca12118 [DOM] Add a death grip. 2026-04-23 08:50:17 +02:00
Moonchild 15faf0c3c6 [network] Use locals for VisitHeader 2026-04-23 08:38:29 +02:00
Moonchild a16543eb90 Merge branch 'master' of https://repo.palemoon.org/MoonchildProductions/UXP 2026-04-23 07:19:00 +02:00
athenian200 eaf6665b70 Issue #3038 - Make sure js/src/configure.in invokes Python 3.
Missed this file while cleaning up Python 2 references in shell scripts. Not sure this is used, but better safe than sorry.
2026-04-23 04:43:28 +00:00
Basilisk-Dev 9907fca0bb Issue #3049 - Add LoongArch minimal JIT div and mod 2026-04-22 23:42:58 -04:00
Basilisk-Dev 145748d74c Issue #3049 - Add LoongArch minimal JIT multiply support 2026-04-22 23:39:10 -04:00
Basilisk-Dev 885aeb2ffa Issue #3049 - Add LoongArch minimal JIT shifts and negation 2026-04-22 23:37:23 -04:00
Basilisk-Dev 0eac54b24e Issue #3049 - Extend LoongArch minimal JIT value handling 2026-04-22 23:33:46 -04:00
Basilisk-Dev f4fbed884b Issue #3049 - Fix LoongArch minimal JIT return path 2026-04-22 23:13:21 -04:00
Moonchild a4b7b7473f [DOM] Update some DOM canvas checks. 2026-04-22 23:54:56 +02:00
Moonchild 4fdaa6a05a Issue #3058 - Part 1: Fix arithmetic issue in ConvertYCbCrToRGB32
The more complex part can be landed later.
2026-04-22 21:23:42 +02:00
Moonchild cfe4a5e353 [NSS] Fix memory leak in NSC_GenerateKey error path. 2026-04-22 16:58:07 +02:00
Moonchild 561002daa4 [NSS] Protect rwSessionCount with slotLock.
Previously, SFTKSlot.rwSessionCount was incremented and decremented
atomically, which meant that there was no way to synchronize reads from it
in NSC_GetTokenInfo. This patch removes the atomic operations but protects
rwSessionCount with SFTKSlot.slotLock.
SFTKSlot.sessionCount is already protected in this way, so this should
have no performance impact.
2026-04-22 16:32:19 +02:00
Moonchild 9a5b0e8fef [NSS] Fix potential integer underflow in tls 1.3.
Fix integer underflow in tls13_AEAD when ciphertext is shorter than tag.
2026-04-22 15:42:40 +02:00
Moonchild 7da9a8d988 [media] Check alpha data pointer instead of length.
`nestegg_packet_additional_data()` can return a non-zero length with a
null-pointer after failure to parse an ID_BLOCK_ADDITIONAL element.
See upstream bug https://github.com/mozilla/nestegg/issues/76
2026-04-22 14:25:22 +02:00
Moonchild 373ada7321 [network] use nsCOMPtr for mRequest in Base Channel's ScopedRequestSuspender 2026-04-22 13:24:12 +02:00
Moonchild 8ebd469720 Issue #2946 - Follow-up: Sanity-check WMF video properties.
Not sure where else to put this under, but it's a WMF HWA related check,
so filing it as a follow-up here to recent work.
Also tag #2949
2026-04-22 12:00:51 +02:00
Moonchild 481c255726 [DOM] More consistently use already-calculated image properties. 2026-04-22 09:20:11 +02:00
Moonchild 3d790dfa0b [layout] Minor frame scroll improvements. 2026-04-22 08:52:48 +02:00
Moonchild 4bd6812d9c [XPCOM] Update list of executable extensions on Windows. 2026-04-22 08:20:43 +02:00
Moonchild 98514f7e45 [NSS] ensure permittedSubtrees don't match wildcards that could be outside
the permitted tree.
2026-04-22 07:51:47 +02:00
Basilisk-Dev b822fa9d33 Issue #2927 - Update mimalloc to 3.3.1 2026-04-21 18:09:24 -04:00
Basilisk-Dev 336c03ff42 Issue #2927 - Update mimalloc to 3.3.0 2026-04-21 18:09:12 -04:00
Moonchild 5e7320f939 Merge pull request 'Issue #3038 - Fix ARM assembler issues in libpixman.' (#3054) from athenian200/UXP:libpixman-arm-fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3054
2026-04-19 22:25:41 +00:00
Jeremy Andrews 0ea174bd02 Issue #3038 - Add explicit UTF-8 decode to check_debug_ranges.
Should be safe because this code path will only fire on Linux and Unix-likes.
Committing directly to master due to it being a one-line change similar to all
the other Python 3 changes.
2026-04-19 13:29:08 -05:00
Jeremy Andrews 4fbecf0e50 Issue #3038 - Fix ARM assembler issues in libpixman.
Probably not strictly related to Python 3 changes, but small enough
that expanding the scope to general UXP build issues on Debian
won't be too bad an idea, since the issue was reported there anyway.
Likely related to binutils updates reporter mentioned.
2026-04-18 16:37:30 -05:00
Moonchild 48eee536a3 Merge pull request 'Backport Performance Improvements from 1379814 and 1431353' (#3051) from Basilisk-Dev/UXP-contrib:bugzilla-backports into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3051
2026-04-18 11:37:01 +00:00
Moonchild 010f09bf1e Merge pull request 'Backport libffi loongarch support' (#3052) from Basilisk-Dev/UXP-contrib:libffi-loongarch into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3052
2026-04-18 07:10:17 +00:00
Basilisk-Dev 771f5dccd5 Issue #3049 - backport libffi loongarch support 2026-04-17 22:19:38 -04:00
athenian200 18a693a8ab Merge pull request 'Completely remove all remaining usages of and references to dbus-glib from our tree' (#3039) from Basilisk-Dev/UXP-contrib:dbus-glib-removal into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3039

I reviewed and tested this PR on Fedora 43 two days ago. Gave it an r+. Was admittedly hoping Travis (our main Linux guy) would confirm my results, but Basilisk-Dev already tested Oracle Linux and I already tested Fedora, so that is likely good enough. Looked at the patch visually and see nothing that could go wrong on Windows or any other platform, since all the changes appear confined to Linux and WebRTC code paths that we don't use for Windows or Mac. Looks correct, and should be low-risk even if there are issues.

**Justification for merge into master on own initiative:**

1. I have enough Linux experience to confirm the patch shouldn't break our official Linux builds.

2. Patch mostly touches WebRTC related stuff in Basilisk-Dev's area of concern, so he is the most qualified to sign off on such changes.

3. The patch has been tested twice.

4. MC is a bit preoccupied with the server move.

5. Travis also appears to have been busy.

6. 10 days have passed since PR was first submitted.

If master breaks or anything unusual happens as a result of this merge, I am prepared to accept the blame and consequences.

Sincerely,

Jeremy Andrews (athenian200)
2026-04-18 01:41:48 +00:00
Basilisk-Dev e10d75b7c2 Issue #3050 - Backport 1431353: Remove off-thread parse thread limit 2026-04-17 11:31:08 -04:00
Basilisk-Dev fd62e7eb91 Issue #3050 - Backport 1379814: Prevent HelperThreads master-task deadlock 2026-04-17 11:30:50 -04:00
Basilisk-Dev 975e6c2618 Issue #3049 - Add property-wrapper fast path to minimal LoongArch JIT 2026-04-16 11:36:57 -04:00
Basilisk-Dev 94ff99c265 Issue #3049 - Cache minimal JIT code on JSScript 2026-04-16 00:01:33 -04:00
Basilisk-Dev 1e1235d1fb Issue #3049 - Guard minimal JIT direct-call fast path 2026-04-15 23:56:36 -04:00
Basilisk-Dev 9ae59f4312 Issue #3049 - Back out unstable minimal JIT direct-call hook 2026-04-15 23:49:50 -04:00
Basilisk-Dev 802110305d Issue #3049 - Call minimal LoongArch JIT directly from interpreter 2026-04-15 23:46:29 -04:00
Basilisk-Dev 008d2b2b01 Issue #3049 - Fix switch scoping in minimal LoongArch JIT 2026-04-15 23:40:18 -04:00
Basilisk-Dev db451f41d4 Issue #3049 - Extend minimal LoongArch JIT for cached counted loops 2026-04-15 23:38:35 -04:00
Basilisk-Dev a00c861f3b Issue #3049 - Use standard JSContext declaration in minimal JIT header 2026-04-15 23:18:51 -04:00
Basilisk-Dev 56035186ff Issue #3049 - Qualify ArrayLength in minimal LoongArch JIT 2026-04-15 23:17:10 -04:00
Basilisk-Dev 73cfb5e9e5 Issue #3049 - Sort minimal LoongArch JIT moz.build entry 2026-04-15 22:56:50 -04:00
Basilisk-Dev 9eed22be4f Issue #3049 - Add minimal LoongArch JIT regression coverage 2026-04-15 22:46:53 -04:00
Basilisk-Dev 11d18319bd Issue #3049 - Add minimal LoongArch JS proof-of-concept JIT 2026-04-15 22:45:58 -04:00
Moonchild d07eaa0c68 Merge pull request 'Added a null-argument guard in uriloader/exthandler/nsExternalHelperAppService' (#3048) from Basilisk-Dev/UXP-contrib:fix-crashes into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3048
2026-04-14 21:30:16 +00:00
Moonchild e6f73d578b Merge pull request 'Backport of bug 1350760 - atomization fast-path improvements' (#3046) from Basilisk-Dev/UXP-contrib:1350760-backport into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3046
2026-04-14 21:29:55 +00:00
Basilisk-Dev 0e825b7a8b Issue #3047 - Added a null-argument guard in uriloader/exthandler/nsExternalHelperAppService
setProtocolHandlerDefaults(null, ...) now returns NS_ERROR_INVALID_ARG instead of dereferencing aHandlerInfo and crashing
2026-04-14 00:16:02 -04:00
Basilisk-Dev d3b337c77a Issue #3045 - backport of bug 1350760 - atomization fast-path improvements 2026-04-14 00:05:30 -04:00
Moonchild 19b79bef4b Merge pull request 'Fix ccache builds and clean up Python 3.14 warning spew.' (#3041) from athenian200/UXP:warning-spew-ccache-fixes into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3041
2026-04-13 20:27:58 +00:00
Moonchild cfbe413763 Merge pull request 'Implement support for lch color space' (#3035) from Basilisk-Dev/UXP-contrib:lch-color into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3035
2026-04-13 20:12:27 +00:00
Moonchild 090242a16e Merge pull request 'Fix stack OOB write in nsLocaleService::GetLocaleFromAcceptLanguage bounds checks' (#3044) from Basilisk-Dev/UXP-contrib:nslocaleservice-mem-bug into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3044
2026-04-13 20:04:28 +00:00
Basilisk-Dev 53bc735ee9 Issue #3043 - Fix stack OOB write in nsLocaleService::GetLocaleFromAcceptLanguage bounds checks 2026-04-10 14:31:54 -04:00
Moonchild dc92189c0f Issue #3042 - Add canvas WebGL context powerPreference
Resolves #3042
2026-04-10 10:25:45 +02:00
Jeremy Andrews 3b0aadb95c Issue #3038 - Fix ccache builds and clean up Python 3.14 warning spew.
None of these resulted in build bustage using our default configuration,
but apparently ccache builds were broken due to a bytes/text issue. Wish
the original reporter had mentioned he was using ccache, but he saved me
a lot of busywork. Changes appear safe across whole range of Python
versions we support.
2026-04-08 02:31:52 -05:00
Basilisk-Dev 12ba8bf083 Issue #3027 - completely remove all remaining usages of dbus-glib from our tree 2026-04-07 15:26:28 -04:00
Moonchild 71a061f3ea Merge pull request 'Remove ia64 from WebRTC in old-configure.in. Replace reference with loongarch64' (#3033) from Basilisk-Dev/UXP-contrib:ia64-old-configure-in into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3033
2026-04-03 06:45:30 +00:00
Moonchild c29de91663 Merge pull request 'Replace all uses of dbus-glib in widget/gtk with direct libdbus calls' (#3032) from Basilisk-Dev/UXP-contrib:dbus-glib-widget into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3032
2026-04-03 06:45:09 +00:00
Moonchild 3be43599e2 Merge pull request 'Modify nsGIOService to call libdbus directly instead of using dbus-glib' (#3028) from Basilisk-Dev/UXP-contrib:dbus-glib into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3028
2026-04-03 06:43:58 +00:00
Moonchild 2f07b7f26e Merge pull request 'Follow-up: Fix 32-bit Windows builds.' (#3037) from athenian200/UXP:fix-32bit-windows-build into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3037
2026-04-03 06:42:23 +00:00
Jeremy Andrews b180acefa2 Issue #2974 - Follow-up: Fix 32-bit Windows builds.
Apparently on 32-bit builds, bytes are passed into the build system in exactly
one more place than on 64-bit builds. The fix is trivial and one-line...
hopefully no one minds me doing this as a quick follow-up to the original
issue, it was very small and missed during testing.
2026-04-02 21:32:32 -05:00
Basilisk-Dev 0cd75d7bee Issue #3003 - Add CSS lch() color parsing support 2026-04-02 17:14:03 -04:00
Basilisk-Dev f17894ba65 Issue #3003 prerequisite - Split non-sRGB CSS color helpers out of nsCSSParser 2026-04-02 17:13:51 -04:00
Basilisk-Dev 656a76c24e Issue #3007 - remove unneeded comment 2026-04-02 16:27:52 -04:00
Basilisk-Dev 20a0b94fbf Issue #3007 and #2897 followup - remove ia64 from WebRTC in old-configure.in. Replace reference with loongarch64 2026-04-02 16:19:55 -04:00
Basilisk-Dev c037f1194f Issue #3027 - remove all uses of dbus-glib from widget/ 2026-04-02 15:06:41 -04:00
Moonchild 5fb569520e [network] Ignore non-compliant http server header. 2026-04-02 15:24:32 +02:00
Moonchild 0054f425d9 [NSS] Update NSS to 3.90.9.1 (custom) 2026-04-02 14:35:17 +02:00
Moonchild 60a96d9cd2 [gfx] Use local statics for harfbuzz callback pointers
This ensures thread-safe initialization.
2026-04-02 13:27:11 +02:00
Moonchild 323338eb09 Revert "[network] Ignore non-compliant http server header."
This reverts commit d2a4890384.
2026-04-01 20:57:56 +02:00
Moonchild d2a4890384 [network] Ignore non-compliant http server header. 2026-04-01 16:15:19 +02:00
Moonchild 56a2627104 [XPCOM] Add more validation to SnappyUncompressInputStream 2026-04-01 14:49:47 +02:00
Moonchild 8811a48b8a CLOBBER for python 3 migration 2026-04-01 14:24:42 +02:00
Moonchild 5f03b88dd3 Merge pull request 'Switch to Python 3.' (#3024) from athenian200/UXP:python3-clean into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3024
2026-04-01 11:57:01 +00:00
Moonchild 2e18e11f2b No issue - Add convolver sanity check 2026-04-01 13:52:32 +02:00
Jeremy Andrews 02ec45c715 Issue #2974 - Part 70: Clean up PPC code so we can build on PPC.
Normally we'd want to do this as part of clean-up for Android-related
enums we don't use or making mozbuild syntax more consistent, but
Python 3's strict enforcement of enums kinda forced my hand here.
In principle, it's a little out of scope, but in practice the "scope"
is practically every Python file in the build system at this
point, unfortunately including mozbuild.
2026-03-30 15:03:49 -05:00
Jeremy Andrews 3b21b1bc49 Issue #2974 - Part 69: Attempt to deal with EnumString issues.
Improve logger handling when they happen, also try to keep EnumString
objects out of gyp where we know not all enums will match our internal list.
2026-03-29 16:16:54 -05:00
Basilisk-Dev 663ec3d230 Issue #3027 - modify nsGIOService to call libdbus directly instead of using dbus-glib 2026-03-28 15:41:13 -04:00
Jeremy Andrews c36a9c674e Issue #2974 - Part 68: Fix a regex warning and improve Python check.
Trying to get this cleaned up...
2026-03-28 11:13:48 -05:00
Jeremy Andrews 4ff3a75296 Issue #2974 - Part 67: Last-minute FreeBSD fixes.
Something went wrong on FreeBSD... I hope I don't have to go back
to the drawing board again.
2026-03-28 11:13:20 -05:00
Moonchild 5871ce0b85 Merge pull request 'Implement TypedArray.prototype.toSorted' (#3025) from Basilisk-Dev/UXP-contrib:typedarray-tosorted into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3025
2026-03-28 15:07:05 +00:00
Moonchild 6237c680ca Merge pull request 'Cleanup obsolete XPCOM Support' (#3026) from Basilisk-Dev/UXP-contrib:cleanup-xpcom into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3026
2026-03-28 15:05:35 +00:00
Basilisk-Dev facdbf7bc0 Issue #3007 - remove VERY obsolete HTML files in XPCOM 2026-03-28 09:08:54 -04:00
Basilisk-Dev 8f54050907 Issue #3007 - remove 32-bit SPARC OpenBSD support in XPCOM 2026-03-28 08:50:38 -04:00
Basilisk-Dev 2fbe032ee9 Issue #3007 - remove some obsolete HTML files in xpcom 2026-03-28 08:46:49 -04:00
Basilisk-Dev a8a68383cb Issue #3007 - Remove bitrig support from XPCOM. 2026-03-28 08:44:21 -04:00
Basilisk-Dev e3f67c01a2 Issue #3007 - remove remaining HP-UX references in XPCOM 2026-03-28 08:39:01 -04:00
Moonchild a1fe345c98 No issue - Add 10.4 and 26.* SDK versions to KNOWN_SDK_VERSIONS
For Mac builds as requested by dbsoft.
Sorted the entries by major version for readability.
2026-03-28 08:37:42 +01:00
Basilisk-Dev a1caa316a7 Issue #2551 - implement TypedArray.prototype.toSorted 2026-03-27 13:35:04 -04:00
Moonchild 1011058248 Merge pull request 'Update document.currentScript implementation to align with current spec' (#3021) from currentScript-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3021
2026-03-26 14:59:30 +00:00
athenian200 b9842306a4 merge upstream 2026-03-26 02:29:44 +00:00
Jeremy Andrews 5d63edee09 Issue #2974 - Part 66: client.mk and configure.in shouldn't invoke Python 2.
This was unneeded on my system because I made sure the build system couldn't
find Python 2 on the PATH, forcing it to use Python 3. Many developers may
be in environments with both available, so this should be changed.
2026-03-25 21:06:01 -05:00
Moonchild dc9a5cd350 Merge pull request 'Implement window.MathMLElement global.' (#3022) from dbsoft/UXP:mathmldom-work6 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3022
Reviewed-by: Moonchild <moonchild@palemoon.org>
2026-03-25 21:52:41 +00:00
Jeremy Andrews 017e021c37 Issue #2974 - Part 65: Last-minute Linux fixes.
Forgot to test packaging on Linux this whole time.

Also, kept forgetting to commit these random changes to mozbuild
files that just refer to GNU/kFreeBSD consistently as kFreeBSD.

Not because it's the right thing to call it, but because it's
what we have in the enums that works consistently right now.
And ripping out support entirely would be out of scope.
2026-03-25 11:47:07 -05:00
Jeremy Andrews 12641659e6 Issue #2974 - Part 64: Use venv in VirtualenvManager.
I felt like this was a cheat when I did it in my hacky build, and
seriously thought ChatGPT was just suggesting this because it was too
lazy to figure out how to fix virtualenv. I learned several things:

- The approach virtualenv 15.x uses to simulate a Python environment
  does not work after Python 3.10. So we'd need a newer virtualenv
  anyway, which has different quirks. I got it to "work" on Python 3.11...
  but only by copying (almost) the whole stdlib and a bunch of DLL files to
  bootstrap it. Which is no longer a virtualenv, it's... just an env.

- VirtualenvManager is Mozilla's code, not a part of virtualenv itself.
  Which means everything we need is now contained within our own code,
  no third-party module like virtualenv required.

- Our build system doesn't depend on virtualenv quirks at all. In
  a pinch, if you copy all the .pth files it generates into the
  system's site-packages directory (after turning them all into
  absolute paths), it would even run under system Python. It really
  only "needs" virtualenv to find its own modules because of how it
  was designed.

- I've tested venv extensively across a wide range of Python 3 versions.
  not a single one has any issues or behaves in a noticably different
  fashion from a build based on a repaired virtualenv extended up to
  Python 3.10, which means no regressions were introduced by the switch.

- Python's devs want the venv route over the way virtualenv did things.
  PEP 405 was very critical of virtualenv's design, and PEP 587 created a
  a new configuration mechanism precisely so no application would have to
  do what virtualenv did to get isolation without copying
  the whole interpreter into another directory.

- Mozilla also did something similar in BZ 1766497, so they clearly
  thought venv had enough features for their build system.
2026-03-25 04:33:16 -05:00
Jeremy Andrews 16f351a14c Issue #2974 - Part 63: Bring in lex and yacc from "dirty" migration.
These versions work on 3.14, my attempt at a cleaner solution did not.
Besides, they apparently were designed for Python 3 to start with.
The mid-to-late parts of that migration were mostly correct, it seems.

Ref: https://repo.palemoon.org/athenian200/UXP/commit/4117ccfc36284845cb4c75cf4e3d5a8997417225#diff-48dc6c6013e343ba4e196819d2cd873b3d576140
2026-03-25 01:27:12 -05:00
Brian Smith 80c7d08eee Issue #2548 - Part 5 - Implement the HTMLOrForeignElement mixin.
https://bugzilla.mozilla.org/show_bug.cgi?id=1577660
Add 'preventScroll' option to HTMLElement's, SVGElement's and XULElement's 'focus' method.
https://bugzilla.mozilla.org/show_bug.cgi?id=1374045
2026-03-24 19:38:41 -05:00
Brian Smith a8c59c38d4 Issue #2548 - Part 4 - Fix some missed changes for ElementCSSInlineStyle.
Introduce GlobalEventHandlers/DocumentAndElementEventHandlers/ElementCSSInlineStyle mixin.
https://bugzilla.mozilla.org/show_bug.cgi?id=1579457
2026-03-24 19:38:41 -05:00
Brian Smith 9bf46d80f1 Issue #2548 - Part 3 - Fix some MathML issues encountered since WebIDL works.
Add an nsContentUtils API for getting the CallerType of a JSContext.
https://bugzilla.mozilla.org/show_bug.cgi?id=1316616
Also added a Fetch() change that was not in the Mozilla patch.
2026-03-24 19:38:41 -05:00
Brian Smith 638c7f07f7 Issue #2548 - Part 2 - Collection of WebIDL parsing updates in an attempt to fix partial interface mixin error.
We should ensure, at build-time, that partial interfaces are defined in the same file as the interface they extend.
Since our build system doesn't really support correct dep builds if they're placed in a different file.
https://bugzilla.mozilla.org/show_bug.cgi?id=1333117
WebIDL: Better error message for trying to inherit from a mixin.
https://bugzilla.mozilla.org/show_bug.cgi?id=1575384
Fix webidl identifier conflicts involving typedefs to produce saner exceptions.
https://bugzilla.mozilla.org/show_bug.cgi?id=1531623
Disallow nullable types for WebIDL constants.
https://bugzilla.mozilla.org/show_bug.cgi?id=1535647
Add support for extended attributes on types in Web IDL
https://bugzilla.mozilla.org/show_bug.cgi?id=1359269
Allow LenientFloat to be only in a specific overload
https://bugzilla.mozilla.org/show_bug.cgi?id=1020975
2026-03-24 19:38:41 -05:00
Brian Smith 8e01b2d181 Issue #2548 - Part 1 - Implement MathML DOM and pre-requisites.
https://bugzilla.mozilla.org/show_bug.cgi?id=1571487
Introduce interface mixins.
https://bugzilla.mozilla.org/show_bug.cgi?id=1414372
Switch XPathEvaluator to using IDL mixins and remaining users of IDL "implements" over to mixin syntax.
https://bugzilla.mozilla.org/show_bug.cgi?id=1574195
Introduce GlobalEventHandlers/DocumentAndElementEventHandlers/ElementCSSInlineStyle mixin.
https://bugzilla.mozilla.org/show_bug.cgi?id=1579457
Introduce DocumentAndElementEventHandlers to more closely align with the HTML spec.
https://bugzilla.mozilla.org/show_bug.cgi?id=1330457
Remove the use of IsCallerChrome in FetchRequest.
https://bugzilla.mozilla.org/show_bug.cgi?id=1335368
2026-03-24 19:38:41 -05:00
Jeremy Andrews 235db83ca0 Issue #2974 - Part 62: Replace cgi.escape with html.escape.
The cgi module was removed from Python 3.14. html module has almost
the exact same thing, and this was apparently used to format html
rather than cgi anyway, so it's probably more correct.

Ref: PEP 594
https://peps.python.org/pep-0594/#cgi
2026-03-24 18:39:27 -05:00
Moonchild 3a4dc8de41 Issue #3020 - Clear currentScript after running microtasks
Per HTML spec:

`document.currentScript` Returns null if the Document is not currently
executing a script or SVG script element (e.g., because the running
script is an event handler, or a timeout), or if the currently executing
script or SVG script element represents a module script.

---

It's ambiguous about whether, for micro tasks, it should return null.
(This section is labelled as "non-normative", as well.)
However, mainstream browsers handle this differently and don't return
null after running microtasks, so we need to clear this and not assume
null persistently, and run the auto-updater for it, regardless if
it's a module or not.
2026-03-24 20:44:13 +01:00
Moonchild 18595b01b6 Issue #3020 - Update currentScript when dealing with shadow DOM.
`currentScript` should be null when evaluating scripts from shadow DOM.
2026-03-24 15:53:04 +01:00
Moonchild f7215fc685 Issue #3020 - document.currentScript should be null in modules
This is done correctly in `EvaluateScript`, but `CreateModuleScript` was
still setting currentScript to an element.
2026-03-24 15:50:34 +01:00
Moonchild 08521d4651 Merge pull request 'Remove Itanium/ia64 support from xpcom' (#3018) from Basilisk-Dev/UXP-contrib:xpcom-itanium-cleanup into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3018
2026-03-24 11:18:04 +00:00
Jeremy Andrews 160e956ab5 Issue #2974 - Part 61: Python 3.14 AST changes.
This was done sloppily in my initial work, this is a bit more clean.

Ref: https://docs.python.org/3/deprecations/pending-removal-in-3.14.html
2026-03-24 05:11:44 -05:00
Jeremy Andrews 2cecbc0e7f Issue #2974 - Part 60: Last fixes for virtualenv.
After 3.10, it won't work anymore... thankfully lack of virtualenv
wasn't the cause of busted symlinks on Linux after all.
2026-03-24 05:04:58 -05:00
Moonchild 00b177d75f Merge pull request 'Fix Shadow DOM spellchecker crash' (#3014) from spellcheck-shadowdom-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3014
2026-03-23 23:48:49 +00:00
Jeremy Andrews 11226f5308 Issue #2974 - Part 59: Make backend file generation more deterministic.
This led to a lot of false positives while trying to resolve the other
issue. The changes don't seem to cause harm, so I'd like to keep them...
they make debugging easier.
2026-03-23 12:14:25 -05:00
Jeremy Andrews 8ff0eb3b1c Issue #2974 - Part 58: Fix regexes and lexer on Python 3.11+
Newest versions of Python 3 do not like lex.py or the regexes used by
xpidl. These workarounds allow it to work anyway.
2026-03-23 12:09:24 -05:00
Jeremy Andrews 2bb084e824 Issue #2974 - Part 57: Prevent backend regeneration loop.
Sometimes Python 3.11+ keeps thinking the backend has changed due to
excessively precise timestamps or something. This workaround makes sure
that make doesn't regenerate the backend more than once per run.
2026-03-23 12:07:25 -05:00
Moonchild a89a071049 Merge pull request 'implement TypedArray.prototype.with' (#3019) from Basilisk-Dev/UXP-contrib:typedarray-with into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3019
2026-03-23 15:18:47 +00:00
Basilisk-Dev f9dc8a091a Issue #2551 - implement TypedArray.prototype.with 2026-03-23 08:50:01 -04:00
Basilisk-Dev 944299ed6c Issue #3007 - Remove Itanium/ia64 support from xpcom 2026-03-23 08:15:51 -04:00
Moonchild 0e1441155c Merge pull request 'Issue #3016 - allow url.CanParse to use custom-scheme bases to match current spec' (#3017) from Basilisk-Dev/UXP-contrib:url-canparse-spec-compliance into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3017
2026-03-23 05:23:18 +00:00
Moonchild 7bf5dfe4e4 Merge pull request 'Modify valgrind logging in libavutil to require MOZ_VALGRIND' (#3010) from Basilisk-Dev/UXP-contrib:ffvpx-valgrind into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3010
Reviewed-by: Moonchild <moonchild@palemoon.org>
2026-03-22 21:23:00 +00:00
Basilisk-Dev d4c34fc9f7 Issue #3009 - updated libavutil to keep HAVE_VALGRIND_VALGRIND_H as the primary gate, with MOZ_VALGRIND added inside it 2026-03-22 16:57:34 -04:00
Basilisk-Dev 6811005551 Issue #3016 - allow url.CanParse to use custom-scheme bases to match current spec 2026-03-22 16:48:43 -04:00
Moonchild 464cefa127 Merge pull request 'Attempt to fix Cloudflare image resizing' (#3012) from wuggy/UXP:master into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3012
Reviewed-by: Moonchild <moonchild@palemoon.org>
2026-03-22 14:42:51 +00:00
Moonchild c94a1ab5d3 Merge pull request 'Issue #3007 - remove itanium support and references from webrtc' (#3015) from Basilisk-Dev/UXP-contrib:webrtc-itanium-cleanup into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3015
2026-03-22 14:40:10 +00:00
Jeremy Andrews c089567185 Issue #2974 - Part 56: Full Python 3.10 support.
Deal with rU full deprecation and collections.abc move being enforced.
2026-03-22 05:18:14 -05:00
Jeremy Andrews 62397ff43e Issue #2974 - Part 55: Remove pip from build system, fix Linux builds.
pip was apparently breaking Linux builds and I didn't even notice. Turns out
virtualenv doesn't even need pip, and Python ships its own pip so I don't know
why this was even needed...
2026-03-22 04:53:47 -05:00
Basilisk-Dev 8aa5b35605 Issue #3007 - remove itanium support and references from webrtc 2026-03-22 01:05:18 -04:00
Basilisk-Dev 25dd1fb31a Issue #3009 - restore valgrind functionality in libavutil and hide behind MOZ_VALGRIND instead 2026-03-21 22:52:25 -04:00
wuggy d8cf2c8b44 Cloudflare Image Resizing fix take 3 part 2 (all.js) 2026-03-21 13:28:57 +00:00
wuggy 938c5d08d4 Cloudflare Image Resizing fix take 3 part 1 (main fixup) 2026-03-21 13:26:34 +00:00
Moonchild 7fca2b8de3 Issue #2739 - Follow-up: remove missed configure bits.
We still accepted {en|dis}able-jxl as a valid old-configure option and
there were a few leftover pref conditionals.
2026-03-21 11:57:15 +01:00
Jeremy Andrews 458f60d071 Issue #2974 - Part 54: Replace distutils.strtobool with custom implementation.
Another sys.path.append hack in virtualenv made necessary by an stdlib
deprecation. Sigh.

Ref: BZ 1877347
2026-03-20 20:21:45 -05:00
Jeremy Andrews 63752e83a5 Issue #2974 - Part 53: Replace distutils.sysconfig with sysconfig.
Fairly straightforward. Not too many problems here.
2026-03-20 18:09:10 -05:00
Jeremy Andrews 033b7f5219 Issue #2974 - Part 52: Read /etc/os-version manually to fill in missing logic.
There are third-party packages that will do this... but every distro
we support uses /etc/os-version now, and we only check in one place.
2026-03-20 14:36:23 -05:00
wuggy ef19ad3ffd Cloudflare Image Resizing fix take 2
Better documentation and about:config pref controlled (network.url.cloudflare_image_resizing.enabled)
2026-03-20 19:02:52 +00:00
Jeremy Andrews 9c10d36094 Issue #2974 - Part 51: Replace imp with importlib.
imp was actually still available up until Python 3.9 or so. Ripping
it out made me go through the headache of debugging our import logic.
Granted, it was deprecated long ago and there was plenty of warning, but
since we are doing the migration now it's all hitting at once if we want
to support any semi-modern Python.
2026-03-20 13:29:08 -05:00
Moonchild ab88527fe6 Issue #3011 - Part 3: Handle edge case for spellchecking.
Make spellchecking work in Shadow DOM after anchor navigates away from it.
2026-03-20 17:07:55 +01:00
Moonchild 6c0ff1881a Issue #3011 - Part 2: Switch spellchecker root to Shadow DOM.
Set the root for spelling checker to shadow root if the contenteditable
nodes are in the shadow DOM. Bail if the position can't be set properly.
2026-03-20 14:45:11 +01:00
Moonchild 1e7f4c8474 Issue #3011 - Part 1: Add As{Text|Html}Editor() and AsEditorBase()
This adds helper functions to get specific types of content editors (if
possible) through the nsIEditor interface, as opposed to doing manual
casting and the ad hoc `GetHTMLEditor()` function.

Helper functions are spread out over multiple headers due to the
circular dependency issues that would be triggered otherwise.
2026-03-20 13:26:18 +01:00
wuggy fdf491d4ec Cloudflare Image Resizing fix 2026-03-20 10:18:45 +00:00
Jeremy Andrews 19f0115559 Issue #2974 - Part 50: Remove distutils.version and replace.
Python no longer provides any version-related utilities in stdlib.

Did a thorough grep and made absolutely sure to replace every last
use. This was the work I was avoiding during my first port...

Ref: PEP 632, BZ 1777414, BZ 1858065, BZ 1766085
2026-03-20 04:14:03 -05:00
Basilisk-Dev 1f4cceca43 Issue #3009 - Remove valgrind logging in libavutil so that valgrind is no longer required at build time 2026-03-18 19:44:28 -04:00
Moonchild 542eaca577 Merge pull request 'LoongArch Support Followup - Do not hardcode jemalloc page size on LoongArch' (#3006) from Basilisk-Dev/UXP-contrib:loongarchpagesize into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3006
2026-03-18 23:02:13 +00:00
Basilisk-Dev 1cb6f56418 Issue #2897 followup - Do not hardcode jemalloc page size on LoongArch
Loongarch can run on either a 4k or 16k page size
2026-03-18 18:14:27 -04:00
Moonchild a503e883d9 Merge pull request 'Don't attempt on-stack replacement for TLA modules when interpreter loop encounters JSOP_LOOPENTRY' (#3002) from jobbautista9/UXP:2229-jsop_loopentry into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3002
2026-03-18 15:21:31 +00:00
Moonchild 347681c219 Merge pull request 'Implement array.prototype.toSpliced and array.prototype.with' (#3005) from Basilisk-Dev/UXP-contrib:arraybycopy into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/3005
2026-03-17 20:31:34 +00:00
Jeremy Andrews 5188aa4874 Issue #2974 - Part 49: Various logging fixes.
Try to ensure error messages from mozbuild are readable...
2026-03-17 03:42:38 -05:00
Jeremy Andrews 4e11fab9b4 Issue #2974 - Part 48: Python 3.8+ related fixes.
Got everything working under older Python 3, to deal with fewer issues at once.
Now the following had to be done:

- time.clock had to be replaced with time.process_time
- Drive letters now need explicit normalization because they are uppercase
by default (was the reason why I had to turn everything into a relpath before).
- Virtualenv works, but needs a couple extra modules because of new includes
in newer Python 3 versions.
2026-03-17 03:10:33 -05:00
Jeremy Andrews 8cb419166a Issue #2974 - Part 47: Fix packaging.
Tested ./mach package, ./mach mozpackage, ./mach installer, and ./mach mar
Everything should work.
2026-03-16 19:28:14 -05:00
Basilisk-Dev 2984237f4f Issue #2551 - implement array.prototype.toSpliced 2026-03-16 14:33:50 -04:00
Basilisk-Dev 1c4a73de71 Issue #2551 - implement array.prototype.with 2026-03-16 14:27:02 -04:00
Jeremy Andrews e431c0cb13 Issue #2974 - Part 46: Linux-related fixes.
Also moved the Windows version of my NSDISTMODE=copy thing where
I meant to have it in the first place, it was misplaced before.
2026-03-16 05:25:34 -05:00
Job Bautista d27df4d88f Issue #2229 - Follow-up: Don't attempt on-stack replacement for TLA modules
When interpreter loop encounters JSOP_LOOPENTRY, we should not let TLA modules
enter baseline JIT.
2026-03-16 11:28:25 +08:00
Jeremy Andrews 889a1c39c5 Issue #2974 - Part 45: Miscellaneous build system tweaks.
Most notably, these tweaks were needed to fix ./mach build faster.
Also chose to set NSDISTMODE=copy by default for Windows, since
wildcards will be symlinks otherwise. This will always fail
because our binaries have the symlinked MSVC DLLs in their import
tables, and Windows loader silently fails in this situation.
2026-03-15 19:01:00 -05:00
Jeremy Andrews 6c77f329da Issue #2974 - Part 44: Make ppCheck Python 3 compatible.
I also wound up having it point out files that can't be decoded as UTF-8.
Not sure if it was the right move, can remove that feature if it's not wanted.
2026-03-15 18:51:24 -05:00
Jeremy Andrews 0e0823a4df Issue #2974 - Part 43: Import random NSIS installer file from Mozilla.
This file was already ported to Python 3 by them, and hasn't seen breaking
changes, so it was safe to use.

Ref: BZ 1633016, BZ 1751990
2026-03-15 15:58:44 -05:00
Jeremy Andrews f335e05ff6 Issue #2974 - Part 42: Jar and preprocessor changes.
For strings/bytes issue, used a similar strategy to what I saw in our old
layout code, having a flag set to be false by default as it's passed from
function to function, eventually being activated and doing something at
a specific point in the loop if it's ever true. The datetime stuff is
simply because in Python 3, integer comparisons were failing so I had
to make both sides be an integer Unix timestamp.
2026-03-15 15:49:04 -05:00
Jeremy Andrews 74762d6567 Issue #2974 - Part 41: Update configobj to version 5.
This version is compatible with Python 3 already.
2026-03-14 20:12:48 -05:00
Jeremy Andrews 1545a33858 Issue #2974 - Part 40: Miscellaneous build system tweaks prior to new configobj.
More small tweaks mostly related to decoding/encoding, some not even related to
failures but are more anxiously done in anticipation of something going wrong.
Even though these are called commits, I often revise little things several
times because I am not sure what the most robust approach would be.
2026-03-14 19:57:16 -05:00
Jeremy Andrews 1801a9148d Issue #2974 - Part 39: Fix early WebIDL generation issues. 2026-03-14 19:55:21 -05:00
Jeremy Andrews deff79b573 Issue #2974 - Part 38: Fix early IPDL generation issues.
This is fewer issues than I remember encountering last time... 2to3 must have
helped. Though I won't hold my breath that newer Python 3 will be this
forgiving when I get around to that near the end.
2026-03-14 19:54:14 -05:00
Jeremy Andrews 0dbe65d6af Issue #2974 - Part 37: Fix malformed track files.
The issue was essentially that the fourth field was being stripped due to the
way Python 3 handles text. I solved the problem originally with a "pad" hack to
add the extra space back in, since that actually gets interpreted as a reference
to the current directory. The eventual solution mostly involved using . instead of
a blank space to refer to the current directory. Don't know if the other stuff
was needed, may remove later if it causes any issues.
2026-03-14 18:51:21 -05:00
Moonchild 9562888e77 Merge pull request 'Flatten nested CSS to standard CSS before parsing (fix sites using nested CSS)' (#2999) from Basilisk-Dev/UXP-contrib:nested-css into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2999
Reviewed-by: Moonchild <moonchild@palemoon.org>
2026-03-14 18:24:58 +00:00
Moonchild 5536b38401 Merge pull request 'Add AudioNode constructors' (#2988) from audionode-constructors-pr into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2988
2026-03-14 18:19:08 +00:00
Moonchild c011b271a1 Issue #3001 - Restore table reference frame call.
While the result value was only used for debug purposes, the function
`FindReferenceFrameFor` also updates the reference frame for use
outside of debug builds. The opaque double use of this function
was not clear from code inspection and it was erroneously removed.

Resolves #3001
2026-03-14 19:16:41 +01:00
Basilisk-Dev c21fb81d3e Issue #2862 - css nesting pref true by default 2026-03-14 13:23:54 -04:00
Basilisk-Dev 5a3dcf5939 Issue #2862 - Remove unused vars in CSS flattener 2026-03-14 13:22:59 -04:00
Jeremy Andrews 04e6f86a60 Issue #2974 - Part 36: Fix XPIDL and XPT generator.
Most of this is taken from my original port, but I did revisit xpt.py
and rework the way cmp was translated to Python 3 by using a
ComparableMixin class.
2026-03-14 01:27:31 -05:00
Moonchild 1d709fe942 Merge pull request 'Update expat source to 2.7.4 and apply local patches' (#2998) from jobbautista9/UXP:expat-2.7.4 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2998
2026-03-13 17:06:21 +00:00
Moonchild e55c16146f Issue #2993 - Follow-up: Clobber. 2026-03-13 16:19:56 +01:00
Basilisk-Dev 997a9a3e13 Issue #2862 - Change tests from lowering to flattening 2026-03-13 09:01:56 -04:00
Basilisk-Dev 008f38579c Issue #2862 - Change code references from CSS lowering to CSS flattening 2026-03-13 08:58:18 -04:00
Basilisk-Dev d943e86b28 Issue #2862 - handle more edge cases in css lowering 2026-03-12 08:44:03 -04:00
Basilisk-Dev 3f2d707a83 Issue #2862 - more tests files for nested css 2026-03-12 08:43:58 -04:00
Basilisk-Dev b145a93ad6 Issue #2862 - Split the css lowering functionality out to a separate file for easier maintenance 2026-03-12 08:43:53 -04:00
Basilisk-Dev 3056028db4 Issue #2862 - Fix a few nested selectors 2026-03-12 08:43:48 -04:00
Basilisk-Dev b4dac14720 Issue #2862 - Modify the css lowerer so that the lowering pass now recognizes bare type-selector nested rules and combinator-led cases 2026-03-12 08:43:42 -04:00
Basilisk-Dev 76694b956f Issue #2862 - add initial nested css test file 2026-03-12 08:43:33 -04:00
Basilisk-Dev 9fab5b3e3c Issue #2862 - Initial attempt at a css lowering 2026-03-12 08:43:23 -04:00
Job Bautista d54491fdd0 Issue #2997 - Update expat source to 2.7.4 and apply local patches. 2026-03-12 13:50:10 +08:00
Moonchild 00c3c3a546 Merge pull request 'Only use SVE instructions on Apple Silicon (disable on aarch64 Linux)' (#2994) from Basilisk-Dev/UXP-contrib:vpx-sve into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2994
2026-03-11 20:50:08 +00:00
Moonchild 1da5c344be Merge pull request 'Implement TypedArray.prototype.toReversed()' (#2996) from Basilisk-Dev/UXP-contrib:typed-toReversed into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2996
2026-03-11 20:28:21 +00:00
Moonchild 76d66b5dad Merge pull request 'Work around macOS WebGL crash on unconsumed vertex attrib arrays' (#2995) from Basilisk-Dev/UXP-contrib:webgl-crash into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2995
2026-03-11 20:23:20 +00:00
Basilisk-Dev e502735eb2 Issue #2993 - only use SVE instructions on Apple Silicon (disable on aarch64 Linux) 2026-03-11 15:07:09 -04:00
Basilisk-Dev edfebe1b99 Issue #2551 - Implement TypedArray.prototype.toReversed() 2026-03-11 15:04:16 -04:00
Moonchild 250e4f75da Merge pull request 'Avoid empty replacements in macro expansion.' (#2986) from 2978 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2986
2026-03-11 19:03:59 +00:00
Basilisk-Dev 53f1bdd9c2 Issue #2978 - Work around macOS WebGL crash on unconsumed vertex attrib arrays 2026-03-11 14:25:20 -04:00
Jeremy Andrews 214fc9bdfb Issue #2974 - Part 35: FileAvoidWrite changes and other tweaks after new gyp.
Most notable changes are the ugly stuff I had to do in FileAvoidWrite and
everything that interacts with it, which is where I expect a lot future pain
and revision to enter the picture from, if I have to revisit this part of the
work again.
2026-03-11 02:17:23 -05:00
Jeremy Andrews 3dd092c8d8 Issue #2974 - Part 34: Import new version of gyp, ensure it finds six.
Dropping this in actually just works for NSS (no promises this will hold true
with Basilisk), because gyp's design is a lot more conservative and consistent
compared with upstream Mozilla code. For some reason, the new gyp couldn't find
the six library it relies on that's already in our tree, and the library also
needed a small update. Also incorporates a few simple Python 3 tweaks to our
gyp_reader code.
2026-03-11 01:59:39 -05:00
Moonchild ade298d0a7 Merge pull request 'Issue #2990 - implement object.GroupBy' (#2991) from Basilisk-Dev/UXP-contrib:objectgroupby into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2991
2026-03-10 15:24:08 +00:00
Basilisk-Dev 387b01ce14 Issue #2990 - implement object.GroupBy 2026-03-10 10:45:54 -04:00
Moonchild 47d2094329 Merge pull request 'Issue #2926 - Tweak mimalloc performance tunables' (#2989) from Basilisk-Dev/UXP-contrib:mimalloc-tweaks into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2989
2026-03-10 13:48:48 +00:00
Basilisk-Dev 43f9a8e1f0 Issue #2926 - Tweak mimalloc performance tunables:
MI_DEFAULT_PURGE_DECOMMITS=0 - fewer costly kernel operations and fewer immediate recommit/zero-fill penalties on reuse.

MI_DEFAULT_PURGE_DELAY=500 - short-lived allocation bursts can reuse pages directly, avoiding purge/reclaim ping-pong.

MI_DEFAULT_GENERIC_COLLECT=50000 - lower background allocator housekeeping overhead on hot allocation paths.
2026-03-10 09:08:14 -04:00
Moonchild 30e287371f Issue #2987 - Part 19: Add MediaStreamAudioDestinationNode constructor. 2026-03-10 11:19:11 +01:00
Moonchild a9246d7b28 Issue #2987 - Part 18: Add MediaStreamAudioSourceNode constructor. 2026-03-10 11:19:05 +01:00
Moonchild db1d73f05d Issue #2987 - Part 17: Add MediaElementAudioSourceNode constructor. 2026-03-10 11:18:39 +01:00
Moonchild 72b14ea177 Issue #2987 - Part 16: Add AudioBuffer constructor. 2026-03-10 11:18:02 +01:00
Moonchild 430c4a3f79 Issue #2987 - Part 15: Add PeriodicWave constructor. 2026-03-10 11:17:57 +01:00
Moonchild 93ed92f63b Issue #2987 - Part 14: Add OscillatorNode constructor. 2026-03-10 11:17:53 +01:00
Moonchild 4a1312c060 Issue #2987 - Part 13: Add DynamicsCompressorNode constructor. 2026-03-10 11:17:47 +01:00
Moonchild 303e1ecf34 Issue #2987 - Part 12: Add ChannelMergerNode constructor. 2026-03-10 11:17:42 +01:00
Moonchild 57b0e4a65b Issue #2987 - Part 11: Add ChannelSplitterNode constructor. 2026-03-10 11:17:38 +01:00
Moonchild 804a301068 Issue #2987 - Part 10: Add ConvolverNode constructor. 2026-03-10 11:17:32 +01:00
Moonchild aedb8a4d08 Issue #2987 - Part 9: Add StereoPannerNode constructor. 2026-03-10 11:17:27 +01:00
Moonchild 93072ab51e Issue #2987 - Part 8: Add PannerNode constructor. 2026-03-10 11:17:22 +01:00
Moonchild ca11a325bd Issue #2987 - Part 7: Add WaveShaperNode constructor. 2026-03-10 11:17:17 +01:00
Moonchild 3b088af0b1 Issue #2987 - Part 6: Add IIRFilterNode constructor. 2026-03-10 11:17:12 +01:00
Moonchild 09e52646e9 Issue #2987 - Part 5: Add BiQuadFilterNode constructor. 2026-03-10 11:17:07 +01:00
Moonchild 26ca6f4fcc Issue #2987 - Part 4: Add DelayNode constructor. 2026-03-10 11:17:02 +01:00
Moonchild b467d710ac Issue #2987 - Part 3: Add GainNode constructor. 2026-03-10 11:16:56 +01:00
Moonchild f4f11fada8 Issue #2987 - Part 2: Add AudioBufferSourceNode constructor. 2026-03-10 11:16:49 +01:00
Moonchild 43b3b47426 Issue #2987 - Part 1: Add AnalyserNode constructor. 2026-03-10 11:16:43 +01:00
Jeremy Andrews cb559a5eb2 Issue #2974 - Part 33: Miscellaneous build system tweaks prior to new gyp.
Not really sure how to categorize these, except they are either
language-related cleanups, small bug fixes, or are careful to decode
things using the preferred OS encoding where reasonable. A lot of UTF-8 only
worked by luck because it only tried to decode ASCII bytes, or had good
replacements for bad chars due to explicit error handling.

I'm basically just commiting the last state before I update gyp, because
I can't really proceed without updating it, and that's a big enough step I want
it to have its own commit... and also don't want it mixed in with other stuff.
2026-03-09 23:28:50 -05:00
Jeremy Andrews 313dcc69fa Issue #2974 - Part 32: Fix configure sandbox builtins, update encoding guards. 2026-03-09 18:40:53 -05:00
Jeremy Andrews 367505a1b0 Issue #2974 - Part 31: Fix indented_repr and TypedTuple, remove encode.
indented_repr and encode were introducing corruption into config.status
blocking the build. TypedTuple's logic needed to change a bit due to Python 3.
encode can just be removed because it does more harm than good now.
indented_repr was fixed. Note it was always limited to ASCII range because
that's the "safe zone" CP1252 and UTF-8 have in common. Investigate replacing
this with pprint and repr if we ever need Unicode in config.status...
2026-03-09 17:44:33 -05:00
Jeremy Andrews fb669b392c Issue #2974 - Part 30: Address strict EnumString handling in OS_ARCH/OS_TARGET. 2026-03-09 17:16:11 -05:00
Jeremy Andrews b818d7905a Issue #2974 - Part 29: More fixes to virtualenv.
Wasn't as hard as I expected to get this working. Mostly just missing imports,
and they are only missing because Mozilla added a couple to the base import
that caused no issues on Python 2, but require an additional slew of imports
on Python 3.
2026-03-09 16:13:55 -05:00
Jeremy Andrews 827b1052ea Issue #2974 - Part 28: Further fixes to processhandler and winprocess.
This is apparently the one place we can't use UTF-8 on Windows, we absolutely
need CP1252 here. Mozilla originally avoided a lot of these encoding issues by
treating everything as bytes. That trick won't fly in Python 3, so we now
have to deal with text streams and face Windows and Unicode issues.

Ref: BZ 1585702
2026-03-09 16:01:44 -05:00
Moonchild 77f8cae06e Issue #2978 - Avoid empty replacements in macro expansion.
If the replacements array is empty, don't attempt to do any work on the
existing macro, and return. This should prevent infinite recursion in
some cases.
Order matters here: we're relying on the `if` statement shortcut so
`collectMacroArgs()` doesn't get called.
2026-03-09 16:04:57 +01:00
Moonchild daa31cfd59 No issue - Fix some fatal printing assertions.
- Turn a fatal assert into a warning if we can't guarantee a drawTarget.
  This should not be fatal since the DrawTarget is checked later.
- Remove a fatal assertion if a display table background is cross-document
  since non-display iframes may cause this situation without it being an
  error.
2026-03-09 11:30:38 +01:00
Moonchild b4ad4b7293 Issue #2981 - Add nullcheck in GetPointerCapabilities
Resolves #2981
2026-03-09 11:27:25 +01:00
Moonchild a2947909e8 Merge pull request 'Issue #2982 - Implement oklab/oklch' (#2983) from Basilisk-Dev/UXP-contrib:oklab-oklch into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2983
2026-03-08 07:27:26 +00:00
Jeremy Andrews 04b9a2f949 Issue #2974 - Part 27: Actually fix processhandler.py.
This is the work I was trying to avoid in my initial port... now it's time to
actually do it.

Ref: BZ 1473498, BZ 1428713, BZ 1799483
2026-03-07 22:49:29 -06:00
Jeremy Andrews d9821226cf Issue #2974 - Part 26: Clean up more bytestrings and fix busted logging system.
Also modified virtualenv.py just enough to see the next failure mode.
2026-03-07 22:20:02 -06:00
Moonchild bc2d0521e7 Merge pull request 'Implement ES2022 error.cause property' (#2984) from dbsoft/UXP:error-cause-2304 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2984
2026-03-07 21:17:22 +00:00
Moonchild 95ca42dd06 Merge pull request 'Handle special cases for certain MacOS system fonts.' (#2985) from dbsoft/UXP:mac-variation-fonts into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2985
2026-03-07 21:00:44 +00:00
Brian Smith 0c0dfca015 Issue #2304 - Part 5 - Add cause property when a cause is present.
I thought this was just to check whether it should be added, but is necessary.
2026-03-07 01:41:07 -06:00
Brian Smith 17cd2e4d07 Issue #2304 - Part 4 - Add xray support for the Error cause property.
https://bugzilla.mozilla.org/show_bug.cgi?id=1679653
2026-03-07 01:17:18 -06:00
Brian Smith f305547835 Issue #2304 - Part 3 - Implement the error cause proposal.
https://bugzilla.mozilla.org/show_bug.cgi?id=1679653
2026-03-07 00:41:42 -06:00
Brian Smith 5ee86104a8 Issue #2304 - Part 2 - Prerequisite: Teach GCPolicy about Maybe.
https://bugzilla.mozilla.org/show_bug.cgi?id=1377008
2026-03-06 23:47:55 -06:00
Jeremy Andrews 17e3d48201 Issue #2974 - Part 25: Logic changes in decorators and string_version.
In decorators.py, the original logic fails because cls.__init__ is now a
function instead of a method in Python 3.

In string_version.py, the issue is that str.__init__(self, args) is no longer a
valid way of referencing the parent class of the function, the no-argument
super() can do that in Python 3 properly by using the __class__ cell variable.

Ref: PEP 3135
https://peps.python.org/pep-3135/
2026-03-06 21:35:00 -06:00
Jeremy Andrews 151ca2805b Issue #2974 - Part 24: Stop encoding strings to bytes in configure and clobber. 2026-03-06 20:06:10 -06:00
Jeremy Andrews 93272b0ac0 Issue #2974 - Part 23: Clean up old string logic in configenvironment/mozinfo.
No real logic changes here, just obvious work.
2026-03-06 19:57:51 -06:00
Jeremy Andrews 763e812c4c Issue #2974 - Part 22: Fix-up main.py and config.py.
The bytestrings seem to break the build system. Also, get_hex is no longer a
thing, those two basestrings can become str (had to check), and
also noticed load_settings was ignoring its own argument.

Ref: BZ 1473498, BZ 1739556
https://hg-edge.mozilla.org/mozilla-central/rev/fa5e23975029
2026-03-06 18:39:10 -06:00
Basilisk-Dev 0ab247bee9 Issue #2982 - Fix regressions in the previous regression fix commit. 2026-03-06 16:27:12 -05:00
Basilisk-Dev 5370edc560 Issue #2982 - Fix regression in previous commit by handling possible floating point issues 2026-03-06 16:27:12 -05:00
Basilisk-Dev f27b6cbd21 Issue #2982 - clamp oklab/oklch to [0,1] before conversion to closer match spec 2026-03-06 16:27:12 -05:00
Basilisk-Dev de3485ed67 Issue #2982 - Make gradients work in oklch 2026-03-06 16:27:12 -05:00
Basilisk-Dev 7f8489bc11 Issue #2982 - Initial oklch test implementation 2026-03-06 16:27:07 -05:00
Brian Smith 8c1cf4cc02 Issue #2304 - Part 1 - Prerequisite: Make Handle<Maybe<>> more convenient.
This is required to implement JS::NothingHandleValue.
https://bugzilla.mozilla.org/show_bug.cgi?id=1631114
2026-03-06 13:13:21 -06:00
Moonchild b8fbac6365 Merge pull request 'Futureproof Internal ICU Whitespace' (#2980) from RealityRipple/UXP:alt-space-ex into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2980
2026-03-06 12:53:00 +00:00
Andy c7cc4ef650 Support All White Spaces in ICU Replacement from PR #2921
In case Unicode adds additional alternate spaces to formats in the future, the wsCompat argument will be ready.
I also switched over to the `u_isUWhiteSpace` alias, which is functionally identical to `UCHAR_WHITE_SPACE` at present, just in case the alias ever expands beyond the const.
2026-03-06 03:36:27 -08:00
Moonchild 9d1789b62f Merge pull request 'Stop exposing plugin preferences if support isn't built' (#2975) from 2879 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2975
2026-03-06 09:52:50 +00:00
Jeremy Andrews 6433d1d7a4 Issue #2974 - Part 21: Disable old Win32 hack on Python 3.4+
The issue requiring this only affected older versions of Python 3.
Newer Python 3 no longer requires this. Mozilla also did this in their
initial Python 3 support, after moving the hack itself from mach to
somewhere in mozbuild. This commit also unblocks newer Python versions.

Ref: BZ 1473498
https://hg-edge.mozilla.org/mozilla-central/rev/fa5e23975029
2026-03-06 03:14:53 -06:00
Moonchild 9a1c99e1a2 Issue #2879 - Stop exposing additional prefs
This stops exposing some additional preferences that are NPAPI-only.
2026-03-06 09:44:41 +01:00
Moonchild abc435f18e Merge pull request 'Futureproof ParseDate Whitespace' (#2979) from RealityRipple/UXP:alt-space into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2979
2026-03-06 08:38:44 +00:00
Jeremy Andrews ae877638e8 Issue #2974 - Part 20: Use last few fixers.
Just rush through the last ones I semi-trust...

2to3 . --fix methodattrs -wpn
''           funcattrs   ''
''           has_key     ''
''           renames     ''
''           types       ''
''           nonzero     ''

Ref:
https://docs.python.org/3/whatsnew/3.0.html
2026-03-06 02:08:07 -06:00
Jeremy Andrews e12d6ebd5e Issue #2974 - Part 19: Use various fixers.
Mostly exec and execfile, but also StandardError and sys_exc.

2to3 . --fix exec -wpn
''           execfile ''
''           sys_exc  ''
''           standarderror ''

Ref:
https://docs.python.org/3/whatsnew/3.0.html
2026-03-05 22:10:28 -06:00
Jeremy Andrews 7abb343363 Issue #2974 - Part 18: Use str instead of unicode.
The standard str is unicode now...

2to3 . --fix unicode -wpn

Ref:
https://docs.python.org/3/whatsnew/3.0.html
2026-03-05 21:38:47 -06:00
Jeremy Andrews af6ae6a1d3 Issue #2974 - Part 17: Use new unittest names.
2to3 . --fix asserts -wpn

Ref:
https://docs.python.org/3.11/library/unittest.html#deprecated-aliases
2026-03-05 21:11:31 -06:00
Jeremy Andrews 69d2d3f47d Issue #2974 - Part 16: Adapt apply.
Syntax change, also cleaning up stuff from previous change.

2to3 . --fix apply -wpn

Ref:
https://docs.python.org/3/whatsnew/3.0.html
2026-03-05 20:00:40 -06:00
Jeremy Andrews 0ce9d8f121 Issue #2974 - Part 15: Adapt itertools.
Ordinary versions of these functions are iterators now,
rather than lists...

2to3 . --fix itertools -wpn
2to3 . --fix itertools_imports -wpn

Ref:
https://docs.python.org/3/whatsnew/3.0.html#range
2026-03-05 19:46:43 -06:00
Andy 2e6dab8672 Support Unicode White Spaces in ParseDate() 2026-03-05 17:32:10 -08:00
Jeremy Andrews 0c61ee391c Issue #2974 - Part 14: Moved libraries and imports.
reduce is moved to functools, urllib reogranized.

2to3 . --fix urllib -wpn
2to3 . --fix reduce -wpn
2to3 . --fix import -wpn
2to3 . --fix imports -wpn
2to3 . --fix imports2 -wpn

Ref: PEP 3108, PEP 3100
https://peps.python.org/pep-3108/
https://peps.python.org/pep-3100/
2026-03-04 20:24:12 -06:00
Jeremy Andrews 5fdc8dd723 Issue #2974 - Part 13: Adapt octal number syntax.
Used to be like C, with 0755 or something, now it's
0o755. Also, long and int are the same type now.

2to3 . --fix numliterals -wpn
2to3 . --fix long -wpn

Ref: PEP 3127, PEP 237
https://peps.python.org/pep-3127/
https://peps.python.org/pep-0237/
2026-03-04 20:03:01 -06:00
Jeremy Andrews 5af8e3ba5c Issue #2974 - Part 12: Adapt metaclass syntax.
It seems to have moved out of the body of the function,
into the class definition. Hit this a couple times...

2to3 . --fix metaclass -wpn

Ref: PEP 3115
https://peps.python.org/pep-3115/
2026-03-04 18:55:13 -06:00
Jeremy Andrews 2f37a44b8f Issue #2974 - Part 11: Adapt iterator.next().
2to3 . --fix next -wpn

Ref: PEP 3114
https://peps.python.org/pep-3114/
2026-03-04 18:39:49 -06:00
Jeremy Andrews 6454d7492f Issue #2974 - Part 10: Adapt tuple unpacking.
2to3 . --fix tuple_params -wpn

They actually had a fixer for this?! Anyway... yeah,
Py2 allowed tuple parameter unpacking. Py3 doesn't.
However, the adaptations are fairly mechanical.

Ref: PEP 3113
https://peps.python.org/pep-3113/
2026-03-04 15:52:40 -06:00
Jeremy Andrews c77e0a8cec Issue #2974 - Part 9: Adapt input and raw_input
2to3 . --fix input -wpn
2to3 . --fix raw_input -wpn

Py2 input is the new Py3 input wrapped in eval tags.
The new input is the old raw_input.
This lets you have the old behavior. Mechanical.

Ref: PEP 3111
https://peps.python.org/pep-3111/
2026-03-04 15:16:45 -06:00
Jeremy Andrews 46f126c10c Issue #2974 - Part 8: Adapt except
2to3 . --fix except -wpn

Python 3 exception syntax is different. Comma-based syntax is gone,
much like print syntax is changed.
This lets you have the old behavior. Mechanical.

Ref: PEP 3110
https://peps.python.org/pep-3110/
2026-03-04 15:00:58 -06:00
Jeremy Andrews 4906a75883 Issue #2974 - Part 7: Adapt raise
2to3 . --fix raise -wpn

Python 3 raise syntax is different. Three-argument raise is
deprecated, much like print syntax is changed.
This lets you have the old behavior. Mechanical.

Ref: PEP 3109
https://peps.python.org/pep-3109/
2026-03-04 14:16:18 -06:00
Jeremy Andrews 8c0f0ccdcf Issue #2974 - Part 6: Adapt dict
2to3 . --fix dict -wpn

Py2 dict was a list by default, the iterator versions
were switched around to be the default.
This lets you have the old behavior. Mechanical.

Ref: PEP 3106
https://peps.python.org/pep-3106/
2026-03-04 13:56:53 -06:00
Jeremy Andrews 112c119477 Issue #2974 - Part 5: Adapt zip
2to3 . --fix zip -wpn

Py2 zip was a list, now zip is an iterator.
This lets you have the old behavior. Mechanical.

Ref:
https://www.artima.com/weblogs/viewpost.jsp?thread=208549
2026-03-04 13:29:40 -06:00
Jeremy Andrews ec4f21e5e3 Issue #2974 - Part 4: Adapt map
2to3 . --fix map -wpn

Py2 map was a list, now map is an iterator.
This lets you have the old behavior. Mechanical.

Ref:
https://www.artima.com/weblogs/viewpost.jsp?thread=208549
2026-03-04 13:22:20 -06:00
Jeremy Andrews 42fbdd74fd Issue #2974 - Part 3: Adapt filter.
2to3 . --fix filter -wpn

Py2 filter was a list, now filter is an iterator.
This lets you have the old behavior. Mechanical.

Ref:
https://www.artima.com/weblogs/viewpost.jsp?thread=208549
2026-03-04 13:13:03 -06:00
Moonchild e0b95b12da Merge pull request 'Implement ES2018 Proxy ownKeys duplicate-key invariant and update affected conformance tests.' (#2977) from Basilisk-Dev/UXP-contrib:es2018-proxy-updates into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2977
2026-03-04 17:19:08 +00:00
Basilisk-Dev 722ecd0d97 Issue #2976 - Implement ES2018 Proxy ownKeys duplicate-key invariant and update affected conformance tests. 2026-03-04 10:37:58 -05:00
Jeremy Andrews 49615281cd Issue #2974 - Part 2: Adapt range/xrange.
2to3 . --fix xrange -wpn

range takes the place of Py2 xrange.
Py2 range was a list. Mechanical, did
it by hand several times...

Ref:
https://docs.python.org/3/whatsnew/3.0.html#range
2026-03-04 08:33:16 -06:00
Moonchild e72cc38641 Issue #2879 - Remove obsolete crash reporter prefs. 2026-03-04 15:31:41 +01:00
Moonchild ae227b8743 Issue #2879 - Do not expose plugin-specific prefs if support isn't built.
- Puts prefs behind conditional defines
- Removes obsolete plugin finder pref
- Removes obsolete unrestricted xpconnect plugin pref
2026-03-04 14:54:13 +01:00
Moonchild a268e57967 Merge pull request 'Issue #2957 - make WeakRefObject finalize on main thread (no background finalize)' (#2973) from Basilisk-Dev/UXP-contrib:weakref-crash into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2973
2026-03-04 11:11:57 +00:00
Moonchild 9f05dad78c Merge pull request 'Fix clang builds on 32-bit ARM Linux.' (#2972) from dbsoft/UXP:clang-arm-linux into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2972
2026-03-04 11:10:57 +00:00
Jeremy Andrews e11fc9b4cf Issue #2974 - Part 1: Adapt all print statements.
2to3 . --fix print -wn
Essentially, print is a function instead of statement.
Ref:
PEP 3105
https://peps.python.org/pep-3105/
2026-03-04 03:48:01 -06:00
Basilisk-Dev ba0112d574 Issue #2957 - make WeakRefObject finalize on main thread (no background finalize) 2026-03-02 00:01:39 -05:00
Moonchild 5b449bc031 Merge pull request 'Issue #2551 - toSorted followup to be 100% ECMA compliant' (#2971) from Basilisk-Dev/UXP-contrib:toSortedSpec into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2971
2026-03-01 21:54:23 +00:00
Basilisk-Dev b823c130c1 Issue #2551 - toSorted followup to be 100% ECMA compliant 2026-03-01 16:33:09 -05:00
Moonchild 437d9da605 Merge pull request 'Implement ES2023 array.Prototype.toReversed()' (#2970) from Basilisk-Dev/UXP-contrib:toReversed into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2970
2026-03-01 19:07:21 +00:00
Basilisk-Dev f49a57006f Issue #2551 - Implement ES2023 array.Prototype.toReversed() 2026-02-28 16:34:04 -05:00
Brian Smith 18096194f5 No Issue - Fix clang builds on 32-bit ARM Linux.
The clang integrated assembler can't handle these files.
2026-02-28 11:45:35 +00:00
Job Bautista 8ca0f22841 Issue #2903 - Follow-up: Make types consistent with method used.
Fixes inconsistent use of XML_Error, uint32_t and int32_t.
2026-02-27 18:48:06 +01:00
Brian Smith b4e9888d91 No Issue - Handle special cases for MacOS system fonts.
Work done by Jazzzny based on the following bugs:
https://bugzilla.mozilla.org/show_bug.cgi?id=1321031
https://bugzilla.mozilla.org/show_bug.cgi?id=1349308
Example page:
http://codepen.io/dangayle/pen/RpMVqY
2026-02-26 19:14:46 -06:00
Moonchild 30b01396b4 Merge pull request 'Update libtheora to 1.2.0' (#2966) from jobbautista9/UXP:theora-1.2.0 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2966
2026-02-26 21:29:17 +00:00
Moonchild 9343129fbb Merge pull request 'Follow up to address libvpx issues on older MacOS and PowerPC platforms.' (#2969) from dbsoft/UXP:libvpx-mac-fixes into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2969
2026-02-26 20:34:19 +00:00
Moonchild e79ddda9de No issue - Fix build issue.
Unified build deprot on some targets causing issues with the recently
added `mozilla:KnownNotNull` without this header.
2026-02-26 20:15:45 +01:00
Moonchild f84c92881d [parser] Account for some corner-case structural document issues. 2026-02-26 09:48:23 +01:00
Moonchild aeafa7fef8 [MFBT] Reduce size() calls in subspan. 2026-02-26 08:21:45 +01:00
Moonchild ff3db332fe [libjar] Throw when we know a file was truncated. 2026-02-26 07:51:57 +01:00
Brian Smith 68d53612af Issue #2925 - Follow-up: Fix Mac Intel and PowerPC 10.5-10.11 builds.
clock_gettime() is not available prior to 10.12, so use Mach's clock_get_time().
pthread_setname_np() is not available prior to MacOS 10.6, so guard that.
libvpx does not support big endian, so only use VPX acceleration on ppc64le.
2026-02-25 23:35:33 -06:00
Moonchild 0fb9b4abbf [WebAudio] Gracefully handle mid-stream audio changes. 2026-02-26 00:03:19 +01:00
Moonchild ab442f72b9 Merge pull request 'Issue #2925 followup 2 - Restore previous GlobalFree behavior from before SCTP upgrade in sctp_bsd_addr.c' (#2968) from Basilisk-Dev/UXP-contrib:sctp-followup-2 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2968
2026-02-25 19:49:05 +00:00
Moonchild b85d16b615 [WebRTC] Ensure valid image size.
Extremely small encoded image sizes should be considered corrupt data.
Drive-by improvement: make sure to cast the encoded image data length
to uint32_t for use with `CreateEmptyFrame`
2026-02-25 20:01:52 +01:00
Moonchild cc7d9550bc No issue - Modernize nsWindowWatcher
Get rid of old hacky conditional code and use weak references.
2026-02-25 18:48:56 +01:00
Basilisk-Dev bc2d2edbef Issue #2925 followup 2 - Restore previous GlobalFree behavior from before SCTP upgrade in sctp_bsd_addr.c 2026-02-25 12:29:13 -05:00
Moonchild bc5c6c7563 [WASM] Make sure to assign module 2026-02-25 17:13:33 +01:00
Moonchild 0d971f0c5a [WASM] Improve WasmModuleObject handling in WasmJS.cpp 2026-02-25 16:45:20 +01:00
Moonchild 99d225ae7f Merge pull request 'Issue #2925 followup - Fix intermittent Windows crashes after SCTP upgrade' (#2967) from Basilisk-Dev/UXP-contrib:2925-sctp-followup into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2967
2026-02-25 13:59:07 +00:00
Moonchild 4bb7951324 No issue - Don't assign non-live hash table entry.
The problem here is that we use move assignment on a hash table entry that
is not live. Although all entries are constructed by
`HashTable::createTable`, they may subsequently be destroyed by
`HashTableEntry::destroyStoredT()`.

Therefore it is not safe to call any methods on a non live entry.
This causes a problem for GC barrier wrappers which assume that the object
state is valid (and presumably anything that does more than just write the
assigned data into memory).

The fix is to construct a new entry in-place.

Based on work by Jon Coppeard <jcoppeard@mozilla.com> in Bug 2009608
2026-02-25 14:53:42 +01:00
Basilisk-Dev 20c29f74b4 Issue #2925 followup - Fix intermittent Windows crashes after SCTP upgrade 2026-02-25 08:30:18 -05:00
Job Bautista d9a4414ef0 Issue #2965 - Update libtheora to 1.2.0. 2026-02-25 20:55:00 +08:00
Moonchild 56be1ceaef Merge branch 'master' of https://repo.palemoon.org/MoonchildProductions/UXP 2026-02-24 20:28:44 +01:00
Moonchild fd0ddefa03 Merge pull request 'Issue #2925 - Uprade libvpx to 1.16.0' (#2963) from Basilisk-Dev/UXP-contrib:libvpx-upgrade into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2963
2026-02-24 19:27:39 +00:00
Brad Werth 00e3d12e1d [gfx] Use gzip stream total_out for SVG document parsing.
With this change, the assert is no longer necessary, because the stream
tells us how many elements to process.
2026-02-24 19:15:41 +01:00
Basilisk-Dev 3a81d02c0f Issue #2925 - Fix Windows x64 2026-02-24 09:34:18 -05:00
Basilisk-Dev 5fbb929250 Issue #2925 - Work around x86 bug in libvpx 2026-02-24 09:33:16 -05:00
Moonchild 4cb28647fe Merge pull request 'Text Cluster Optimization' (#2962) from RealityRipple/UXP:better-grapheme into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2962
2026-02-24 09:45:51 +00:00
Basilisk-Dev 002240592a Issue #2925 - Upgrade libvpx to 1.16.0 2026-02-23 16:10:38 -05:00
Andy 8f95d938d5 Optimize ClusterIterator::Next
This is based on BZ 1820504, which notes that running `GetEmojiPresentation()` before checking `prevWasZwj` adds load time to all text, as opposed to more efficiently making `prevWasZwj` the precursor to categorizing the character.
The original patch uses an enum for `baseIsEmojiStatus`; I figured I'd simplify things with numeric values (0 = unset, 1 = yes, 2 = no).
2026-02-23 11:02:02 -08:00
Moonchild c66294c51a Merge pull request 'Issue #2925 - Upgrade usrsctp library to latest version' (#2948) from Basilisk-Dev/UXP-contrib:sctp-upgrade into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2948
2026-02-22 15:50:40 +00:00
Moonchild abc96cf444 No issue - Fix cairo warnings
This fixes warning spew because warnings are thrown in case of mixed use
of cairo_status_t and cairo_int_status_t, which is a hack in cairo
because C99 doesn't support real enums (it's mapped to uint8 internally).
The "register" storage type is no longer a thing in C++17, which would
also warn; just letting the compiler decide is best, so just removing
the keyword is the proper solution in cairoint.h
2026-02-22 14:20:37 +01:00
Moonchild a3019dddc1 Merge pull request 'Implement HTMLFormElement.requestSubmit(element)' (#2956) from 2955 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2956
2026-02-22 09:46:55 +00:00
Moonchild bd03f965a3 Issue #186 - Follow-up: Remove AIX references from moz.build.
This should not be kept around because AIX is not a valid OS_TARGET.
2026-02-22 07:06:12 +01:00
Moonchild 358d39d4bf Merge pull request 'Remove remaining AIX specific code' (#2960) from 186 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2960
2026-02-22 05:59:51 +00:00
Moonchild 77571794a3 Merge pull request 'Remove iOS support' (#2959) from 190 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2959
2026-02-22 05:58:29 +00:00
Jeremy Andrews a935ef810c Issue #186 - Remove AIX references from moz.build.
This should not be kept around because AIX is not a valid OS_TARGET and I've seen mach fail at least once because of these. Meant to clean them up years ago.
2026-02-21 15:43:48 -06:00
Moonchild eb731d1377 Issue #186 - Remove various AIX leftovers in 1st party code. 2026-02-21 21:30:08 +01:00
Moonchild c275325fbf Issue #186 - Remove an ancient workaround for AIX.
This was missed before in a rather typical "do it 3/4 of the way" fashion.
2026-02-21 21:11:38 +01:00
Moonchild 84da3d4817 Issue #190 - Fix incorrectly applied patch.
For some reason the rebase removed the endif in the wrong place...
2026-02-21 19:23:42 +01:00
Jeremy Andrews c868ea1f58 Issue #190 - Remove MOZ_IOS conditional code and ios.m4 2026-02-21 18:58:35 +01:00
Jeremy Andrews d5e385dc73 Issue #190 - Remove UIKit conditional code. 2026-02-21 18:55:44 +01:00
Moonchild d49758ace1 Issue #2955 - Implement form.requestSubmit(element) 2026-02-20 09:57:46 +01:00
Moonchild f3ee6e294f Merge pull request 'Ensure decoding the first frame of a video always succeeds' (#2954) from jobbautista9/UXP:mFirstFrameTime into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2954
Reviewed-by: Moonchild <moonchild@palemoon.org>
2026-02-19 16:54:03 +00:00
Job Bautista dea96fe9d3 Issue #2949 - Part 2 Follow-up: Check if first frame has been decoded for software fallback.
Now that we can check if the first frame has been decoded thanks to Issue #2953
we should ensure that the first frame actually has not been decoded before
checking if the media errored out.
2026-02-20 00:23:31 +08:00
Job Bautista 29a5e8df12 Issue #2953 - Part 4: Don't attempt to skip to next keyframe if there are none.
Demuxers don't typically return an error when they don't have a future
keyframe, they return infinity.
2026-02-20 00:23:27 +08:00
Job Bautista 51941fd085 Issue #2953 - Part 3: Assert that no error can occur while an internal seek is pending.
An internal seek occurs when we've reached a data gap, EOS or a previous error got skipped.

During this time, the decoder has been either flushed or shut down.
2026-02-20 00:23:21 +08:00
Job Bautista 64ea5dd93a Issue #2953 - Part 2: Don't attempt to continue decoding if no next keyframe.
When we have no future keyframe and an error occurred, we can't skip over
anything and we shouldn't try to simply decode the next video frame; so we
abort early.
2026-02-20 00:23:15 +08:00
Job Bautista a42d420ee5 Issue #2953 - Part 1: Attempt to decode the first frame again if error occurred. 2026-02-20 00:23:00 +08:00
Basilisk-Dev 060995dfff Issue #2925 - Incorporate FreeBSD patch from dbsoft after usrsctp upgrade 2026-02-19 07:46:37 -05:00
Moonchild 991bd7b460 Merge pull request 'Update libjxl to 0.11.2 for security fixes and spot fix for Big Endian issue.' (#2951) from dbsoft/UXP:jxl-updates into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2951
2026-02-19 12:00:19 +00:00
Moonchild db503078d0 Merge pull request 'Allow fallback to software decoding when WMF VP9 hardware decoding fails' (#2950) from jobbautista9/UXP:wmf-vp9-blank-hwa-fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2950
2026-02-19 08:42:52 +00:00
Job Bautista 8ee58d2591 Issue #2949 - Part 4: Don't attempt to use WMF VP9 decoder for profiles 1 and 3.
The Windows VP9 hardware decoder currently does not support anything else than
profiles 0 and 2 (YUV420) and return garbage when decoding.

We error on those streams allowing to fall back on the ffvp9 software decoder.
2026-02-19 14:31:47 +08:00
Job Bautista c340a1dcd2 Issue #2949 - Part 3: Add method to read a VP9 profile from a VP9 bitstream
We haven't moved BitReader out of stagefright yet (BZ 1417011), but the reader
there works.
2026-02-19 14:27:10 +08:00
Job Bautista 774a6aa4dd Issue #2949 - Part 2: When hardware decoding fails, fall back to software
Unlike the original patch we don't have the infrastructure provided by Mozilla
BZ 1363668 yet to determine if we've decoded the first frame. This is not
required for checking whether we've errored out on hardware decoding though.
2026-02-19 14:22:39 +08:00
Job Bautista b2566429fc Issue #2949 - Part 1: Add option to disable hardware decoding. 2026-02-19 14:20:23 +08:00
Basilisk-Dev f66bcb4f23 Issue #2925 - Upgrade usrsctp library to latest version 2026-02-18 18:34:59 -05:00
Brian Smith 0e7430735e Issue #2697 & #2051 - Follow-up: Spot fix a JPEG-XL big endian issue.
Rewrote the patch from the main branch because it requires newer Highway versions.
Original patch needs Highway Endian and ARM64 MulOdd() Vec128<int32_t> support.
2026-02-18 17:08:33 -06:00
Brian Smith 905c7e8785 Issue #2697 - Follow-up: Update libjxl to 0.11.2 for security updates.
Fix tile dimension in low memory rendering pipeline.
CVE-2025-12474 - https://www.cve.org/cverecord?id=CVE-2025-12474
Fix number of channels for gray-to-gray color transform.
CVE-2026-1837 - https://www.cve.org/cverecord?id=CVE-2026-1837
And one security fix without a CVE.
2026-02-18 15:33:19 -06:00
Moonchild 9d91a43142 Merge pull request 'Fix WMF hardware decoding for VP9 and enable it by default' (#2947) from jobbautista9/UXP:wmf-vp9-videomft-fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2947
2026-02-17 08:23:02 +00:00
Job Bautista 53bac56f36 Issue #2946 - Enable WMF VP9 decoder by default. 2026-02-17 16:07:14 +08:00
Job Bautista e85fff2f10 Issue #2946 - Override sample duration if unknown.
Based on Mozilla bug 1371290's part 2.

The VP9 decoder doesn't properly set the sample duration, leading to all
samples being marked as having a zero duration. The compositor drops those
frames incorrectly.
2026-02-17 16:03:44 +08:00
Moonchild 839236c912 Merge pull request 'Manual Tibetan Word Wrap' (#2945) from RealityRipple/UXP:tibetan-wrap into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2945
Reviewed-by: Moonchild <moonchild@palemoon.org>
2026-02-17 07:57:34 +00:00
Moonchild 1e3fddbe14 Merge pull request 'Add Special Lithuanian Casing' (#2943) from RealityRipple/UXP:lithuanian-1322992 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2943
2026-02-17 07:56:04 +00:00
Andy b5576d1485 Remove Android from Mozilla Import 2026-02-16 14:55:34 -08:00
Andy 524b466197 Nit: Drop clang-format 2026-02-16 14:49:47 -08:00
Moonchild 7d1b245754 Merge pull request 'CLDR Pluralities' (#2944) from RealityRipple/UXP:plural-forms into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2944
Reviewed-by: Moonchild <moonchild@palemoon.org>
2026-02-16 22:31:37 +00:00
Andy 64a0846a1c Add Manual Tibetan Line Breaking
https://bugzilla.mozilla.org/show_bug.cgi?id=1647377
and
https://bugzilla.mozilla.org/show_bug.cgi?id=1736393
2026-02-16 12:57:03 -08:00
Andy 118bd414d4 Add Special Lithuanian Casing
https://bugzilla.mozilla.org/show_bug.cgi?id=1322992
2026-02-16 11:10:31 -08:00
Andy 3f319c5f29 Update CLDR Plural Forms
Move Macedonian to 15 - https://bugzilla.mozilla.org/show_bug.cgi?id=1415906
Add Shuar (17) - https://bugzilla.mozilla.org/show_bug.cgi?id=1396724
Add Welsh (18) - https://bugzilla.mozilla.org/show_bug.cgi?id=1428366
Add Slavic (19) - https://bugzilla.mozilla.org/show_bug.cgi?id=1533435
2026-02-16 00:58:32 -08:00
Jazzzny 8b06eaa8fc Issue #2051 - Follow-up: Reverse filter channel order on big-endian. 2026-02-15 17:58:31 +01:00
Moonchild e62bd7c533 Merge pull request 'Fix for runtime problems with Pale Moon and others on FreeBSD 15.' (#2942) from dbsoft/UXP:freebsd15-rpath-fix3 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2942
2026-02-14 19:58:49 +00:00
Brian Smith 0839a82f80 Issue Pale-Moon#2009 - Add $ORIGIN to the runtime path on FreeBSD.
Following what we do on Solaris, add $ORIGIN using MOZ_FIX_LINK_PATHS.
Also change the mode to copy from symbolic links so it finds the libs.
2026-02-14 11:40:45 -06:00
Moonchild 4cbaf927d9 Bump goanna version 2026-02-14 12:14:29 +01:00
Moonchild b4f364c385 Merge pull request 'Issue #2229 - Fix assertions in top-level await on x86_64' (#2941) from Basilisk-Dev/UXP-contrib:2229-x86-assert-fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2941
2026-02-13 14:50:21 +00:00
Basilisk-Dev 6ede629146 Issue #2229 - Fix assertions in top-level await on x86_64 2026-02-13 09:06:59 -05:00
Moonchild c684599599 Merge pull request 'Restore MacOS 10.6 32-bit support, WebRTC support on 10.5 and other (Snow) Leopard fixes.' (#2940) from dbsoft/UXP:mac-leopard-fixes2 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2940
2026-02-13 11:15:22 +00:00
Moonchild c9bfd79ae0 Merge pull request 'Issue #2229 - Fix debug builds when visiting pages that utilize top-level await' (#2939) from Basilisk-Dev/UXP-contrib:2229-fix-debug into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2939
2026-02-12 19:52:44 +00:00
Basilisk-Dev 6d3f71d200 Issue #2229 - Fix debug builds when visiting pages that utilize top-level await
Fix JSOP_AWAIT stack modeling for top‑level await in modules.
Ensure yield/await offsets are emitted for TLA scripts.
Allow interpreter prologue for resumed TLA module frames.
Fix MediaQueryList invariant for onchange handler.
2026-02-12 14:38:25 -05:00
Brian Smith 620e391be7 Issue #1829 - Follow-up Part 8: Add a pref to enable the resize grip/thumb.
MacOS prior to Lion 10.7 had an area in the bottom right of the window used for resizing.
With the resize indicator enabled, a grip or thumb is drawn in the corner over the contents.
This may or may not be desirable based on the application. So this preference allows the
application to choose the default which the user can override in about:config using the pref:
ui.mouse.resize_grip
2026-02-11 23:58:12 -06:00
Brian Smith 532a1355ce Issue #1829 - Follow-up Part 7: Restore support for scrollbar arrows on Leopard and Snow Leopard. 2026-02-11 18:02:20 -06:00
Brian Smith 03367d9c41 Issue #2051 - Follow-up Part 3: Fix ycbcr display issues on Big Endian. 2026-02-11 15:35:55 -06:00
Brian Smith 6ebd205c8e Issue #1829 - Follow-up Part 6: Fix font recursion problems on Leopard and Snow Leopard. 2026-02-11 15:35:55 -06:00
Brian Smith 7276ea00a7 Issue #1829 - Follow-up Part 5b: Remove Radeon X1000 from the block list.
This is reported working.
2026-02-11 15:35:55 -06:00
Brian Smith 7a5c56bc58 Issue #1829 - Follow-up Part 5a: Add Getforce FX to the MacOS block list. 2026-02-11 15:35:55 -06:00
Brian Smith 9e064c7045 Issue #1829 - Follow-up Part 5: Update driver blocklist handling for Leopard.
Disable WebGL on 10.5.
2026-02-11 15:35:55 -06:00
Brian Smith 6933bfe783 Issue #1829 - Follow-up Part 4: Restore draw in titlebar support for Leopard. 2026-02-11 15:35:55 -06:00
Brian Smith 5e81fb065a Issue #1829 - Follow-up Part 3: Restore WebRTC support for Leopard.
Restore QTKit based video capture for 10.5 which does not have AVFoundation.
Add -fpermissive to CXXFLAGS in the build system for Mac 32-bit PowerPC.
This works around a type issue with Atomic32 and AtomicWord.
These two types should be interchangeable.
2026-02-11 15:35:54 -06:00
Brian Smith f08b4276ea Issue #1829 - Follow-up Part 2: Restore 32-bit Intel Mac builds.
Add ffvpx configuration for 32-bit Intel Mac.
Replace PPC checks with 10.5 or 10.6 checks.
2026-02-11 15:11:10 -06:00
Brian Smith 45d7dda330 Issue #1829 - Follow-up Part 1: Restore MacOS 10.6 support.
Also update Leopard and Snow Leopard scrollbar handling.
Fixes menu icon scaling.
Hide the resize thumb on Leopard and Snow Leopard so it looks the same as Lion.
Fixes from Jazzzny.
2026-02-11 15:11:10 -06:00
Moonchild a8f1878ff3 Merge pull request 'Issue #2229 Followup - Handle re-entrant module instantiation/evaluation during async module loads' (#2938) from Basilisk-Dev/UXP-contrib:2229-top-level-await-followup into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2938
2026-02-11 16:30:22 +00:00
Basilisk-Dev d0ec80aa86 Issue #2229 Followup - Handle re-entrant module instantiation/evaluation during async module loads 2026-02-11 09:46:46 -05:00
Moonchild a9257dea7d Merge pull request 'Implement pointer and hover @media queries' (#2935) from pointer-hover-mediaqueries into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2935
2026-02-10 21:19:31 +00:00
Moonchild af5d12a154 Merge pull request 'Implement top level await functionality' (#2937) from Basilisk-Dev/UXP-contrib:2229-top-level-await into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2937
2026-02-10 21:17:11 +00:00
Basilisk-Dev fb4ebd7838 Issue #2229 - Add top level await tests 2026-02-10 14:59:26 -05:00
Basilisk-Dev 7ace23060a Issue #2229 - Add comment regarding JIT to top level await code 2026-02-10 14:59:26 -05:00
Basilisk-Dev 19504eed91 Issue #2229 - add better comments on top level await code 2026-02-10 14:59:26 -05:00
Basilisk-Dev 7c72b41e2c Issue #2229 - Initial implementation of top level await functionality 2026-02-10 14:59:04 -05:00
Moonchild 6fc971d8c0 Issue #2909 - Fix build issues when targeting Windows 7.
Despite Windows 7 supporting Tablet Mode and screen orientation just fine
(I had a Win 7 tablet PC back when), Microsoft decided that starting with
the Windows SDK 10.0.22621.0, the enum and types for auto-rotation should
no longer be defined, so we have to define them ourselves.
2026-02-07 13:27:39 +01:00
Moonchild a410f9e553 Issue #2909 - Base implementation of media interaction features.
This implements `hover`, `pointer`, `any-hover` and `any-pointer` and
the values `course`/`fine` (pointer) and `hover`.
A best effort is made to get capabilities from the system but if unknown
always falls back to assuming a mouse is present.
2026-02-07 13:24:34 +01:00
Moonchild a00f48f894 Merge pull request 'Solve imgLoader crashes' (#2929) from imgLoader-crash-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2929
2026-02-07 08:31:08 +00:00
Moonchild 699d64c8f3 Merge pull request 'Ensure that CancelAndForgetObserver removes itself from the cache validator' (#2933) from mittorn/UXP:2932 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2933
2026-02-07 08:00:05 +00:00
mittorn c6bc9d5a8c Issue #2932 - Ensure that imgRequestProxy::CancelAndForgetObserver removes itself from the cache validator
https://hg-edge.mozilla.org/releases/mozilla-beta/rev/af82d0c33427
2026-02-06 23:14:54 +00:00
Moonchild e96431e1c1 Merge pull request 'Issue #2551 Part 1 - Implement ES2023 array.prototype.toSorted()' (#2931) from Basilisk-Dev/UXP-contrib:array-to-sorted into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2931
Reviewed-by: Moonchild <moonchild@palemoon.org>
2026-02-06 14:20:36 +00:00
Basilisk-Dev 773aa9dcc3 Issue #2551 - comment toSorted implementation 2026-02-06 06:54:54 -05:00
Moonchild 998086ca31 No Issue - Remove redundant OS check for toolkit/fonts
This is already guarded by MOZ_BUNDLED_FONTS one level higher and blocks
--enable-bundled-fonts from working on other OSes
2026-02-06 10:44:03 +01:00
Basilisk-Dev 7abbbc6cf4 Issue #2551 - Add toSorted test and do some final tweaks to toSorted to be compliant 2026-02-05 10:33:42 -05:00
Basilisk-Dev 1873f5df88 Issue #2551 - Ensure toSorted is 100% spec compliant per multiple tests 2026-02-05 09:53:39 -05:00
Moonchild f39980b4c7 Issue #2928 - Add extra checks to nsExpirationTracker.
Turn some asserts into early exits and add sanity checks.
Also check main thread access for the fake mutex and report.
2026-02-05 13:44:21 +01:00
Basilisk-Dev 40ac200988 Issue #2551 - Initial attempt at toSorted implementation 2026-02-04 09:55:14 -05:00
Moonchild 4344b62a3a Issue #2928 - Improve imgLoader cache queue handling.
- Convert the imgCacheQueue to nsTArray from Vector
- Avoid marking the queue dirty when element operations are performed
that don't upset the sort order. This should improve performance as well.
2026-02-04 09:40:22 +01:00
Moonchild 3267ae2ef7 Issue #2928 - Avoid searching the image cache queue for an entry after we just popped it off the queue. 2026-02-04 09:07:23 +01:00
Moonchild 1eb24b9f9c Issue #2928 - Always refresh dirty queue. 2026-02-03 10:17:19 +01:00
Moonchild a9e11bdca7 Issue #2928 - Re-order imgLoader::RemoveFromCache
Remove from tracker first before removing from cache, and if the cache
queue is dirty, refresh it (causes a re-heap) before manipulating further.
2026-02-03 08:51:06 +01:00
Moonchild 02fb8a4ca3 Issue #2928 - Check mCacheQueue size before removing entries.
Resolves #2928
2026-02-03 08:10:37 +01:00
Moonchild d62f6b37bf Revert "Issue #2928 - Check mCacheQueue size before removing entries."
This reverts commit aaae14d111.
2026-02-03 07:52:14 +01:00
Moonchild aaae14d111 Issue #2928 - Check mCacheQueue size before removing entries.
Resolves #2928
2026-02-02 18:43:28 +01:00
Moonchild 672c153d73 No issue - Enable performance observers by default in the platform.
Performance observers have shown to be stable in daily use, so we should
enable this by default. Any applications building on UXP can decide for
themselves whether to explicitly enable or disable this API.
2026-02-01 19:26:11 +01:00
Basilisk-Dev a1a2a6f9ce Issue #2403 - Implement SubmitEvent functionality (#2919)
# Summary

Added SubmitEvent support (constructor, submitter attribute) and wired form submit events to produce SubmitEvent instances.

Implemented SubmitEvent DOM class, WebIDL, and build hooks.

Added a test file (logs to console).

# Notes

Form submissions already carry the originating control in `InternalFormEvent::mOriginator`, so `SubmitEvent.submitter` can be populated directly from the existing event data without invasive changes to form submission logic.

`EventDispatcher` now returns `SubmitEvent` specifically for `eFormSubmit`, keeping other form events (e.g., reset) unchanged.

`event.submitter` is set for user-initiated submits via the originating submit control.

`new SubmitEvent("submit", { submitter })` returns the provided submitter (or `null` if omitted).

# Ways to test
Go to repo.palemoon.org. You will no longer see the message `This browser doesn't have "SubmitEvent" support, use a tricky method to polyfill` in the console. The site will work as expected without loading this polyfill anymore.

Go to GitHub. You will now be able to mark notifications as read.

Open the test file submitted in this PR. You will see the results of the test in the browser console.

Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2919
Co-authored-by: Basilisk-Dev <basiliskdev@protonmail.com>
Co-committed-by: Basilisk-Dev <basiliskdev@protonmail.com>
2026-01-29 00:40:09 +00:00
Moonchild 006caf963a Merge pull request 'More fixes for MacOS 10.5 and PowerPC' (#2907) from WolfReiser/UXP:master into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2907
2026-01-28 22:35:33 +00:00
Moonchild b314539aa8 Merge pull request 'Issue #2351 - Fix WebRTC video encode/decode on MacOS/Linux/Windows' (#2920) from Basilisk-Dev/UXP-contrib:webrtc-fix-video into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2920
2026-01-28 22:32:54 +00:00
Moonchild aac26aa7fa Merge pull request 'Return Standard Space to Formatted Times with Day Periods' (#2921) from RealityRipple/UXP:space-time into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2921
2026-01-28 22:24:32 +00:00
Andy aefe484468 Whitespace Compatibility for ICU 72+
ICU replaced the space prefixing the period with a narrow, non-breaking space, and occasionally, a thin space.
Until the rest of the world's scripts are ready to support this new convention, we un-replace these two whitespace characters with spaces again, but only in formatted dates and times.
This is not an ideal solution, as it could be possible that a custom format using one or both of these characters may be requested intentionally elsewhere in the string, but for now, this appears to be what other browsers do, so we're at least in parity with their edge case behavior.
2026-01-28 13:49:42 -08:00
Basilisk-Dev f9b633adcd MoonchildProductions/UXP#2351 - Fix webrtc for Windows and Linux based on MacOS fix 2026-01-28 09:15:19 -05:00
Basilisk-Dev a5f3d76fda MoonchildProductions/UXP#2351 - Fix webrtc video encoding on macos 2026-01-28 00:58:06 -05:00
Moonchild 2098629f2d Issue #2895 - Follow-up: Fix whitespace. (no code changes)
The Xoroshgiro128++ MFBT header file was initially committed with CRLF.
2026-01-27 11:45:55 +01:00
Moonchild c67dc90bb8 Issue #2895 - Implement 32-bit compatible Xoroshiro128++
This puts in a reduced-register version of Xoroshiro128++ which /just/
fits in our x86 7-register space by making use of an extra mState to
temporarily store the result to be passed back.

Resolves #2895
2026-01-27 11:43:43 +01:00
Moonchild 69945a779c Merge pull request 'Update eventPtr/eventEndPtr for XML_ParseBuffer' (#2918) from FranklinDM/UXP-contrib:work_expat-2_7_3-xmlparse-fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2918
2026-01-27 07:28:31 +00:00
Francis Dominic Fajardo f8de26bf0c Issue #2889 - Follow-up: Add patch for XML_ParseBuffer. 2026-01-26 23:43:21 +08:00
Francis Dominic Fajardo 603cc43e14 Issue #2889 - Follow-up: Update eventPtr/eventEndPtr for XML_ParseBuffer 2026-01-26 23:43:21 +08:00
Moonchild 4b4d734897 Merge pull request 'Restore the ability to set a default log level when using MOZ_LOG' (#2917) from FranklinDM/UXP-contrib:work_log-restore-default-log-level-support into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2917
2026-01-26 12:14:40 +00:00
Moonchild cb629d38aa Merge pull request 'Issue #2911 - Add optional mimalloc allocator support (build-time)' (#2910) from Basilisk-Dev/UXP-mimalloc:master into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2910
2026-01-26 12:14:04 +00:00
Francis Dominic Fajardo 07b05ebc21 Issue #2916 - Restore the ability to set a default log level when using MOZ_LOG 2026-01-26 19:04:37 +08:00
Moonchild 6debbcd228 Merge pull request 'Follow-up: Simplify rule node tracking and ensure rule walker state isn't reset for the first child processor' (#2915) from FranklinDM/UXP-contrib:work_css-simplify-rn-tracking-no-reset into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2915
2026-01-25 10:30:32 +00:00
Francis Dominic Fajardo 6258c24c8c Issue #2828 - Follow-up: Simplify rule node tracking and ensure rule walker state isn't reset for the first child processor
Styles contained in NAC shouldn't be tracked with their own rule node (as opposed to what was done in https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2859) because it causes precedence issues. This should now more closely imitate the original behavior where NAC and regular document styles (at least, the "unlayered" layer) are grouped together.

This also gets rid of the manual last rule node checks against null, since they are now consistently handled by the separate function.
2026-01-25 16:49:55 +08:00
Moonchild b5a5ea161a Issue #2895 - Follow-up: adjust jit on 32-bit platforms to use Xorshift
The jit assembly implementation of Xoroshiro128++ on 64-bit platforms is
unsuitable for 32-bit because it requires more registers than our jit
can reasonably provide (7 usable/8 total), causing run-time issues.
As a workaround for this, this commit splits the jit version of PRNG up
into Xorshift128+ for 32-bit targets and Xoroshiro128++ everywhere else.
The C++ version in MFBT remains Xoroshiro128++ on all platforms.

While not ideal, the PRNG on 32-bit will still be suitably performant and
with small enough deviations for all practical purposes in Math.random()
in JavaScript. Since this is a PRNG, there are no concerns about
reproducibility of results, only proper statistical distribution of values.

Also some drive-by corrections to comments in MFBT:
- Incorrect statement that the period is 2^256-1. It is 2^128-1
- More readable comments by using standard operator characters for power.

Resolves #2895 (again)
2026-01-24 14:50:57 +01:00
Moonchild 1462612e3c Issue #2914 - Explicitly allow mixed content websockets on localhost.
This carves out an exception for hard-coded loopback addresses to allow
`ws:` connections from `https:` to allow mixed-mode from secure pages.

Resolves #2914
2026-01-23 23:09:58 +01:00
Basilisk-Dev 75d0cedb1a Incorporate patch by dbsoft to fix mimalloc build on freebsd 2026-01-21 16:41:08 -05:00
Basilisk-Dev f660e617a3 Fix issues with Windows segfaulting when building with mimalloc 2026-01-19 00:15:52 -05:00
Basilisk-Dev a454e08683 Define MI_WIN_NOREDIRECT on Windows to avoid linker error 2026-01-16 22:08:13 -05:00
Basilisk-Dev 5bbc63d590 Update mimalloc readme 2026-01-16 22:06:14 -05:00
Basilisk-Dev b514d09a14 Fix segfaults when running with mimalloc on Linux 2026-01-16 16:42:19 -05:00
Basilisk-Dev d828b69cd1 Fix building mimalloc in Linux 2026-01-16 14:40:22 -05:00
Basilisk-Dev 067ec2edd4 Add mimalloc as optional allocator
Vendors mimalloc sources and adds --enable-mimalloc as a mutually exclusive alternative to jemalloc, wiring it through mozalloc/mozglue and build config.
2026-01-16 11:42:28 -05:00
Sergey Larin 01719ee5c5 Fix crash in nsContainerFrame::GetChildLists on 32-bit Big Endian platforms
Happens when going into fullscreen when playing a video.
There is a conflict between reinterpret_cast and memcpy
when using uint64_t as a storage. When memcpy'ing a pointer
into uint64_t value, and then reinterpret_cast'ing it back
on Big Endian, you'll get a null pointer value because
pointer was stored in top uint64_t bits, and reinterpret_cast
works on lower bits. Fix makes ReinterpretHelper public -
this is not a good practice to make implementation detail
accessible, but ForEach is already bad anyway providing raw
uint64_t value to the user. I don't think that
std::visit-like interface is possible because there's no
direct link between property and parameter stored. Also
upstream Firefox has this bug too.
2026-01-16 12:37:45 +02:00
Sergey Larin 5e4e7df657 Fix assertion failure in audiounit_close_stream on PPC MacOS
Happens when audiostream is destroyed, i.e. when sound
playback stops. This is because stm->mutex should be locked,
as this is checked inside audiounit_close_stream.
2026-01-16 12:37:42 +02:00
Sergey Larin 0c1671073e Fix crash in trackingAreaView on MacOS 10.5
Happens on exit when deallocating trackingAreaView.
Possibly after playing a video.
Fix from Mozilla upstream:
https://phabricator.services.mozilla.com/D212949
https://bugzilla.mozilla.org/show_bug.cgi?id=1880582
2026-01-16 12:37:40 +02:00
Sergey Larin 3a42d26c36 Use CoreGraphics backend on Big Endian MacOS 2026-01-16 12:37:20 +02:00
Moonchild fb1a7e64b5 [gfx] Add some additional sanity checks to cairo surface creation. 2026-01-15 11:20:10 +01:00
Moonchild fa7638a731 [XPCOM] Add hashkey helper classes for future use.
These aren't currently used but will be good to have in case we need them
for future porting from Mozilla.
2026-01-15 10:27:53 +01:00
Moonchild d9228b5517 Merge pull request 'MacOS PowerPC Support Fixes' (#2905) from dbsoft/UXP:macppc-fixes10 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2905
2026-01-14 22:04:29 +00:00
Moonchild b9e6492480 [NSS] Update NSS to 3.90.9 2026-01-14 22:30:19 +01:00
Moonchild 28e6fad462 [Auth] Only set GSS_C_DELEG_FLAG flag when we confirm server supports delegation. 2026-01-14 21:50:24 +01:00
Moonchild c2ae3266c2 [DOM] Check worker script size
Abort loading worker scripts if they are ridiculously huge.
2026-01-14 19:50:08 +01:00
Moonchild 195251fc12 [gfx] Fix typo in 9b52703451 2026-01-14 19:46:11 +01:00
Moonchild 9b52703451 [gfx] Use better types for cairo image surface manipulations. 2026-01-14 16:15:09 +01:00
Moonchild 84d42d8177 [gfx] Be more explicit when converting to cairo formats. 2026-01-14 15:01:37 +01:00
Brian Smith 5de43abff5 Issue #2051 - Follow-up Part 2j: Fix VPx rendering on Big Endian. 2026-01-13 22:30:11 -06:00
Moonchild 8112ed2e6c Issue #2895 - Follow-up: Fix JIT code generator for 32-bit targets.
Register64 isn't natively supported on 32-bit targets (ARM, MIPS32, x86)
so they require initializers with 2 32-bit register components.
Also, `rotateLeft64()` requires a temp register on 32-bit targets.
2026-01-13 20:24:41 +01:00
Brian Smith 25daa465a4 Issue #2051 - Follow-up Part 2i: Fix font problems with more TenFourFox code.
Add Phony Core Text header, and an old qcms function required by the older code.
Thank you Sergey Larin for doing this work.
2026-01-13 11:58:50 -06:00
Moonchild 4302ad6302 Merge pull request 'Remove Support for Gconf' (#2904) from trav90/UXP-contrib:remove-gconf into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2904
2026-01-13 13:49:28 +00:00
Brian Smith 9d1148e322 Issue #2051 - Follow-up Part 2h: Various MacPPC fixes.
Fix builing with optimization level 2 or higher.
Fix some mouse handling, in particular with the scollbars.
Fix keyboard input of normal characters. Thank you Sergey Larin.
2026-01-13 07:34:24 -06:00
Moonchild 42bb4f8ec8 Merge pull request 'Switch JavaScript PRNG to Xoroshiro128++' (#2901) from Xoroshiro128++ into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2901
2026-01-13 09:27:01 +00:00
Brian Smith bc4751b2e9 Issue #2051 - Follow-up Part 2g: Readd CoreGraphics support to native rendering.
This support was removed when SKIA was added, so it just bailed out.
Also add scrollbar drawing code from TenFourFox to support the old style.
2026-01-12 15:52:05 -06:00
Brian Smith 046b73ad98 Issue #2051 - Follow-up Part 2f: Miscellaneous fixes.
Fix compile issue with MacPorts GCC 14.
Fix null pointer dereference in OpenGL compositor.
Fix recurcursive font loading due to TenFourFox code drift.
Fix LazyScript size mismatch in debug builds.
Fix crash due to missing auto release pool in debug builds.
Fix keyboard input crash due to incorrect code disabling.
Fix mouse events never having button pressed state.
2026-01-12 15:52:04 -06:00
Brian Smith f12b423797 Issue #2051 & #2777 - Follow-up Part 3: Add MacOS PPC config.h file. 2026-01-12 15:52:03 -06:00
Brian Smith 81767f49a9 Issue #2051 - Follow-up Part 2e: Force fallback to raster with CoreGraphics. 2026-01-12 15:52:02 -06:00
Brian Smith cb7d1bff90 Issue #2051 - Follow-up Part 2d: Fix missing or misplaced #ifdefs.
Also handle missing modifierFlags selector on 10.5.
2026-01-12 15:52:01 -06:00
Brian Smith 65655a7ac6 Issue #2051 - Follow-up Part 2c: No IOSurface support on 10.5 so disable for PPC. 2026-01-12 15:52:00 -06:00
Brian Smith e61da23175 Issue #2051 - Follow-up Part 2b: Even more safety checks in the older font code. 2026-01-12 15:51:59 -06:00
Brian Smith 0065d53b4d Issue #2051 - Follow-up Part 2: Add additional safety checks in the older font code. 2026-01-12 15:51:58 -06:00
Brian Smith 179c73c90c Issue #2051 - Follow-up Part 1b: Fix building on later MacOS versions.
Clang complains about duplicate definition of GfxMatrixToCGAffineTransform().
CGFontGetGlyphPath() is non-public and removed in later MacOS versions.
CTFontCreatePathForGlyph() is the CoreText replacement in 10.5 and later.
2026-01-12 15:51:57 -06:00
Brian Smith 1653009fe5 Issue #2051 - Follow-up Part 1: Various fixes for Mac PowerPC support.
This commit gets Mac PowerPC to initialize and shows the menubar.
Hangs in font code before showing the window, but this is progress.
Remove workaround for a GCC structure packing bug, use fixed GCCs.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110044
Fix linking altivec code with some compiler versions.
Restore the old "CoreGraphics" GFX backend; SKIA unsupported 10.5.
https://bugzilla.mozilla.org/show_bug.cgi?id=1258751
Similarly restore code to display popups/panels with "CoreGraphics"
https://bugzilla.mozilla.org/show_bug.cgi?id=1274720
2026-01-12 15:51:56 -06:00
Moonchild 753dffd122 Merge branch 'master' into Xoroshiro128++ 2026-01-12 21:48:31 +01:00
Moonchild c05e5e4373 Merge pull request 'Properly vendor and update Expat to 2.7.3' (#2903) from jobbautista9/UXP:expat-2.7.3 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2903
2026-01-12 15:22:01 +00:00
trav90 93883d5823 Issue #1636 - Part 3 - Remove Gconf 2026-01-12 08:01:44 -06:00
Job Bautista a22613d3e0 Issue #2889 - Follow-up: Remove fix for BZ 569229.
Seems this workaround is no longer relevant for Expat 2.7.x, with upstream's
elimination of recursion.
2026-01-12 08:34:34 +08:00
Job Bautista 073378ec92 Issue #2889 - Follow-up: Adjust Expat 2.7.3 local patches for removal of 3rd patch. 2026-01-12 08:33:33 +08:00
Job Bautista a00c890a9d Merge branch 'expat-2.6.4' into expat-2.7.3 2026-01-12 08:31:49 +08:00
Job Bautista 8f57a215b5 Issue #2889 - Follow-up: Allow generate_hash_secret_salt to be used.
Part 1 erroneously imported the 3rd patch from Mozilla assuming that we're also
already generating our salt with XML_SetHashSalt in our nsExpatDriver. Turns out
this is not the case.
2026-01-12 07:53:34 +08:00
Moonchild 12821ae90a Issue #2895 - Part 1b: Update license block.
Adjust the BSD 2-clause license in `ExecutableAllocator.h` to reflect
multiple authors.
2026-01-11 21:24:53 +01:00
Job Bautista 112abdc25a Issue #2889 - Part 7: Apply patches to Expat 2.7.3. 2026-01-11 21:34:24 +08:00
Job Bautista 627fdf8fe4 Issue #2889 - Part 6: Import Expat 2.7.3 source. 2026-01-11 21:33:28 +08:00
Job Bautista 0f1faad9a3 Issue #2889 - Part 5: Rewrite patches for Expat 2.7.3.
- Skipped the fix for BZ 569229 because I don't know where to apply that; the
  processInternalEntity method no longer exists. Hopefully the bug doesn't re-
  appear.
- Previous fixes for 3rd and 13th patches have been merged to their respective
  patches as well.
- 15th patch is now a fix for the 13th and 14th since somewhere between 2.6.4
  and 2.7.3 has made use of a debugging method we don't want to use as well as
  a new boolean method called parserBusy which got mistakenly excluded as an
  unused API while rewriting the 14th patch.
2026-01-11 21:26:25 +08:00
Moonchild 66dbfca54a Issue #2895 - Part 3: Add manual test.
To visually verify random uniformity and make a quick check on performance.
2026-01-11 10:35:37 +01:00
Job Bautista 647a1ab5f0 Issue #2889 - Follow-up: void methods shouldn't return a value. 2026-01-11 16:10:10 +08:00
Job Bautista e284ffab6c Issue #2889 - Follow-up: Avoid conflicts with system version of libexpat 2026-01-11 16:04:00 +08:00
Job Bautista ef1532cab2 Issue #2889 - Part 4: Fix build and runtime issues.
- The 3rd patch causes MSVC to error out on an empty typedef struct.
- The 13th patch is causing the application to abort on startup.
- Fixed header issues as well as resolved the necessary symbols for gkmedias.
2026-01-11 15:07:33 +08:00
Job Bautista 2ae8833092 Issue #2889 - Part 3: Apply Mozilla's patches to Expat 2.6.4. 2026-01-11 14:47:35 +08:00
Job Bautista e7cacf4642 Issue #2889 - Part 2: Import Expat 2.6.4 source. 2026-01-11 14:47:18 +08:00
Job Bautista 6c7850482f Issue #2889 - Part 1: Prepare Mozilla's changes and extensions for Expat 2.6.4. 2026-01-11 13:47:55 +08:00
Job Bautista f93d0fadf2 Issue #2889 - Part 0: Relocate Mozilla-specific files from Expat source. 2026-01-11 11:40:13 +08:00
Moonchild 7ec3c640e7 Merge pull request 'Disable Gconf by default and always build gio with GTK' (#2900) from trav90/UXP-contrib:disable-gconf into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2900
2026-01-10 19:28:45 +00:00
Moonchild 97786271f9 Issue #2895 - Part 2: Remove incorrect debug asserts.
x86/x64 MacroAssembler front-end rotate functions had comparison asserts
that do not seem to be correct; values being the same doesn't mean the
same regs were used.
2026-01-10 15:37:34 +01:00
Moonchild c90df0c332 Issue #2895 - Part 1: Replace XorShift128+ with Xoroshiro128++
Surrounding structures remain the same because the bit width remains 128.
The more complicated algorithm requires more temp registers in LRandom
to account for intermediate result placeholders in the JITed version of
this algorithm.
2026-01-10 15:32:22 +01:00
trav90 f5a3099344 Issue #1636 - Part 2 - Disable Gconf by default 2026-01-09 10:31:53 -06:00
trav90 fe7ca5276f Issue #1636 - Part 1 - Decouple Gio from GConf and always build it with GTK
Also removes the ancient and unused --enable-gnomeui option.
2026-01-09 10:30:54 -06:00
Moonchild b439067975 Issue #2898 - Don't unroll to large stack probe loops.
Resolves #2898
2026-01-09 15:08:10 +01:00
Moonchild b2f2e54167 Merge pull request 'Implement Loongarch64 CPU Architecture Support' (#2899) from Basilisk-Dev/UXP-loongarch:master into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2899
2026-01-08 23:38:44 +00:00
Basilisk-Dev 55285b1c50 MoonchildProductions/UXP#2897: Undo mistakenly overwritten file in libavutil 2026-01-08 13:09:08 -05:00
Basilisk-Dev af96fc79e1 MoonchildProductions/UXP#2897: Import upstream libyuv fixes to fix Clang compilation on Loongarch64 2026-01-08 13:01:25 -05:00
Basilisk-Dev 1c9c79ef24 MoonchildProductions/UXP#2897: Modify webrtc to compile on loongarch64 2026-01-08 12:30:36 -05:00
Basilisk-Dev 741604f78d MoonchildProductions/UXP#2897: Specify 16k pagesize for loongarch64 in jemalloc 2026-01-08 11:49:17 -05:00
Basilisk-Dev 5cb08bb658 MoonchildProductions/UXP#2897: Added a loongarch atomic-ops implementation 2026-01-08 11:12:24 -05:00
Basilisk-Dev 969217dc2f MoonchildProductions/UXP#2897: backport upstream xptcinvoke and xptcstubs for Loongarch64 2026-01-08 10:27:45 -05:00
Basilisk-Dev fb438829b5 MoonchildProductions/UXP#2897: Fix ffvpx build on loongarch64 2026-01-07 17:49:32 -05:00
Basilisk-Dev d7c1f4a6b4 MoonchildProductions/UXP#2897: Add LA64 to webrtc build config 2026-01-07 14:46:33 -05:00
Basilisk-Dev e35267d62c MoonchildProductions/UXP#2897: Allow mfbt/double-conversion to compile on LA64 2026-01-07 14:46:15 -05:00
Basilisk-Dev 1779669120 MoonchildProductions/UXP#2897: Fix IPC to compile on LA64 2026-01-07 14:32:31 -05:00
Basilisk-Dev 97a4baf4bf MoonchildProductions/UXP#2897: Allow mach configure to pass on loongarch64 2026-01-07 14:22:05 -05:00
Moonchild 4aadf14fb0 Issue #2858 - keep type in line with definition.
Depending on target platform, `AddRef()` returns either `unsigned long` or
`uint32_t`. Make the resulting type match for better optimization.
2026-01-06 10:01:16 +01:00
Moonchild 64509fb557 Issue #2858 - Hack around the circular calls to nsPrincipal::Write()
This employs an ugly refcounting hack as a stop-gap measure. This isn't a
fix, but we avoid appcrashes in the meantime.
2026-01-05 23:44:11 +01:00
Moonchild 91c979623c Merge pull request 'Improve Extended_Pictographic Support in Clusters' (#2894) from RealityRipple/UXP:2871 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2894
2026-01-04 22:01:51 +00:00
Andy 95240de023 Issue #2871 - Addendum - Code Comments
https://www.unicode.org/reports/tr51/#Emoji_Properties_and_Data_Files
2026-01-04 13:54:15 -08:00
Andy 7f3970cc2d Issue #2871 - Restructure GetEmojiPresentation() for Extended_Pictographic clusters 2026-01-03 16:14:47 -08:00
Moonchild fa40bd3d05 Merge pull request 'Convert use of -moz-appearance to appearance in platform code' (#2892) from 2887 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2892
2026-01-02 19:24:06 +00:00
Moonchild 87ddc5d6bb Issue #2887 - Convert use of -moz-appearance to appearance 2026-01-02 19:46:40 +01:00
Moonchild d4fcc2899c Merge pull request 'Make clearing of passwords prefable, and disable by default.' (#2891) from 2856 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2891
2026-01-02 16:43:44 +00:00
Moonchild 95279d8e20 Issue #2856 - Make clearing of passwords prefable, and disable by default.
New pref to control clearing of domain passwords for "Forget about site"
privacy function.

Resolves #2856
2026-01-02 17:32:12 +01:00
Moonchild fc231d8c29 Merge pull request 'Leverage viewport-only logic to ensure overflow propagation.' (#2890) from 2853 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2890
2026-01-02 16:08:24 +00:00
Moonchild f8f288b1c6 Merge pull request 'Un-prefix -moz-appearance' (#2886) from unprefix-appearance into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2886
2026-01-02 16:08:03 +00:00
Moonchild f6b5a81bcf Merge pull request 'Minor CLDR Update Process Improvements' (#2888) from RealityRipple/UXP:auto-cldr into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2888
2025-12-30 15:22:46 +00:00
Moonchild 75cc3b1766 Issue #2853 - Leverage viewport-only logic to ensure overflow propagation.
Resolves #2853
2025-12-30 16:19:40 +01:00
Andy 2f4b425613 Sort replacements per language and per script to ensure the generated file has stable contents.
From BZ 1651032
2025-12-27 18:19:02 -08:00
Andy 97d35566cd Automatically determine current CLDR version when updating langtags.
From BZ 1642934
2025-12-27 18:05:54 -08:00
Moonchild ee673e2a51 Issue #1791 - Part 3: Add manual test for unprefixed appearance. 2025-12-25 16:27:41 +01:00
Moonchild a66233d638 Issue #1791 - Part 2: Stop force-styling checkboxes/radio buttons.
Unclear why this was done. Let websites choose their own style overrides
if they want to, in combination with `appearance: none`
2025-12-25 16:27:41 +01:00
Moonchild a208d718cf Issue #1791 - Part 1: Un-prefix -moz-appearance
Keep an alias (preffed) `-moz-appearance` for `appearance`
This should keep all previous behaviour intact.
2025-12-25 16:27:40 +01:00
Moonchild 9dae73cd9d Merge pull request 'Allow build on NetBSD/alpha' (#2885) from nia/UXP:alpha into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2885
2025-12-24 11:48:52 +00:00
nia fac94604c4 ffvpx: Add pregenerated config for Alpha. 2025-12-24 12:39:24 +01:00
Moonchild c64aa83a09 Issue #2857 - Implement inset-block and inset-inline CSS shorthand
Resolves #2857
2025-12-23 11:09:23 +01:00
Moonchild 55db23f665 Merge pull request 'Emoji 17.0 Support' (#2884) from RealityRipple/UXP:emoji-17.0 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2884
2025-12-22 18:03:44 +00:00
Andy 6d7da863a9 emoji-17.0 - Update Twemoji font to unicode 17.0.0 2025-12-22 09:50:51 -08:00
Moonchild a559de3cc6 Merge pull request 'Update ICU to v78.1' (#2878) from RealityRipple/UXP:icu-78 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2878
2025-12-22 14:22:41 +00:00
nia f48fc9774d Teach mozbuild that Alpha is 64-bit. 2025-12-22 00:41:21 +01:00
Andy 0d1a0a4460 Issue #2863 - Part 25 - Clobber 2025-12-20 01:41:20 -08:00
Andy 48310b0921 Issue #2863 - Part 24 - Remove special-casing for Etc/UCT
From BZ 1543641 Part 3
2025-12-20 01:07:52 -08:00
Andy 5a6008ba14 Issue #2863 - Part 23 - Update tzdata in Spidermonkey 2025-12-20 01:07:24 -08:00
Andy 19832cc0dd Issue #2863 - Part 22 - Update tzdata source to 2025c 2025-12-20 01:05:17 -08:00
Andy 70cb6fad3b Issue #2863 - Part 21 - Update Unicode property data in Gecko 2025-12-20 01:01:45 -08:00
Andy 1c12932f17 Issue #2863 - Part 20 - Update special casing in Gecko 2025-12-20 00:57:03 -08:00
Andy b8073ff355 Issue #2863 - Part 19 - Update CLDR to 48 2025-12-20 00:54:46 -08:00
Andy ad45885155 Issue #2863 - Part 18 - Update Unicode in Spidermonkey 2025-12-20 00:51:31 -08:00
Andy 7a3da8cc91 Issue #2863 - Part 17 - Update ICU source to 78.1 2025-12-20 00:43:40 -08:00
Andy c88f57529b Issue #2863 - Part 16 - Update locale canonicalization algorithm for changes from CLDR 39
From BZ 1718198
2025-12-19 02:18:04 -08:00
Andy e140607d40 Issue #2863 - Part 15 - Update special casing script 2025-12-19 02:17:50 -08:00
Andy c7d76b16e1 Issue #2863 - Part 14 - Update switch to handle new UNumberFormatFields entries. 2025-12-19 02:17:39 -08:00
Andy 42bd942380 Issue #2863 - Part 13 - Remove non-IANA Zones
Adapted from BZ 1673027
2025-12-19 02:17:32 -08:00
Andy b3f7187493 Issue #2863 - Part 12 - Filter SCRIPT_CODE extensions from CLDR 2025-12-19 02:17:26 -08:00
Andy 1e4d492d18 Issue #2863 - Part 11 - Remove no longer needed locale maximization when removing likely subtags.
Adapted from BZ 1686052 Part 9
2025-12-19 02:16:37 -08:00
Andy 186f1531c7 Issue #2863 - Part 10 - Add New Line Breaker Entries 2025-12-19 02:16:21 -08:00
Andy 513fc2034b Issue #2863 - Part 9 - Retain util_props.cpp 2025-12-19 02:16:11 -08:00
Andy b126de3dcd Issue #2863 - Part 8 - Add note to run make_intl_data.py langtags 2025-12-19 02:16:04 -08:00
Andy 6aad65b27a Issue #2863 - Part 7 - Don't delete files now that they're filtered 2025-12-19 02:15:49 -08:00
Andy 7ac730f424 Issue #2863 - Part 6 - Make ICU with multiple jobs for faster rebuilds.
Adapted from BZ 1533481
2025-12-19 02:15:37 -08:00
Andy 1c6748286c Issue #2863 - Part 5 - Update reading source objects
Adapted from BZ 1645779
2025-12-19 02:15:23 -08:00
Andy a3fea2c220 Issue #2863 - Part 4 - Use recommended ICU build options flags.
Adapted from BZ 1429776 and 1672353.
2025-12-19 02:15:05 -08:00
Andy 99691ee61a Issue #2863 - Part 3 - Patch in non-dll suppression
This is stupid, but more specific than a broad silencing directive.
2025-12-19 02:14:42 -08:00
Andy 44e1b7c01b Issue #2863 - Part 2 - Filter ICU data for build 2025-12-19 02:14:01 -08:00
Andy db4b354d9b Issue #2863 - Part 1 - Update patches for ICU 78.1 2025-12-19 02:13:38 -08:00
Moonchild 105d703629 Merge pull request 'Issue MoonchildProductions/UXP#2306: Implement WeakRef functionality' (#2881) from Basilisk-Dev/UXP-weakref:master into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2881
2025-12-19 08:51:44 +00:00
Basilisk-Dev 6ce83ee1f0 Issue MoonchildProductions/UXP#2306: Add test js 2025-12-18 21:13:06 -05:00
Basilisk-Dev d4c1ffda76 Issue MoonchildProductions/UXP#2306: Remove unneeded addition of streams_ in ContextOptions() 2025-12-17 18:40:39 -05:00
Basilisk-Dev 0ec21adf21 Issue MoonchildProductions/UXP#2306: Fix spacing 2025-12-17 16:56:25 -05:00
Basilisk-Dev 7533c4ede0 Issue MoonchildProductions/UXP#2306: Add pref-gated WeakRef with safe stub when disabled
* Add javascript.options.weakrefs and plumb it through context options, XPConnect, and workers
* Keep referents alive via strong tracing when the pref is off so deref() still returns the target
* Retain weak-edge semantics when the pref is enabled
2025-12-17 16:35:41 -05:00
Basilisk-Dev 0dc7782727 Issue MoonchildProductions/UXP#2306: Implement WeakRef functionality 2025-12-16 22:43:47 -05:00
Moonchild a17b54921c Merge pull request 'Issue Pale-Moon#2002 - Remove FreeBSD compat13x dependency on 15.x.' (#2880) from dbsoft/UXP:freebsd15fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2880
2025-12-16 20:50:42 +00:00
Moonchild 7dddd4282b Issue #2865 - Implement URL.canParse()
Implemented URL.canParse() static function for checking if a URL can be
parsed (instead of having to try wrap the constructor).

This avoids using an ErrorResult/Throws, since it is not in the spec,
and this makes it also more performant.

See https://github.com/whatwg/url/pull/763

Resolves #2865
2025-12-16 12:23:45 +01:00
Brian Smith 4a4ddda621 Issue Pale-Moon#2002 - Remove FreeBSD compat13x dependency on 15.x.
Remove the 2 libutil OS_LIBS and dynamically load libutil.so instead.
2025-12-16 01:26:00 -06:00
Moonchild 74398ca61c Update NSS version to 3.90.8 2025-12-15 20:32:01 +01:00
Moonchild 02abee0980 [NSS] Destroy certificate on error paths 2025-12-15 19:54:00 +01:00
Moonchild e518f846b3 [image] Use the TriggeringPrincipal if we have one, not the SystemPrincipal 2025-12-15 18:00:45 +01:00
Moonchild 0ec89257db [devtools] Further improve "Copy as cURL"
Don't escape unicode control characters. While these characters would
break commands if present (i.e. non functional cURL) and could potentially
be sanitized to spaces, that would likely just move the goalposts again.
Following Mozilla here.
2025-12-15 17:21:18 +01:00
Moonchild e2ddc59a8e [DOM] Add stride check for canvas tex conversion from blob. 2025-12-15 17:01:29 +01:00
Moonchild 0552fa9353 [js] Append InstSize factor for secondary range veneers.
Ensure branch padding is correct on ARM64/M*SoC
2025-12-15 16:26:33 +01:00
Moonchild d7ae6c9f06 [devtools] Further improve "Copy as cURL"
Collapse whitespaces.
2025-12-15 16:00:02 +01:00
Moonchild 0c1afdf111 Merge pull request 'Remove obsolete mention of DRM content playback in about:rights' (#2877) from jobbautista9/UXP:aboutrights-removedrm into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2877
2025-12-11 12:00:59 +00:00
Moonchild ccedf2d3cf Merge pull request 'Restore support for in-process NPAPI plugins in non-GTK3' (#2875) from jobbautista9/UXP:npapi-inprocess into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2875
2025-12-11 11:57:34 +00:00
Job Bautista ce7e4b4369 Issue #2876 - Remove obsolete mention of DRM content playback in about:rights
We've removed EME code in Issue #2346; UXP applications will never download
content decryption modules on their own.
2025-12-11 15:31:17 +08:00
Job Bautista 59ed319449 Issue #2861 - Part 2 Follow-up: nsIPluginHost.isPluginOOP should not always return true.
Actually restore the method as it was when it was added in Mozilla bug 1178896.
2025-12-10 11:08:59 +08:00
Job Bautista 37a95044bc Issue #2861 - Bring back forced OOPP for GTK3.
Per discussion in PR #2875 our NPAPI implementation doesn't support plugins
using GTK3 anyway so there's no point in keeping this footgun for a GTK3 setup.
2025-12-09 11:16:19 +08:00
Job Bautista 0e3a84fc2d Issue #2875 - Ensure OOP for plugins by default even if pref couldn't be found. 2025-12-09 10:56:42 +08:00
Moonchild 45efa06dc8 Merge pull request 'Don't let toolkit override colors of autofilled form elements.' (#2874) from jobbautista9/UXP:autofill-styling into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2874
2025-12-08 13:58:33 +00:00
Job Bautista af2315d588 Issue #2861 - Remove Mac-specific ifdefs.
macOS should now use the "dom.ipc.plugins.enabled" pref, like every other OS.
2025-12-07 20:24:06 +08:00
Job Bautista c3c0d6f8c3 Issue #2875 - Cleanup: Remove leading whitespace in nsPluginHost.cpp. 2025-12-06 20:20:55 +08:00
Job Bautista 1100ea5eba Issue #2861 - Remove checks that forcibly enable or disable OOP.
The pref should not be conditional on which plugin or GTK version is in use. If
Windows users want Flash in-process, or GTK3 users want in-process plugins, we
should let them. If it breaks, they at least have half a browser.

While at it the checks for accessibility hardware support have also been taken
out, because they're only relevant for Flash anyway. Being able to disable OOP
should not depend on whether you use a11y.
2025-12-06 16:53:38 +08:00
Job Bautista eda712503e Issue #2861 - Part 2: Restore nsIPluginHost.isPluginOOP.
This effectively reverts Part B of Mozilla bug 1194780.
2025-12-06 15:01:28 +08:00
Job Bautista b4743e3a3a Issue #2861 - Part 1: Allow nsNPAPIPlugin::RunPluginOOP to be made false.
This effectively reverts Part A of Mozilla bug 1194780.
2025-12-06 14:58:39 +08:00
Job Bautista da8387e80a Issue #2873 - Don't let toolkit override colors of autofilled form elements.
Currently there's no way for the toolkit's overrides to be removed by users and
websites. In the case of Issue #2872 our current colors also harshly clash with
the usual dark mode of webpages.

It's best to let them write their own CSS targetting the :autofill psuedo-class
of form elements if they want the indication.

This effectively makes Issue #2790 only implement :autofill and nothing else.
2025-12-05 13:05:36 +08:00
Moonchild 905b050aa1 Merge pull request 'ffvpx: sparc64: Fix for generated config.h' (#2870) from nia/UXP:ffvpx-sparc64 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2870
2025-11-23 10:42:35 +00:00
nia 349be237d7 ffvpx: sparc64: Fix for generated config.h
Turns out UXP needs an extra define which ffmpeg7 isn't
providing.

Signed-off-by: Nia Alarie <nia@NetBSD.org>
2025-11-23 11:32:23 +01:00
Moonchild b4fbbdc29a Issue #2869 - Make Purple Buffer additions check if cell is tenured.
This should avoid a CTD if `cell` is not tenured by moving this check to
CC instead of having it fatally fail at marking grey.

Resolves #2869
2025-11-22 17:46:36 +01:00
Moonchild 87bbdc0acd Merge pull request 'ffvpx: Add generated config for sparc64' (#2868) from nia/UXP:ffvpx-sparc64 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2868
2025-11-22 12:05:19 +00:00
nia 670b251652 ffvpx: Add generated config for sparc64
Related to #2584, but should work just as well on Solaris

Signed-off-by: Nia Alarie <nia@NetBSD.org>
2025-11-22 12:41:31 +01:00
Moonchild 49f4dad4fa Issue #2489 - Re-implement color-mix implementation with fixes.
This includes a hack to avoid fatal recursion when either color resolves
to NS_COLOR_CURRENTCOLOR, avoiding #2854

Resolves #2489
2025-10-27 23:08:41 +01:00
Moonchild da7dff0437 Issue #2847 - Update tests and toolkit CSS to account for windows-win11 2025-10-25 17:46:17 +02:00
Moonchild 2c321e2baf Issue #2847 - Extend -moz-os-version media query with win11. (re-land) 2025-10-25 15:53:23 +02:00
Moonchild 8b9323b330 [devtools] Remove newline kludge from "Copy as cURL" on Windows 2025-10-14 21:06:33 +02:00
Moonchild 94959894ba Merge pull request 'Fix rule node tracking for NAC' (#2859) from FranklinDM/UXP-contrib:work_css-fix-rn-tracking-for-nac into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2859
2025-10-14 07:53:10 +00:00
Francis Dominic Fajardo 3e88d97cbd Issue #2855 - Fix rule node tracking for NAC
This refactors rule node tracking code into an inline function and uses that for rules from NAC.
2025-10-11 19:20:38 +08:00
Moonchild 75a1d79076 Issue #2489 - Revert color-mix implementation
Resolves #2854
2025-10-02 21:19:54 +02:00
Moonchild fe301ae7ff No issue - Improve compiler compatibility.
Include <limits> in a few places.
2025-10-02 19:39:09 +02:00
Moonchild 4c53908cd2 No issue - Set title for about:logopage
See forum topic 32784
2025-10-01 18:22:45 +02:00
Moonchild b19387b292 Issue #2258 - Make sure we favor sniffing when the content-type header is empty. 2025-09-24 10:32:50 +02:00
Moonchild 206afa0642 Revert "Issue #2258 - Part 1: Support XCTO:nosniff when navigating."
This reverts commit f48c770701.
2025-09-23 18:17:52 +02:00
Moonchild 32be60a48f Revert "Issue #2258 - Part 2: Move XCTO:nosniff check into sniffers."
This reverts commit 51e1650d42.
2025-09-23 18:17:45 +02:00
Moonchild fd232c1468 Revert "Issue #2258 - Part 3: Allow sniffing with XCTO:nosniff + empty MIME type."
This reverts commit a56f978f70.
2025-09-23 18:17:39 +02:00
Moonchild bd475e1a66 Revert "Issue #2258 - Part 4: Clean up unused pointers."
This reverts commit 9e52953e54.
2025-09-23 18:17:33 +02:00
Moonchild 2ae979cdc7 Issue #2790 - Follow-up: Ensure both text and background are set.
The common issue of needing to set both foreground and background for dark
themes.
2025-09-19 21:03:13 +02:00
Moonchild 98abdcc2b3 Issue #2852 - Follow-up: Add comment and fix formatting. 2025-09-18 12:00:05 +02:00
Moonchild 155d5c2962 [gfx] Use std::size rather than hardcoding an array size 2025-09-18 11:42:40 +02:00
Moonchild e944757741 Issue #2852 - Parse full cache-control headers.
This makes sure we parse the merged/stored version of `cache-control`
instead of just the latest-received header.
`ResponseHead::ParseHeaderLine_locked` parses each header as it comes in.
It then updates its member variables based on that header.
For `cache-control`, it's important to reparse the merged (updated)
version of the header instead of the most recent one, otherwise we'll miss
directives present in previously received headers.

Resolves #2852
2025-09-18 09:55:13 +02:00
Moonchild ccb6e13fd4 Revert "Issue #2847 - Extend -moz-os-version media query with win11."
This reverts commit 1ff84675f8.
2025-09-03 16:40:45 +02:00
Moonchild d709575043 [gfx] Clarify comments.
There may be other situations where putting a font entry in the cache
table may fail that are perfectly valid.
2025-08-27 17:20:22 +02:00
Moonchild 36a1957d0a Revert "[gfx] Guard against possible race via gfxFontEntry::GetFontTable."
This reverts commit a1cf966815.
2025-08-27 15:53:56 +02:00
Moonchild 723866726d No issue - Clarify Azure Back-end info.
Only mention OpenGL accelerated canvas flag when it's relevant, and rename
the entry to be more descriptive, to prevent confusion for users looking
at Troubleshooting Information.
2025-08-22 01:28:16 +02:00
Moonchild 4f9775b779 [NSS] Avoid leak in pkcs12 decoder. 2025-08-20 16:20:53 +02:00
Moonchild 70a52e4c04 [js] Error-check pthread calls
These calls return error states (int) that weren't checked for success.
Failures here are fatal, so using MOZ_RELEASE_ASSERT to safely crash.
2025-08-20 00:29:38 +02:00
Moonchild a1cf966815 [gfx] Guard against possible race via gfxFontEntry::GetFontTable. 2025-08-19 22:05:22 +02:00
Moonchild 6c08355e6a Issue #2850 - Alias :focus-visible to :-moz-focusring
Band-aid to have it be parsed as valid with reasonably-expected behaviour.
2025-08-17 09:13:02 +02:00
Moonchild 83a017f13d Merge pull request 'Add support for libavcodec61 (FFmpeg 7)' (#2849) from trav90/UXP-contrib:libavcodec61-support into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2849
2025-08-16 06:19:20 +00:00
trav90 91a33538ab Issue #2523 - Part 3 - Fix function declarations for libavcodec 2025-08-15 14:08:08 -05:00
Moonchild c82a4f147c Merge pull request 'Add XCTO:nosniff for navigation requests and deal with nosniff+empty MIME type' (#2846) from 2258-nosniff-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2846
2025-08-15 15:16:06 +00:00
Moonchild fa27001ab2 Merge pull request 'Report 24 instead of 32 as the colorDepth (and pixelDepth) on Linux' (#2848) from fix-linux-colordepth into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2848
2025-08-15 12:52:24 +00:00
trav90 ef7c0d6b46 Issue #2523 - Part 2 - Update audio & video decoders to work with FFmpeg 7.0 2025-08-14 12:42:54 -05:00
trav90 63572780f1 Issue #2523 - Part 1 - Import headers from FFmpeg 7.0 2025-08-14 12:40:56 -05:00
Moonchild dd0042fc70 Bug 1875345 - Report 24 instead of 32 as the colorDepth (and pixelDepth) on Linux (assuming 8 of 32 bits are for the alpha channel).
This now matches the logic in our equivalent Windows code, and this is
also per spec ("number of bits...excluding the alpha channel"):
https://drafts.csswg.org/cssom-view/#dom-screen-colordepth
With this change, the WPT test starts passing on Ubuntu 22.04
(which was previously flagged as an unexpected failure).
2025-08-14 17:50:18 +02:00
Moonchild 1ff84675f8 Issue #2847 - Extend -moz-os-version media query with win11.
Resolves #2847
2025-08-13 21:14:47 +02:00
Moonchild de0eb45320 Issue #1843 - Refactor IsWindowsBuildOrLater()
Further dedupes Windows checking, updating the single caller in the
platform to simply check for the minimum supported version.
This reintroduces being able to check directly for a numeric version
like before to future-proof or use fine granularity without having
to rely on known build numbers in the enum.

Resolves #1843
2025-08-13 15:05:23 +02:00
Moonchild b2ddd84ac6 Issue #1843 - Clean up WindowsVersion.h
This gets rid of all the unnecessary named functions to be replaced with
a straightforward check `IsWindows10BuildOrLater(WinBuild::{build})`
Where `WinBuild` is an enum with common `{build}` names of Win 10+
versions: `Win10v1809`, `Win10v21H2`, `Win11RTM`, `Win11v24H2`, etc.

None of these named functions were actually in use, so no other changes
should be necessary in the platform.
2025-08-13 12:34:13 +02:00
Moonchild 9e52953e54 Issue #2258 - Part 4: Clean up unused pointers. 2025-08-12 19:09:07 +02:00
Moonchild a56f978f70 Issue #2258 - Part 3: Allow sniffing with XCTO:nosniff + empty MIME type.
This moves the checking code back to NS_SniffContent and specifically
checks requests for either:
- Empty `Content-type` header, OR
- A known JSON MIME type

If present, sniffing is allowed despite `nosniff` because in the first
case this is webmaster error (conflicting `nosniff` without MIME type
would always fail, so sniff it), and in the second case we need this
carveout or our json viewer will break.
2025-08-12 19:04:34 +02:00
Moonchild 51e1650d42 Issue #2258 - Part 2: Move XCTO:nosniff check into sniffers.
This fixes a regression for the JSON viewer from part 1 as it relies on
sniffing to prettify (and should carve out the exception even if `nosniff`
headers are sent).
No real functional changes otherwise. Just catering to a corner case.
2025-08-12 17:01:36 +02:00
Moonchild f48c770701 Issue #2258 - Part 1: Support XCTO:nosniff when navigating. 2025-08-12 16:18:38 +02:00
Moonchild 1a415bb8ca Issue #1899 - Remove MDN docs tooltip and link code from devtools.
Resolves #1899
2025-08-09 22:16:17 +02:00
Moonchild 3325b35f89 Issue #2837 - Implement prefers-reduced-motion media query.
Resolves #2837
2025-08-08 10:59:59 +02:00
Moonchild 0621acfb57 Merge pull request 'Align TypedArray CTOR error handling with ES2017' (#2845) from typedarray-toindex-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2845
2025-08-08 01:17:33 +00:00
Moonchild 73a1e5aec0 Issue #2838 - Update tests 2025-08-04 17:17:45 +02:00
Moonchild ad4823f53b Issue #2838 - Use ToIndex in TypedArray CTORs
Also adjusts index handling to be more accurate/spec compliant.
2025-08-04 17:16:57 +02:00
Moonchild a3918b822b Merge pull request 'Implement Visual Viewport API' (#2832) from visualviewport-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2832
2025-08-04 08:55:20 +00:00
Moonchild 9ae5534d5b Merge pull request 'Rewrite assembler check configure logic for ffvpx.' (#2843) from 2842-ffvpx-assemblercheck into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2843
2025-08-04 08:54:46 +00:00
Moonchild 76c9a8a09f Merge pull request 'Follow-up: Guard against import rules with no attached style sheet' (#2844) from FranklinDM/UXP-contrib:work_css-import-null-sheet-fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2844
2025-08-04 08:38:41 +00:00
Francis Dominic Fajardo 5fccc6ec3d Issue #2835 - Follow-up: Guard against import rules with no attached style sheet 2025-08-04 00:02:36 +08:00
Moonchild 6e9501b7ae Issue #2842 - Rewrite assembler check configure logic for ffvpx. 2025-08-02 17:32:57 +02:00
Moonchild 8ea6155ea1 [DOM] Simplify <object> scheme check code and fix plugin handling.
Trying to do a positive check on nested URIs apparently doesn't work,
but the handling could be simplified to just check for non-null mURI
instead - this also fixes plugin loading (which broke with the previous
check).
2025-07-31 01:41:33 +02:00
Moonchild 1befbb4fbb [DOM] Fix crash in <object> scheme checking code.
If a website would nor supply a URI for object loading code, the browser
would crash on a null deref.
This reintroduces the nestedURI check to make sure we have a valid URI.
2025-07-30 09:29:26 +02:00
Moonchild 1ff0a21ee9 Issue #2489 - Follow-up: Add color-mix() manual test. 2025-07-29 21:49:00 +02:00
Moonchild 39fd993c54 Merge pull request 'Implement :autofill CSS pseudo-class' (#2841) from janjan/UXP:implement-autofill-css into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2841
2025-07-28 21:06:39 +00:00
MeladJM 38686dbb00 Issue #2790 - Cleanup: Correct whitespaces 2025-07-29 04:55:57 +08:00
MeladJM f0ba16f55f Issue #2790 - Part 7: Setting of contrasting color and fixing of last commit's issues 2025-07-29 04:53:45 +08:00
Moonchild aa564908c4 Merge pull request 'Implement CSS color-mix()' (#2839) from erx_ld1/UXP:implement-color-mix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2839
2025-07-28 11:02:31 +00:00
MeladJM e33e98ff32 Issue #2790 - Part 6: Highlight color change and remove important 2025-07-28 03:52:16 +08:00
MeladJM f5cd8b5417 Issue #2790 - Cleanup: Remove whitespaces 2025-07-28 01:01:27 +08:00
Moonchild ac9ed616b9 No issue - Regenerate devtools CSS database
To pick up new public use of clip, addition of overflow-inline and
addition of overflow-block.
2025-07-27 13:11:28 +02:00
Moonchild b156c32def Merge pull request 'Process @import rules based on order of appearance in the style sheet' (#2840) from FranklinDM/UXP-contrib:work_css-import-rule-order-fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2840
2025-07-27 00:09:29 +00:00
MeladJM dad41636ad Merge with latest commits 2025-07-26 22:34:41 +08:00
Francis Dominic Fajardo 2ba24302d9 Issue #2835 - Part 2: Implement processing of import rules based on order of appearance 2025-07-26 14:55:22 +08:00
Francis Dominic Fajardo 618f62e753 Issue #2835 - Part 1: Expose nsCSSRuleProcessor::CascadeSheet 2025-07-26 14:55:22 +08:00
erixreyes a48b046c36 Issue #2489: Produce more accurate computations 2025-07-26 06:16:30 +08:00
erixreyes 6298bfeb3d Issue #2489: Disallow percentage overflow and underflow 2025-07-26 05:51:57 +08:00
MeladJM 06a857bdb3 Issue #2790 - Cleanup: Remove debugging lines 2025-07-26 04:07:54 +08:00
MeladJM 9b03c84201 Issue #2790 - Part 5: Persistent highlight despite blur click 2025-07-26 03:06:37 +08:00
erixreyes 073e3adb0c Issue #2489: Allow SRGB with alpha mixing 2025-07-26 01:13:18 +08:00
erixreyes d8060a0296 Issue #2489: Allow HSL with alpha mixing 2025-07-26 01:00:17 +08:00
Moonchild 3b29cd7f19 Merge pull request 'Implement cascade layer registration and processing' (#2833) from FranklinDM/UXP-contrib:work_css-cascade-layer-registration into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2833
2025-07-25 11:27:54 +00:00
MeladJM 7c8591f911 Issue #2790 - Part 4: Working non persistent autofill highlight 2025-07-25 11:14:35 +08:00
erixreyes caaa037d42 Issue #2489: Allow color-mix() to differentiate color spaces 2025-07-25 10:41:30 +08:00
erixreyes 72f1715ba5 Issue #2489: Adding RGB to HSL function 2025-07-25 10:40:39 +08:00
Moonchild d866c8d5c7 [DOM] Make object loading use an explicit scheme whitelist. 2025-07-25 01:16:23 +02:00
erixreyes 02267e9a4a Issue #2489: Improve color-mix() computation algorithm 2025-07-25 04:49:35 +08:00
erixreyes 55254b80fd Issue #2489: Remove unnecessary initializations 2025-07-25 04:48:50 +08:00
erixreyes c4a6eba91d Issue #2489: Fix CSS color-mix() percentage parsing 2025-07-25 04:47:13 +08:00
Moonchild 2b3ad2f082 [network] Stop accepting nameless cookies. 2025-07-23 23:08:52 +02:00
Moonchild ee06d385a2 [js] Align br_table limits with V8/Gecko. 2025-07-23 20:40:50 +02:00
Moonchild 04775c4123 [gfx] Hold a stronger reference to gfxFontEntry. 2025-07-23 14:34:41 +02:00
Moonchild 3a6d7f624f No issue - Adjust CSP URI reporting more closely with the spec.
According to the W3C discussion we should allow websocket URIs to be
reported aside from http/https/ftp ones.
This rewrites things slightly and updates comments to clarify.
We do retain the non-standard reduction to origin only in case the
report is for cross-origin URIs (stops leaking full URIs to the CSP
reported destination).
See https://github.com/w3c/webappsec-csp/issues/735
2025-07-23 07:40:45 +02:00
MeladJM e5146624ea Issue #2790 - Part 3: Address BZ bug 1849122 and resolve build issues 2025-07-22 23:14:40 +08:00
Francis Dominic Fajardo 038c5a95fc Issue #2828 - Part 14: Clobber required for CSS rule processor refactoring 2025-07-22 22:41:16 +08:00
Francis Dominic Fajardo e82fa3450a Issue #2828 - Part 13: Exclude strong layers-related code from release builds
I'll be leaving this in here for future use. CSSWG hasn't defined how this will be exposed to CSSOM yet. The parser bits are also not yet implemented.
2025-07-22 22:39:49 +08:00
Francis Dominic Fajardo 5ef79e303f Issue #2828 - Part 12: Implement cascade layer SizeOfIncludingThis 2025-07-22 22:39:49 +08:00
Francis Dominic Fajardo b1c19137ad Issue #2828 - Part 11: Detach weighted rule data from cascade layer 2025-07-22 22:39:48 +08:00
Francis Dominic Fajardo 047458a002 Issue #2828 – Part 10: Clean up cascade layer constructor
This also renames mIsWeak to mIsStrong. Cascade layers are weak by default and there's no point in always setting this to true.
2025-07-22 22:39:47 +08:00
Francis Dominic Fajardo ebb0ae456c Issue #2828 - Part 9: Rename CascadeEnumData to CascadeLayer 2025-07-22 22:39:47 +08:00
Francis Dominic Fajardo 5fda071898 Issue #2828 - Part 8: Extract RuleProcessorGroup (formerly ResolvedRuleCascades) into separate file
The struct no longer holds rule cascades since part 5 anyway, and extracting it to a separate file allows it to be reused in the future.
2025-07-22 22:39:46 +08:00
Francis Dominic Fajardo c3e12fe822 Issue #2828 - Part 7: Walk child rule processors separately and ensure inverted cascade layer order is enforced for important rules
Excluding @layers declared in scoped styles because those aren't specced and are in an entirely separate cascade origin.
2025-07-22 22:39:46 +08:00
Francis Dominic Fajardo be7a231579 Issue #2828 - Part 6: Assert rules were added to the rule cascade data 2025-07-22 22:39:45 +08:00
Francis Dominic Fajardo bc45ec4f57 Issue #2828 - Part 5: Implement child rule processors 2025-07-22 22:39:44 +08:00
Francis Dominic Fajardo 202e354f87 Issue #2828 - Part 4: Move cache key storage to ResolvedRuleCascades 2025-07-22 22:39:44 +08:00
Francis Dominic Fajardo 211aa6d652 Issue #2828 - Part 3: Refactor selector matching and rule cascade data into separate files/classes 2025-07-22 22:39:43 +08:00
Francis Dominic Fajardo a91b385f68 Issue #2828 - Part 2: Collect and hold rule cascade data per cascade layer 2025-07-22 22:39:42 +08:00
Francis Dominic Fajardo 253ec6706a Issue #2828 - Part 1: Build and store the array of layer name tokens in the layer at-rules 2025-07-22 22:39:37 +08:00
MeladJM 8b579a0151 Issue #2790 - Part 2: Address BZ bugs: 1355438 and 1341230 2025-07-22 03:23:45 +08:00
Moonchild 405182e8c6 Issue #2714 - Enable the Visual Viewport API by default.
Flip the pref. We want this on by default for web compat.
Users can disable it if they really want to, but it doesn't expose
anything of note to web content anyway that can't already be determined.
2025-07-21 11:11:00 +02:00
Moonchild d59ffe50bf Issue #2714 - Implement the Visual Viewport API
This DOM/Web API is entirely irrelevant for desktop use.
We give back the width/height of the root scrollframe of content and
for scale we pass forward our dpp resolution (usually 1.0).
Since we have no "no touch" zones in our content on desktop,. the rest
(origin and offset) is hard-coded to (0,0).
2025-07-21 11:08:16 +02:00
Moonchild 7cd5d4c623 Merge pull request 'Set up fontconfig on XRE startup (GTK only)' (#2827) from FranklinDM/UXP-contrib:work_linux-fontconfig-init-fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2827
2025-07-19 22:55:45 +00:00
Francis Dominic Fajardo 6f2ee41663 Issue #2826 - Set up fontconfig on XRE startup (GTK only) 2025-07-19 21:39:05 +08:00
Moonchild 465c019783 Issue #2691 - Follow-up: Add manual tests 2025-07-19 13:58:45 +02:00
erixreyes 3654fa5444 Issue #2489: color-mix function parsing 2025-07-19 12:32:43 +08:00
erixreyes 1e7ca24d65 Issue #2489: Create ColorMixValue structure 2025-07-19 12:22:06 +08:00
erixreyes 6b9556259e Issue #2489: Update enum class syntax 2025-07-19 12:19:39 +08:00
erixreyes b8a6819b91 Issue #2489: Include color-mix to avoid filtering 2025-07-19 12:13:58 +08:00
erixreyes d4db7bf21b Issue #2489: Add color-mix computation support 2025-07-19 07:50:34 +08:00
erixreyes 5c6e1a3416 Issue #2489: Add color-mix serialization support 2025-07-19 07:49:42 +08:00
erixreyes 485de4985c Issue #2489: ColorMixValue support and structure 2025-07-19 07:45:24 +08:00
erixreyes aab2c3f490 Issue #2489: Add CSS color-mix keyword support 2025-07-19 07:20:29 +08:00
Moonchild e01b2390b8 Merge pull request 'Implement ParseSupportsSelector' (#2794) from erx_ld1/UXP:implement-at-support-selector into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2794
2025-07-18 09:54:27 +00:00
erixreyes 679c4f4075 Issue #2691: Repositioning comments 2025-07-18 07:13:31 +08:00
MeladJM 8605014f0d Issue #2790 - Part 1: Add: event state, pseudo-class mapping, SetAutofilled methods 2025-07-18 06:28:23 +08:00
erixreyes 0a6a588b0c Issue #2691: Utilize regex for spacing rules 2025-07-18 02:33:53 +08:00
Moonchild 335e0612df Merge pull request 'Implement overflow-inline and overflow-block CSS properties' (#2793) from janjan/UXP:implement-overflow-inline-and-overflow-block into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2793
2025-07-17 09:11:01 +00:00
erixreyes d49896cd01 Issue #2691: Refactored ParseSupportsSelector 2025-07-17 17:10:50 +08:00
MeladJM 6640effacb Issue #2792 - Cleanup: Remove unnecessary files 2025-07-17 16:05:09 +08:00
erixreyes ca28df8d02 Issue #2691: Improve Parser State Handling 2025-07-17 12:44:53 +08:00
MeladJM 857421f523 Issue #2792 -Implements parsing, computed style, and writing mode mapping for overflow-block and overflow-inline properties 2025-07-17 05:09:50 +08:00
Moonchild a92ea8d233 Merge pull request 'VPX PowerPC fixes' (#2786) from WolfReiser/UXP:master into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2786
2025-07-16 20:13:14 +00:00
Moonchild 8b7b609659 Merge pull request 'implement-css-clip-overflow' (#2788) from janjan/UXP:implement-css-clip-overflow into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2788
2025-07-15 21:19:17 +00:00
MeladJM bf7638c751 Issue #2499 - Align overflow computed values with CSS spec 2025-07-16 04:31:29 +08:00
Moonchild 45ae330bca Merge pull request 'Fix ASan/Debug builds on MacOS.' (#2791) from dbsoft/UXP:macasanfix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2791
2025-07-14 21:23:00 +00:00
MeladJM ee670eb701 Issue #2499 - Fix behavior of hidden and visible properly 2025-07-15 04:33:52 +08:00
Brian Smith afef40234b No Issue - Fix ASan/Debug builds on MacOS.
Not sure why we didn't run into this before, but...
Make sure MacOS versioning macros are defined before using them.
2025-07-14 12:39:49 -05:00
Francis Dominic Fajardo f1f6c5b5cf Issue #2736 - Follow-up: Stop using worker thread-only functions for checking if CSP is enabled
Should stop the barrage of worker thread assertions on debug builds.
2025-07-14 17:40:12 +02:00
Moonchild c7cb351ad3 Issue #2720 - Follow-up: Use temp value for duplicate color stop 2025-07-14 17:24:44 +02:00
MeladJM dd2a805fe5 Issue #2499 - Part 10: Fixed logic for overflow and removed unrelated additions 2025-07-13 08:08:23 +08:00
MeladJM 1cdd1103ec Issue #2499 - Clean up: Remove test files from root 2025-07-13 02:20:52 +08:00
MeladJM e7253a8594 Issue #2499 - Clean up: Recover bundle.js and remove test files from root 2025-07-13 02:19:22 +08:00
MeladJM 60d582acb4 Issue #2499 - Fix CSS overflow mixed-axis behavior 2025-07-12 02:26:42 +08:00
erixreyes 9b1247c628 Issue #2691: Adjusted missing structure 2025-07-11 19:03:13 +08:00
erixreyes 97cae6fc0f Issue #2691: Add special handling for nth-child expressions 2025-07-11 10:46:20 +08:00
erixreyes 299cddb361 Issue #2691: Enhance spacing logic for selector formatting 2025-07-11 10:41:52 +08:00
erixreyes 824a39a562 Issue #2691: Improve token handling for selectors 2025-07-11 10:34:37 +08:00
erixreyes e49ad49053 Issue #2691: Add basic parentheses tracking to ParseSupportsSelector 2025-07-11 10:28:28 +08:00
MeladJM ccdf828489 Issue #2499 - Correct overflow-x/y computed style 2025-07-10 21:59:47 +08:00
erixreyes 7560f59163 Issue #2691: Adjusted the function to use ParseSelectorGroup 2025-07-10 09:33:49 +08:00
MeladJM 53a22cbf9a Merge branch '2499-clip-overflow' 2025-07-09 23:03:50 +08:00
MeladJM 540a9c680b Issue #2499 - Store overflow-inline and overflow-block so computed style returns correct values 2025-07-09 22:32:14 +08:00
Sergey Larin 50d8f81ba0 No Issue - Disable VSX extensions
There is no detection script for them as for AltiVec, and
it's breaking older machines (PowerMac G5 in particular).
2025-07-09 08:18:47 +00:00
Sergey Larin 8bceafeb60 Issue #2777 - Fix ffvpx build on PPC64 2025-07-09 08:18:41 +00:00
erixreyes af37e5c0ad Issue #2691: Implement ParseSupportsSelector 2025-07-09 06:44:26 +08:00
Moonchild d2e52f4317 Bump Goanna milestone 2025-07-08 09:20:32 +02:00
Moonchild 89f43c5551 Issue #2757 - Follow-up: Add clip-path test (manual QA) 2025-07-08 09:13:34 +02:00
Moonchild 7b3d78963d Merge pull request 'Add support for clip-path:<geometry-box>' (#2784) from erx_ld1/UXP:implement-clip-path-geomBox into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2784
2025-07-08 07:09:47 +00:00
erixreyes 408595a609 Issue #2757: Fixed Indentations 2025-07-08 07:19:22 +08:00
erixreyes d1c07d8bd2 No Issue - Fixed Indentation 2025-07-08 06:43:12 +08:00
erixreyes 4506180129 Issue #2757: Create a new basicShape of type inset then set inset coords to zero. 2025-07-08 06:08:31 +08:00
MeladJM bb45d38314 Issue #2499 - Part 3: Add CSS clip overflow support with serialization fixes 2025-07-08 05:46:54 +08:00
erixreyes cb727ebf70 Issue #2780: Add back the mismatch overflow handling in nsRuleNode.cpp 2025-07-07 23:32:10 +02:00
Moonchild 55b97b4932 Merge pull request 'Follow-ups for Un-prefix -moz-user-select' (#2782) from RealityRipple/UXP:2106b into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2782
2025-07-07 18:09:47 +00:00
Moonchild da8beb084c Merge pull request 'Rebuild devtools Properties DB after Disinheriting scrollbar-width' (#2781) from RealityRipple/UXP:2765-dpdb into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2781
2025-07-07 18:09:24 +00:00
Andy e986a1a58c Issue #2106 - Clean-up: Un-prefix -moz-user-select in Comments 2025-07-07 10:46:13 -07:00
Andy 5e969ef750 Issue #2106 - Clean-up: Remove Defunct -moz-user-select CSS Directives 2025-07-07 10:45:55 -07:00
Andy 841d2b672f Issue #2106 - Follow-up: Additional contain Keyword Entries 2025-07-07 10:45:42 -07:00
Andy bb881f41d7 Issue #2106 - Follow-up: Un-prefix DOM Attribute MozUserSelect 2025-07-07 10:45:22 -07:00
Andy b09e94c651 Issue #2106 - Follow-up: Additional Un-prefixing 2025-07-07 10:43:13 -07:00
Andy 1ae509c852 Issue #2765 - Follow-up: Rebuild devtools Properties DB 2025-07-07 10:40:15 -07:00
MeladJM ac1b4f8ed9 Issue #2499 - Part 2: Fix overflow shorthand serialization for mixed clip values 2025-07-06 05:56:06 +08:00
MeladJM 3ac22b0edf Issue #2499 - Part 1: Add overflow: clip support and tests 2025-07-06 04:37:31 +08:00
Moonchild f983d7e6f7 Merge pull request 'improved-implement-axis-shorthand-parsing-overflow-and-make-css-overflow-parse-2-values-as-a-shorthand' (#2778) from janjan/UXP:improved-implement-axis-shorthand-parsing-overflow-and-make-css-overflow-parse-2-values-as-a-shorthand into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2778
2025-07-05 17:36:17 +00:00
MeladJM 872bc4c1a1 Issue #2124/2662: Cleaning of code 2025-07-05 22:22:57 +08:00
erixreyes 542a28588e Issue #2124/2662: Optimize overflow shorthand parsing and serialization 2025-07-05 05:47:31 +08:00
erixreyes b19c48957b Issue #2662 - Implement axis-shorthand parsing 2025-07-05 05:41:47 +08:00
erixreyes 48a8d9e9e8 Issue #2124 - Adjust overflow parser to handle two values 2025-07-05 05:39:25 +08:00
erixreyes 5d4084ea32 No Issue - Add detection for medium in border shorthand 2025-07-05 05:38:01 +08:00
Moonchild e91be25a86 [devtools] Further improve special character escaping in "copy as curl".
Follow-up to 15335ce39d

Trying to cross-platform sanitize causes issues escaping too much and
as a result mangling the curl commands that get spit out.
This reverts previously added Windows-specific escaping on POSIX and
vice versa.
Since we do not offer cross-platform copying as a curl command in devtools
anyway, it makes little sense to sanitize for the O.S. we're not running on
as we would not be using the command processor in such environments that
could trip over characters for the other O.S. This was previously added
as a defense-in-depth in case we would start offering this, but I see no
real reason to do so, anyway.

Also decided to in-line comments for readability instead of a bulleted
list in the function head.

Mozilla has taken similar steps because of fall-out, but they do offer
cross-platform "copy as curl" for corner cases, so they will have to
find solutions for a problem we won't have.
2025-07-04 22:41:03 +02:00
Moonchild a3c33fa529 Merge pull request 'Un-prefix -moz-user-select and align other value names with CSS4' (#2772) from jdsanchez/UXP-contrib:unprefix-mozselect-align-valuenames-css4 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2772
2025-07-04 11:17:21 +00:00
Moonchild 2f524bd8bd Merge pull request 'Implement CSS4 revert keyword' (#2775) from FranklinDM/UXP-contrib:work_css-revert into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2775
2025-07-04 09:33:34 +00:00
Jerico 5e29f281df Issue #2106 - Part 3: Add 'contain' as user-select value, retain 'element' 2025-07-04 17:31:53 +08:00
Francis Dominic Fajardo 26da47d7ce Issue #2045 - Part 10: Regenerate devtools CSS database and include the revert keyword in related devtools code 2025-07-03 19:37:14 +08:00
Francis Dominic Fajardo 8b18091b0f Issue #2045 - Part 9: Include the revert keyword in the list of accepted values for CSS properties returned by inDOMUtils 2025-07-03 19:37:14 +08:00
Moonchild 05bae9bb72 Merge pull request 'Issue #2773 - Fix issues when building FFVPX on architectures without assembly routines' (#2774) from Basilisk-Dev/UXP-contrib:master into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2774
2025-07-03 11:23:34 +00:00
Francis Dominic Fajardo 44736c7db9 Issue #2045 - Part 8: Remap revert keyword values to a higher cascade level 2025-07-03 18:02:50 +08:00
Francis Dominic Fajardo 47266a6381 Issue #2045 - Part 7: Override revert values during presentation hint cascade 2025-07-03 18:02:50 +08:00
Francis Dominic Fajardo f76e834a32 Issue #2045 - Part 6: Treat "revert" values as the same as "unset" when encountered in the rule node 2025-07-03 18:02:49 +08:00
Francis Dominic Fajardo d3a647fbfb Issue #2045 - Part 5: Serialize shorthands using "revert" like those containing "unset" 2025-07-03 18:02:49 +08:00
Francis Dominic Fajardo 204d263577 Issue #2045 - Part 4: Parse "revert" in property values wherever "unset" is allowed 2025-07-03 18:02:48 +08:00
Francis Dominic Fajardo d4b9bb1c87 Issue #2045 - Part 3: Implement cascade origin tracking to CSS parser
The CSS parser already knows the cascade origin, but it is using a different enum for storing it.
2025-07-03 18:02:48 +08:00
Francis Dominic Fajardo bb309f6d0b Issue #2045 - Part 2: Add handling and storage for the revert unit and value 2025-07-03 18:02:40 +08:00
Francis Dominic Fajardo a7d6166b4c Issue #2045 - Part 1: Revert "Temporarily force hidden elements to be actually hidden."
This reverts commit 1692fa5291.
2025-07-03 17:47:04 +08:00
Francis Dominic Fajardo a356649786 No issue - Fix mixing of tabs with space-indented code. 2025-07-03 17:47:03 +08:00
Basilisk-dev 4a2df933dc Issue #2773 - accurately reflect status of FFVPX assembly routines on 32-bit arm in comments 2025-07-02 16:11:13 -04:00
Basilisk-dev f538975196 Issue #2773 - Allow building FFVPX on all architectures, even without assembly routines 2025-07-02 16:08:46 -04:00
Basilisk-dev 7f7b08591e Issue #2773 - Build ffvpx on 32-bit x86 Linux 2025-07-02 15:27:34 -04:00
Moonchild 38d4f89b0b Merge pull request 'Unprefix CSS -moz-read-write / -moz-read-only' (#2770) from RealityRipple/UXP:un-moz-read into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2770
2025-06-30 15:48:41 +00:00
Jerico c2a9f541ff Issue #2106 - Part 2: Align value names 2025-06-30 22:32:54 +08:00
Jerico 65c3b14ca4 Issue #2106 - Part 1: Un-prefix -moz-user-select 2025-06-30 22:32:37 +08:00
Andy d65b5cbca6 Unprefix -moz-read-write / -moz-read-only 2025-06-29 02:10:26 -07:00
Moonchild 09815f438f Merge pull request 'Follow-up: Fix UAF when returning the non-NAC style context from a frameless node' (#2768) from FranklinDM/UXP-contrib:work_css-scrollbar-width-uaf-fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2768
2025-06-28 09:42:44 +00:00
Francis Dominic Fajardo 3aa8907d6a Issue #2765 - Follow-up: Avoid declaring RefPtr in the return statement 2025-06-28 16:15:37 +08:00
Francis Dominic Fajardo d4a327c694 Issue #2765 - Follow-up: Fix UAF when returning the non-NAC style context from a frameless node 2025-06-28 11:05:45 +08:00
Moonchild 68f176da71 Merge pull request 'Follow-up: Make scrollbar width checks use the originating non-NAC style context on Linux and Mac' (#2767) from FranklinDM/UXP-contrib:work_css-inheritance-followup into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2767
2025-06-27 08:31:10 +00:00
Francis Dominic Fajardo d71911df9c Issue #2765 - Follow-up: Make scrollbar width checks use the originating non-NAC style context on Linux and Mac 2025-06-27 12:25:01 +08:00
Moonchild e56b2cb539 Merge pull request 'Several inheritance-related fixes for scrollbar-width and other properites.' (#2766) from FranklinDM/UXP-contrib:work_css-inheritance-fixes-for-scrollbar-width-and-related into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2766
2025-06-26 17:06:29 +00:00
Francis Dominic Fajardo 767afca38a Issue #2764 - Fix several properties to return NeutralChange hint
This excludes the removal of the mBorderImageOutset change condition from triggering a repaint which doesn't make sense.
2025-06-26 23:00:16 +08:00
Francis Dominic Fajardo 72f61e87b5 No issue - Refactor nsStyleUIReset::CalcDifference to accumulate change hints
This was patched in m-c via an unrelated bug (bug 1370034).

Noted by dbaron in this comment: https://bugzilla.mozilla.org/show_bug.cgi?id=1370034#c69
2025-06-26 23:00:07 +08:00
Francis Dominic Fajardo 37c462a7b3 Issue #2765 - Part 3: Make scrollbar width checks use the originating non-NAC style context 2025-06-26 22:59:55 +08:00
Francis Dominic Fajardo cd32e19c91 Issue #2765 - Part 2: Create a helper function for resolving the non-NAC style context of a given NAC 2025-06-26 22:55:44 +08:00
Francis Dominic Fajardo 0c5885b853 Issue #2765 - Part 1: Scrollbar width should be treated as a non-inherited property
Note: non-inherited properties are stored in "reset" style structs.

Previous implementation treats it as an inherited property, which
doesn't match the spec.

This also fixes the incorrect behavior when using the `unset` value
for this property by specifying SETVAL_UNSET_INITIAL in the mask.
2025-06-26 22:55:19 +08:00
10540 changed files with 4713501 additions and 556283 deletions

No files matched your search

+1 -1
View File
@@ -22,4 +22,4 @@
# changes to stick? As of bug 928195, this shouldn't be necessary! Please
# don't change CLOBBER for WebIDL changes any more.
Clobber for NSS update
Clobber for Python 3 migration
+8 -4
View File
@@ -14,7 +14,7 @@ endif
export TOPLEVEL_BUILD := 1
default::
BACKEND_ONCE_STAMP := backend.once.stamp
ifndef TEST_MOZBUILD
ifdef MOZ_BUILD_APP
include $(wildcard $(topsrcdir)/$(MOZ_BUILD_APP)/build.mk)
@@ -46,7 +46,7 @@ ifndef TEST_MOZBUILD
ifndef MOZ_PROFILE_USE
# We need to explicitly put BUILD_BACKEND_FILES here otherwise the rule in
# rules.mk doesn't run early enough.
$(TIERS) binaries:: CLOBBER $(configure_dir)/configure config.status $(BUILD_BACKEND_FILES)
$(TIERS) binaries:: CLOBBER $(configure_dir)/configure config.status $(BACKEND_ONCE_STAMP)
# While our mozbuild backend has some kind of crazy install_manfests junk to
# try and make this not have to happen, we actually want dist/bin to be
@@ -100,7 +100,11 @@ config.status js/src/config.status:
ifndef TEST_MOZBUILD
.PHONY: backend
backend: $(BUILD_BACKEND_FILES)
backend: $(BACKEND_ONCE_STAMP)
# Create a per-invocation stamp so backend regenerates only once
$(BACKEND_ONCE_STAMP):
@echo "Stamping backend regeneration."
@$(TOUCH) $@
# A traditional rule would look like this:
# backend.%:
@@ -122,7 +126,7 @@ $(subst .,%,$(BUILD_BACKEND_FILES)):
@echo 'Build configuration changed. Regenerating backend.'
$(PYTHON) config.status
Makefile: $(BUILD_BACKEND_FILES)
Makefile: $(BACKEND_ONCE_STAMP)
@$(TOUCH) $@
define build_backend_rule
+17 -8
View File
@@ -6,7 +6,7 @@
#include "Platform.h"
#include "nsIAccessibleEvent.h"
#include "nsIGConfService.h"
#include "nsIGSettingsService.h"
#include "nsIServiceManager.h"
#include "nsMai.h"
#include "AtkSocketAccessible.h"
@@ -360,13 +360,22 @@ dbus_done:
return sShouldEnable;
#endif
//check gconf-2 setting
#define GCONF_A11Y_KEY "/desktop/gnome/interface/accessibility"
nsresult rv = NS_OK;
nsCOMPtr<nsIGConfService> gconf =
do_GetService(NS_GCONFSERVICE_CONTRACTID, &rv);
if (NS_SUCCEEDED(rv) && gconf)
gconf->GetBool(NS_LITERAL_CSTRING(GCONF_A11Y_KEY), &sShouldEnable);
// check GSettings
#define GSETINGS_A11Y_INTERFACE "org.gnome.desktop.interface"
#define GSETINGS_A11Y_KEY "toolkit-accessibility"
nsCOMPtr<nsIGSettingsService> gsettings =
do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
nsCOMPtr<nsIGSettingsCollection> a11y_settings;
if (gsettings) {
gsettings->GetCollectionForSchema(NS_LITERAL_CSTRING(GSETINGS_A11Y_INTERFACE),
getter_AddRefs(a11y_settings));
if (a11y_settings) {
a11y_settings->GetBoolean(NS_LITERAL_CSTRING(GSETINGS_A11Y_KEY),
&sShouldEnable);
}
}
return sShouldEnable;
}
+1 -1
View File
@@ -55,7 +55,7 @@ private:
{
explicit IteratorState(Accessible* aParent, IteratorState* mParentState = nullptr);
Accessible* mParent;
RefPtr<Accessible> mParent;
int32_t mIndex;
IteratorState* mParentState;
};
+1 -1
View File
@@ -76,7 +76,7 @@ HyperTextAccessible::NativeState()
{
uint64_t states = AccessibleWrap::NativeState();
if (mContent->AsElement()->State().HasState(NS_EVENT_STATE_MOZ_READWRITE)) {
if (mContent->AsElement()->State().HasState(NS_EVENT_STATE_READWRITE)) {
states |= states::EDITABLE;
} else if (mContent->IsHTMLElement(nsGkAtoms::article)) {
+9 -9
View File
@@ -40,7 +40,7 @@ def loadEventIDL(parser, includePath, eventname):
class Configuration:
def __init__(self, filename):
config = {}
execfile(filename, config)
exec(compile(open(filename, "rb").read(), filename, 'exec'), config)
self.simple_events = config.get('simple_events', [])
def firstCap(str):
@@ -64,7 +64,7 @@ def print_header_file(fd, conf, incdirs):
for e in conf.simple_events:
idl, idl_path = loadEventIDL(p, incdirs, e)
idl_paths.add(idl_path)
for iface in filter(lambda p: p.kind == "interface", idl.productions):
for iface in [p for p in idl.productions if p.kind == "interface"]:
classname = ("xpcAcc%s" % e)
baseinterfaces = interfaces(iface)
@@ -73,7 +73,7 @@ def print_header_file(fd, conf, incdirs):
fd.write("public:\n")
attributes = allAttributes(iface)
args = map(writeAttributeParams, attributes)
args = list(map(writeAttributeParams, attributes))
fd.write(" %s(%s) :\n" % (classname, ", ".join(args)))
initializers = []
@@ -83,7 +83,7 @@ def print_header_file(fd, conf, incdirs):
fd.write(" NS_DECL_CYCLE_COLLECTING_ISUPPORTS\n")
fd.write(" NS_DECL_CYCLE_COLLECTION_CLASS(%s)\n" % (classname))
for iface in filter(lambda i: i.name != "nsISupports", baseinterfaces):
for iface in [i for i in baseinterfaces if i.name != "nsISupports"]:
fd.write(" NS_DECL_%s\n" % iface.name.upper())
fd.write("\nprivate:\n")
@@ -97,13 +97,13 @@ def print_header_file(fd, conf, incdirs):
return idl_paths
def interfaceAttributeTypes(idl):
ifaces = filter(lambda p: p.kind == "interface", idl.productions)
ifaces = [p for p in idl.productions if p.kind == "interface"]
attributes = []
for i in ifaces:
ifaceAttributes = allAttributes(i)
attributes.extend(ifaceAttributes)
ifaceAttrs = filter(lambda a: a.realtype.nativeType("in").endswith("*"), attributes)
return map(lambda a: a.realtype.nativeType("in").strip(" *"), ifaceAttrs)
ifaceAttrs = [a for a in attributes if a.realtype.nativeType("in").endswith("*")]
return [a.realtype.nativeType("in").strip(" *") for a in ifaceAttrs]
def print_cpp(idl, fd, conf, eventname):
for p in idl.productions:
@@ -186,7 +186,7 @@ def interfaces(iface):
def allAttributes(iface):
attributes = []
for i in interfaces(iface):
attrs = filter(lambda m: isinstance(m, xpidl.Attribute), i.members)
attrs = [m for m in i.members if isinstance(m, xpidl.Attribute)]
attributes.extend(attrs)
return attributes
@@ -194,7 +194,7 @@ def allAttributes(iface):
def write_cpp(eventname, iface, fd):
classname = "xpcAcc%s" % eventname
attributes = allAttributes(iface)
ccattributes = filter(lambda m: m.realtype.nativeType('in').endswith('*'), attributes)
ccattributes = [m for m in attributes if m.realtype.nativeType('in').endswith('*')]
fd.write("NS_IMPL_CYCLE_COLLECTION(%s" % classname)
for c in ccattributes:
fd.write(", m%s" % firstCap(c.name))
+4 -5
View File
@@ -5,11 +5,11 @@
'''Parses a given application.ini file and outputs the corresponding
XULAppData structure as a C++ header file'''
import ConfigParser
import configparser
import sys
def main(output, file):
config = ConfigParser.RawConfigParser()
config = configparser.RawConfigParser()
config.read(file)
flags = set()
try:
@@ -27,8 +27,7 @@ def main(output, file):
'App:id', 'Gecko:minversion', 'Gecko:maxversion')
missing = [var for var in expected if var not in appdata]
if missing:
print >>sys.stderr, \
"Missing values in %s: %s" % (file, ', '.join(missing))
print("Missing values in %s: %s" % (file, ', '.join(missing)), file=sys.stderr)
sys.exit(1)
if not 'Crash Reporter:serverurl' in appdata:
@@ -57,4 +56,4 @@ if __name__ == '__main__':
if len(sys.argv) != 1:
main(sys.stdout, sys.argv[1])
else:
print >>sys.stderr, "Usage: %s /path/to/application.ini" % sys.argv[0]
print("Usage: %s /path/to/application.ini" % sys.argv[0], file=sys.stderr)
+3
View File
@@ -982,6 +982,9 @@ EOF
k1om:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
loongarch64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m32r*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
+4 -4
View File
@@ -34,7 +34,7 @@ def symlink(source, link_name):
def check_run(args):
global DEBUG
if DEBUG:
print >> sys.stderr, ' '.join(args)
print(' '.join(args), file=sys.stderr)
r = subprocess.call(args)
assert r == 0
@@ -43,11 +43,11 @@ def run_in(path, args):
d = os.getcwd()
global DEBUG
if DEBUG:
print >> sys.stderr, 'cd "%s"' % path
print('cd "%s"' % path, file=sys.stderr)
os.chdir(path)
check_run(args)
if DEBUG:
print >> sys.stderr, 'cd "%s"' % d
print('cd "%s"' % d, file=sys.stderr)
os.chdir(d)
@@ -377,7 +377,7 @@ if __name__ == "__main__":
extra_cflags2 = ["-fPIC"]
extra_cxxflags2 = ["-fPIC", "-static-libstdc++"]
if os.environ.has_key('LD_LIBRARY_PATH'):
if 'LD_LIBRARY_PATH' in os.environ:
os.environ['LD_LIBRARY_PATH'] = '%s/lib64/:%s' % (gcc_dir, os.environ['LD_LIBRARY_PATH']);
else:
os.environ['LD_LIBRARY_PATH'] = '%s/lib64/' % gcc_dir
+3 -3
View File
@@ -81,9 +81,9 @@ def process_files(files, output_filename, digests, strip):
short_file = short_file.lstrip('/')
else:
short_file = file
print >>output, '%s %s %s %s' % (hash, digest,
print('%s %s %s %s' % (hash, digest,
os.path.getsize(file),
short_file)
short_file), file=output)
def setup_logging(level=logging.DEBUG):
'''This function sets up the logging module using a speficiable logging
@@ -140,7 +140,7 @@ def main():
try:
for digest in options.digests:
hashlib.new(digest)
except ValueError, ve:
except ValueError as ve:
logger.error('Could not create a "%s" hash object (%s)' %
(digest, ve.args[0]))
exit(1)
@@ -11,7 +11,7 @@ import logging
import os
import site
import sys
import urllib2
import urllib.request, urllib.error, urllib.parse
import difflib
FAILURE_CODE = 1
@@ -40,10 +40,10 @@ def make_hg_url(hgHost, repoPath, protocol='https', revision=None,
def readConfig(configfile, keys=[], required=[]):
c = {}
execfile(configfile, c)
exec(compile(open(configfile, "rb").read(), configfile, 'exec'), c)
for k in keys:
c = c[k]
items = c.keys()
items = list(c.keys())
err = False
for key in required:
if key not in items:
@@ -126,7 +126,7 @@ def get_mozconfig(path, options):
else:
url = make_hg_url(options.hghost, options.branch, 'http',
options.revision, path)
return urllib2.urlopen(url).readlines()
return urllib.request.urlopen(url).readlines()
if __name__ == '__main__':
from optparse import OptionParser
-2
View File
@@ -73,8 +73,6 @@ if CONFIG['ARM_ARCH']:
if int(CONFIG['ARM_ARCH']) < 7:
gyp_vars['armv7'] = 0
gyp_vars['arm_neon_optional'] = 0
elif os == 'Android':
gyp_vars['armv7'] = 1
else:
# CPU detection for ARM works on Android only. armv7 always uses CPU
# detection, so we have to set armv7=0 for non-Android target
+1 -1
View File
@@ -18,7 +18,7 @@ flavors = {
'Linux': 'linux',
'Darwin': 'mac',
'SunOS': 'solaris',
'GNU/kFreeBSD': 'freebsd',
'kFreeBSD': 'freebsd',
'DragonFly': 'dragonfly',
'FreeBSD': 'freebsd',
'NetBSD': 'netbsd',
+14 -9
View File
@@ -12,7 +12,7 @@ import random
import subprocess
import sys
import uuid
import __builtin__
import builtins
from types import ModuleType
@@ -170,11 +170,16 @@ def bootstrap(topsrcdir, mozilla_dir=None):
if mozilla_dir is None:
mozilla_dir = topsrcdir
# Ensure we are running Python 2.7+. We put this check here so we generate a
# user-friendly error message rather than a cryptic stack trace on module
# import.
if sys.version_info[0] != 2 or sys.version_info[1] < 7:
print('Python 2.7 or above (but not Python 3) is required to run mach.')
# Ensure we are not running Python 2.
# We put this check here so we generate a user-friendly error message
# rather than a cryptic stack trace on module import.
if sys.version_info[0] < 3 or sys.version_info[1] < 3:
print('Python 3.3 or above is required to run mach.')
print('You are running Python', platform.python_version())
sys.exit(1)
# This sanity check is overkill, but why not?
if sys.version_info[0] > 3:
print('Python 4.x or higher not supported. Use Python 3 instead.')
print('You are running Python', platform.python_version())
sys.exit(1)
@@ -335,7 +340,7 @@ def bootstrap(topsrcdir, mozilla_dir=None):
# always load local repository configuration
mach.settings_paths.append(mozilla_dir)
for category, meta in CATEGORIES.items():
for category, meta in list(CATEGORIES.items()):
mach.define_category(category, meta['short'], meta['long'],
meta['priority'])
@@ -360,7 +365,7 @@ class ImportHook(object):
self._modules = set()
def __call__(self, name, globals=None, locals=None, fromlist=None,
level=-1):
level=0):
# name might be a relative import. Instead of figuring out what that
# resolves to, which is complex, just rely on the real import.
# Since we don't know the full module name, we can't check sys.modules,
@@ -409,4 +414,4 @@ class ImportHook(object):
# Install our hook
__builtin__.__import__ = ImportHook(__builtin__.__import__)
builtins.__import__ = ImportHook(builtins.__import__)
+1 -1
View File
@@ -11,7 +11,7 @@
# _declare_exceptions template, and add it to the return statement. Then
# destructure in the assignment below the function declaration.
@template
@imports(_from='__builtin__', _import='Exception')
@imports(_from='builtins', _import='Exception')
def _declare_exceptions():
class FatalCheckError(Exception):
'''An exception to throw from a function decorated with @checking.
+23 -13
View File
@@ -133,7 +133,8 @@ option(env='PYTHON', nargs=1, help='Python interpreter')
@imports(_from='mozbuild.configure.util', _import='LineIO')
@imports(_from='mozbuild.virtualenv', _import='VirtualenvManager')
@imports(_from='mozbuild.virtualenv', _import='verify_python_version')
@imports('distutils.sysconfig')
@imports(_from='mozpack.path', _import='normsep')
@imports('sysconfig')
def virtualenv_python(env_python, build_env, mozconfig, help):
if help:
return
@@ -165,6 +166,9 @@ def virtualenv_python(env_python, build_env, mozconfig, help):
os.path.join(topobjdir, '_virtualenv'), out,
os.path.join(topsrcdir, 'build', 'virtualenv_packages.txt'))
if normsep(sys.executable) == normsep(manager.python_path):
return normsep(manager.python_path)
if python:
# If we're not in the virtualenv, we need the which module for
# find_program.
@@ -193,10 +197,10 @@ def virtualenv_python(env_python, build_env, mozconfig, help):
sys.exit(subprocess.call([python] + sys.argv))
# We are now in the virtualenv
if not distutils.sysconfig.get_python_lib():
if not sysconfig.get_path("purelib"):
die('Could not determine python site packages directory')
return python
return normsep(python)
set_config('PYTHON', virtualenv_python)
add_old_configure_assignment('PYTHON', virtualenv_python)
@@ -212,7 +216,7 @@ def early_options():
def early_options():
return set(
option.env
for option in __sandbox__._options.itervalues()
for option in __sandbox__._options.values()
if option.env
)
return early_options
@@ -240,17 +244,17 @@ def mozconfig_options(mozconfig, help):
log.info(' %s' % arg)
helper.add(arg, origin='mozconfig', args=helper._args)
for key, value in mozconfig['env']['added'].iteritems():
for key, value in mozconfig['env']['added'].items():
add(key, value)
os.environ[key] = value
for key, (_, value) in mozconfig['env']['modified'].iteritems():
for key, (_, value) in mozconfig['env']['modified'].items():
add(key, value)
os.environ[key] = value
for key, value in mozconfig['vars']['added'].iteritems():
for key, value in mozconfig['vars']['added'].items():
# mozconfig_loader adds _IS_SET variables that are irrelevant
if not key.endswith('_IS_SET'):
add(key, value)
for key, (_, value) in mozconfig['vars']['modified'].iteritems():
for key, (_, value) in mozconfig['vars']['modified'].items():
add(key, value)
@@ -290,6 +294,7 @@ option('--target', nargs=1,
@imports(_from='mozbuild.configure.constants', _import='Endianness')
@imports(_from='mozbuild.configure.constants', _import='Kernel')
@imports(_from='mozbuild.configure.constants', _import='OS')
@imports(_from='mozbuild.configure.constants', _import='OS_and_Kernel')
def split_triplet(triplet):
# The standard triplet is defined as
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
@@ -375,6 +380,9 @@ def split_triplet(triplet):
elif cpu.startswith('aarch64'):
canonical_cpu = 'aarch64'
endianness = 'little'
elif cpu.startswith('loongarch64'):
canonical_cpu = 'loongarch64'
endianness = 'little'
else:
die('Unknown CPU type: %s' % cpu)
@@ -382,8 +390,8 @@ def split_triplet(triplet):
alias=triplet,
cpu=CPU(canonical_cpu),
bitness=CPU_bitness[canonical_cpu],
kernel=Kernel(canonical_kernel),
os=OS(canonical_os),
kernel=OS_and_Kernel(canonical_kernel),
os=OS_and_Kernel(canonical_os),
endianness=Endianness(endianness),
raw_cpu=cpu,
raw_os=os,
@@ -397,7 +405,8 @@ def split_triplet(triplet):
def config_sub(shell, triplet):
config_sub = os.path.join(os.path.dirname(__file__), '..',
'autoconf', 'config.sub')
return subprocess.check_output([shell, config_sub, triplet]).strip()
return subprocess.check_output([shell, config_sub, triplet],
universal_newlines=True).strip()
@depends('--host', shell)
@@ -407,7 +416,8 @@ def host(value, shell):
if not value:
config_guess = os.path.join(os.path.dirname(__file__), '..',
'autoconf', 'config.guess')
host = subprocess.check_output([shell, config_guess]).strip()
host = subprocess.check_output([shell, config_guess],
universal_newlines=True).strip()
else:
host = value[0]
@@ -758,7 +768,7 @@ def enabled_in_nightly(milestone, _):
def all_configure_options(_):
result = []
previous = None
for option in __sandbox__._options.itervalues():
for option in __sandbox__._options.values():
# __sandbox__._options contains items for both option.name and
# option.env. But it's also an OrderedDict, meaning both are
# consecutive.
+34 -2
View File
@@ -11,9 +11,14 @@ def moz_jemalloc4(value):
option('--enable-jemalloc', env='MOZ_MEMORY',
help='Replace system memory allocator with jemalloc')
option('--enable-mimalloc',
help='Replace system memory allocator with mimalloc')
@depends('--enable-jemalloc', target, build_project, c_compiler)
def jemalloc(value, target, build_project, c_compiler):
@depends('--enable-jemalloc', '--enable-mimalloc', target, build_project,
c_compiler)
def jemalloc(value, mimalloc, target, build_project, c_compiler):
if value and mimalloc:
die('--enable-jemalloc and --enable-mimalloc cannot be used together')
if value.origin != 'default':
return bool(value) or None
@@ -30,11 +35,38 @@ def jemalloc(value, target, build_project, c_compiler):
if target.kernel == 'Linux':
return True
@depends('--enable-mimalloc', '--enable-jemalloc', target)
def mimalloc(value, jemalloc, target):
if value and jemalloc:
die('--enable-jemalloc and --enable-mimalloc cannot be used together')
if value.origin != 'default':
if not value:
return None
if target.kernel not in ('Darwin', 'WINNT', 'Linux', 'kFreeBSD', 'FreeBSD',
'NetBSD', 'OpenBSD', 'DragonFly'):
die('--enable-mimalloc is not supported on %s', target.kernel)
return True
@depends('--enable-mimalloc', '--enable-jemalloc')
def mimalloc_requires_disable(mimalloc, jemalloc):
if not mimalloc:
return
if jemalloc or jemalloc.origin not in ('command-line', 'mozconfig'):
die('--enable-mimalloc requires --disable-jemalloc to be passed explicitly')
set_config('MOZ_MEMORY', jemalloc)
set_define('MOZ_MEMORY', jemalloc)
add_old_configure_assignment('MOZ_MEMORY', jemalloc)
@depends(mimalloc)
def mimalloc_config(mimalloc):
return True if mimalloc else False
set_config('MOZ_MIMALLOC', mimalloc_config)
set_define('MOZ_MIMALLOC', mimalloc)
add_old_configure_assignment('MOZ_MIMALLOC', mimalloc_config)
# Because --enable-jemalloc doesn't use a default because of the dependency
# on the target, we can't use a js_option for it to propagate to js/src
+13 -24
View File
@@ -3,13 +3,6 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
@imports('codecs')
@imports('sys')
def encoded_open(path, mode):
encoding = 'mbcs' if sys.platform == 'win32' else 'utf-8'
return codecs.open(path, mode, encoding)
m4 = check_prog(
"M4",
(
@@ -31,8 +24,10 @@ m4 = check_prog(
@imports(_from='os.path', _import='exists')
@imports(_from='mozbuild.shellutil', _import='quote')
@imports(_from='os', _import='environ')
@imports(_from='mozbuild.getencoding', _import='getencoding')
def prepare_configure(old_configure, mozconfig, awk, m4, build_env, shell,
old_configure_assignments, build_project):
encoding = getencoding()
# os.path.abspath in the sandbox will ensure forward slashes on Windows,
# which is actually necessary because this path actually ends up literally
# as $0, and backslashes there breaks autoconf's detection of the source
@@ -43,7 +38,6 @@ def prepare_configure(old_configure, mozconfig, awk, m4, build_env, shell,
if not old_configure_dir.endswith('/js/src'):
old_configure = os.path.join(old_configure_dir, 'js', 'src',
os.path.basename(old_configure))
refresh = True
if exists(old_configure):
mtime = getmtime(old_configure)
@@ -67,25 +61,21 @@ def prepare_configure(old_configure, mozconfig, awk, m4, build_env, shell,
env['AWK'] = awk
env['AC_MACRODIR'] = os.path.join(build_env.topsrcdir, 'build', 'autoconf')
my_env = env
# Handle Python 2.7 not allowing unicode in the environment on Windows
if sys.platform == 'win32':
my_env = dict()
for e in env:
my_env[e.encode('ascii','ignore')] = env[e].encode('ascii','ignore')
script = subprocess.check_output([
shell, autoconf,
'--localdir=%s' % os.path.dirname(old_configure),
old_configure + '.in'], env=my_env)
script = script.decode(encoding, errors='replace')
# Make old-configure append to config.log, where we put our own log.
# This could be done with a m4 macro, but it's way easier this way
script = script.replace('>./config.log', '>>./config.log')
with open(old_configure, 'wb') as fh:
with open(old_configure, 'w', encoding=encoding, errors='replace') as fh:
fh.write(script)
cmd = [shell, old_configure]
with encoded_open('old-configure.vars', 'w') as out:
with open('old-configure.vars', 'w', encoding=encoding, errors='replace') as out:
log.debug('Injecting the following to old-configure:')
def inject(command):
print(command, file=out)
@@ -127,7 +117,6 @@ def old_configure_options(*options):
'--enable-alsa',
'--enable-appcompat-guid',
'--enable-av1',
'--enable-jxl',
'--enable-b2g-bt',
'--enable-b2g-camera',
'--enable-b2g-ril',
@@ -153,10 +142,7 @@ def old_configure_options(*options):
'--enable-faststripe',
'--enable-feeds',
'--enable-gamepad',
'--enable-gconf',
'--enable-gczeal',
'--enable-gio',
'--enable-gnomeui',
'--enable-gold',
'--enable-hardware-aec-ns',
'--enable-icf',
@@ -298,8 +284,11 @@ def old_configure_options(*options):
@imports('subprocess')
@imports('sys')
@imports(_from='mozbuild.shellutil', _import='quote')
@imports(_from='mozbuild.util', _import='exec_')
@imports(_from='mozbuild.getencoding', _import='getencoding')
def old_configure(prepare_configure, extra_old_configure_args, all_options,
*options):
encoding = getencoding()
cmd = prepare_configure
# old-configure only supports the options listed in @old_configure_options
@@ -336,7 +325,7 @@ def old_configure(prepare_configure, extra_old_configure_args, all_options,
ret = subprocess.call(cmd)
if ret:
with log.queue_debug():
with encoded_open('config.log', 'r') as fh:
with open('config.log', 'r', encoding=encoding, errors='replace') as fh:
fh.seek(log_size)
for line in fh:
log.debug(line.rstrip())
@@ -344,12 +333,12 @@ def old_configure(prepare_configure, extra_old_configure_args, all_options,
sys.exit(ret)
raw_config = {}
with encoded_open('config.data', 'r') as fh:
with open('config.data', 'r', encoding=encoding, errors='replace') as fh:
code = compile(fh.read(), 'config.data', 'exec')
# Every variation of the exec() function I tried led to:
# SyntaxError: unqualified exec is not allowed in function 'main' it
# contains a nested function with free variables
exec code in raw_config
exec_(code, raw_config)
# Ensure all the flags known to old-configure appear in the
# @old_configure_options above.
@@ -383,9 +372,9 @@ def set_old_configure_define(name, value):
def post_old_configure(raw_config):
for k, v in raw_config['substs']:
set_old_configure_config(
k[1:-1], v[1:-1] if isinstance(v, types.StringTypes) else v)
k[1:-1], v[1:-1] if isinstance(v, str) else v)
for k, v in dict(raw_config['defines']).iteritems():
for k, v in dict(raw_config['defines']).items():
set_old_configure_define(k[1:-1], v[1:-1])
set_old_configure_config('non_global_defines',
+7 -6
View File
@@ -236,7 +236,7 @@ def get_compiler_info(compiler, language):
('CPU', CPU_preprocessor_checks),
('KERNEL', kernel_preprocessor_checks),
):
for n, (value, condition) in enumerate(preprocessor_checks.iteritems()):
for n, (value, condition) in enumerate(preprocessor_checks.items()):
check += dedent('''\
#%(if)s %(condition)s
%%%(name)s "%(value)s"
@@ -269,7 +269,7 @@ def get_compiler_info(compiler, language):
# have non-ASCII characters. Treat the output as bytearray.
data = {}
for line in result.splitlines():
if line.startswith(b'%'):
if line.startswith('%'):
k, _, v = line.partition(' ')
k = k.lstrip('%')
data[k] = v.replace(' ', '').lstrip('"').rstrip('"')
@@ -397,10 +397,11 @@ def check_compiler(compiler, language, target):
@imports('json')
@imports('subprocess')
@imports('sys')
@imports(_from='locale', _import='getpreferredencoding')
def get_vc_paths(topsrcdir):
encoding = getpreferredencoding(False)
def vswhere(args):
encoding = 'mbcs' if sys.platform == 'win32' else 'utf-8'
return json.loads(subprocess.check_output([os.path.join(topsrcdir, 'build/win32/vswhere.exe'), '-format', 'json'] + args).decode(encoding, 'replace'))
return json.loads(subprocess.check_output([os.path.join(topsrcdir, 'build/win32/vswhere.exe'), '-format', 'json'] + args).decode(encoding, errors='replace'))
# Can't pass -requires with -legacy, so query each separately.
# Legacy versions first (VS2015)
@@ -419,7 +420,7 @@ def get_vc_paths(topsrcdir):
# Then VS2017 and newer.
for install in vswhere(['-requires', 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64']):
path = install['installationPath']
tools_version = open(os.path.join(path, r'VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt'), 'rb').read().strip()
tools_version = open(os.path.join(path, r'VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt'), 'r', encoding=encoding, errors='replace').read().strip()
tools_path = os.path.join(path, r'VC\Tools\MSVC', tools_version, r'bin\HostX64')
yield (Version(install['installationVersion']), {
'x64': [os.path.join(tools_path, 'x64')],
@@ -601,7 +602,7 @@ def compiler(language, host_or_target, c_compiler=None, other_compiler=None,
if cross_compiling and other_compiler.type == 'clang':
return namespace(**{
k: [] if k == 'flags' else v
for k, v in other_compiler.__dict__.iteritems()
for k, v in other_compiler.__dict__.items()
})
# Normally, we'd use `var` instead of `_var`, but the interaction with
+10 -3
View File
@@ -25,15 +25,22 @@ def configure_error(message):
@imports('sys')
@imports(_from='mozbuild.configure.util', _import='LineIO')
@imports(_from='mozbuild.shellutil', _import='quote')
@imports(_from='mozbuild.getencoding', _import='getencoding')
def check_cmd_output(*args, **kwargs):
encoding = getencoding()
onerror = kwargs.pop('onerror', None)
with log.queue_debug():
log.debug('Executing: `%s`', quote(*args))
proc = subprocess.Popen(args, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout, stderr = proc.communicate()
retcode = proc.wait()
stdout = stdout.decode(encoding, errors='replace')
stderr = stderr.decode(encoding, errors='replace')
if retcode == 0:
return stdout
@@ -70,7 +77,7 @@ def windows_binary_type(path):
Returns WindowsBinaryType constant.
"""
GetBinaryTypeW = ctypes.windll.kernel32.GetBinaryTypeW
GetBinaryTypeW.argtypes = [wintypes.LPWSTR, wintypes.POINTER(wintypes.DWORD)]
GetBinaryTypeW.argtypes = [wintypes.LPWSTR, ctypes.POINTER(wintypes.DWORD)]
GetBinaryTypeW.restype = wintypes.BOOL
bin_type = wintypes.DWORD()
@@ -232,7 +239,7 @@ def unique_list(l):
# ('19.0', 'arm', r'C:\...\amd64_arm\cl.exe')
# ('19.0', 'x64', r'C:\...\amd64\cl.exe')
# ('19.0', 'x86', r'C:\...\amd64_x86\cl.exe')
@imports(_import='_winreg', _as='winreg')
@imports(_import='winreg', _as='winreg')
@imports(_from='__builtin__', _import='WindowsError')
@imports(_from='fnmatch', _import='fnmatch')
def get_registry_values(pattern):
@@ -295,7 +302,7 @@ def get_registry_values(pattern):
keys = next_keys
@imports(_from='mozbuild.configure.util', _import='Version', _as='_Version')
@imports(_from='mozbuild.version', _import='RichVersion', _as='_Version')
def Version(v):
'A version number that can be compared usefully.'
return _Version(v)
+4 -1
View File
@@ -408,9 +408,12 @@ mt = check_prog('MT', depends_win()(lambda: ('mt.exe',)), input='MT',
@depends_win(mt)
@checking('whether MT is really Microsoft Manifest Tool', lambda x: bool(x))
@imports('subprocess')
@imports(_from='locale', _import='getpreferredencoding')
def valid_mt(path):
encoding = getpreferredencoding(False)
try:
out = subprocess.check_output([path]).splitlines()
out = subprocess.check_output([path])
out = out.decode(encoding, errors='replace').splitlines()
out = '\n'.join(l for l in out
if 'Microsoft (R) Manifest Tool' in l)
if out:
+13 -13
View File
@@ -58,7 +58,7 @@ def runUtil(util, args, inputdata = None):
def createRandomFile(randomFile):
for count in xrange(0, 2048):
for count in range(0, 2048):
randomFile.write(chr(random.randint(0, 255)))
@@ -125,7 +125,7 @@ def createSSLServerCertificate(build, srcDir):
iterator = iter(locations)
# Skips the first entry, I don't know why: bug 879740
iterator.next()
next(iterator)
locationsParam = ""
firstLocation = ""
@@ -148,7 +148,7 @@ def createSSLServerCertificate(build, srcDir):
firstLocation = loc.host
if not firstLocation:
print "Nothing to generate, no automatic secure hosts specified"
print("Nothing to generate, no automatic secure hosts specified")
else:
createRandomFile(rndfile)
@@ -162,7 +162,7 @@ def createSSLServerCertificate(build, srcDir):
return 0
if len(sys.argv) == 1:
print "Specify --gen-server or --gen-ca"
print("Specify --gen-server or --gen-ca")
sys.exit(1)
build = MozbuildObject.from_environment()
@@ -170,23 +170,23 @@ certdir = os.path.join(build.topsrcdir, "build", "pgo", "certs")
if sys.argv[1] == "--gen-server":
certificateStatus = createSSLServerCertificate(build, certdir)
if certificateStatus:
print "TEST-UNEXPECTED-FAIL | SSL Server Certificate generation"
print("TEST-UNEXPECTED-FAIL | SSL Server Certificate generation")
sys.exit(certificateStatus)
if sys.argv[1] == "--gen-ca":
certificateStatus = createCertificateAuthority(build, certdir)
if certificateStatus:
print "TEST-UNEXPECTED-FAIL | Certificate Authority generation"
print("TEST-UNEXPECTED-FAIL | Certificate Authority generation")
else:
print "\n\n"
print "==================================================="
print " IMPORTANT:"
print " To use this new certificate authority in tests"
print " run 'make' at testing/mochitest"
print "==================================================="
print("\n\n")
print("===================================================")
print(" IMPORTANT:")
print(" To use this new certificate authority in tests")
print(" run 'make' at testing/mochitest")
print("===================================================")
sys.exit(certificateStatus)
print "Invalid option specified"
print("Invalid option specified")
sys.exit(1)
@@ -88,7 +88,7 @@ var decompressedJQuery = function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(par
for documentation and information on getting the source.
*/
var decompressedDojo = function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('if(V z=="1k"){(B(){if(V D["1o"]=="1k"){D.1o={}}if((!D["1z"])||(!1z["ca"])){D.1z={}}A cn=["rA","rz","1K","ry","rx","9f","rw","rv","ru","rt","rs","rr","rq","ro","rn","rm"];A i=0,24;1s(24=cn[i++]){if(!1z[24]){1z[24]=B(){}}}if(V D["z"]=="1k"){D.z={}}z.1W=D;A d3={im:U,rl:U,rk:"",rj:"",ri:"",rh:K,rg:U};R(A 8z in d3){if(V 1o[8z]=="1k"){1o[8z]=d3[8z]}}A jK=["rf","rd","rc","rb"];A t;1s(t=jK.3a()){z["is"+t]=U}})();z.8h=1o.8h;z.cY={jJ:0,jI:9,jH:0,jG:"",jF:2V("$ra: r9 $".1f(/[0-9]+/)[0]),2i:B(){4G(z.cY){C jJ+"."+jI+"."+jH+jG+" ("+jF+")"}}};z.d1=B(jE,jD,1V){A 2h=1V||z.1W;R(A i=0,p;2h&&(p=jE[i]);i++){2h=(p in 2h?2h[p]:(jD?2h[p]={}:1k))}C 2h};z.88=B(jC,jA,jB){A d2=jC.1A("."),p=d2.8q(),M=z.d1(d2,K,jB);C(M&&p?(M[p]=jA):1k)};z.6q=B(jz,jy,jx){C z.d1(jz.1A("."),jy,jx)};z.r8=B(jw,M){C!!z.6q(jw,U,M)};z["3u"]=B(d0){C z.1W.3u?z.1W.3u(d0):3u(d0)};z.ia=B(jv,cZ,cX){A 8y="r7: "+jv;if(cZ){8y+=" "+cZ}if(cX){8y+=" -- r6 be r5 in cY: "+cX}1z.1K(8y)};z.r4=B(ju,cW){A cV="r3: "+ju+" -- r2 r1 4F r0 qZ qY.";if(cW){cV+=" "+cW}1z.1K(cV)};(B(){A cR={53:{},6p:0,1h:{},8k:{z:{1p:"z",1Z:"."},cU:{1p:"cU",1Z:"../qX/cU"},cT:{1p:"cT",1Z:"cT"}},cN:B(cS){A mp=D.8k;C jp(mp[cS]&&mp[cS].1Z)},jk:B(8x){A mp=D.8k;if(D.cN(8x)){C mp[8x].1Z}C 8x},8v:[],6t:U,56:[],8t:[],8u:U};R(A cQ in cR){z[cQ]=cR[cQ]}})();z.jg=B(8w,cP,cb){A 1g=(((8w.2s(0)=="/"||8w.1f(/^\\w+:/)))?"":D.51)+8w;if(1o.jt&&z.c8){1g+="?"+67(1o.jt).2f(/\\W+/g,"")}1u{C!cP?D.cO(1g,cb):D.jq(1g,cP,cb)}1y(e){1z.1K(e);C U}};z.cO=B(1g,cb){if(D.8v[1g]){C K}A 6u=D.iR(1g,K);if(!6u){C U}D.8v[1g]=K;D.8v.Y(1g);if(cb){6u="("+6u+")"}A jr=z["3u"](6u+"\\r\\n//@ qW="+1g);if(cb){cb(jr)}C K};z.jq=B(1g,jo,cb){A ok=U;1u{ok=D.cO(1g,cb)}1y(e){1z.1K("qV je ",1g," 4G 9f: ",e)}C jp(ok&&D.53[jo])};z.6m=B(){D.8u=K;D.6t=K;A 57=D.56;D.56=[];R(A x=0;x<57.G;x++){57[x]()}D.8u=U;if(z.6t&&z.6p==0&&D.56.G>0){z.8s()}};z.ck=B(){A 57=D.8t;1s(57.G){(57.8q())()}};z.qU=B(M,jn){A d=z;if(P.G==1){d.56.Y(M)}I{if(P.G>1){d.56.Y(B(){M[jn]()})}}if(d.6t&&d.6p==0&&!d.8u){d.8s()}};z.dW=B(M,jm){A d=z;if(P.G==1){d.8t.Y(M)}I{if(P.G>1){d.8t.Y(B(){M[jm]()})}}};z.iM=B(){if(D.6t){C}if(D.6p>0){1z.1K("qT qS in qR!");C}z.8s()};z.8s=B(){if(V 5c=="8b"||(1o["qQ"]&&z.2M)){5c("z.6m();",0)}I{z.6m()}};z.cF=B(jl){A 4v=jl.1A(".");R(A i=4v.G;i>0;i--){A 8r=4v.2w(0,i).22(".");if((i==1)&&!D.cN(8r)){4v[0]="../"+4v[0]}I{A cM=D.jk(8r);if(cM!=8r){4v.3S(0,i,cM);3f}}}C 4v};z.jj=U;z.8m=B(2T,qP,55){55=D.jj||55;A 54=D.53[2T];if(54){C 54}A cL=2T.1A(".");A 3L=D.cF(2T);A jh=((3L[0].2s(0)!="/")&&!3L[0].1f(/^\\w+:/));A ji=3L[3L.G-1];A 3m;if(ji=="*"){2T=cL.2w(0,-1).22(".");3L.8q();3m=3L.22("/")+"/"+(1o["qO"]||"qN")+".js";if(jh&&3m.2s(0)=="/"){3m=3m.2w(1)}}I{3m=3L.22("/")+".js";2T=cL.22(".")}A jf=(!55)?2T:L;A ok=D.jg(3m,jf);if((!ok)&&(!55)){2m S 1O("qM 3O 4E \'"+2T+"\'; 72 qL \'"+3m+"\'")}if((!55)&&(!D["qK"])){54=D.53[2T];if(!54){2m S 1O("qJ \'"+2T+"\' is 3O qI a8 je \'"+3m+"\'")}}C 54};z.8c=z.8m;z.1Q=B(cK){A cJ=cK+"";A 8p=cJ;A 6s=cK.1A(/\\./);if(6s[6s.G-1]=="*"){6s.8q();8p=6s.22(".")}A 8o=z.6q(8p,K);D.53[cJ]=8o;D.53[8p]=8o;C 8o};z.qH=B(8n){A jd=8n["qG"]||[];A cI=jd.3U(8n[z.j4]||8n["aY"]||[]);R(A x=0;x<cI.G;x++){A 8l=cI[x];if(8l.1P==4e){z.8m.14(z,8l)}I{z.8m(8l)}}};z.jb=B(jc,qF){if(jc===K){A cH=[];R(A i=1;i<P.G;i++){cH.Y(P[i])}z.8c.14(z,cH)}};z.qE=z.jb;z.io=B(cG,ja){D.8k[cG]={1p:cG,1Z:ja}};z.qD=B(qC,qB,qA,qz){z.8c("z.j9");z.j9.qy.14(z.qx,P)};(B(){A j7=S 9G("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?$");A j6=S 9G("^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$");z.4r=B(){A n=L;A 1V=P;A 1g=1V[0];R(A i=1;i<1V.G;i++){if(!1V[i]){6c}A 1t=S z.4r(1V[i]+"");A 4u=S z.4r(1g+"");if((1t.28=="")&&(!1t.4t)&&(!1t.3l)&&(!1t.1r)){if(1t.52!=n){4u.52=1t.52}1t=4u}I{if(!1t.4t){1t.4t=4u.4t;if(!1t.3l){1t.3l=4u.3l;if(1t.28.2s(0)!="/"){A j8=4u.28.21(0,4u.28.31("/")+1)+1t.28;A 1X=j8.1A("/");R(A j=0;j<1X.G;j++){if(1X[j]=="."){if(j==1X.G-1){1X[j]=""}I{1X.3S(j,1);j--}}I{if(j>0&&!(j==1&&1X[0]=="")&&1X[j]==".."&&1X[j-1]!=".."){if(j==(1X.G-1)){1X.3S(j,1);1X[j-1]=""}I{1X.3S(j-1,2);j-=2}}}}1t.28=1X.22("/")}}}}1g="";if(1t.4t){1g+=1t.4t+":"}if(1t.3l){1g+="//"+1t.3l}1g+=1t.28;if(1t.1r){1g+="?"+1t.1r}if(1t.52){1g+="#"+1t.52}}D.1g=1g.2i();A r=D.1g.1f(j7);D.4t=r[2]||(r[1]?"":n);D.3l=r[4]||(r[3]?"":n);D.28=r[5];D.1r=r[7]||(r[6]?"":n);D.52=r[9]||(r[8]?"":n);if(D.3l!=n){r=D.3l.1f(j6);D.8X=r[3]||n;D.8W=r[4]||n;D.qw=r[5];D.qv=r[7]||n}};z.4r.1C.2i=B(){C D.1g}})();z.qu=B(j5,2E){A 2B=z.cF(j5).22("/");if(!2B){C L}if(2B.31("/")!=2B.G-1){2B+="/"}A cE=2B.T(":");if(2B.2s(0)!="/"&&(cE==-1||cE>2B.T("/"))){2B=z.51+2B}C S z.4r(2B,2E)};if(V 26!="1k"){z.c8=K;z.j4="qt";(B(){A d=z;if(1q&&1q.4I){A 8j=1q.4I("ak");A j3=/z(\\.qs)?\\.js([\\?\\.]|$)/i;R(A i=0;i<8j.G;i++){A 4X=8j[i].5t("4X");if(!4X){6c}A m=4X.1fLine truncated
var decompressedDojo = function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('if(V z=="1k"){(B(){if(V D["1o"]=="1k"){D.1o={}}if((!D["1z"])||(!1z["ca"])){D.1z={}}A cn=["rA","rz","1K","ry","rx","9f","rw","rv","ru","rt","rs","rr","rq","ro","rn","rm"];A i=0,24;1s(24=cn[i++]){if(!1z[24]){1z[24]=B(){}}}if(V D["z"]=="1k"){D.z={}}z.1W=D;A d3={im:U,rl:U,rk:"",rj:"",ri:"",rh:K,rg:U};R(A 8z in d3){if(V 1o[8z]=="1k"){1o[8z]=d3[8z]}}A jK=["rf","rd","rc","rb"];A t;1s(t=jK.3a()){z["is"+t]=U}})();z.8h=1o.8h;z.cY={jJ:0,jI:9,jH:0,jG:"",jF:2V("$ra: r9 $".1f(/[0-9]+/)[0]),2i:B(){4G(z.cY){C jJ+"."+jI+"."+jH+jG+" ("+jF+")"}}};z.d1=B(jE,jD,1V){A 2h=1V||z.1W;R(A i=0,p;2h&&(p=jE[i]);i++){2h=(p in 2h?2h[p]:(jD?2h[p]={}:1k))}C 2h};z.88=B(jC,jA,jB){A d2=jC.1A("."),p=d2.8q(),M=z.d1(d2,K,jB);C(M&&p?(M[p]=jA):1k)};z.6q=B(jz,jy,jx){C z.d1(jz.1A("."),jy,jx)};z.r8=B(jw,M){C!!z.6q(jw,U,M)};z["3u"]=B(d0){C z.1W.3u?z.1W.3u(d0):3u(d0)};z.ia=B(jv,cZ,cX){A 8y="r7: "+jv;if(cZ){8y+=" "+cZ}if(cX){8y+=" -- r6 be r5 in cY: "+cX}1z.1K(8y)};z.r4=B(ju,cW){A cV="r3: "+ju+" -- r2 r1 4F r0 qZ qY.";if(cW){cV+=" "+cW}1z.1K(cV)};(B(){A cR={53:{},6p:0,1h:{},8k:{z:{1p:"z",1Z:"."},cU:{1p:"cU",1Z:"../qX/cU"},cT:{1p:"cT",1Z:"cT"}},cN:B(cS){A mp=D.8k;C jp(mp[cS]&&mp[cS].1Z)},jk:B(8x){A mp=D.8k;if(D.cN(8x)){C mp[8x].1Z}C 8x},8v:[],6t:U,56:[],8t:[],8u:U};R(A cQ in cR){z[cQ]=cR[cQ]}})();z.jg=B(8w,cP,cb){A 1g=(((8w.2s(0)=="/"||8w.1f(/^\\w+:/)))?"":D.51)+8w;if(1o.jt&&z.c8){1g+="?"+67(1o.jt).2f(/\\W+/g,"")}1u{C!cP?D.cO(1g,cb):D.jq(1g,cP,cb)}1y(e){1z.1K(e);C U}};z.cO=B(1g,cb){if(D.8v[1g]){C K}A 6u=D.iR(1g,K);if(!6u){C U}D.8v[1g]=K;D.8v.Y(1g);if(cb){6u="("+6u+")"}A jr=z["3u"](6u+"\\r\\n//@ qW="+1g);if(cb){cb(jr)}C K};z.jq=B(1g,jo,cb){A ok=U;1u{ok=D.cO(1g,cb)}1y(e){1z.1K("qV je ",1g," 4G 9f: ",e)}C jp(ok&&D.53[jo])};z.6m=B(){D.8u=K;D.6t=K;A 57=D.56;D.56=[];R(A x=0;x<57.G;x++){57[x]()}D.8u=U;if(z.6t&&z.6p==0&&D.56.G>0){z.8s()}};z.ck=B(){A 57=D.8t;1s(57.G){(57.8q())()}};z.qU=B(M,jn){A d=z;if(P.G==1){d.56.Y(M)}I{if(P.G>1){d.56.Y(B(){M[jn]()})}}if(d.6t&&d.6p==0&&!d.8u){d.8s()}};z.dW=B(M,jm){A d=z;if(P.G==1){d.8t.Y(M)}I{if(P.G>1){d.8t.Y(B(){M[jm]()})}}};z.iM=B(){if(D.6t){C}if(D.6p>0){1z.1K("qT qS in qR!");C}z.8s()};z.8s=B(){if(V 5c=="8b"||(1o["qQ"]&&z.2M)){5c("z.6m();",0)}I{z.6m()}};z.cF=B(jl){A 4v=jl.1A(".");R(A i=4v.G;i>0;i--){A 8r=4v.2w(0,i).22(".");if((i==1)&&!D.cN(8r)){4v[0]="../"+4v[0]}I{A cM=D.jk(8r);if(cM!=8r){4v.3S(0,i,cM);3f}}}C 4v};z.jj=U;z.8m=B(2T,qP,55){55=D.jj||55;A 54=D.53[2T];if(54){C 54}A cL=2T.1A(".");A 3L=D.cF(2T);A jh=((3L[0].2s(0)!="/")&&!3L[0].1f(/^\\w+:/));A ji=3L[3L.G-1];A 3m;if(ji=="*"){2T=cL.2w(0,-1).22(".");3L.8q();3m=3L.22("/")+"/"+(1o["qO"]||"qN")+".js";if(jh&&3m.2s(0)=="/"){3m=3m.2w(1)}}I{3m=3L.22("/")+".js";2T=cL.22(".")}A jf=(!55)?2T:L;A ok=D.jg(3m,jf);if((!ok)&&(!55)){2m S 1O("qM 3O 4E \'"+2T+"\'; 72 qL \'"+3m+"\'")}if((!55)&&(!D["qK"])){54=D.53[2T];if(!54){2m S 1O("qJ \'"+2T+"\' is 3O qI a8 je \'"+3m+"\'")}}C 54};z.8c=z.8m;z.1Q=B(cK){A cJ=cK+"";A 8p=cJ;A 6s=cK.1A(/\\./);if(6s[6s.G-1]=="*"){6s.8q();8p=6s.22(".")}A 8o=z.6q(8p,K);D.53[cJ]=8o;D.53[8p]=8o;C 8o};z.qH=B(8n){A jd=8n["qG"]||[];A cI=jd.3U(8n[z.j4]||8n["aY"]||[]);R(A x=0;x<cI.G;x++){A 8l=cI[x];if(8l.1P==4e){z.8m.14(z,8l)}I{z.8m(8l)}}};z.jb=B(jc,qF){if(jc===K){A cH=[];R(A i=1;i<P.G;i++){cH.Y(P[i])}z.8c.14(z,cH)}};z.qE=z.jb;z.io=B(cG,ja){D.8k[cG]={1p:cG,1Z:ja}};z.qD=B(qC,qB,qA,qz){z.8c("z.j9");z.j9.qy.14(z.qx,P)};(B(){A j7=S 9G("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?$");A j6=S 9G("^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$");z.4r=B(){A n=L;A 1V=P;A 1g=1V[0];R(A i=1;i<1V.G;i++){if(!1V[i]){6c}A 1t=S z.4r(1V[i]+"");A 4u=S z.4r(1g+"");if((1t.28=="")&&(!1t.4t)&&(!1t.3l)&&(!1t.1r)){if(1t.52!=n){4u.52=1t.52}1t=4u}I{if(!1t.4t){1t.4t=4u.4t;if(!1t.3l){1t.3l=4u.3l;if(1t.28.2s(0)!="/"){A j8=4u.28.21(0,4u.28.31("/")+1)+1t.28;A 1X=j8.1A("/");R(A j=0;j<1X.G;j++){if(1X[j]=="."){if(j==1X.G-1){1X[j]=""}I{1X.3S(j,1);j--}}I{if(j>0&&!(j==1&&1X[0]=="")&&1X[j]==".."&&1X[j-1]!=".."){if(j==(1X.G-1)){1X.3S(j,1);1X[j-1]=""}I{1X.3S(j-1,2);j-=2}}}}1t.28=1X.22("/")}}}}1g="";if(1t.4t){1g+=1t.4t+":"}if(1t.3l){1g+="//"+1t.3l}1g+=1t.28;if(1t.1r){1g+="?"+1t.1r}if(1t.52){1g+="#"+1t.52}}D.1g=1g.2i();A r=D.1g.1f(j7);D.4t=r[2]||(r[1]?"":n);D.3l=r[4]||(r[3]?"":n);D.28=r[5];D.1r=r[7]||(r[6]?"":n);D.52=r[9]||(r[8]?"":n);if(D.3l!=n){r=D.3l.1f(j6);D.8X=r[3]||n;D.8W=r[4]||n;D.qw=r[5];D.qv=r[7]||n}};z.4r.1C.2i=B(){C D.1g}})();z.qu=B(j5,2E){A 2B=z.cF(j5).22("/");if(!2B){C L}if(2B.31("/")!=2B.G-1){2B+="/"}A cE=2B.T(":");if(2B.2s(0)!="/"&&(cE==-1||cE>2B.T("/"))){2B=z.51+2B}C S z.4r(2B,2E)};if(V 26!="1k"){z.c8=K;z.j4="qt";(B(){A d=z;if(1q&&1q.4I){A 8j=1q.4I("ak");A j3=/z(\\.qs)?\\.js([\\?\\.]|$)/i;R(A i=0;i<8j.G;i++){A 4X=8j[i].5t("4X");if(!4X){6c}A m=4X.1fLine truncated
/*
+1 -1
View File
@@ -77,7 +77,7 @@ if __name__ == '__main__':
jarlog = os.getenv("JARLOG_FILE")
if jarlog:
env["MOZ_JAR_LOG_FILE"] = os.path.abspath(jarlog)
print "jarlog: %s" % env["MOZ_JAR_LOG_FILE"]
print("jarlog: %s" % env["MOZ_JAR_LOG_FILE"])
cmdargs = ["http://localhost:%d/index.html" % PORT]
runner = FirefoxRunner(profile=profile,
+22 -11
View File
@@ -3,7 +3,7 @@
from __future__ import print_function
import os, sys
if not len(sys.argv) is 2 or not os.path.exists(sys.argv[1]):
if not len(sys.argv) == 2 or not os.path.exists(sys.argv[1]):
print("\nYou did not supply a valid path to check.")
exit(1)
else:
@@ -44,7 +44,8 @@ PP_DIRECTIVES = [
]
PP_FILES = []
PP_BAD_FILES = []
PP_BAD_DIRECTIVE_FILES = []
PP_BAD_ENCODING_FILES = []
for root, directories, filenames in os.walk(DIST_PATH):
for filename in filenames:
@@ -52,21 +53,31 @@ for root, directories, filenames in os.walk(DIST_PATH):
PP_FILES += [ os.path.join(root, filename).replace(os.sep, '/') ]
for file in PP_FILES:
with open(file) as fp:
with open(file, encoding='utf-8') as fp:
marker = '%' if file.endswith(PP_SPECIAL_TYPES) else '#'
directives = tuple(marker + directive for directive in PP_DIRECTIVES)
for line in fp:
if line.startswith(directives):
PP_BAD_FILES += [ file.replace(DIST_PATH + '/', '') ]
try:
for line in fp:
if line.startswith(directives):
PP_BAD_DIRECTIVE_FILES += [ file.replace(DIST_PATH + '/', '') ]
except UnicodeDecodeError:
PP_BAD_ENCODING_FILES += [ file.replace(DIST_PATH+ '/' , '') ]
fp.close()
PP_BAD_FILES = list(dict.fromkeys(PP_BAD_FILES))
PP_BAD_DIRECTIVE_FILES = list(dict.fromkeys(PP_BAD_DIRECTIVE_FILES))
PP_BAD_ENCODING_FILES = list(dict.fromkeys(PP_BAD_ENCODING_FILES))
print('Done!')
if len(PP_BAD_FILES) > 0:
print("\nWARNING: The following {0} file(s) in {1} may require preprocessing:\n".format(len(PP_BAD_FILES), DIST_PATH))
for file in PP_BAD_FILES:
if len(PP_BAD_DIRECTIVE_FILES) > 0:
print("\nWARNING: The following {0} file(s) in {1} may require preprocessing:\n".format(len(PP_BAD_DIRECTIVE_FILES), DIST_PATH))
for file in PP_BAD_DIRECTIVE_FILES:
print(file)
exit(0)
if len(PP_BAD_ENCODING_FILES) > 0:
print("\nWARNING: The following {0} file(s) in {1} are not valid UTF-8:\n".format(len(PP_BAD_ENCODING_FILES), DIST_PATH))
for file in PP_BAD_ENCODING_FILES:
print(file)
sys.exit(0)
+1 -1
View File
@@ -10,4 +10,4 @@ with open(filename, 'rU') as fh:
source = fh.read()
statements = pymake.parser.parsestring(source, filename)
print statements.to_source()
print(statements.to_source())
+2 -2
View File
@@ -4,9 +4,9 @@ import sys
import pymake.parser
for f in sys.argv[1:]:
print "Parsing %s" % f
print("Parsing %s" % f)
fd = open(f, 'rU')
s = fd.read()
fd.close()
stmts = pymake.parser.parsestring(s, f)
print stmts
print(stmts)
+15 -15
View File
@@ -2,7 +2,7 @@
import errno, sys, os, shutil, time
from getopt import getopt, GetoptError
from process import PythonException
from .process import PythonException
__all__ = ["mkdir", "rm", "sleep", "touch"]
@@ -13,8 +13,8 @@ def mkdir(args):
"""
try:
opts, args = getopt(args, "p", ["parents"])
except GetoptError, e:
raise PythonException, ("mkdir: %s" % e, 1)
except GetoptError as e:
raise PythonException("mkdir: %s" % e, 1)
parents = False
for o, a in opts:
if o in ('-p', '--parents'):
@@ -25,11 +25,11 @@ def mkdir(args):
os.makedirs(f)
else:
os.mkdir(f)
except OSError, e:
except OSError as e:
if e.errno == errno.EEXIST and parents:
pass
else:
raise PythonException, ("mkdir: %s" % e, 1)
raise PythonException("mkdir: %s" % e, 1)
def rm(args):
"""
@@ -38,8 +38,8 @@ def rm(args):
"""
try:
opts, args = getopt(args, "rRf", ["force", "recursive"])
except GetoptError, e:
raise PythonException, ("rm: %s" % e, 1)
except GetoptError as e:
raise PythonException("rm: %s" % e, 1)
force = False
recursive = False
for o, a in opts:
@@ -50,7 +50,7 @@ def rm(args):
for f in args:
if os.path.isdir(f):
if not recursive:
raise PythonException, ("rm: cannot remove '%s': Is a directory" % f, 1)
raise PythonException("rm: cannot remove '%s': Is a directory" % f, 1)
else:
shutil.rmtree(f, force)
elif os.path.exists(f):
@@ -58,9 +58,9 @@ def rm(args):
os.unlink(f)
except:
if not force:
raise PythonException, ("rm: failed to remove '%s': %s" % (f, sys.exc_info()[0]), 1)
raise PythonException("rm: failed to remove '%s': %s" % (f, sys.exc_info()[0]), 1)
elif not force:
raise PythonException, ("rm: cannot remove '%s': No such file or directory" % f, 1)
raise PythonException("rm: cannot remove '%s': No such file or directory" % f, 1)
def sleep(args):
"""
@@ -70,7 +70,7 @@ def sleep(args):
values = {'s': 1, 'm': 60, 'h': 3600, 'd': 86400}
for a in args:
multiplier = 1
for k, v in values.iteritems():
for k, v in values.items():
if a.endswith(k):
a = a[:-1]
multiplier = v
@@ -79,7 +79,7 @@ def sleep(args):
f = float(a)
total += f * multiplier
except ValueError:
raise PythonException, ("sleep: invalid time interval '%s'" % a, 1)
raise PythonException("sleep: invalid time interval '%s'" % a, 1)
time.sleep(total)
def touch(args):
@@ -88,8 +88,8 @@ def touch(args):
"""
try:
opts, args = getopt(args, "t:")
except GetoptError, e:
raise PythonException, ("touch: %s" % e, 1)
except GetoptError as e:
raise PythonException("touch: %s" % e, 1)
opts = dict(opts)
times = None
if '-t' in opts:
@@ -97,7 +97,7 @@ def touch(args):
from time import mktime, localtime
m = re.match('^(?P<Y>(?:\d\d)?\d\d)?(?P<M>\d\d)(?P<D>\d\d)(?P<h>\d\d)(?P<m>\d\d)(?:\.(?P<s>\d\d))?$', opts['-t'])
if not m:
raise PythonException, ("touch: invalid date format '%s'" % opts['-t'], 1)
raise PythonException("touch: invalid date format '%s'" % opts['-t'], 1)
def normalized_field(m, f):
if f == 'Y':
if m.group(f) is None:
+13 -13
View File
@@ -11,7 +11,7 @@ except when a submake specifies -j1 when the parent make is building in parallel
import os, subprocess, sys, logging, time, traceback, re
from optparse import OptionParser
import data, parserdata, process, util
from . import data, parserdata, process, util
# TODO: If this ever goes from relocatable package to system-installed, this may need to be
# a configured-in path.
@@ -62,7 +62,7 @@ def parsemakeflags(env):
return opts
def _version(*args):
print """pymake: GNU-compatible make program
print("""pymake: GNU-compatible make program
Copyright (C) 2009 The Mozilla Foundation <http://www.mozilla.org/>
This is free software; see the source for copying conditions.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
@@ -71,7 +71,7 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE."""
DEALINGS IN THE SOFTWARE.""")
_log = logging.getLogger('pymake.execution')
@@ -95,7 +95,7 @@ class _MakeContext(object):
def remakecb(self, remade, error=None):
if error is not None:
print error
print(error)
self.context.defer(self.cb, 2)
return
@@ -124,15 +124,15 @@ class _MakeContext(object):
self.makefile.include(f)
self.makefile.finishparsing()
self.makefile.remakemakefiles(self.remakecb)
except util.MakeError, e:
print e
except util.MakeError as e:
print(e)
self.context.defer(self.cb, 2)
return
if len(self.targets) == 0:
if self.makefile.defaulttarget is None:
print "No target specified and no default target found."
print("No target specified and no default target found.")
self.context.defer(self.cb, 2)
return
@@ -154,7 +154,7 @@ class _MakeContext(object):
if not len(self.realtargets):
if self.options.printdir:
print "make.py[%i]: Leaving directory '%s'" % (self.makelevel, self.workdir)
print("make.py[%i]: Leaving directory '%s'" % (self.makelevel, self.workdir))
sys.stdout.flush()
self.context.defer(self.cb, 0)
@@ -255,24 +255,24 @@ def main(args, env, cwd, cb):
context = process.getcontext(options.jobcount)
if options.printdir:
print "make.py[%i]: Entering directory '%s'" % (makelevel, workdir)
print("make.py[%i]: Entering directory '%s'" % (makelevel, workdir))
sys.stdout.flush()
if len(options.makefiles) == 0:
if os.path.exists(util.normaljoin(workdir, 'Makefile')):
options.makefiles.append('Makefile')
else:
print "No makefile found"
print("No makefile found")
cb(2)
return
ostmts, targets, overrides = parserdata.parsecommandlineargs(arguments)
_MakeContext(makeflags, makelevel, workdir, context, env, targets, options, ostmts, overrides, cb)
except (util.MakeError), e:
print e
except (util.MakeError) as e:
print(e)
if options.printdir:
print "make.py[%i]: Leaving directory '%s'" % (makelevel, workdir)
print("make.py[%i]: Leaving directory '%s'" % (makelevel, workdir))
sys.stdout.flush()
cb(2)
return
+18 -18
View File
@@ -3,8 +3,9 @@ A representation of makefile data structures.
"""
import logging, re, os, sys
import parserdata, parser, functions, process, util, implicit
from cStringIO import StringIO
from . import parserdata, parser, functions, process, util, implicit
from io import StringIO
from functools import reduce
if sys.version_info[0] < 3:
str_type = basestring
@@ -405,7 +406,7 @@ class Expansion(BaseExpansion, list):
if len(a) != len(b):
return False
for i in xrange(len(self)):
for i in range(len(self)):
e1, is_func1 = a[i]
e2, is_func2 = b[i]
@@ -447,7 +448,7 @@ class Variables(object):
self.parent = parent
def readfromenvironment(self, env):
for k, v in env.iteritems():
for k, v in env.items():
self.set(k, self.FLAVOR_RECURSIVE, self.SOURCE_ENVIRONMENT, v)
def get(self, name, expand=True):
@@ -547,7 +548,7 @@ class Variables(object):
self.set(k, flavor, source, value)
def __iter__(self):
for k, (flavor, source, value, valueexp) in self._map.iteritems():
for k, (flavor, source, value, valueexp) in self._map.items():
yield k, flavor, source, value
def __contains__(self, item):
@@ -864,7 +865,7 @@ class RemakeRuleContext(object):
assert error in (True, False)
if error:
print "<%s>: Found error" % self.target.target
print("<%s>: Found error" % self.target.target)
self.error = True
if didanything:
self.didanything = True
@@ -949,8 +950,8 @@ class RemakeRuleContext(object):
self.target.didanything = True
try:
self.commands = [c for c in self.rule.getcommands(self.target, self.makefile)]
except util.MakeError, e:
print e
except util.MakeError as e:
print(e)
sys.stdout.flush()
cb(error=True)
return
@@ -1283,9 +1284,9 @@ class Target(object):
try:
self.resolvedeps(makefile, targetstack, [], False)
except util.MakeError, e:
except util.MakeError as e:
if printerror:
print e
print(e)
self.error = True
self.notifydone(makefile)
return
@@ -1397,7 +1398,7 @@ class _CommandWrapper(object):
def _cb(self, res):
if res != 0 and not self.ignoreErrors:
print "%s: command '%s' failed, return code %i" % (self.loc, self.cline, res)
print("%s: command '%s' failed, return code %i" % (self.loc, self.cline, res))
self.usercb(error=True)
else:
self.usercb(error=False)
@@ -1591,7 +1592,7 @@ class _RemakeContext(object):
assert error in (True, False)
if error and self.required:
print "Error remaking makefiles (ignored)"
print("Error remaking makefiles (ignored)")
if len(self.toremake):
target, self.required = self.toremake.pop(0)
@@ -1678,7 +1679,7 @@ class Makefile(object):
self.variables.set('MAKECMDGOALS', Variables.FLAVOR_SIMPLE,
Variables.SOURCE_AUTOMATIC, ' '.join(targets))
for vname, val in implicit.variables.iteritems():
for vname, val in implicit.variables.items():
self.variables.set(vname,
Variables.FLAVOR_SIMPLE,
Variables.SOURCE_IMPLICIT, val)
@@ -1750,11 +1751,10 @@ class Makefile(object):
if value is None:
self._vpath = []
else:
self._vpath = filter(lambda e: e != '',
re.split('[%s\s]+' % os.pathsep,
value.resolvestr(self, self.variables, ['VPATH'])))
self._vpath = [e for e in re.split('[%s\s]+' % os.pathsep,
value.resolvestr(self, self.variables, ['VPATH'])) if e != '']
targets = list(self._targets.itervalues())
targets = list(self._targets.values())
for t in targets:
t.explicit = True
for r in t.rules:
@@ -1825,7 +1825,7 @@ class Makefile(object):
def getsubenvironment(self, variables):
env = dict(self.env)
for vname, v in self.exportedvars.iteritems():
for vname, v in self.exportedvars.items():
if v:
flavor, source, val = variables.get(vname)
if val is None:
+11 -11
View File
@@ -2,10 +2,10 @@
Makefile functions.
"""
import parser, util
from . import parser, util
import subprocess, os, logging, sys
from globrelative import glob
from cStringIO import StringIO
from .globrelative import glob
from io import StringIO
log = logging.getLogger('pymake.data')
@@ -135,7 +135,7 @@ class Function(object):
if len(self._arguments) != len(other._arguments):
return False
for i in xrange(len(self._arguments)):
for i in range(len(self._arguments)):
# According to the GNU make manual Section 8.1, whitespace around
# arguments is *not* part of the argument's value. So, we do a
# whitespace-agnostic comparison.
@@ -525,7 +525,7 @@ class JoinFunction(Function):
@staticmethod
def iterjoin(l1, l2):
for i in xrange(0, max(len(l1), len(l2))):
for i in range(0, max(len(l1), len(l2))):
i1 = i < len(l1) and l1[i] or ''
i2 = i < len(l2) and l2[i] or ''
yield i1 + i2
@@ -670,7 +670,7 @@ class CallFunction(Function):
v = data.Variables(parent=variables)
v.set('0', data.Variables.FLAVOR_SIMPLE, data.Variables.SOURCE_AUTOMATIC, vname)
for i in xrange(1, len(self._arguments)):
for i in range(1, len(self._arguments)):
param = self._arguments[i].resolvestr(makefile, variables, setting)
v.set(str(i), data.Variables.FLAVOR_SIMPLE, data.Variables.SOURCE_AUTOMATIC, param)
@@ -770,7 +770,7 @@ class ShellFunction(Function):
__slots__ = Function.__slots__
def resolve(self, makefile, variables, fd, setting):
from process import prepare_command
from .process import prepare_command
cline = self._arguments[0].resolvestr(makefile, variables, setting)
executable, cline = prepare_command(cline, makefile.workdir, self.loc)
@@ -785,8 +785,8 @@ class ShellFunction(Function):
try:
p = subprocess.Popen(cline, executable=executable, env=makefile.env, shell=False,
stdout=subprocess.PIPE, cwd=makefile.workdir)
except OSError, e:
print >>sys.stderr, "Error executing command %s" % cline[0], e
except OSError as e:
print("Error executing command %s" % cline[0], e, file=sys.stderr)
return
finally:
os.environ['PATH'] = oldpath
@@ -830,7 +830,7 @@ class InfoFunction(Function):
def resolve(self, makefile, variables, fd, setting):
v = self._arguments[0].resolvestr(makefile, variables, setting)
print v
print(v)
functionmap = {
'subst': SubstFunction,
@@ -870,4 +870,4 @@ functionmap = {
'info': InfoFunction,
}
import data
from . import data
+2 -2
View File
@@ -7,7 +7,7 @@ Filename globbing like the python glob module with minor differences:
"""
import os, re, fnmatch
import util
from . import util
_globcheck = re.compile('[[*?]')
@@ -62,7 +62,7 @@ def globpattern(dir, pattern):
if not leaf.startswith('.')]
leaves = fnmatch.filter(leaves, pattern)
leaves = filter(lambda l: os.path.exists(util.normaljoin(dir, l)), leaves)
leaves = [l for l in leaves if os.path.exists(util.normaljoin(dir, l))]
leaves.sort()
return leaves
+4 -4
View File
@@ -34,7 +34,7 @@ coming.
"""
import logging, re, os, sys
import data, functions, util, parserdata
from . import data, functions, util, parserdata
_log = logging.getLogger('pymake.parser')
@@ -108,7 +108,7 @@ _alltokens = re.compile(r'''\\*\# | # hash mark preceeded by any number of backs
:: |
(?:\$(?:$|[\(\{](?:%s)\s+|.)) | # dollar sign followed by EOF, a function keyword with whitespace, or any character
:(?![\\/]) | # colon followed by anything except a slash (Windows path detection)
[=#{}();,|'"]''' % '|'.join(functions.functionmap.iterkeys()), re.VERBOSE)
[=#{}();,|'"]''' % '|'.join(iter(functions.functionmap.keys())), re.VERBOSE)
def iterdata(d, offset, tokenlist, it):
"""
@@ -336,7 +336,7 @@ _conditionkeywords = {
'ifndef': ifndef
}
_conditiontokens = tuple(_conditionkeywords.iterkeys())
_conditiontokens = tuple(_conditionkeywords.keys())
_conditionre = re.compile(r'(%s)(?:$|\s+)' % '|'.join(_conditiontokens))
_directivestokenlist = _conditiontokens + \
@@ -691,7 +691,7 @@ def parsemakesyntax(d, offset, stopon, iterfunc):
while True: # this is not a for loop because `di` changes during the function
assert stacktop is not None
try:
s, token, tokenoffset, offset = di.next()
s, token, tokenoffset, offset = next(di)
except StopIteration:
break
+19 -19
View File
@@ -1,6 +1,6 @@
import logging, re, os
import data, parser, functions, util
from cStringIO import StringIO
from . import data, parser, functions, util
from io import StringIO
from pymake.globrelative import hasglob, glob
_log = logging.getLogger('pymake.data')
@@ -76,7 +76,7 @@ def parsecommandlineargs(args):
overrides = []
stmts = StatementList()
r = []
for i in xrange(0, len(args)):
for i in range(0, len(args)):
a = args[i]
vname, t, val = util.strpartition(a, ':=')
@@ -195,7 +195,7 @@ class Rule(Statement):
deps = list(_expandwildcards(makefile, data.stripdotslashes(self.depexp.resolvesplit(makefile, makefile.variables))))
if ispattern:
rule = data.PatternRule(targets, map(data.Pattern, deps), self.doublecolon, loc=self.targetexp.loc)
rule = data.PatternRule(targets, list(map(data.Pattern, deps)), self.doublecolon, loc=self.targetexp.loc)
makefile.appendimplicitrule(rule)
else:
rule = data.Rule(deps, self.doublecolon, loc=self.targetexp.loc, weakdeps=False)
@@ -207,7 +207,7 @@ class Rule(Statement):
context.currule = rule
def dump(self, fd, indent):
print >>fd, "%sRule %s: %s" % (indent, self.targetexp, self.depexp)
print("%sRule %s: %s" % (indent, self.targetexp, self.depexp), file=fd)
def to_source(self):
sep = ':'
@@ -285,7 +285,7 @@ class StaticPatternRule(Statement):
context.currule = rule
def dump(self, fd, indent):
print >>fd, "%sStaticPatternRule %s: %s: %s" % (indent, self.targetexp, self.patternexp, self.depexp)
print("%sStaticPatternRule %s: %s: %s" % (indent, self.targetexp, self.patternexp, self.depexp), file=fd)
def to_source(self):
sep = ':'
@@ -339,7 +339,7 @@ class Command(Statement):
context.currule.addcommand(self.exp)
def dump(self, fd, indent):
print >>fd, "%sCommand %s" % (indent, self.exp,)
print("%sCommand %s" % (indent, self.exp,), file=fd)
def to_source(self):
# Commands have some interesting quirks when it comes to source
@@ -438,7 +438,7 @@ class SetVariable(Statement):
v.set(vname, flavor, self.source, value)
def dump(self, fd, indent):
print >>fd, "%sSetVariable<%s> %s %s\n%s %r" % (indent, self.valueloc, self.vnameexp, self.token, indent, self.value)
print("%sSetVariable<%s> %s %s\n%s %r" % (indent, self.valueloc, self.vnameexp, self.token, indent, self.value), file=fd)
def __eq__(self, other):
if not isinstance(other, SetVariable):
@@ -452,7 +452,7 @@ class SetVariable(Statement):
def to_source(self):
chars = []
for i in xrange(0, len(self.value)):
for i in range(0, len(self.value)):
c = self.value[i]
# Literal # is escaped in variable assignment otherwise it would be
@@ -651,14 +651,14 @@ class ConditionBlock(Statement):
i += 1
def dump(self, fd, indent):
print >>fd, "%sConditionBlock" % (indent,)
print("%sConditionBlock" % (indent,), file=fd)
indent2 = indent + ' '
for c, statements in self._groups:
print >>fd, "%s Condition %s" % (indent, c)
print("%s Condition %s" % (indent, c), file=fd)
statements.dump(fd, indent2)
print >>fd, "%s ~Condition" % (indent,)
print >>fd, "%s~ConditionBlock" % (indent,)
print("%s ~Condition" % (indent,), file=fd)
print("%s~ConditionBlock" % (indent,), file=fd)
def to_source(self):
lines = []
@@ -681,7 +681,7 @@ class ConditionBlock(Statement):
if len(self) != len(other):
return False
for i in xrange(0, len(self)):
for i in range(0, len(self)):
our_condition, our_statements = self[i]
other_condition, other_statements = other[i]
@@ -793,7 +793,7 @@ class Include(Statement):
makefile.include(f, self.required, loc=self.exp.loc, weak=self.weak)
def dump(self, fd, indent):
print >>fd, "%sInclude %s" % (indent, self.exp)
print("%sInclude %s" % (indent, self.exp), file=fd)
def to_source(self):
prefix = ''
@@ -840,7 +840,7 @@ class VPathDirective(Statement):
makefile.addvpath(pattern, dirs)
def dump(self, fd, indent):
print >>fd, "%sVPath %s" % (indent, self.exp)
print("%sVPath %s" % (indent, self.exp), file=fd)
def to_source(self):
return 'vpath %s' % self.exp.to_source()
@@ -885,7 +885,7 @@ class ExportDirective(Statement):
makefile.exportedvars[v] = True
def dump(self, fd, indent):
print >>fd, "%sExport (single=%s) %s" % (indent, self.single, self.exp)
print("%sExport (single=%s) %s" % (indent, self.single, self.exp), file=fd)
def to_source(self):
return ('export %s' % self.exp.to_source()).rstrip()
@@ -915,7 +915,7 @@ class UnexportDirective(Statement):
makefile.exportedvars[v] = False
def dump(self, fd, indent):
print >>fd, "%sUnexport %s" % (indent, self.exp)
print("%sUnexport %s" % (indent, self.exp), file=fd)
def to_source(self):
return 'unexport %s' % self.exp.to_source()
@@ -947,7 +947,7 @@ class EmptyDirective(Statement):
raise data.DataError("Line expands to non-empty value", self.exp.loc)
def dump(self, fd, indent):
print >>fd, "%sEmptyDirective: %s" % (indent, self.exp)
print("%sEmptyDirective: %s" % (indent, self.exp), file=fd)
def to_source(self):
return self.exp.to_source()
+25 -25
View File
@@ -10,9 +10,9 @@ import site
from collections import deque
# XXXkhuey Work around http://bugs.python.org/issue1731717
subprocess._cleanup = lambda: None
import command, util
from . import command, util
if sys.platform=='win32':
import win32process
from . import win32process
_log = logging.getLogger('pymake.process')
@@ -28,7 +28,7 @@ def tokens2re(tokens):
# which matches the pattern and captures it in a named match group.
# The group names and patterns come are given as a dict in the function
# argument.
nonescaped = r'(?<!\\)(?:%s)' % '|'.join('(?P<%s>%s)' % (name, value) for name, value in tokens.iteritems())
nonescaped = r'(?<!\\)(?:%s)' % '|'.join('(?P<%s>%s)' % (name, value) for name, value in tokens.items())
# The final pattern matches either the above pattern, or an escaped
# backslash, captured in the "escape" match group.
return re.compile('(?:%s|%s)' % (nonescaped, r'(?P<escape>\\\\)'))
@@ -115,7 +115,7 @@ class ClineSplitter(list):
self._push(self.cline[:m.start()])
self.cline = self.cline[m.end():]
match = dict([(name, value) for name, value in m.groupdict().items() if value])
match = dict([(name, value) for name, value in list(m.groupdict().items()) if value])
if 'quote' in match:
# " or ' start a quoted string
if match['quote'] == '"':
@@ -129,7 +129,7 @@ class ClineSplitter(list):
elif 'special' in match:
# Unquoted, non-escaped special characters need to be sent to a
# shell.
raise MetaCharacterException, match['special']
raise MetaCharacterException(match['special'])
elif 'whitespace' in match:
# Whitespaces terminate current argument.
self._next()
@@ -145,7 +145,7 @@ class ClineSplitter(list):
self.glob = True
self._push(m.group(0))
else:
raise Exception, "Shouldn't reach here"
raise Exception("Shouldn't reach here")
if self.arg:
self._next()
@@ -153,20 +153,20 @@ class ClineSplitter(list):
# Single quoted strings are preserved, except for the final quote
index = self.cline.find("'")
if index == -1:
raise Exception, 'Unterminated quoted string in command'
raise Exception('Unterminated quoted string in command')
self._push(self.cline[:index])
self.cline = self.cline[index+1:]
def _parse_doubly_quoted(self):
if not self.cline:
raise Exception, 'Unterminated quoted string in command'
raise Exception('Unterminated quoted string in command')
while self.cline:
m = _doubly_quoted_tokens.search(self.cline)
if not m:
raise Exception, 'Unterminated quoted string in command'
raise Exception('Unterminated quoted string in command')
self._push(self.cline[:m.start()])
self.cline = self.cline[m.end():]
match = dict([(name, value) for name, value in m.groupdict().items() if value])
match = dict([(name, value) for name, value in list(m.groupdict().items()) if value])
if 'quote' in match:
# a double quote ends the quoted string, so go back to
# unquoted parsing
@@ -175,7 +175,7 @@ class ClineSplitter(list):
# Unquoted, non-escaped special characters in a doubly quoted
# string still have a special meaning and need to be sent to a
# shell.
raise MetaCharacterException, match['special']
raise MetaCharacterException(match['special'])
elif 'escape' in match:
# Escaped backslashes turn into a single backslash
self._push('\\')
@@ -194,7 +194,7 @@ def clinetoargv(cline, cwd):
str = _escapednewlines.sub('', cline)
try:
args = ClineSplitter(str, cwd)
except MetaCharacterException, e:
except MetaCharacterException as e:
return None, e.char
if len(args) and args[0].find('=') != -1:
@@ -327,12 +327,12 @@ class PopenJob(Job):
# general overview of "subprocess PATH semantics and portability".
oldpath = os.environ['PATH']
try:
if self.env is not None and self.env.has_key('PATH'):
if self.env is not None and 'PATH' in self.env:
os.environ['PATH'] = self.env['PATH']
p = subprocess.Popen(self.argv, executable=self.executable, shell=self.shell, env=self.env, cwd=self.cwd)
return p.wait()
except OSError, e:
print >>sys.stderr, e
except OSError as e:
print(e, file=sys.stderr)
return -127
finally:
os.environ['PATH'] = oldpath
@@ -383,30 +383,30 @@ class PythonJob(Job):
try:
__import__(self.module)
except Exception as e:
print >>sys.stderr, 'Error importing %s: %s' % (
self.module, e)
print('Error importing %s: %s' % (
self.module, e), file=sys.stderr)
return -127
m = sys.modules[self.module]
if self.method not in m.__dict__:
print >>sys.stderr, "No method named '%s' in module %s" % (self.method, self.module)
print("No method named '%s' in module %s" % (self.method, self.module), file=sys.stderr)
return -127
rv = m.__dict__[self.method](self.argv)
if rv != 0 and rv is not None:
print >>sys.stderr, (
print((
"Native command '%s %s' returned value '%s'" %
(self.module, self.method, rv))
(self.module, self.method, rv)), file=sys.stderr)
return (rv if isinstance(rv, int) else 1)
except PythonException, e:
print >>sys.stderr, e
except PythonException as e:
print(e, file=sys.stderr)
return e.exitcode
except:
e = sys.exc_info()[1]
if isinstance(e, SystemExit) and (e.code == 0 or e.code is None):
pass # sys.exit(0) is not a failure
else:
print >>sys.stderr, e
print(e, file=sys.stderr)
traceback.print_exc()
return -127
finally:
@@ -461,7 +461,7 @@ class ParallelContext(object):
def _docall_generic(self, pool, job, cb, echo, justprint):
if echo is not None:
print echo
print(echo)
processcb = job.get_callback(ParallelContext._condition)
if justprint:
processcb(0)
@@ -491,7 +491,7 @@ class ParallelContext(object):
def _checkdone():
jobs = []
for c in ParallelContext._allcontexts:
for i in xrange(0, len(c.running)):
for i in range(0, len(c.running)):
if c.running[i][0].done:
jobs.append(c.running[i])
for j in jobs:
+2 -2
View File
@@ -82,7 +82,7 @@ else:
return str[:offset], token, str[offset + len(token):]
try:
from __builtin__ import any
from builtins import any
except ImportError:
def any(it):
for i in it:
@@ -138,7 +138,7 @@ class MostUsedCache(object):
return item.o
def verify(self):
for k, v in self.d.iteritems():
for k, v in self.d.items():
if v.o:
assert v in self.active
else:
+3 -3
View File
@@ -1,10 +1,10 @@
import pymake.data, pymake.functions, pymake.util
import unittest
import re
from cStringIO import StringIO
from io import StringIO
def multitest(cls):
for name in cls.testdata.iterkeys():
for name in cls.testdata.keys():
def m(self, name=name):
return self.runSingle(*self.testdata[name])
@@ -63,7 +63,7 @@ class LRUTest(unittest.TestCase):
c = pymake.util.LRUCache(3, self.spaceFunc, lambda k, v: k % 2)
self.assertEqual(tuple(c.debugitems()), ())
for i in xrange(0, len(self.expected)):
for i in range(0, len(self.expected)):
k, e, fc, di = self.expected[i]
v = c.get(k)
+1 -1
View File
@@ -277,7 +277,7 @@ class MakefileCorupusTest(TestBase):
self.assertEqual(len(statements), len(new_statements))
for i in xrange(0, len(statements)):
for i in range(0, len(statements)):
original = statements[i]
formatted = new_statements[i]
+6 -6
View File
@@ -2,10 +2,10 @@ import pymake.data, pymake.parser, pymake.parserdata, pymake.functions
import unittest
import logging
from cStringIO import StringIO
from io import StringIO
def multitest(cls):
for name in cls.testdata.iterkeys():
for name in cls.testdata.keys():
def m(self, name=name):
return self.runSingle(*self.testdata[name])
@@ -134,7 +134,7 @@ class IterTest(TestBase):
self.assertEqual(actual, expected)
if ifunc == pymake.parser.itermakefilechars:
print "testing %r" % expected
print("testing %r" % expected)
self.assertEqual(pymake.parser.flattenmakesyntax(d, 0), expected)
multitest(IterTest)
@@ -207,7 +207,7 @@ class MakeSyntaxTest(TestBase):
def compareRecursive(self, actual, expected, path):
self.assertEqual(len(actual), len(expected),
"compareRecursive: %s %r" % (path, actual))
for i in xrange(0, len(actual)):
for i in range(0, len(actual)):
ipath = path + [i]
a, isfunc = actual[i]
@@ -217,7 +217,7 @@ class MakeSyntaxTest(TestBase):
else:
self.assertEqual(type(a), getattr(pymake.functions, e['type']),
"compareRecursive: %s" % (ipath,))
for k, v in e.iteritems():
for k, v in e.items():
if k == 'type':
pass
elif k[0] == '[':
@@ -264,7 +264,7 @@ class VariableTest(TestBase):
m = pymake.data.Makefile()
stmts.execute(m)
for k, v in self.expected.iteritems():
for k, v in self.expected.items():
flavor, source, val = m.variables.get(k)
if val is None:
self.assertEqual(val, v, 'variable named %s' % k)
+13 -13
View File
@@ -63,7 +63,7 @@ def runTest(makefile, make, logfile, options):
"""
if os.path.exists(opts.tempdir): shutil.rmtree(opts.tempdir)
os.mkdir(opts.tempdir, 0755)
os.mkdir(opts.tempdir, 0o755)
logfd = open(logfile, 'w')
p = Popen(make + options['commandline'], stdout=logfd, stderr=STDOUT, env=options['env'])
@@ -78,15 +78,15 @@ def runTest(makefile, make, logfile, options):
logfd.close()
if stdout.find('TEST-FAIL') != -1:
print stdout
print(stdout)
return False, "FAIL (TEST-FAIL printed)"
if options['grepfor'] and stdout.find(options['grepfor']) == -1:
print stdout
print(stdout)
return False, "FAIL (%s not in output)" % options['grepfor']
if options['returncode'] == 0 and stdout.find('TEST-PASS') == -1:
print stdout
print(stdout)
return False, 'FAIL (No TEST-PASS printed)'
if options['returncode'] != 0:
@@ -94,7 +94,7 @@ def runTest(makefile, make, logfile, options):
return True, 'PASS'
print "%-30s%-28s%-28s" % ("Test:", "gmake:", "pymake:")
print("%-30s%-28s%-28s" % ("Test:", "gmake:", "pymake:"))
gmakefails = 0
pymakefails = 0
@@ -144,7 +144,7 @@ for makefile in makefiles:
if sys.platform in data:
d['returncode'] = data[sys.platform]
elif key == 'environment':
for k, v in data.iteritems():
for k, v in data.items():
d['env'][k] = v
elif key == 'grep-for':
d['grepfor'] = data
@@ -153,7 +153,7 @@ for makefile in makefiles:
elif key == 'skip':
d['skip'] = True
else:
print >>sys.stderr, "%s: Unexpected #T key: %s" % (makefile, key)
print("%s: Unexpected #T key: %s" % (makefile, key), file=sys.stderr)
sys.exit(1)
mdata.close()
@@ -190,12 +190,12 @@ for makefile in makefiles:
else:
pymakemsg = "OK (known fail)"
print "%-30.30s%-28.28s%-28.28s" % (os.path.basename(makefile),
gmakemsg, pymakemsg)
print("%-30.30s%-28.28s%-28.28s" % (os.path.basename(makefile),
gmakemsg, pymakemsg))
print
print "Summary:"
print "%-30s%-28s%-28s" % ("", "gmake:", "pymake:")
print()
print("Summary:")
print("%-30s%-28s%-28s" % ("", "gmake:", "pymake:"))
if gmakefails == 0:
gmakemsg = 'PASS'
@@ -207,7 +207,7 @@ if pymakefails == 0:
else:
pymakemsg = 'FAIL (%i failures)' % pymakefails
print "%-30.30s%-28.28s%-28.28s" % ('', gmakemsg, pymakemsg)
print("%-30.30s%-28.28s%-28.28s" % ('', gmakemsg, pymakemsg))
shutil.rmtree(opts.tempdir)
+5 -5
View File
@@ -4,7 +4,7 @@ from os import path
import re
import shutil
import sys
from urllib2 import urlopen
from urllib.request import urlopen
from release.paths import makeCandidatesDir
@@ -50,7 +50,7 @@ def findOldBuildIDs(product, version, buildNumber, platforms,
id = getBuildID(platform, product, version, n, nightlyDir,
server)
ids[platform].append(id)
except Exception, e:
except Exception as e:
log.error("Hit exception: %s" % e)
return ids
@@ -87,10 +87,10 @@ def readBranchConfig(dir, localconfig, branch, required=[]):
def readConfig(configfile, keys=[], required=[]):
c = {}
execfile(configfile, c)
exec(compile(open(configfile, "rb").read(), configfile, 'exec'), c)
for k in keys:
c = c[k]
items = c.keys()
items = list(c.keys())
err = False
for key in required:
if key not in items:
@@ -137,7 +137,7 @@ def getReleaseName(product, version, buildNumber):
def getRepoMatchingBranch(branch, sourceRepositories):
for sr in sourceRepositories.values():
for sr in list(sourceRepositories.values()):
if branch in sr['path']:
return sr
return None
+1 -1
View File
@@ -1,7 +1,7 @@
import difflib
import logging
import re
import urllib2
import urllib.request, urllib.error, urllib.parse
from util.commands import run_cmd, get_output
from util.hg import get_repo_name, make_hg_url
from subprocess import CalledProcessError
+29 -24
View File
@@ -13,9 +13,11 @@ import re
import subprocess
import sys
import pickle
from locale import getpreferredencoding
import mozpack.path as mozpath
encoding = getpreferredencoding(False)
class Pool(object):
def __new__(cls, size):
@@ -27,7 +29,7 @@ class Pool(object):
return super(Pool, cls).__new__(cls)
def imap_unordered(self, fn, iterable):
return itertools.imap(fn, iterable)
return map(fn, iterable)
def close(self):
pass
@@ -60,7 +62,7 @@ class File(object):
modified = True
if os.path.exists(self._path):
if open(self._path, 'rb').read() == self._content:
if open(self._path, 'r', encoding=encoding, errors='replace').read() == self._content:
modified = False
self._modified = modified
return modified
@@ -131,11 +133,11 @@ def maybe_clear_cache(data):
is_set = cache.get('ac_cv_env_%s_set' % precious) == 'set'
value = cache.get('ac_cv_env_%s_value' % precious) if is_set else None
if value != env.get(precious):
print 'Removing %s because of %s value change from:' \
% (data['cache-file'], precious)
print ' %s' % (value if value is not None else 'undefined')
print 'to:'
print ' %s' % env.get(precious, 'undefined')
print('Removing %s because of %s value change from:' \
% (data['cache-file'], precious))
print(' %s' % (value if value is not None else 'undefined'))
print('to:')
print(' %s' % env.get(precious, 'undefined'))
os.remove(data['cache-file'])
return True
return False
@@ -160,9 +162,11 @@ def get_config_files(data):
# Scan the config.status output for information about configuration files
# it generates.
config_status_output = subprocess.check_output(
raw_output = subprocess.check_output(
[data['shell'], '-c', '%s --help' % config_status],
stderr=subprocess.STDOUT).splitlines()
stderr=subprocess.STDOUT)
config_status_output = raw_output.decode(encoding,
errors='replace').splitlines()
state = None
for line in config_status_output:
if line.startswith('Configuration') and line.endswith(':'):
@@ -183,7 +187,6 @@ def get_config_files(data):
return config_files, command_files
def prepare(srcdir, objdir, shell, args):
parser = argparse.ArgumentParser()
parser.add_argument('--target', type=str)
@@ -232,7 +235,7 @@ def prepare(srcdir, objdir, shell, args):
'args': others,
'shell': shell,
'srcdir': srcdir,
'env': environ,
'env': {str(k): str(v) for k, v in environ.items()},
}
if args.cache_file:
@@ -249,9 +252,9 @@ def prepare(srcdir, objdir, shell, args):
except OSError as e:
if e.errno != errno.EEXIST:
raise
with open(data_file, 'wb') as f:
pickle.dump(data, f)
for k, v in data.items():
with open(data_file, 'wb') as f:
pickle.dump(data, f)
def prefix_lines(text, prefix):
@@ -261,7 +264,6 @@ def prefix_lines(text, prefix):
def run(objdir):
ret = 0
output = ''
with open(os.path.join(objdir, CONFIGURE_DATA), 'rb') as f:
data = pickle.load(f)
@@ -333,14 +335,16 @@ def run(objdir):
# We're going to run it ourselves.
command += ['--no-create']
print prefix_lines('configuring', relobjdir)
print prefix_lines('running %s' % ' '.join(command[:-1]), relobjdir)
print(prefix_lines('configuring', relobjdir))
print(prefix_lines('running %s' % ' '.join(command[:-1]), relobjdir))
sys.stdout.flush()
try:
output += subprocess.check_output(command,
raw_output = subprocess.check_output(command,
stderr=subprocess.STDOUT, cwd=objdir, env=data['env'])
output += raw_output.decode(encoding, errors='replace')
except subprocess.CalledProcessError as e:
return relobjdir, e.returncode, e.output
err = e.output.decode(encoding, errors='replace')
return relobjdir, e.returncode, err
# Leave config.status with a new timestamp if configure is newer than
# its original mtime.
@@ -368,12 +372,13 @@ def run(objdir):
if not skip_config_status:
if skip_configure:
print prefix_lines('running config.status', relobjdir)
print(prefix_lines('running config.status', relobjdir))
sys.stdout.flush()
try:
output += subprocess.check_output([data['shell'], '-c',
raw_output = subprocess.check_output([data['shell'], '-c',
'./config.status'], stderr=subprocess.STDOUT, cwd=objdir,
env=data['env'])
output += raw_output.decode(encoding, errors='replace')
except subprocess.CalledProcessError as e:
ret = e.returncode
output += e.output
@@ -395,9 +400,9 @@ def subconfigure(args):
args, others = parser.parse_known_args(args)
subconfigures = args.subconfigures
if args.list:
subconfigures.extend(open(args.list, 'rb').read().splitlines())
subconfigures.extend(open(args.list, 'r', encoding=encoding, errors='replace').read().splitlines())
if args.skip:
skips = set(open(args.skip, 'rb').read().splitlines())
skips = set(open(args.skip, 'r', encoding=encoding, errors='replace').read().splitlines())
subconfigures = [s for s in subconfigures if s not in skips]
if not subconfigures:
@@ -410,7 +415,7 @@ def subconfigure(args):
pool = Pool(len(subconfigures))
for relobjdir, returncode, output in \
pool.imap_unordered(run, subconfigures):
print prefix_lines(output, relobjdir)
print(prefix_lines(output, relobjdir))
sys.stdout.flush()
ret = max(returncode, ret)
if ret:
+17 -17
View File
@@ -104,10 +104,10 @@ def DoSSHCommand(command, user, host, port=None, ssh_key=None):
try:
output = f(cmdline, stderr=STDOUT).strip()
except CalledProcessError as e:
print "failed ssh command output:"
print '=' * 20
print e.output
print '=' * 20
print("failed ssh command output:")
print('=' * 20)
print(e.output)
print('=' * 20)
raise
return output
@@ -118,7 +118,7 @@ def DoSCPFile(file, remote_path, user, host, port=None, ssh_key=None,
"""Upload file to user@host:remote_path using scp. Optionally use
port and ssh_key, if provided."""
if log:
print 'Uploading %s' % file
print('Uploading %s' % file)
cmdline = ["scp"]
AppendOptionalArgsToSSHCommandline(cmdline, port, ssh_key)
cmdline.extend([WindowsPathToMsysPath(file),
@@ -221,8 +221,8 @@ def UploadFiles(user, host, path, files, verbose=False, port=None, ssh_key=None,
if not host or not user:
return {}
if (not path and not upload_to_temp_dir) or (path and upload_to_temp_dir):
print "One (and only one of UPLOAD_PATH or UPLOAD_TO_TEMP must be " + \
"defined."
print("One (and only one of UPLOAD_PATH or UPLOAD_TO_TEMP must be " + \
"defined.")
sys.exit(1)
if upload_to_temp_dir:
@@ -269,18 +269,18 @@ def UploadFiles(user, host, path, files, verbose=False, port=None, ssh_key=None,
if post_upload_command is not None:
if verbose:
print "Running post-upload command: " + post_upload_command
print("Running post-upload command: " + post_upload_command)
file_list = '"' + '" "'.join(remote_files) + '"'
output = DoSSHCommand('%s "%s" %s' % (post_upload_command, path, file_list), user, host, port=port, ssh_key=ssh_key)
# We print since mozharness may parse URLs from the output stream.
print output
print(output)
properties = GetUrlProperties(output, package)
finally:
if upload_to_temp_dir:
DoSSHCommand("rm -rf %s" % path, user, host, port=port,
ssh_key=ssh_key)
if verbose:
print "Upload complete"
print("Upload complete")
return properties
def CopyFilesLocally(path, files, verbose=False, base_path=None, package=None):
@@ -299,7 +299,7 @@ def CopyFilesLocally(path, files, verbose=False, base_path=None, package=None):
if not os.path.exists(target_path):
os.makedirs(target_path)
if verbose:
print "Copying " + file + " to " + target_path
print("Copying " + file + " to " + target_path)
shutil.copy(file, target_path)
def WriteProperties(files, properties_file, url_properties, package):
@@ -341,20 +341,20 @@ if __name__ == '__main__':
help="Name of the main package.")
(options, args) = parser.parse_args()
if len(args) < 1:
print "You must specify at least one file to upload"
print("You must specify at least one file to upload")
sys.exit(1)
if not options.properties_file:
print "You must specify a --properties-file"
print("You must specify a --properties-file")
sys.exit(1)
if host == "localhost":
if upload_to_temp_dir:
print "Cannot use UPLOAD_TO_TEMP with UPLOAD_HOST=localhost"
print("Cannot use UPLOAD_TO_TEMP with UPLOAD_HOST=localhost")
sys.exit(1)
if post_upload_command:
# POST_UPLOAD_COMMAND is difficult to extract from the mozharness
# scripts, so just ignore it until it's no longer used anywhere
print "Ignoring POST_UPLOAD_COMMAND with UPLOAD_HOST=localhost"
print("Ignoring POST_UPLOAD_COMMAND with UPLOAD_HOST=localhost")
try:
if host == "localhost":
@@ -370,6 +370,6 @@ if __name__ == '__main__':
package=options.package, verbose=True)
WriteProperties(args, options.properties_file, url_properties, options.package)
except IOError, (strerror):
print strerror
except IOError as strerror:
print(strerror)
sys.exit(1)
+3 -3
View File
@@ -36,7 +36,7 @@ def count_ctors(filename):
# Even if we have .ctors, we shouldn't have any constructors in .ctors.
# Complain if .ctors does not look how we expect it to.
if have_ctors and n_ctors_ctors != 0:
print >>sys.stderr, "Unexpected .ctors contents for", filename
print("Unexpected .ctors contents for", filename, file=sys.stderr)
sys.exit(1)
return n_init_array_ctors
if have_ctors:
@@ -44,7 +44,7 @@ def count_ctors(filename):
# We didn't find anything; somebody switched initialization mechanisms on
# us, or the binary is completely busted. Complain either way.
print >>sys.stderr, "Couldn't find .init_array or .ctors in", filename
print("Couldn't find .init_array or .ctors in", filename, file=sys.stderr)
sys.exit(1)
if __name__ == '__main__':
@@ -60,5 +60,5 @@ if __name__ == '__main__':
}]}
]
}
print "PERFHERDER_DATA: %s" % json.dumps(perfherder_data)
print("PERFHERDER_DATA: %s" % json.dumps(perfherder_data))
+7 -7
View File
@@ -2,8 +2,8 @@
import os
import re
import subprocess
from urlparse import urlsplit
from ConfigParser import RawConfigParser
from urllib.parse import urlsplit
from configparser import RawConfigParser
from util.commands import run_cmd, get_output, remove_path
from util.retry import retry
@@ -105,7 +105,7 @@ def purge(dest):
try:
run_cmd(['hg', '--config', 'extensions.purge=', 'purge',
'-a', '--all', dest], cwd=dest)
except subprocess.CalledProcessError, e:
except subprocess.CalledProcessError as e:
log.debug('purge failed: %s' % e)
raise
@@ -306,7 +306,7 @@ def out(src, remote, **kwargs):
branch = "default"
revs.append((rev, branch))
return revs
except subprocess.CalledProcessError, inst:
except subprocess.CalledProcessError as inst:
# In some situations, some versions of Mercurial return "1"
# if no changes are found, so we need to ignore this return code
if inst.returncode == 1:
@@ -500,7 +500,7 @@ def apply_and_push(localrepo, remote, changer, max_attempts=10,
push(src=localrepo, remote=remote, ssh_username=ssh_username,
ssh_key=ssh_key, force=force)
return
except subprocess.CalledProcessError, e:
except subprocess.CalledProcessError as e:
log.debug("Hit error when trying to push: %s" % str(e))
if n == max_attempts:
log.debug("Tried %d times, giving up" % max_attempts)
@@ -515,7 +515,7 @@ def apply_and_push(localrepo, remote, changer, max_attempts=10,
try:
run_cmd(['hg', '--config', 'ui.merge=internal:merge',
'rebase'], cwd=localrepo)
except subprocess.CalledProcessError, e:
except subprocess.CalledProcessError as e:
log.debug("Failed to rebase: %s" % str(e))
update(localrepo, branch=branch)
for r in reversed(new_revs):
@@ -578,7 +578,7 @@ def adjust_paths(dest, **paths):
config.add_section('paths')
changed = False
for path_name, path_value in paths.items():
for path_name, path_value in list(paths.items()):
if (not config.has_option('paths', path_name) or
config.get('paths', path_name) != path_value):
changed = True
+1 -1
View File
@@ -11,7 +11,6 @@ mozbuild.pth:python/mozbuild
mozversioncontrol.pth:python/mozversioncontrol
mozlint.pth:python/mozlint
pymake.pth:build/pymake
optional:setup.py:python/psutil:build_ext:--inplace
optional:psutil.pth:python/psutil
which.pth:python/which
ply.pth:other-licenses/ply/
@@ -29,6 +28,7 @@ moztreedocs.pth:tools/docs
packages.txt:testing/mozbase/packages.txt
objdir:build
gyp.pth:media/webrtc/trunk/tools/gyp/pylib
six.pth:python/requests/requests/packages/urllib3/packages
pyasn1.pth:python/pyasn1
pyasn1_modules.pth:python/pyasn1-modules
bitstring.pth:python/bitstring
+13 -11
View File
@@ -23,8 +23,8 @@ BINSCOPE_OUTPUT_LOGFILE = r".\binscope_xml_output.log"
# usage
if len(sys.argv) < 3:
print """usage : autobinscope.by path_to_binary path_to_symbols [log_file_path]"
log_file_path is optional, log will be written to .\binscope_xml_output.log by default"""
print("""usage : autobinscope.by path_to_binary path_to_symbols [log_file_path]"
log_file_path is optional, log will be written to .\binscope_xml_output.log by default""")
sys.exit(0)
binary_path = sys.argv[1]
@@ -40,7 +40,7 @@ else:
try:
binscope_path = os.environ['BINSCOPE']
except KeyError:
print "BINSCOPE environment variable is not set, can't check DEP/ASLR etc. status."
print("BINSCOPE environment variable is not set, can't check DEP/ASLR etc. status.")
sys.exit(0)
try:
@@ -51,13 +51,15 @@ try:
"/c", "CompilerVersionCheck", "/c", "SafeSEHCheck", "/c", "SNCheck",
"/c", "DBCheck"], stdout=subprocess.PIPE)
except WindowsError, (errno, strerror):
except OSError as e:
errno = e.errno
strerror = e.strerror or str(e)
if errno != 2 and errno != 3:
print "Unexpected error ! \nError " + str(errno) + " : " + strerror + "\nExiting !\n"
print("Unexpected error ! \nError " + str(errno) + " : " + strerror + "\nExiting !\n")
sys.exit(0)
else:
print "Could not locate binscope at location : %s\n" % binscope_path
print "Binscope wasn't installed or the BINSCOPE env variable wasn't set correctly, skipping this check and exiting..."
print("Could not locate binscope at location : %s\n" % binscope_path)
print("Binscope wasn't installed or the BINSCOPE env variable wasn't set correctly, skipping this check and exiting...")
sys.exit(0)
proc.wait()
@@ -66,10 +68,10 @@ output = proc.communicate()[0]
# is this a PASS or a FAIL ?
if proc.returncode != 0:
print "Error count: %d" % proc.returncode
print "TEST-UNEXPECTED-FAIL | autobinscope.py | %s is missing a needed Windows protection, such as /GS or ASLR" % binary_path
print("Error count: %d" % proc.returncode)
print("TEST-UNEXPECTED-FAIL | autobinscope.py | %s is missing a needed Windows protection, such as /GS or ASLR" % binary_path)
logfile = open(log_file_path, "r")
for line in logfile:
print(line),
print((line), end=' ')
else:
print "TEST-PASS | autobinscope.py | %s succeeded" % binary_path
print("TEST-PASS | autobinscope.py | %s succeeded" % binary_path)
+1 -1
View File
@@ -39,6 +39,6 @@ def MergePGOFiles(basename, pgddir, pgcdir):
if __name__ == '__main__':
if len(sys.argv) != 3:
print >>sys.stderr, "Usage: pgomerge.py <binary basename> <dist/bin>"
print("Usage: pgomerge.py <binary basename> <dist/bin>", file=sys.stderr)
sys.exit(1)
MergePGOFiles(sys.argv[1], os.getcwd(), sys.argv[2])
+3 -3
View File
@@ -40,9 +40,9 @@ if __name__ == '__main__':
0, # no inherit
int(pid))
if handle:
print "Process %s:" % pid
print("Process %s:" % pid)
vsize, peak_vsize = get_vmsize(handle)
print "peak vsize: %d" % peak_vsize
print("peak vsize: %d" % peak_vsize)
ctypes.windll.kernel32.CloseHandle(handle)
else:
print "Couldn't open process %s" % pid
print("Couldn't open process %s" % pid)
+6 -6
View File
@@ -200,7 +200,7 @@ def format_manifest(manifest):
def write_zip(zip_path, prefix=None):
"""Write toolchain data to a zip file."""
if isinstance(prefix, unicode):
if isinstance(prefix, str):
prefix = prefix.encode('utf-8')
with JarWriter(file=zip_path, optimize=False, compress=5) as zip:
@@ -226,7 +226,7 @@ def write_zip(zip_path, prefix=None):
if __name__ == '__main__':
if len(sys.argv) != 3:
print('usage: %s create-zip <path-prefix>' % sys.argv[0])
print(('usage: %s create-zip <path-prefix>' % sys.argv[0]))
sys.exit(1)
assert sys.argv[1] == 'create-zip'
@@ -244,7 +244,7 @@ if __name__ == '__main__':
sha256.update(data)
sha512.update(data)
print('Hashes of %s (size=%d)' % (destzip, len(data)))
print('SHA-1: %s' % sha1.hexdigest())
print('SHA-256: %s' % sha256.hexdigest())
print('SHA-512: %s' % sha512.hexdigest())
print(('Hashes of %s (size=%d)' % (destzip, len(data))))
print(('SHA-1: %s' % sha1.hexdigest()))
print(('SHA-256: %s' % sha256.hexdigest()))
print(('SHA-512: %s' % sha512.hexdigest()))
+12
View File
@@ -464,6 +464,18 @@ nsPrincipal::Write(nsIObjectOutputStream* aStream)
rv = aStream->WriteStringZ(suffix.get());
NS_ENSURE_SUCCESS(rv, rv);
// This is an ugly hack to prevent re-entrancy calls into nsPrincipal::Write()
// because of repeat CSP processing.
// We refcount the context and if found 3+ refcounts on the same, skip writing
// the mCSP compound object.
// TODO: figure out exactly why this happens and fix the root cause.
nsCSPContext* CSPContext = static_cast<nsCSPContext*>(mCSP.get());
if(CSPContext) {
auto CSPDepth = CSPContext->AddRef();
CSPContext->Release();
if(CSPDepth > 2) return NS_OK;
}
rv = NS_WriteOptionalCompoundObject(aStream, mCSP,
NS_GET_IID(nsIContentSecurityPolicy),
true);
+1 -1
View File
@@ -66,7 +66,7 @@ endif
SH := /bin/sh
PERL ?= perl
PYTHON ?= $(shell which python2.7 > /dev/null 2>&1 && echo python2.7 || echo python)
PYTHON ?= $(shell which python3 > /dev/null 2>&1 && echo python3 || echo python)
CONFIG_GUESS_SCRIPT := $(wildcard $(TOPSRCDIR)/build/autoconf/config.guess)
ifdef CONFIG_GUESS_SCRIPT
+12 -12
View File
@@ -22,7 +22,7 @@ if topsrcdir == '':
topsrcdir = '.'
def check_call_noisy(cmd, *args, **kwargs):
print "Executing command:", cmd
print("Executing command:", cmd)
check_call(cmd, *args, **kwargs)
def do_hg_pull(dir, repository, hg):
@@ -67,22 +67,22 @@ def do_cvs_export(modules, tag, cvsroot, cvs):
cvs_module = module_tuple[1]
fullpath = os.path.join(topsrcdir, module)
if os.path.exists(fullpath):
print "Removing '%s'" % fullpath
print("Removing '%s'" % fullpath)
shutil.rmtree(fullpath)
(parent, leaf) = os.path.split(module)
print "CVS export begin: " + datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S UTC")
print("CVS export begin: " + datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S UTC"))
check_call_noisy([cvs, '-d', cvsroot,
'export', '-r', tag, '-d', leaf, cvs_module],
cwd=os.path.join(topsrcdir, parent))
print "CVS export end: " + datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S UTC")
print("CVS export end: " + datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S UTC"))
def toggle_trailing_blank_line(depname):
"""If the trailing line is empty, then we'll delete it.
Otherwise we'll add a blank line."""
lines = open(depname, "r").readlines()
if not lines:
print >>sys.stderr, "unexpected short file"
print("unexpected short file", file=sys.stderr)
return
if not lines[-1].strip():
@@ -95,7 +95,7 @@ def toggle_trailing_blank_line(depname):
def get_trailing_blank_line_state(depname):
lines = open(depname, "r").readlines()
if not lines:
print >>sys.stderr, "unexpected short file"
print("unexpected short file", file=sys.stderr)
return "no blank line"
if not lines[-1].strip():
@@ -104,18 +104,18 @@ def get_trailing_blank_line_state(depname):
return "no blank line"
def update_nspr_or_nss(tag, depfile, destination, hgpath):
print "reverting to HG version of %s to get its blank line state" % depfile
print("reverting to HG version of %s to get its blank line state" % depfile)
check_call_noisy([options.hg, 'revert', depfile])
old_state = get_trailing_blank_line_state(depfile)
print "old state of %s is: %s" % (depfile, old_state)
print("old state of %s is: %s" % (depfile, old_state))
do_hg_replace(destination, hgpath, tag, HG_EXCLUSIONS, options.hg)
new_state = get_trailing_blank_line_state(depfile)
print "new state of %s is: %s" % (depfile, new_state)
print("new state of %s is: %s" % (depfile, new_state))
if old_state == new_state:
print "toggling blank line in: ", depfile
print("toggling blank line in: ", depfile)
toggle_trailing_blank_line(depfile)
tag_file = destination + "/TAG-INFO"
print >>file(tag_file, "w"), tag
print(tag, file=file(tag_file, "w"))
o = OptionParser(usage="client.py [options] update_nspr tagname | update_nss tagname | update_libffi tagname")
o.add_option("--skip-mozilla", dest="skip_mozilla",
@@ -139,7 +139,7 @@ except IndexError:
sys.exit(2)
if action in ('checkout', 'co'):
print >>sys.stderr, "Warning: client.py checkout is obsolete."
print("Warning: client.py checkout is obsolete.", file=sys.stderr)
pass
elif action in ('update_nspr'):
tag, = args[1:]
+5 -5
View File
@@ -46,7 +46,7 @@ class ZipFile(zipfile.ZipFile):
date_time=time.localtime(time.time()))
zinfo.compress_type = self.compression
# Add some standard UNIX file access permissions (-rw-r--r--).
zinfo.external_attr = (0x81a4 & 0xFFFF) << 16L
zinfo.external_attr = (0x81a4 & 0xFFFF) << 16
else:
zinfo = zinfo_or_arcname
@@ -58,7 +58,7 @@ class ZipFile(zipfile.ZipFile):
# as the old, reuse the existing entry.
doSeek = False # store if we need to seek to the eof after overwriting
if self.NameToInfo.has_key(zinfo.filename):
if zinfo.filename in self.NameToInfo:
# Find the last ZipInfo with our name.
# Last, because that's catching multiple overwrites
i = len(self.filelist)
@@ -109,14 +109,14 @@ class ZipFile(zipfile.ZipFile):
# adjust file mode if we originally just wrote, now we rewrite
self.fp.close()
self.fp = open(self.filename, 'r+b')
all = map(lambda zi: (zi, True), self.filelist) + \
map(lambda zi: (zi, False), self._remove)
all = [(zi, True) for zi in self.filelist] + \
[(zi, False) for zi in self._remove]
all.sort(lambda l, r: cmp(l[0].header_offset, r[0].header_offset))
# empty _remove for multiple closes
self._remove = []
lengths = [all[i+1][0].header_offset - all[i][0].header_offset
for i in xrange(len(all)-1)]
for i in range(len(all)-1)]
lengths.append(self.end - all[-1][0].header_offset)
to_pos = 0
for (zi, keep), length in zip(all, lengths):
+354
View File
@@ -0,0 +1,354 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*
* C++ replacement for mozbuild/action/cl.py that wraps cl.exe on Windows.
* This is a Windows-only host tool, built well before XPCOM.
*/
#include <windows.h>
#include <string> // We don't use XPCOM string classes here.
#include <vector>
#include <fstream>
#include <algorithm>
#pragma warning(disable:4530)
using namespace std;
/* Make passed argv into a command line for cl.exe */
static wstring quoteArg(const wstring& aCmdArgv) {
bool addQuotes = aCmdArgv.find_first_of(L" \t\"") != wstring::npos;
if (!addQuotes) {
return aCmdArgv;
}
wstring out = L"\"";
size_t backslash = 0;
for (wchar_t ch : aCmdArgv) {
if (ch == L'\\') {
backslash++;
} else if (ch == L'"') {
// Escape all backslashes before a quote
out.append(backslash * 2, L'\\');
backslash = 0;
out += L"\\\"";
} else {
out.append(backslash, L'\\');
backslash = 0;
out += ch;
}
}
out.append(backslash * 2, L'\\');
out += L"\"";
return out;
}
/* We need to detect the showIncludes prefix to extract raw paths for
dep files, and drop the lines from display to avoid console spam. */
static string showIncludesPrefixDetection(const string& aLine) {
// Look for absolute Windows paths
size_t pos = string::npos;
// Drive letter: C:\...
for (size_t i = 0; i + 2 < aLine.size(); i++) {
if (isalpha((unsigned char)aLine[i]) &&
aLine[i + 1] == ':' &&
(aLine[i + 2] == '\\' || aLine[i + 2] == '/')) {
pos = i;
break;
}
}
// UNC path: \\server\share
if (pos == string::npos) {
if (aLine.size() >= 2 && aLine[0] == '\\' && aLine[1] == '\\') {
pos = 0;
}
}
if (pos == string::npos) {
return "";
}
// Prefix is everything before the path
return aLine.substr(0, pos);
}
/* Extract the header path from an include line using the known prefix */
static string extractHeaderPath(const string& aLine, const string& aPrefix) {
if (aLine.rfind(aPrefix, 0) != 0) {
return "";
}
// Strip prefix
string path = aLine.substr(aPrefix.size());
// Trim leading whitespace
while (!path.empty() && (path[0] == ' ' || path[0] == '\t')) {
path.erase(0, 1);
}
// Remove trailing newline
if (!path.empty() && (path.back() == '\n' || path.back() == '\r')) {
path.pop_back();
}
return path;
}
/* Sanitize a dependency path for Makefile depfiles.
Performs:
1. Strip trailing CR/LF
2. Strip leading MSVC indentation
3. Normalize slashes to '/'
4. Escape spaces and backslashes for Make */
static string sanitizeMakeDeps(string aLine) {
// 1. Strip trailing CR/LF
while (!aLine.empty() && (aLine.back() == '\r' || aLine.back() == '\n')) {
aLine.pop_back();
}
// 2. Strip leading indentation (MSVC indents include lines)
while (!aLine.empty() && (aLine.front() == ' ' || aLine.front() == '\t')) {
aLine.erase(aLine.begin());
}
// 3. Normalize slashes
for (char& ch : aLine) {
if (ch == '\\') {
ch = '/';
}
}
// 4. Escape for Make
string out;
out.reserve(aLine.size() * 2);
for (char ch : aLine) {
if (ch == ' ') {
out += "\\ ";
} else if (ch == '\\') {
// After normalization this shouldn't occur, but safe anyway
out += "\\\\";
} else {
out += ch;
}
}
return out;
}
/* MSYS1 does not use wide APIs, so ensure we get the narrow version here. */
static string getWinEnvVar(const char* aName) {
char buffer[32768];
DWORD length = GetEnvironmentVariableA(aName, buffer, sizeof(buffer));
if (length == 0 || length >= sizeof(buffer)) {
return string();
}
return string(buffer, length);
}
/* Exclude system headers by ignoring anything not in our directories.
* We don't know where people will put their objdir, so it has to be
* tracked separately.
*/
static bool isProjectDep(const string& aPath,
const string& aTopSrcDir,
const string& aTopObjDir) {
// We need forward slashes for our build system.
auto norm = [](string aStr) {
replace(aStr.begin(), aStr.end(), '\\', '/');
return aStr;
};
string path = norm(aPath);
string topSrcDir = norm(aTopSrcDir);
string topObjDir = norm(aTopObjDir);
// Must be absolute or relative under one of the two roots
return (path.rfind(topSrcDir, 0) == 0) ||
(path.rfind(topObjDir, 0) == 0);
}
/* Read stdout from the compiler pipe line-by-line, filtering include
lines and collecting dependency paths. */
static vector<string> processOutput(HANDLE aReadPipe) {
string lineBuf;
vector<string> deps;
string topSrcDir = getWinEnvVar("CL_TOPSRCDIR");
string topObjDir = getWinEnvVar("CL_TOPOBJDIR");
char buffer[4096];
DWORD bytesRead;
string includePrefix;
bool prefixFound = false;
while (ReadFile(aReadPipe, buffer, sizeof(buffer), &bytesRead, nullptr)) {
lineBuf.append(buffer, bytesRead);
size_t pos;
while ((pos = lineBuf.find('\n')) != string::npos) {
string line = lineBuf.substr(0, pos + 1);
lineBuf.erase(0, pos + 1);
if (!prefixFound) {
string maybe = showIncludesPrefixDetection(line);
if (!maybe.empty()) {
includePrefix = maybe;
prefixFound = true;
}
}
// If prefix is known and this line starts with it, it's an include line
if (prefixFound && line.rfind(includePrefix, 0) == 0) {
string header = extractHeaderPath(line, includePrefix);
if (!header.empty()) {
header = sanitizeMakeDeps(header);
if (isProjectDep(header, topSrcDir, topObjDir)) {
deps.push_back(header);
}
}
// This is an include line, don't print it
continue;
}
// Otherwise, just print
fwrite(line.data(), 1, line.size(), stdout);
}
}
if (!lineBuf.empty()) {
fwrite(lineBuf.data(), 1, lineBuf.size(), stdout);
}
return deps;
}
/* Convert a UTF-16 wide string to a UTF-8 narrow string. */
static string wideToUtf8(const wstring& aWide) {
if (aWide.empty()) {
return {};
}
int len = WideCharToMultiByte(CP_UTF8, 0, aWide.c_str(), -1, nullptr, 0, nullptr, nullptr);
string out(len - 1, '\0');
WideCharToMultiByte(CP_UTF8, 0, aWide.c_str(), -1, &out[0], len - 1, nullptr, nullptr);
return out;
}
/* Compute the .pp depfile path next to the given object file. */
static string makeDepfilePath(const string& aObjUtf8) {
size_t pos = aObjUtf8.find_last_of("/\\");
string dir = (pos == string::npos) ? "" : aObjUtf8.substr(0, pos + 1);
string base = (pos == string::npos) ? aObjUtf8 : aObjUtf8.substr(pos + 1);
return dir + ".deps/" + base + ".pp";
}
/* Write a Make-style dependency file for the given object and dep list. */
static void writeDepfile(const wstring& aObjFile, const vector<string>& aDeps) {
string objUtf8 = wideToUtf8(aObjFile);
string ppName = makeDepfilePath(objUtf8);
ofstream out(ppName);
out << objUtf8 << ":";
for (auto& dep : aDeps) {
out << " " << dep;
}
out << "\r\n";
}
int wmain(int argc, wchar_t** argv) {
if (argc < 2) {
fwprintf(stderr, L"Usage: action_cl.exe <compiler> [args...]\n");
return 1;
}
const wchar_t* compiler = argv[1];
// Build command line
wstring cmd = quoteArg(compiler);
wstring objFile;
wstring sourceFile;
cmd += L" -showIncludes";
for (int i = 2; i < argc; i++) {
cmd += L" ";
cmd += quoteArg(argv[i]);
}
vector<wchar_t> cmdLine(cmd.begin(), cmd.end());
cmdLine.push_back(L'\0');
for (int i = 2; i < argc; i++) {
wstring arg = argv[i];
if (arg.rfind(L"/Fo", 0) == 0 || arg.rfind(L"-Fo", 0) == 0) {
objFile = arg.substr(3); // strip /Fo or -Fo
}
if (!arg.empty() && arg[0] != L'-' && arg[0] != L'/') {
sourceFile = arg; // last non-flag argument is the source file
}
}
// Create pipe for capturing stdout
HANDLE readPipe, writePipe;
SECURITY_ATTRIBUTES sa = { sizeof(sa), nullptr, TRUE };
if (!CreatePipe(&readPipe, &writePipe, &sa, 0)) {
fwprintf(stderr, L"Failed to create pipe\n");
return 1;
}
SetHandleInformation(readPipe, HANDLE_FLAG_INHERIT, 0);
STARTUPINFOW si = { sizeof(si) };
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdOutput = writePipe;
si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
PROCESS_INFORMATION pi;
BOOL ok = CreateProcessW(nullptr, cmdLine.data(), nullptr, nullptr, TRUE, 0, nullptr, nullptr, &si, &pi);
CloseHandle(writePipe);
if (!ok) {
fwprintf(stderr, L"Failed to launch compiler: %ls (error %lu)\n", compiler, GetLastError());
CloseHandle(readPipe);
return 1;
}
// Read compiler output and collect dependencies
auto deps = processOutput(readPipe);
CloseHandle(readPipe);
WaitForSingleObject(pi.hProcess, INFINITE);
DWORD exitCode = 0;
GetExitCodeProcess(pi.hProcess, &exitCode);
// Write the depfile only if we know the output object path
if (!objFile.empty()) {
string srcUtf8 = wideToUtf8(sourceFile);
deps.insert(deps.begin(), sanitizeMakeDeps(srcUtf8));
writeDepfile(objFile, deps);
}
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return exitCode;
}
+1 -1
View File
@@ -275,7 +275,7 @@ def check_style():
edges[inclname] = set()
# Process all the JS files.
for filename in js_names.keys():
for filename in list(js_names.keys()):
inclname = js_names[filename]
file_kind = FileKind.get(filename)
if file_kind == FileKind.C or file_kind == FileKind.CPP or \
+4 -3
View File
@@ -120,8 +120,8 @@ CONFIG_TOOLS = $(MOZ_BUILD_ROOT)/config
AUTOCONF_TOOLS = $(MOZILLA_DIR)/build/autoconf
ifdef _MSC_VER
CC_WRAPPER ?= $(call py_action,cl)
CXX_WRAPPER ?= $(call py_action,cl)
CC_WRAPPER ?= $(DEPTH)/config/action_cl$(BIN_SUFFIX)
CXX_WRAPPER ?= $(DEPTH)/config/action_cl$(BIN_SUFFIX)
endif # _MSC_VER
CC := $(CC_WRAPPER) $(CC)
@@ -562,7 +562,8 @@ endif
PLY_INCLUDE = -I$(MOZILLA_DIR)/other-licenses/ply
export CL_INCLUDES_PREFIX
export CL_TOPOBJDIR = $(MOZ_BUILD_ROOT)
export CL_TOPSRCDIR = $(EXTERNAL_SOURCE_DIR)
# Make sure that the build system can handle non-ASCII characters
# in environment variables to prevent it from breking silently on
# non-English systems.
+4 -2
View File
@@ -56,10 +56,12 @@ def generate_precomplete(root_path):
precomplete_file = open(precomplete_file_path, "wb")
rel_file_path_list, rel_dir_path_list = get_build_entries(root_path)
for rel_file_path in rel_file_path_list:
precomplete_file.writelines("remove \""+rel_file_path+"\"\n")
line = "remove \""+rel_file_path+"\"\n"
precomplete_file.write(line.encode('utf-8'))
for rel_dir_path in rel_dir_path_list:
precomplete_file.writelines("rmdir \""+rel_dir_path+"\"\n")
line = "rmdir \""+rel_dir_path+"\"\n"
precomplete_file.write(line.encode('utf-8'))
precomplete_file.close()
+2 -2
View File
@@ -36,7 +36,7 @@ def ensureParentDir(file):
if dir and not os.path.exists(dir):
try:
os.makedirs(dir)
except OSError, error:
except OSError as error:
if error.errno != errno.EEXIST:
raise
@@ -140,4 +140,4 @@ class ExpandArgs(list):
return [relativize(arg)]
if __name__ == '__main__':
print " ".join(ExpandArgs(sys.argv[1:]))
print(" ".join(ExpandArgs(sys.argv[1:])))
+7 -7
View File
@@ -305,11 +305,11 @@ class SectionFinder(object):
return syms
def print_command(out, args):
print >>out, "Executing: " + " ".join(args)
print("Executing: " + " ".join(args), file=out)
for tmp in [f for f in args.tmp if os.path.isfile(f)]:
print >>out, tmp + ":"
print(tmp + ":", file=out)
with open(tmp) as file:
print >>out, "".join([" " + l for l in file.readlines()])
print("".join([" " + l for l in file.readlines()]), file=out)
out.flush()
def main(args, proc_callback=None):
@@ -339,14 +339,14 @@ def main(args, proc_callback=None):
proc = subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
if proc_callback:
proc_callback(proc)
except Exception, e:
print >>sys.stderr, 'error: Launching', args, ':', e
except Exception as e:
print('error: Launching', args, ':', e, file=sys.stderr)
raise e
(stdout, stderr) = proc.communicate()
if proc.returncode and not options.verbose:
print_command(sys.stderr, args)
sys.stderr.write(stdout)
sys.stderr.flush()
sys.stderr.buffer.write(stdout)
sys.stderr.buffer.flush()
if proc.returncode:
return proc.returncode
return 0
+1 -1
View File
@@ -38,4 +38,4 @@ if __name__ == '__main__':
ensureParentDir(options.output)
with open(options.output, 'w') as outfile:
print >>outfile, generate(args)
print(generate(args), file=outfile)
+2
View File
@@ -101,6 +101,8 @@ else:
ASFLAGS += ['-no-integrated-as']
elif CONFIG['FFI_TARGET'] == 'AARCH64':
ffi_srcs = ('sysv.S', 'ffi.c')
elif CONFIG['FFI_TARGET'] == 'LOONGARCH64':
ffi_srcs = ('ffi.c', 'sysv.S')
elif CONFIG['FFI_TARGET'] == 'X86':
ffi_srcs = ('ffi.c', 'sysv.S', 'win32.S')
elif CONFIG['FFI_TARGET'] == 'X86_64':
+20 -1
View File
@@ -18,20 +18,30 @@ sources = [
'/intl/icu/source/common/dictionarydata.cpp',
'/intl/icu/source/common/dtintrv.cpp',
'/intl/icu/source/common/edits.cpp',
'/intl/icu/source/common/emojiprops.cpp',
'/intl/icu/source/common/errorcode.cpp',
'/intl/icu/source/common/filteredbrk.cpp',
'/intl/icu/source/common/filterednormalizer2.cpp',
'/intl/icu/source/common/fixedstring.cpp',
'/intl/icu/source/common/loadednormalizer2impl.cpp',
'/intl/icu/source/common/localebuilder.cpp',
'/intl/icu/source/common/localematcher.cpp',
'/intl/icu/source/common/localeprioritylist.cpp',
'/intl/icu/source/common/locavailable.cpp',
'/intl/icu/source/common/locbased.cpp',
'/intl/icu/source/common/locdispnames.cpp',
'/intl/icu/source/common/locdistance.cpp',
'/intl/icu/source/common/locdspnm.cpp',
'/intl/icu/source/common/locid.cpp',
'/intl/icu/source/common/loclikely.cpp',
'/intl/icu/source/common/loclikelysubtags.cpp',
'/intl/icu/source/common/locmap.cpp',
'/intl/icu/source/common/locresdata.cpp',
'/intl/icu/source/common/locutil.cpp',
'/intl/icu/source/common/lsr.cpp',
'/intl/icu/source/common/lstmbe.cpp',
'/intl/icu/source/common/messagepattern.cpp',
'/intl/icu/source/common/mlbe.cpp',
'/intl/icu/source/common/normalizer2.cpp',
'/intl/icu/source/common/normalizer2impl.cpp',
'/intl/icu/source/common/normlzr.cpp',
@@ -51,6 +61,7 @@ sources = [
'/intl/icu/source/common/rbbitblb.cpp',
'/intl/icu/source/common/resbund.cpp',
'/intl/icu/source/common/resource.cpp',
'/intl/icu/source/common/restrace.cpp',
'/intl/icu/source/common/ruleiter.cpp',
'/intl/icu/source/common/schriter.cpp',
'/intl/icu/source/common/serv.cpp',
@@ -110,6 +121,8 @@ sources = [
'/intl/icu/source/common/uloc.cpp',
'/intl/icu/source/common/uloc_keytype.cpp',
'/intl/icu/source/common/uloc_tag.cpp',
'/intl/icu/source/common/ulocale.cpp',
'/intl/icu/source/common/ulocbuilder.cpp',
'/intl/icu/source/common/umapfile.cpp',
'/intl/icu/source/common/umath.cpp',
'/intl/icu/source/common/umutablecptrie.cpp',
@@ -151,6 +164,7 @@ sources = [
'/intl/icu/source/common/utext.cpp',
'/intl/icu/source/common/utf_impl.cpp',
'/intl/icu/source/common/util.cpp',
'/intl/icu/source/common/util_props.cpp',
'/intl/icu/source/common/utrace.cpp',
'/intl/icu/source/common/utrie.cpp',
'/intl/icu/source/common/utrie2.cpp',
@@ -190,7 +204,6 @@ other_sources = [
'/intl/icu/source/common/usc_impl.cpp',
'/intl/icu/source/common/ushape.cpp',
'/intl/icu/source/common/ustr_wcs.cpp',
'/intl/icu/source/common/util_props.cpp',
]
EXPORTS.unicode += [
'/intl/icu/source/common/unicode/appendable.h',
@@ -212,6 +225,8 @@ EXPORTS.unicode += [
'/intl/icu/source/common/unicode/icudataver.h',
'/intl/icu/source/common/unicode/icuplug.h',
'/intl/icu/source/common/unicode/idna.h',
'/intl/icu/source/common/unicode/localebuilder.h',
'/intl/icu/source/common/unicode/localematcher.h',
'/intl/icu/source/common/unicode/localpointer.h',
'/intl/icu/source/common/unicode/locdspnm.h',
'/intl/icu/source/common/unicode/locid.h',
@@ -259,6 +274,8 @@ EXPORTS.unicode += [
'/intl/icu/source/common/unicode/uiter.h',
'/intl/icu/source/common/unicode/uldnames.h',
'/intl/icu/source/common/unicode/uloc.h',
'/intl/icu/source/common/unicode/ulocale.h',
'/intl/icu/source/common/unicode/ulocbuilder.h',
'/intl/icu/source/common/unicode/umachine.h',
'/intl/icu/source/common/unicode/umisc.h',
'/intl/icu/source/common/unicode/umutablecptrie.h',
@@ -286,6 +303,8 @@ EXPORTS.unicode += [
'/intl/icu/source/common/unicode/utf32.h',
'/intl/icu/source/common/unicode/utf8.h',
'/intl/icu/source/common/unicode/utf_old.h',
'/intl/icu/source/common/unicode/utfiterator.h',
'/intl/icu/source/common/unicode/utfstring.h',
'/intl/icu/source/common/unicode/utrace.h',
'/intl/icu/source/common/unicode/utypes.h',
'/intl/icu/source/common/unicode/uvernum.h',
+22
View File
@@ -3,12 +3,15 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# Also see <http://www.icu-project.org/repos/icu/tags/latest/icu4c/readme.html#RecBuild> for the
# recommended build options when compiling ICU.
DEFINES.update(
# Don't use icu namespace automatically in client code.
U_USING_ICU_NAMESPACE = 0,
# Don't include obsolete header files.
U_NO_DEFAULT_INCLUDE_UTF_HEADERS = 1,
U_HIDE_OBSOLETE_UTF_OLD_H = 1,
# Remove chunks of the library that we don't need (yet).
UCONFIG_NO_LEGACY_CONVERSION = True,
@@ -17,6 +20,13 @@ DEFINES.update(
# We don't need to pass data to and from legacy char* APIs.
U_CHARSET_IS_UTF8 = True,
# Add 'explicit' keyword to UnicodeString constructors.
UNISTR_FROM_CHAR_EXPLICIT = 'explicit',
UNISTR_FROM_STRING_EXPLICIT = 'explicit',
# Disable dynamic loading of ICU data as a loadable library.
U_ENABLE_DYLOAD = 0,
)
if not CONFIG['HAVE_LANGINFO_CODESET']:
@@ -38,12 +48,24 @@ ALLOW_COMPILER_WARNINGS = True
# warnings that get triggered for every file.
if CONFIG['CLANG_CL']:
CFLAGS += [
'-Wno-c++20-compat',
'-Wno-comma',
'-Wno-implicit-const-int-float-conversion',
'-Wno-macro-redefined',
'-Wno-microsoft-include',
'-Wno-tautological-unsigned-enum-zero-compare',
'-Wno-unreachable-code-loop-increment',
'-Wno-unreachable-code-return',
]
CXXFLAGS += [
'-Wno-c++20-compat',
'-Wno-comma',
'-Wno-implicit-const-int-float-conversion',
'-Wno-macro-redefined',
'-Wno-microsoft-include',
'-Wno-tautological-unsigned-enum-zero-compare',
'-Wno-unreachable-code-loop-increment',
'-Wno-unreachable-code-return',
]
if CONFIG['_MSC_VER'] and not CONFIG['CLANG_CL']:
+47 -5
View File
@@ -42,13 +42,14 @@ sources = [
'/intl/icu/source/i18n/decContext.cpp',
'/intl/icu/source/i18n/decimfmt.cpp',
'/intl/icu/source/i18n/decNumber.cpp',
'/intl/icu/source/i18n/displayoptions.cpp',
'/intl/icu/source/i18n/double-conversion-bignum-dtoa.cpp',
'/intl/icu/source/i18n/double-conversion-bignum.cpp',
'/intl/icu/source/i18n/double-conversion-cached-powers.cpp',
'/intl/icu/source/i18n/double-conversion-diy-fp.cpp',
'/intl/icu/source/i18n/double-conversion-double-to-string.cpp',
'/intl/icu/source/i18n/double-conversion-fast-dtoa.cpp',
'/intl/icu/source/i18n/double-conversion-string-to-double.cpp',
'/intl/icu/source/i18n/double-conversion-strtod.cpp',
'/intl/icu/source/i18n/double-conversion.cpp',
'/intl/icu/source/i18n/dtfmtsym.cpp',
'/intl/icu/source/i18n/dtitvfmt.cpp',
'/intl/icu/source/i18n/dtitvinf.cpp',
@@ -58,6 +59,10 @@ sources = [
'/intl/icu/source/i18n/ethpccal.cpp',
'/intl/icu/source/i18n/fmtable.cpp',
'/intl/icu/source/i18n/format.cpp',
'/intl/icu/source/i18n/formatted_string_builder.cpp',
'/intl/icu/source/i18n/formattedval_iterimpl.cpp',
'/intl/icu/source/i18n/formattedval_sbimpl.cpp',
'/intl/icu/source/i18n/formattedvalue.cpp',
'/intl/icu/source/i18n/fphdlimp.cpp',
'/intl/icu/source/i18n/fpositer.cpp',
'/intl/icu/source/i18n/gregocal.cpp',
@@ -65,16 +70,28 @@ sources = [
'/intl/icu/source/i18n/hebrwcal.cpp',
'/intl/icu/source/i18n/indiancal.cpp',
'/intl/icu/source/i18n/islamcal.cpp',
'/intl/icu/source/i18n/iso8601cal.cpp',
'/intl/icu/source/i18n/japancal.cpp',
'/intl/icu/source/i18n/listformatter.cpp',
'/intl/icu/source/i18n/measfmt.cpp',
'/intl/icu/source/i18n/measunit.cpp',
'/intl/icu/source/i18n/measunit_extra.cpp',
'/intl/icu/source/i18n/measure.cpp',
'/intl/icu/source/i18n/messageformat2.cpp',
'/intl/icu/source/i18n/messageformat2_arguments.cpp',
'/intl/icu/source/i18n/messageformat2_checker.cpp',
'/intl/icu/source/i18n/messageformat2_data_model.cpp',
'/intl/icu/source/i18n/messageformat2_errors.cpp',
'/intl/icu/source/i18n/messageformat2_evaluation.cpp',
'/intl/icu/source/i18n/messageformat2_formattable.cpp',
'/intl/icu/source/i18n/messageformat2_formatter.cpp',
'/intl/icu/source/i18n/messageformat2_function_registry.cpp',
'/intl/icu/source/i18n/messageformat2_parser.cpp',
'/intl/icu/source/i18n/messageformat2_serializer.cpp',
'/intl/icu/source/i18n/msgfmt.cpp',
'/intl/icu/source/i18n/nfrs.cpp',
'/intl/icu/source/i18n/nfrule.cpp',
'/intl/icu/source/i18n/nfsubs.cpp',
'/intl/icu/source/i18n/nounit.cpp',
'/intl/icu/source/i18n/number_affixutils.cpp',
'/intl/icu/source/i18n/number_asformat.cpp',
'/intl/icu/source/i18n/number_capi.cpp',
@@ -91,13 +108,16 @@ sources = [
'/intl/icu/source/i18n/number_modifiers.cpp',
'/intl/icu/source/i18n/number_multiplier.cpp',
'/intl/icu/source/i18n/number_notation.cpp',
'/intl/icu/source/i18n/number_output.cpp',
'/intl/icu/source/i18n/number_padding.cpp',
'/intl/icu/source/i18n/number_patternmodifier.cpp',
'/intl/icu/source/i18n/number_patternstring.cpp',
'/intl/icu/source/i18n/number_rounding.cpp',
'/intl/icu/source/i18n/number_scientific.cpp',
'/intl/icu/source/i18n/number_simple.cpp',
'/intl/icu/source/i18n/number_skeletons.cpp',
'/intl/icu/source/i18n/number_stringbuilder.cpp',
'/intl/icu/source/i18n/number_symbolswrapper.cpp',
'/intl/icu/source/i18n/number_usageprefs.cpp',
'/intl/icu/source/i18n/number_utils.cpp',
'/intl/icu/source/i18n/numfmt.cpp',
'/intl/icu/source/i18n/numparse_affixes.cpp',
@@ -107,14 +127,15 @@ sources = [
'/intl/icu/source/i18n/numparse_impl.cpp',
'/intl/icu/source/i18n/numparse_parsednumber.cpp',
'/intl/icu/source/i18n/numparse_scientific.cpp',
'/intl/icu/source/i18n/numparse_stringsegment.cpp',
'/intl/icu/source/i18n/numparse_symbols.cpp',
'/intl/icu/source/i18n/numparse_validators.cpp',
'/intl/icu/source/i18n/numrange_capi.cpp',
'/intl/icu/source/i18n/numrange_fluent.cpp',
'/intl/icu/source/i18n/numrange_impl.cpp',
'/intl/icu/source/i18n/numsys.cpp',
'/intl/icu/source/i18n/olsontz.cpp',
'/intl/icu/source/i18n/persncal.cpp',
'/intl/icu/source/i18n/pluralranges.cpp',
'/intl/icu/source/i18n/plurfmt.cpp',
'/intl/icu/source/i18n/plurrule.cpp',
'/intl/icu/source/i18n/quantityformatter.cpp',
@@ -133,6 +154,7 @@ sources = [
'/intl/icu/source/i18n/smpdtfst.cpp',
'/intl/icu/source/i18n/sortkey.cpp',
'/intl/icu/source/i18n/standardplural.cpp',
'/intl/icu/source/i18n/string_segment.cpp',
'/intl/icu/source/i18n/stsearch.cpp',
'/intl/icu/source/i18n/taiwncal.cpp',
'/intl/icu/source/i18n/timezone.cpp',
@@ -157,6 +179,10 @@ sources = [
'/intl/icu/source/i18n/uitercollationiterator.cpp',
'/intl/icu/source/i18n/ulistformatter.cpp',
'/intl/icu/source/i18n/umsg.cpp',
'/intl/icu/source/i18n/units_complexconverter.cpp',
'/intl/icu/source/i18n/units_converter.cpp',
'/intl/icu/source/i18n/units_data.cpp',
'/intl/icu/source/i18n/units_router.cpp',
'/intl/icu/source/i18n/unum.cpp',
'/intl/icu/source/i18n/unumsys.cpp',
'/intl/icu/source/i18n/upluralrules.cpp',
@@ -245,6 +271,7 @@ EXPORTS.unicode += [
'/intl/icu/source/i18n/unicode/datefmt.h',
'/intl/icu/source/i18n/unicode/dcfmtsym.h',
'/intl/icu/source/i18n/unicode/decimfmt.h',
'/intl/icu/source/i18n/unicode/displayoptions.h',
'/intl/icu/source/i18n/unicode/dtfmtsym.h',
'/intl/icu/source/i18n/unicode/dtitvfmt.h',
'/intl/icu/source/i18n/unicode/dtitvinf.h',
@@ -253,6 +280,8 @@ EXPORTS.unicode += [
'/intl/icu/source/i18n/unicode/fieldpos.h',
'/intl/icu/source/i18n/unicode/fmtable.h',
'/intl/icu/source/i18n/unicode/format.h',
'/intl/icu/source/i18n/unicode/formattednumber.h',
'/intl/icu/source/i18n/unicode/formattedvalue.h',
'/intl/icu/source/i18n/unicode/fpositer.h',
'/intl/icu/source/i18n/unicode/gender.h',
'/intl/icu/source/i18n/unicode/gregocal.h',
@@ -260,6 +289,12 @@ EXPORTS.unicode += [
'/intl/icu/source/i18n/unicode/measfmt.h',
'/intl/icu/source/i18n/unicode/measunit.h',
'/intl/icu/source/i18n/unicode/measure.h',
'/intl/icu/source/i18n/unicode/messageformat2.h',
'/intl/icu/source/i18n/unicode/messageformat2_arguments.h',
'/intl/icu/source/i18n/unicode/messageformat2_data_model.h',
'/intl/icu/source/i18n/unicode/messageformat2_data_model_names.h',
'/intl/icu/source/i18n/unicode/messageformat2_formattable.h',
'/intl/icu/source/i18n/unicode/messageformat2_function_registry.h',
'/intl/icu/source/i18n/unicode/msgfmt.h',
'/intl/icu/source/i18n/unicode/nounit.h',
'/intl/icu/source/i18n/unicode/numberformatter.h',
@@ -276,6 +311,7 @@ EXPORTS.unicode += [
'/intl/icu/source/i18n/unicode/scientificnumberformatter.h',
'/intl/icu/source/i18n/unicode/search.h',
'/intl/icu/source/i18n/unicode/selfmt.h',
'/intl/icu/source/i18n/unicode/simplenumberformatter.h',
'/intl/icu/source/i18n/unicode/simpletz.h',
'/intl/icu/source/i18n/unicode/smpdtfmt.h',
'/intl/icu/source/i18n/unicode/sortkey.h',
@@ -297,8 +333,11 @@ EXPORTS.unicode += [
'/intl/icu/source/i18n/unicode/udat.h',
'/intl/icu/source/i18n/unicode/udateintervalformat.h',
'/intl/icu/source/i18n/unicode/udatpg.h',
'/intl/icu/source/i18n/unicode/udisplayoptions.h',
'/intl/icu/source/i18n/unicode/ufieldpositer.h',
'/intl/icu/source/i18n/unicode/uformattable.h',
'/intl/icu/source/i18n/unicode/uformattednumber.h',
'/intl/icu/source/i18n/unicode/uformattedvalue.h',
'/intl/icu/source/i18n/unicode/ugender.h',
'/intl/icu/source/i18n/unicode/ulistformatter.h',
'/intl/icu/source/i18n/unicode/ulocdata.h',
@@ -306,12 +345,15 @@ EXPORTS.unicode += [
'/intl/icu/source/i18n/unicode/unirepl.h',
'/intl/icu/source/i18n/unicode/unum.h',
'/intl/icu/source/i18n/unicode/unumberformatter.h',
'/intl/icu/source/i18n/unicode/unumberoptions.h',
'/intl/icu/source/i18n/unicode/unumberrangeformatter.h',
'/intl/icu/source/i18n/unicode/unumsys.h',
'/intl/icu/source/i18n/unicode/upluralrules.h',
'/intl/icu/source/i18n/unicode/uregex.h',
'/intl/icu/source/i18n/unicode/uregion.h',
'/intl/icu/source/i18n/unicode/ureldatefmt.h',
'/intl/icu/source/i18n/unicode/usearch.h',
'/intl/icu/source/i18n/unicode/usimplenumberformatter.h',
'/intl/icu/source/i18n/unicode/uspoof.h',
'/intl/icu/source/i18n/unicode/utmscale.h',
'/intl/icu/source/i18n/unicode/utrans.h',
+2 -2
View File
@@ -95,12 +95,12 @@ def count_lines():
"""Keep track of the amount of times individual lines occur, in order to
prioritize the errors which occur most frequently."""
counts = {}
for string,count in blacklist.items():
for string,count in list(blacklist.items()):
for line in string.split("\n"):
counts[line] = counts.get(line, 0) + count
lines = []
for k,v in counts.items():
for k,v in list(counts.items()):
lines.append("{0:6}: {1}".format(v, k))
lines.sort()
+2 -2
View File
@@ -18,7 +18,7 @@ def periodically_print_status(proc):
time.sleep(0.5)
idleTime += 0.5
if idleTime > 20 * 60:
print "Still linking, 20 minutes passed..."
print("Still linking, 20 minutes passed...")
sys.stdout.flush()
idleTime = 0
@@ -42,6 +42,6 @@ def wrap_linker(args):
if __name__ == "__main__":
if len(sys.argv) < 2:
print >>sys.stderr, "Usage: link.py <commandline>"
print("Usage: link.py <commandline>", file=sys.stderr)
sys.exit(1)
sys.exit(wrap_linker(sys.argv[1:]))
+1 -1
View File
@@ -8,4 +8,4 @@
# Referenced by milestone.py.
#--------------------------------------------------------
6.7.0
6.9.0
+8
View File
@@ -23,11 +23,19 @@ if CONFIG['HOST_OS_ARCH'] != 'WINNT':
'nsinstall.c',
'pathsub.c',
]
# stdc++compat depends on config/export, so avoid a circular
# dependency added by HostProgram depending on stdc++compat,
# while the program here is in C.
HostProgram('nsinstall_real', c_only=True)
if CONFIG['HOST_OS_ARCH'] == 'WINNT':
HOST_SOURCES +=[
'action_cl.cpp',
]
HostProgram('action_cl')
if CONFIG['GKMEDIAS_SHARED_LIBRARY']:
DEFINES['GKMEDIAS_SHARED_LIBRARY'] = True
+7 -7
View File
@@ -5,7 +5,7 @@
from unittest import TextTestRunner as _TestRunner, TestResult as _TestResult
import unittest
import inspect
from StringIO import StringIO
from io import StringIO
import os
import sys
@@ -140,7 +140,7 @@ class MockedOpen(object):
'''
def __init__(self, files = {}):
self.files = {}
for name, content in files.iteritems():
for name, content in files.items():
self.files[normcase(os.path.abspath(name))] = content
def __call__(self, name, mode = 'r'):
@@ -158,19 +158,19 @@ class MockedOpen(object):
return file
def __enter__(self):
import __builtin__
self.open = __builtin__.open
import builtins
self.open = builtins.open
self._orig_path_exists = os.path.exists
self._orig_path_isdir = os.path.isdir
self._orig_path_isfile = os.path.isfile
__builtin__.open = self
builtins.open = self
os.path.exists = self._wrapped_exists
os.path.isdir = self._wrapped_isdir
os.path.isfile = self._wrapped_isfile
def __exit__(self, type, value, traceback):
import __builtin__
__builtin__.open = self.open
import builtins
builtins.open = self.open
os.path.exists = self._orig_path_exists
os.path.isdir = self._orig_path_isdir
os.path.isfile = self._orig_path_isfile
+3 -6
View File
@@ -149,7 +149,7 @@ def _nsinstall_internal(argv):
# nsinstall as a native command is always UTF-8
def nsinstall(argv):
return _nsinstall_internal([unicode(arg, "utf-8") for arg in argv])
return _nsinstall_internal([str(arg, "utf-8") for arg in argv])
if __name__ == '__main__':
# sys.argv corrupts characters outside the system code page on Windows
@@ -173,10 +173,7 @@ if __name__ == '__main__':
# The first argv will be "python", the second will be the .py file
argv = argv_arr[1:argc.value]
else:
# For consistency, do it on Unix as well
if sys.stdin.encoding is not None:
argv = [unicode(arg, sys.stdin.encoding) for arg in sys.argv]
else:
argv = [unicode(arg) for arg in sys.argv]
# On Py3, we shouldn't do this for non-Windows. sys.argv is UTF-8 (or ASCII on old Unix).
argv = sys.argv
sys.exit(_nsinstall_internal(argv[1:]))
+6 -6
View File
@@ -5,27 +5,27 @@
import configobj
import sys
import re
from StringIO import StringIO
from io import StringIO
try:
(file, section, key) = sys.argv[1:]
except ValueError:
print "Usage: printconfigsetting.py <file> <section> <setting>"
print("Usage: printconfigsetting.py <file> <section> <setting>")
sys.exit(1)
with open(file) as fh:
content = re.sub('^\s*;', '#', fh.read(), flags=re.M)
content = re.sub(r'^\s*;', '#', fh.read(), flags=re.M)
c = configobj.ConfigObj(StringIO(content))
try:
s = c[section]
except KeyError:
print >>sys.stderr, "Section [%s] not found." % section
print("Section [%s] not found." % section, file=sys.stderr)
sys.exit(1)
try:
print s[key]
print(s[key])
except KeyError:
print >>sys.stderr, "Key %s not found." % key
print("Key %s not found." % key, file=sys.stderr)
sys.exit(1)
+2 -2
View File
@@ -9,7 +9,7 @@ Run a python script, adding extra directories to the python path.
def main(args):
def usage():
print >>sys.stderr, "pythonpath.py -I directory script.py [args...]"
print("pythonpath.py -I directory script.py [args...]", file=sys.stderr)
sys.exit(150)
paths = []
@@ -45,7 +45,7 @@ def main(args):
frozenglobals['__name__'] = '__main__'
frozenglobals['__file__'] = script
execfile(script, frozenglobals)
exec(compile(open(script, "rb").read(), script, 'exec'), frozenglobals)
# Freeze scope here ... why this makes things work I have no idea ...
frozenglobals = globals()
+5 -5
View File
@@ -18,7 +18,7 @@ def rebuild_check(args):
deps = args[1:]
t = mtime(target)
if t < 0:
print target
print(target)
return
newer = []
@@ -31,13 +31,13 @@ def rebuild_check(args):
newer.append(dep)
if newer and removed:
print 'Rebuilding %s because %s changed and %s was removed' % (target, ', '.join(newer), ', '.join(removed))
print('Rebuilding %s because %s changed and %s was removed' % (target, ', '.join(newer), ', '.join(removed)))
elif newer:
print 'Rebuilding %s because %s changed' % (target, ', '.join(newer))
print('Rebuilding %s because %s changed' % (target, ', '.join(newer)))
elif removed:
print 'Rebuilding %s because %s was removed' % (target, ', '.join(removed))
print('Rebuilding %s because %s was removed' % (target, ', '.join(removed)))
else:
print 'Rebuilding %s for an unknown reason' % target
print('Rebuilding %s for an unknown reason' % target)
if __name__ == '__main__':
import sys
-4
View File
@@ -348,11 +348,7 @@ ifdef SHARED_LIBRARY
ifdef IS_COMPONENT
EXTRA_DSO_LDOPTS += -bundle
else
ifdef MOZ_IOS
_LOADER_PATH := @rpath
else
_LOADER_PATH := @executable_path
endif
EXTRA_DSO_LDOPTS += -dynamiclib -install_name $(_LOADER_PATH)/$(SHARED_LIBRARY) -compatibility_version 1 -current_version 1 -single_module
endif
endif
-5
View File
@@ -335,8 +335,6 @@ curses.h
cxxabi.h
DateTimeUtils.h
dbus/dbus.h
dbus/dbus-glib.h
dbus/dbus-glib-lowlevel.h
ddeml.h
Debug.h
dem.h
@@ -424,7 +422,6 @@ fstream
fstream.h
ft2build.h
fts.h
gconf/gconf-client.h
Gdiplus.h
gdk/gdk.h
gdk/gdkkeysyms.h
@@ -1050,9 +1047,7 @@ hunspell.hxx
#if MOZ_SYSTEM_BZ2==1
bzlib.h
#endif
#ifdef MOZ_ENABLE_GIO
gio/gio.h
#endif
sys/event.h
#ifdef MOZ_ENABLE_LIBPROXY
proxy.h
+2 -3
View File
@@ -7,7 +7,7 @@ from tempfile import mkdtemp
from shutil import rmtree
import mozunit
from UserString import UserString
from collections import UserString
# Create a controlled configuration for use by expandlibs
config_win = {
'AR': 'lib',
@@ -120,8 +120,7 @@ class ReplicateTests(type):
del dict[name]
return type.__new__(cls, clsName, bases, dict)
class TestCaseWithTmpDir(unittest.TestCase):
__metaclass__ = ReplicateTests
class TestCaseWithTmpDir(unittest.TestCase, metaclass=ReplicateTests):
def init(self):
self.tmpdir = os.path.abspath(mkdtemp(dir=os.curdir))
+21 -21
View File
@@ -28,9 +28,9 @@ class TestNsinstall(unittest.TestCase):
# Unicode strings means non-ASCII children can be deleted properly on
# Windows
if sys.stdin.encoding is None:
tmpdir = unicode(self.tmpdir)
tmpdir = str(self.tmpdir)
else:
tmpdir = unicode(self.tmpdir, sys.stdin.encoding)
tmpdir = str(self.tmpdir, sys.stdin.encoding)
rmtree(tmpdir)
# utility methods for tests
@@ -50,14 +50,14 @@ class TestNsinstall(unittest.TestCase):
"Test nsinstall -D <dir>"
testdir = os.path.join(self.tmpdir, "test")
self.assertEqual(nsinstall(["-D", testdir]), 0)
self.assert_(os.path.isdir(testdir))
self.assertTrue(os.path.isdir(testdir))
def test_nsinstall_basic(self):
"Test nsinstall <file> <dir>"
testfile = self.touch("testfile")
testdir = self.mkdirs("testdir")
self.assertEqual(nsinstall([testfile, testdir]), 0)
self.assert_(os.path.isfile(os.path.join(testdir, "testfile")))
self.assertTrue(os.path.isfile(os.path.join(testdir, "testfile")))
def test_nsinstall_basic_recursive(self):
"Test nsinstall <dir> <dest dir>"
@@ -76,12 +76,12 @@ class TestNsinstall(unittest.TestCase):
'-X', Xdir]), 0)
testdir = os.path.join(destdir, "sourcedir")
self.assert_(os.path.isdir(testdir))
self.assert_(os.path.isfile(os.path.join(testdir, "testfile")))
self.assert_(not os.path.exists(os.path.join(testdir, "Xfile")))
self.assert_(os.path.isdir(os.path.join(testdir, "copieddir")))
self.assert_(os.path.isfile(os.path.join(testdir, "copieddir", "testfile2")))
self.assert_(not os.path.exists(os.path.join(testdir, "Xdir")))
self.assertTrue(os.path.isdir(testdir))
self.assertTrue(os.path.isfile(os.path.join(testdir, "testfile")))
self.assertTrue(not os.path.exists(os.path.join(testdir, "Xfile")))
self.assertTrue(os.path.isdir(os.path.join(testdir, "copieddir")))
self.assertTrue(os.path.isfile(os.path.join(testdir, "copieddir", "testfile2")))
self.assertTrue(not os.path.exists(os.path.join(testdir, "Xdir")))
def test_nsinstall_multiple(self):
"Test nsinstall <three files> <dest dir>"
@@ -91,7 +91,7 @@ class TestNsinstall(unittest.TestCase):
testdir = self.mkdirs("testdir")
self.assertEqual(nsinstall(testfiles + [testdir]), 0)
for f in testfiles:
self.assert_(os.path.isfile(os.path.join(testdir,
self.assertTrue(os.path.isfile(os.path.join(testdir,
os.path.basename(f))))
def test_nsinstall_dir_exists(self):
@@ -99,7 +99,7 @@ class TestNsinstall(unittest.TestCase):
srcdir = self.mkdirs("test")
destdir = self.mkdirs("testdir/test")
self.assertEqual(nsinstall([srcdir, os.path.dirname(destdir)]), 0)
self.assert_(os.path.isdir(destdir))
self.assertTrue(os.path.isdir(destdir))
def test_nsinstall_t(self):
"Test that nsinstall -t works (preserve timestamp)"
@@ -110,7 +110,7 @@ class TestNsinstall(unittest.TestCase):
os.utime(testfile, (t, t))
self.assertEqual(nsinstall(["-t", testfile, testdir]), 0)
destfile = os.path.join(testdir, "testfile")
self.assert_(os.path.isfile(destfile))
self.assertTrue(os.path.isfile(destfile))
self.assertEqual(os.stat(testfile).st_mtime,
os.stat(destfile).st_mtime)
@@ -125,7 +125,7 @@ class TestNsinstall(unittest.TestCase):
self.assertEqual(nsinstall(["-m", "{0:04o}"
.format(mode), testfile, testdir]), 0)
destfile = os.path.join(testdir, "testfile")
self.assert_(os.path.isfile(destfile))
self.assertTrue(os.path.isfile(destfile))
self.assertEqual(os.stat(testfile).st_mode,
os.stat(destfile).st_mode)
@@ -136,25 +136,25 @@ class TestNsinstall(unittest.TestCase):
testdir = self.mkdirs("testdir")
destdir = os.path.join(testdir, "subdir")
self.assertEqual(nsinstall(["-d", testfile, destdir]), 0)
self.assert_(os.path.isdir(os.path.join(destdir, "testfile")))
self.assertTrue(os.path.isdir(os.path.join(destdir, "testfile")))
if RUN_NON_ASCII_TESTS:
def test_nsinstall_non_ascii(self):
"Test that nsinstall handles non-ASCII files"
filename = u"\u2325\u3452\u2415\u5081"
filename = "\u2325\u3452\u2415\u5081"
testfile = self.touch(filename)
testdir = self.mkdirs(u"\u4241\u1D04\u1414")
testdir = self.mkdirs("\u4241\u1D04\u1414")
self.assertEqual(nsinstall([testfile.encode("utf-8"),
testdir.encode("utf-8")]), 0)
destfile = os.path.join(testdir, filename)
self.assert_(os.path.isfile(destfile))
self.assertTrue(os.path.isfile(destfile))
def test_nsinstall_non_ascii_subprocess(self):
"Test that nsinstall as a subprocess handles non-ASCII files"
filename = u"\u2325\u3452\u2415\u5081"
filename = "\u2325\u3452\u2415\u5081"
testfile = self.touch(filename)
testdir = self.mkdirs(u"\u4241\u1D04\u1414")
testdir = self.mkdirs("\u4241\u1D04\u1414")
# We don't use subprocess because it can't handle Unicode on
# Windows <http://bugs.python.org/issue1759845>. mozprocess calls
# CreateProcessW directly so it's perfect.
@@ -166,7 +166,7 @@ class TestNsinstall(unittest.TestCase):
self.assertEqual(rv, 0)
destfile = os.path.join(testdir, filename)
self.assert_(os.path.isfile(destfile))
self.assertTrue(os.path.isfile(destfile))
#TODO: implement -R, -l, -L and test them!
+12 -11
View File
@@ -11,6 +11,7 @@ import sys
import random
import copy
from string import letters
from functools import reduce
'''
Test case infrastructure for MozZipFile.
@@ -38,7 +39,7 @@ leafs = (
'firstdir/oneleaf',
'seconddir/twoleaf',
'thirddir/with/sub/threeleaf')
_lengths = map(lambda n: n * 64, [16, 64, 80])
_lengths = [n * 64 for n in [16, 64, 80]]
lengths = 3
writes = 5
@@ -71,7 +72,7 @@ def getid(descs):
def getContent(length):
'Get pseudo random content of given length.'
rv = [None] * length
for i in xrange(length):
for i in range(length):
rv[i] = random.choice(letters)
return ''.join(rv)
@@ -133,13 +134,13 @@ class TestExtensiveStored(unittest.TestCase):
def _verifyZip(self):
zf = zipfile.ZipFile(self.f)
badEntry = zf.testzip()
self.failIf(badEntry, badEntry)
self.assertFalse(badEntry, badEntry)
zlist = zf.namelist()
zlist.sort()
vlist = self.ref.keys()
vlist = list(self.ref.keys())
vlist.sort()
self.assertEqual(zlist, vlist)
for leaf, content in self.ref.iteritems():
for leaf, content in self.ref.items():
zcontent = zf.read(leaf)
self.assertEqual(content, zcontent)
@@ -158,16 +159,16 @@ class TestExtensiveStored(unittest.TestCase):
open(self.leaf('stage', leaf), 'w').write(content)
# all leafs in all lengths
atomics = list(prod(xrange(len(leafs)), xrange(lengths)))
atomics = list(prod(range(len(leafs)), range(lengths)))
# populate TestExtensiveStore with testcases
for w in xrange(writes):
for w in range(writes):
# Don't iterate over all files for the the first n passes,
# those are redundant as long as w < lengths.
# There are symmetries in the trailing end, too, but I don't know
# how to reduce those out right now.
nonatomics = [list(prod(range(min(i,len(leafs))), xrange(lengths)))
for i in xrange(1, w+1)] + [atomics]
nonatomics = [list(prod(list(range(min(i,len(leafs)))), range(lengths)))
for i in range(1, w+1)] + [atomics]
for descs in prod(*nonatomics):
suffix = getid(descs)
dicts = [dict(leaf=leaf, length=length) for leaf, length in descs]
@@ -181,9 +182,9 @@ for w in xrange(writes):
# and then write all atomics again.
# This should catch more or less all artifacts generated
# by the final ordering step when closing the jar.
files = [list(prod([i], xrange(lengths))) for i in xrange(len(leafs))]
files = [list(prod([i], range(lengths))) for i in range(len(leafs))]
allfiles = reduce(lambda l,r:l+r,
[list(prod(*files[:(i+1)])) for i in xrange(len(leafs))])
[list(prod(*files[:(i+1)])) for i in range(len(leafs))])
for first in allfiles:
testbasename = 'test{0}_'.format(getid(first))
+1 -1
View File
@@ -22,4 +22,4 @@ SRCDIR=$(dirname $0)
TOPSRCDIR="$SRCDIR"
export OLD_CONFIGURE="$SRCDIR"/old-configure
which python2.7 > /dev/null && exec python2.7 "$TOPSRCDIR/configure.py" "$@" || exec python "$TOPSRCDIR/configure.py" "$@"
which python3 > /dev/null && exec python3 "$TOPSRCDIR/configure.py" "$@" || exec python "$TOPSRCDIR/configure.py" "$@"
+17 -22
View File
@@ -10,13 +10,11 @@ import subprocess
import sys
import textwrap
base_dir = os.path.abspath(os.path.dirname(__file__))
sys.path.insert(0, os.path.join(base_dir, 'python', 'mozbuild'))
from mozbuild.configure import ConfigureSandbox
from mozbuild.util import (
indented_repr,
encode,
)
@@ -36,20 +34,24 @@ def config_status(config):
# Ideally, all the backend and frontend code would handle the booleans, but
# there are so many things involved, that it's easier to keep config.status
# untouched for now.
def sanitized_bools(v):
def sanitized_values(v):
if v is True:
return '1'
if v is False:
return ''
if isinstance(v, dict):
return {key: sanitized_values(value) for key, value in v.items()}
if isinstance(v, (list, tuple)):
return [sanitized_values(value) for value in v]
return v
sanitized_config = {}
sanitized_config['substs'] = {
k: sanitized_bools(v) for k, v in config.iteritems()
if k not in ('DEFINES', 'non_global_defines', 'TOPSRCDIR', 'TOPOBJDIR')
key: sanitized_values(value) for key, value in config.items()
if key not in ('DEFINES', 'non_global_defines', 'TOPSRCDIR', 'TOPOBJDIR')
}
sanitized_config['defines'] = {
k: sanitized_bools(v) for k, v in config['DEFINES'].iteritems()
key: sanitized_values(value) for key, value in config['DEFINES'].items()
}
sanitized_config['non_global_defines'] = config['non_global_defines']
sanitized_config['topsrcdir'] = config['TOPSRCDIR']
@@ -60,19 +62,16 @@ def config_status(config):
# here, when we're able to skip configure tests/use cached results/not rely
# on autoconf.
print("Creating config.status", file=sys.stderr)
encoding = 'mbcs' if sys.platform == 'win32' else 'utf-8'
with codecs.open('config.status', 'w', encoding) as fh:
with codecs.open('config.status', 'w', encoding='utf-8', errors='replace') as fh:
fh.write(textwrap.dedent('''\
#!%(python)s
# coding=%(encoding)s
from __future__ import unicode_literals
from mozbuild.util import encode
encoding = '%(encoding)s'
''') % {'python': config['PYTHON'], 'encoding': encoding})
''') % {'python': config['PYTHON'], 'encoding': 'utf-8'})
# A lot of the build backend code is currently expecting byte
# strings and breaks in subtle ways with unicode strings. (bug 1296508)
for k, v in sanitized_config.iteritems():
fh.write('%s = encode(%s, encoding)\n' % (k, indented_repr(v)))
for k, v in sanitized_config.items():
fh.write('%s = %s\n' % (k, indented_repr(v)))
fh.write("__all__ = ['topobjdir', 'topsrcdir', 'defines', "
"'non_global_defines', 'substs', 'mozconfig']")
@@ -88,18 +87,14 @@ def config_status(config):
# executable permissions.
os.chmod('config.status', 0o755)
if config.get('MOZ_BUILD_APP') != 'js' or config.get('JS_STANDALONE'):
os.environ[b'WRITE_MOZINFO'] = b'1'
os.environ['WRITE_MOZINFO'] = '1'
from mozbuild.config_status import config_status
# Some values in sanitized_config also have more complex types, such as
# EnumString, which using when calling config_status would currently
# break the build, as well as making it inconsistent with re-running
# config.status. Fortunately, EnumString derives from unicode, so it's
# covered by converting unicode strings.
# A lot of the build backend code is currently expecting byte strings
# and breaks in subtle ways with unicode strings.
return config_status(args=[], **encode(sanitized_config, encoding))
# EnumString and tuples. Converting string subclasses to plain strings
# and tuples to lists keeps this code path consistent with the
# generated config.status file, which serializes iterables as lists.
return config_status(args=[], **sanitized_config)
return 0
+161 -161
View File
@@ -2397,7 +2397,7 @@ var Debugger =
/***/ function(module, exports, __webpack_require__) {
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
var React = __webpack_require__(2);
@@ -30019,166 +30019,166 @@ var Debugger =
/* 266 */
/***/ function(module, exports, __webpack_require__) {
(function(){
var crypt = __webpack_require__(267),
utf8 = __webpack_require__(268).utf8,
isBuffer = __webpack_require__(269),
bin = __webpack_require__(268).bin,
// The core
md5 = function (message, options) {
// Convert to byte array
if (message.constructor == String)
if (options && options.encoding === 'binary')
message = bin.stringToBytes(message);
else
message = utf8.stringToBytes(message);
else if (isBuffer(message))
message = Array.prototype.slice.call(message, 0);
else if (!Array.isArray(message))
message = message.toString();
// else, assume byte array already
var m = crypt.bytesToWords(message),
l = message.length * 8,
a = 1732584193,
b = -271733879,
c = -1732584194,
d = 271733878;
// Swap endian
for (var i = 0; i < m.length; i++) {
m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |
((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;
}
// Padding
m[l >>> 5] |= 0x80 << (l % 32);
m[(((l + 64) >>> 9) << 4) + 14] = l;
// Method shortcuts
var FF = md5._ff,
GG = md5._gg,
HH = md5._hh,
II = md5._ii;
for (var i = 0; i < m.length; i += 16) {
var aa = a,
bb = b,
cc = c,
dd = d;
a = FF(a, b, c, d, m[i+ 0], 7, -680876936);
d = FF(d, a, b, c, m[i+ 1], 12, -389564586);
c = FF(c, d, a, b, m[i+ 2], 17, 606105819);
b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);
a = FF(a, b, c, d, m[i+ 4], 7, -176418897);
d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);
c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);
b = FF(b, c, d, a, m[i+ 7], 22, -45705983);
a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);
d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);
c = FF(c, d, a, b, m[i+10], 17, -42063);
b = FF(b, c, d, a, m[i+11], 22, -1990404162);
a = FF(a, b, c, d, m[i+12], 7, 1804603682);
d = FF(d, a, b, c, m[i+13], 12, -40341101);
c = FF(c, d, a, b, m[i+14], 17, -1502002290);
b = FF(b, c, d, a, m[i+15], 22, 1236535329);
a = GG(a, b, c, d, m[i+ 1], 5, -165796510);
d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);
c = GG(c, d, a, b, m[i+11], 14, 643717713);
b = GG(b, c, d, a, m[i+ 0], 20, -373897302);
a = GG(a, b, c, d, m[i+ 5], 5, -701558691);
d = GG(d, a, b, c, m[i+10], 9, 38016083);
c = GG(c, d, a, b, m[i+15], 14, -660478335);
b = GG(b, c, d, a, m[i+ 4], 20, -405537848);
a = GG(a, b, c, d, m[i+ 9], 5, 568446438);
d = GG(d, a, b, c, m[i+14], 9, -1019803690);
c = GG(c, d, a, b, m[i+ 3], 14, -187363961);
b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);
a = GG(a, b, c, d, m[i+13], 5, -1444681467);
d = GG(d, a, b, c, m[i+ 2], 9, -51403784);
c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);
b = GG(b, c, d, a, m[i+12], 20, -1926607734);
a = HH(a, b, c, d, m[i+ 5], 4, -378558);
d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);
c = HH(c, d, a, b, m[i+11], 16, 1839030562);
b = HH(b, c, d, a, m[i+14], 23, -35309556);
a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);
d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);
c = HH(c, d, a, b, m[i+ 7], 16, -155497632);
b = HH(b, c, d, a, m[i+10], 23, -1094730640);
a = HH(a, b, c, d, m[i+13], 4, 681279174);
d = HH(d, a, b, c, m[i+ 0], 11, -358537222);
c = HH(c, d, a, b, m[i+ 3], 16, -722521979);
b = HH(b, c, d, a, m[i+ 6], 23, 76029189);
a = HH(a, b, c, d, m[i+ 9], 4, -640364487);
d = HH(d, a, b, c, m[i+12], 11, -421815835);
c = HH(c, d, a, b, m[i+15], 16, 530742520);
b = HH(b, c, d, a, m[i+ 2], 23, -995338651);
a = II(a, b, c, d, m[i+ 0], 6, -198630844);
d = II(d, a, b, c, m[i+ 7], 10, 1126891415);
c = II(c, d, a, b, m[i+14], 15, -1416354905);
b = II(b, c, d, a, m[i+ 5], 21, -57434055);
a = II(a, b, c, d, m[i+12], 6, 1700485571);
d = II(d, a, b, c, m[i+ 3], 10, -1894986606);
c = II(c, d, a, b, m[i+10], 15, -1051523);
b = II(b, c, d, a, m[i+ 1], 21, -2054922799);
a = II(a, b, c, d, m[i+ 8], 6, 1873313359);
d = II(d, a, b, c, m[i+15], 10, -30611744);
c = II(c, d, a, b, m[i+ 6], 15, -1560198380);
b = II(b, c, d, a, m[i+13], 21, 1309151649);
a = II(a, b, c, d, m[i+ 4], 6, -145523070);
d = II(d, a, b, c, m[i+11], 10, -1120210379);
c = II(c, d, a, b, m[i+ 2], 15, 718787259);
b = II(b, c, d, a, m[i+ 9], 21, -343485551);
a = (a + aa) >>> 0;
b = (b + bb) >>> 0;
c = (c + cc) >>> 0;
d = (d + dd) >>> 0;
}
return crypt.endian([a, b, c, d]);
};
// Auxiliary functions
md5._ff = function (a, b, c, d, x, s, t) {
var n = a + (b & c | ~b & d) + (x >>> 0) + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
md5._gg = function (a, b, c, d, x, s, t) {
var n = a + (b & d | c & ~d) + (x >>> 0) + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
md5._hh = function (a, b, c, d, x, s, t) {
var n = a + (b ^ c ^ d) + (x >>> 0) + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
md5._ii = function (a, b, c, d, x, s, t) {
var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
// Package private blocksize
md5._blocksize = 16;
md5._digestsize = 16;
module.exports = function (message, options) {
if (message === undefined || message === null)
throw new Error('Illegal argument ' + message);
var digestbytes = crypt.wordsToBytes(md5(message, options));
return options && options.asBytes ? digestbytes :
options && options.asString ? bin.bytesToString(digestbytes) :
crypt.bytesToHex(digestbytes);
};
})();
(function(){
var crypt = __webpack_require__(267),
utf8 = __webpack_require__(268).utf8,
isBuffer = __webpack_require__(269),
bin = __webpack_require__(268).bin,
// The core
md5 = function (message, options) {
// Convert to byte array
if (message.constructor == String)
if (options && options.encoding === 'binary')
message = bin.stringToBytes(message);
else
message = utf8.stringToBytes(message);
else if (isBuffer(message))
message = Array.prototype.slice.call(message, 0);
else if (!Array.isArray(message))
message = message.toString();
// else, assume byte array already
var m = crypt.bytesToWords(message),
l = message.length * 8,
a = 1732584193,
b = -271733879,
c = -1732584194,
d = 271733878;
// Swap endian
for (var i = 0; i < m.length; i++) {
m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |
((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;
}
// Padding
m[l >>> 5] |= 0x80 << (l % 32);
m[(((l + 64) >>> 9) << 4) + 14] = l;
// Method shortcuts
var FF = md5._ff,
GG = md5._gg,
HH = md5._hh,
II = md5._ii;
for (var i = 0; i < m.length; i += 16) {
var aa = a,
bb = b,
cc = c,
dd = d;
a = FF(a, b, c, d, m[i+ 0], 7, -680876936);
d = FF(d, a, b, c, m[i+ 1], 12, -389564586);
c = FF(c, d, a, b, m[i+ 2], 17, 606105819);
b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);
a = FF(a, b, c, d, m[i+ 4], 7, -176418897);
d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);
c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);
b = FF(b, c, d, a, m[i+ 7], 22, -45705983);
a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);
d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);
c = FF(c, d, a, b, m[i+10], 17, -42063);
b = FF(b, c, d, a, m[i+11], 22, -1990404162);
a = FF(a, b, c, d, m[i+12], 7, 1804603682);
d = FF(d, a, b, c, m[i+13], 12, -40341101);
c = FF(c, d, a, b, m[i+14], 17, -1502002290);
b = FF(b, c, d, a, m[i+15], 22, 1236535329);
a = GG(a, b, c, d, m[i+ 1], 5, -165796510);
d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);
c = GG(c, d, a, b, m[i+11], 14, 643717713);
b = GG(b, c, d, a, m[i+ 0], 20, -373897302);
a = GG(a, b, c, d, m[i+ 5], 5, -701558691);
d = GG(d, a, b, c, m[i+10], 9, 38016083);
c = GG(c, d, a, b, m[i+15], 14, -660478335);
b = GG(b, c, d, a, m[i+ 4], 20, -405537848);
a = GG(a, b, c, d, m[i+ 9], 5, 568446438);
d = GG(d, a, b, c, m[i+14], 9, -1019803690);
c = GG(c, d, a, b, m[i+ 3], 14, -187363961);
b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);
a = GG(a, b, c, d, m[i+13], 5, -1444681467);
d = GG(d, a, b, c, m[i+ 2], 9, -51403784);
c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);
b = GG(b, c, d, a, m[i+12], 20, -1926607734);
a = HH(a, b, c, d, m[i+ 5], 4, -378558);
d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);
c = HH(c, d, a, b, m[i+11], 16, 1839030562);
b = HH(b, c, d, a, m[i+14], 23, -35309556);
a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);
d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);
c = HH(c, d, a, b, m[i+ 7], 16, -155497632);
b = HH(b, c, d, a, m[i+10], 23, -1094730640);
a = HH(a, b, c, d, m[i+13], 4, 681279174);
d = HH(d, a, b, c, m[i+ 0], 11, -358537222);
c = HH(c, d, a, b, m[i+ 3], 16, -722521979);
b = HH(b, c, d, a, m[i+ 6], 23, 76029189);
a = HH(a, b, c, d, m[i+ 9], 4, -640364487);
d = HH(d, a, b, c, m[i+12], 11, -421815835);
c = HH(c, d, a, b, m[i+15], 16, 530742520);
b = HH(b, c, d, a, m[i+ 2], 23, -995338651);
a = II(a, b, c, d, m[i+ 0], 6, -198630844);
d = II(d, a, b, c, m[i+ 7], 10, 1126891415);
c = II(c, d, a, b, m[i+14], 15, -1416354905);
b = II(b, c, d, a, m[i+ 5], 21, -57434055);
a = II(a, b, c, d, m[i+12], 6, 1700485571);
d = II(d, a, b, c, m[i+ 3], 10, -1894986606);
c = II(c, d, a, b, m[i+10], 15, -1051523);
b = II(b, c, d, a, m[i+ 1], 21, -2054922799);
a = II(a, b, c, d, m[i+ 8], 6, 1873313359);
d = II(d, a, b, c, m[i+15], 10, -30611744);
c = II(c, d, a, b, m[i+ 6], 15, -1560198380);
b = II(b, c, d, a, m[i+13], 21, 1309151649);
a = II(a, b, c, d, m[i+ 4], 6, -145523070);
d = II(d, a, b, c, m[i+11], 10, -1120210379);
c = II(c, d, a, b, m[i+ 2], 15, 718787259);
b = II(b, c, d, a, m[i+ 9], 21, -343485551);
a = (a + aa) >>> 0;
b = (b + bb) >>> 0;
c = (c + cc) >>> 0;
d = (d + dd) >>> 0;
}
return crypt.endian([a, b, c, d]);
};
// Auxiliary functions
md5._ff = function (a, b, c, d, x, s, t) {
var n = a + (b & c | ~b & d) + (x >>> 0) + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
md5._gg = function (a, b, c, d, x, s, t) {
var n = a + (b & d | c & ~d) + (x >>> 0) + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
md5._hh = function (a, b, c, d, x, s, t) {
var n = a + (b ^ c ^ d) + (x >>> 0) + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
md5._ii = function (a, b, c, d, x, s, t) {
var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
// Package private blocksize
md5._blocksize = 16;
md5._digestsize = 16;
module.exports = function (message, options) {
if (message === undefined || message === null)
throw new Error('Illegal argument ' + message);
var digestbytes = crypt.wordsToBytes(md5(message, options));
return options && options.asBytes ? digestbytes :
options && options.asString ? bin.bytesToString(digestbytes) :
crypt.bytesToHex(digestbytes);
};
})();
/***/ },
-14
View File
@@ -612,7 +612,6 @@ menuseparator {
}
.autocomplete .results * {
-moz-user-select: none;
user-select: none;
}
@@ -773,7 +772,6 @@ menuseparator {
}
.tree {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
@@ -820,7 +818,6 @@ html[dir="rtl"] .tree .node > div {
}
.sources-panel * {
-moz-user-select: none;
user-select: none;
}
@@ -834,7 +831,6 @@ html[dir="rtl"] .tree .node > div {
display: flex;
align-items: baseline;
justify-content: space-between;
-moz-user-select: none;
user-select: none;
}
@@ -916,7 +912,6 @@ html[dir="rtl"] .worker svg {
.tree {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
@@ -966,7 +961,6 @@ html[dir="rtl"] .worker svg {
right: 1px;
opacity: 1;
z-index: 100;
-moz-user-select: none;
user-select: none;
}
@@ -979,7 +973,6 @@ html[dir="rtl"] .source-footer .command-bar {
}
.source-footer .command-bar * {
-moz-user-select: none;
user-select: none;
}
@@ -1186,7 +1179,6 @@ html[dir="rtl"] .editor-mount {
background-color: var(--theme-tab-toolbar-background);
font-weight: lighter;
z-index: 100;
-moz-user-select: none;
user-select: none;
}
@@ -1213,7 +1205,6 @@ html[dir="rtl"] .editor-mount {
outline-width: 0;
}
.breakpoints-list * {
-moz-user-select: none;
user-select: none;
}
@@ -1396,7 +1387,6 @@ html .arrow.expanded svg {
*/
.frames ul li * {
-moz-user-select: none;
user-select: none;
}
@@ -1449,7 +1439,6 @@ html .arrow.expanded svg {
width: 100%;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
@@ -1475,7 +1464,6 @@ html .arrow.expanded svg {
}
.right-siderbar * {
-moz-user-select: none;
user-select: none;
}
@@ -1550,7 +1538,6 @@ html[dir="rtl"] .command-bar .stepOut {
font-style: italic;
text-align: center;
padding: 0.5em;
-moz-user-select: none;
user-select: none;
}
@@ -1572,7 +1559,6 @@ span.pause-exceptions.all {
}
.source-header * {
-moz-user-select: none;
user-select: none;
}
+1 -1
View File
@@ -2,7 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
:root{
-moz-user-select: none;
user-select: none;
}
#options-panel-container {
@@ -20,7 +20,7 @@
padding: 5px;
transition: all 0.25s ease;
width: 100%;
-moz-user-select: none;
user-select: none;
}
.accordion ._header:hover {
-5
View File
@@ -37,8 +37,6 @@ const {AutocompletePopup} = require("devtools/client/shared/autocomplete-popup")
const HTML_NS = "http://www.w3.org/1999/xhtml";
const PREF_UA_STYLES = "devtools.inspector.showUserAgentStyles";
const PREF_DEFAULT_COLOR_UNIT = "devtools.defaultColorUnit";
const PREF_ENABLE_MDN_DOCS_TOOLTIP =
"devtools.inspector.mdnDocsTooltip.enabled";
const FILTER_CHANGED_TIMEOUT = 150;
// This is used to parse user input when filtering.
@@ -157,11 +155,8 @@ function CssRuleView(inspector, document, store, pageStyle) {
this._prefObserver.on(PREF_ORIG_SOURCES, this._onSourcePrefChanged);
this._prefObserver.on(PREF_UA_STYLES, this._handlePrefChange);
this._prefObserver.on(PREF_DEFAULT_COLOR_UNIT, this._handlePrefChange);
this._prefObserver.on(PREF_ENABLE_MDN_DOCS_TOOLTIP, this._handlePrefChange);
this.showUserAgentStyles = Services.prefs.getBoolPref(PREF_UA_STYLES);
this.enableMdnDocsTooltip =
Services.prefs.getBoolPref(PREF_ENABLE_MDN_DOCS_TOOLTIP);
// The popup will be attached to the toolbox document.
this.popup = new AutocompletePopup(inspector._toolbox.doc, {
@@ -85,9 +85,6 @@ support-files =
[browser_rules_content_01.js]
[browser_rules_content_02.js]
skip-if = e10s && debug # Bug 1250058 - Docshell leak on debug e10s
[browser_rules_context-menu-show-mdn-docs-01.js]
[browser_rules_context-menu-show-mdn-docs-02.js]
[browser_rules_context-menu-show-mdn-docs-03.js]
[browser_rules_copy_styles.js]
subsuite = clipboard
[browser_rules_cssom.js]
@@ -1,138 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/**
* This file tests the code that integrates the Style Inspector's rule view
* with the MDN docs tooltip.
*
* If you display the context click on a property name in the rule view, you
* should see a menu item "Show MDN Docs". If you click that item, the MDN
* docs tooltip should be shown, containing docs from MDN for that property.
*
* This file tests that the context menu item is shown when it should be
* shown and hidden when it should be hidden.
*/
"use strict";
/**
* The test document tries to confuse the context menu
* code by having a tag called "padding" and a property
* value called "margin".
*/
const { PrefObserver } = require("devtools/client/shared/prefs");
const PREF_ENABLE_MDN_DOCS_TOOLTIP =
"devtools.inspector.mdnDocsTooltip.enabled";
const TEST_URI = `
<html>
<head>
<style>
padding {font-family: margin;}
</style>
</head>
<body>
<padding>MDN tooltip testing</padding>
</body>
</html>
`;
add_task(function* () {
info("Ensure the pref is true to begin with");
let initial = Services.prefs.getBoolPref(PREF_ENABLE_MDN_DOCS_TOOLTIP);
if (initial != true) {
yield setBooleanPref(PREF_ENABLE_MDN_DOCS_TOOLTIP, true);
}
yield addTab("data:text/html;charset=utf8," + encodeURIComponent(TEST_URI));
let {inspector, view} = yield openRuleView();
yield selectNode("padding", inspector);
yield testMdnContextMenuItemVisibility(view);
info("Ensure the pref is reset to its initial value");
let eventual = Services.prefs.getBoolPref(PREF_ENABLE_MDN_DOCS_TOOLTIP);
if (eventual != initial) {
yield setBooleanPref(PREF_ENABLE_MDN_DOCS_TOOLTIP, initial);
}
});
/**
* Set a boolean pref, and wait for the pref observer to
* trigger, so that code listening for the pref change
* has had a chance to update itself.
*
* @param pref {string} Name of the pref to change
* @param state {boolean} Desired value of the pref.
*
* Note that if the pref already has the value in `state`,
* then the prefObserver will not trigger. So you should only
* call this function if you know the pref's current value is
* not `state`.
*/
function* setBooleanPref(pref, state) {
let oncePrefChanged = defer();
let prefObserver = new PrefObserver("devtools.");
prefObserver.on(pref, oncePrefChanged.resolve);
info("Set the pref " + pref + " to: " + state);
Services.prefs.setBoolPref(pref, state);
info("Wait for prefObserver to call back so the UI can update");
yield oncePrefChanged.promise;
prefObserver.off(pref, oncePrefChanged.resolve);
}
/**
* Tests that the MDN context menu item is shown when it should be,
* and hidden when it should be.
* - iterate through every node in the rule view
* - set that node as popupNode (the node that the context menu
* is shown for)
* - update the context menu's state
* - test that the MDN context menu item is hidden, or not,
* depending on popupNode
*/
function* testMdnContextMenuItemVisibility(view) {
info("Test that MDN context menu item is shown only when it should be.");
let root = rootElement(view);
for (let node of iterateNodes(root)) {
info("Setting " + node + " as popupNode");
info("Creating context menu with " + node + " as popupNode");
let allMenuItems = openStyleContextMenuAndGetAllItems(view, node);
let menuitemShowMdnDocs = allMenuItems.find(item => item.label ===
STYLE_INSPECTOR_L10N.getStr("styleinspector.contextmenu.showMdnDocs"));
let isVisible = menuitemShowMdnDocs.visible;
let shouldBeVisible = isPropertyNameNode(node);
let message = shouldBeVisible ? "shown" : "hidden";
is(isVisible, shouldBeVisible,
"The MDN context menu item is " + message + " ; content : " +
node.textContent + " ; type : " + node.nodeType);
}
}
/**
* Check if a node is a property name.
*/
function isPropertyNameNode(node) {
return node.textContent === "font-family";
}
/**
* A generator that iterates recursively through all child nodes of baseNode.
*/
function* iterateNodes(baseNode) {
yield baseNode;
for (let child of baseNode.childNodes) {
yield* iterateNodes(child);
}
}
/**
* Returns the root element for the rule view.
*/
var rootElement = view => (view.element) ? view.element : view.styleDocument;
@@ -1,60 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/**
* This file tests the code that integrates the Style Inspector's rule view
* with the MDN docs tooltip.
*
* If you display the context click on a property name in the rule view, you
* should see a menu item "Show MDN Docs". If you click that item, the MDN
* docs tooltip should be shown, containing docs from MDN for that property.
*
* This file tests that:
* - clicking the context menu item shows the tooltip
* - the tooltip content matches the property name for which the context menu was opened
*/
"use strict";
const {setBaseCssDocsUrl} =
require("devtools/client/shared/widgets/MdnDocsWidget");
const PROPERTYNAME = "color";
const TEST_DOC = `
<html>
<body>
<div style="color: red">
Test "Show MDN Docs" context menu option
</div>
</body>
</html>
`;
add_task(function* () {
yield addTab("data:text/html;charset=utf8," + encodeURIComponent(TEST_DOC));
let {inspector, view} = yield openRuleView();
yield selectNode("div", inspector);
setBaseCssDocsUrl(URL_ROOT);
info("Setting the popupNode for the MDN docs tooltip");
let {nameSpan} = getRuleViewProperty(view, "element", PROPERTYNAME);
let allMenuItems = openStyleContextMenuAndGetAllItems(view, nameSpan.firstChild);
let menuitemShowMdnDocs = allMenuItems.find(item => item.label ===
STYLE_INSPECTOR_L10N.getStr("styleinspector.contextmenu.showMdnDocs"));
let cssDocs = view.tooltips.cssDocs;
info("Showing the MDN docs tooltip");
let onShown = cssDocs.tooltip.once("shown");
menuitemShowMdnDocs.click();
yield onShown;
ok(true, "The MDN docs tooltip was shown");
info("Quick check that the tooltip contents are set");
let h1 = cssDocs.tooltip.container.querySelector(".mdn-property-name");
is(h1.textContent, PROPERTYNAME, "The MDN docs tooltip h1 is correct");
});
@@ -1,117 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/**
* This file tests the "devtools.inspector.mdnDocsTooltip.enabled" preference,
* that we use to enable/disable the MDN tooltip in the Inspector.
*
* The desired behavior is:
* - if the preference is true, show the "Show MDN Docs" context menu item
* - if the preference is false, don't show the item
* - listen for changes to the pref, so we can show/hide the item dynamically
*/
"use strict";
const { PrefObserver } = require("devtools/client/styleeditor/utils");
const PREF_ENABLE_MDN_DOCS_TOOLTIP =
"devtools.inspector.mdnDocsTooltip.enabled";
const PROPERTY_NAME_CLASS = "ruleview-propertyname";
const TEST_DOC = `
<html>
<body>
<div style="color: red">
Test the pref to enable/disable the "Show MDN Docs" context menu option
</div>
</body>
</html>
`;
add_task(function* () {
info("Ensure the pref is true to begin with");
let initial = Services.prefs.getBoolPref(PREF_ENABLE_MDN_DOCS_TOOLTIP);
if (initial != true) {
yield setBooleanPref(PREF_ENABLE_MDN_DOCS_TOOLTIP, true);
}
yield addTab("data:text/html;charset=utf8," + encodeURIComponent(TEST_DOC));
let {inspector, view} = yield openRuleView();
yield selectNode("div", inspector);
yield testMdnContextMenuItemVisibility(view, true);
yield setBooleanPref(PREF_ENABLE_MDN_DOCS_TOOLTIP, false);
yield testMdnContextMenuItemVisibility(view, false);
info("Close the Inspector");
let target = TargetFactory.forTab(gBrowser.selectedTab);
yield gDevTools.closeToolbox(target);
({inspector, view} = yield openRuleView());
yield selectNode("div", inspector);
yield testMdnContextMenuItemVisibility(view, false);
yield setBooleanPref(PREF_ENABLE_MDN_DOCS_TOOLTIP, true);
yield testMdnContextMenuItemVisibility(view, true);
info("Ensure the pref is reset to its initial value");
let eventual = Services.prefs.getBoolPref(PREF_ENABLE_MDN_DOCS_TOOLTIP);
if (eventual != initial) {
yield setBooleanPref(PREF_ENABLE_MDN_DOCS_TOOLTIP, initial);
}
});
/**
* Set a boolean pref, and wait for the pref observer to
* trigger, so that code listening for the pref change
* has had a chance to update itself.
*
* @param pref {string} Name of the pref to change
* @param state {boolean} Desired value of the pref.
*
* Note that if the pref already has the value in `state`,
* then the prefObserver will not trigger. So you should only
* call this function if you know the pref's current value is
* not `state`.
*/
function* setBooleanPref(pref, state) {
let oncePrefChanged = defer();
let prefObserver = new PrefObserver("devtools.");
prefObserver.on(pref, oncePrefChanged.resolve);
info("Set the pref " + pref + " to: " + state);
Services.prefs.setBoolPref(pref, state);
info("Wait for prefObserver to call back so the UI can update");
yield oncePrefChanged.promise;
prefObserver.off(pref, oncePrefChanged.resolve);
}
/**
* Test whether the MDN tooltip context menu item is visible when it should be.
*
* @param view The rule view
* @param shouldBeVisible {boolean} Whether we expect the context
* menu item to be visible or not.
*/
function* testMdnContextMenuItemVisibility(view, shouldBeVisible) {
let message = shouldBeVisible ? "shown" : "hidden";
info("Test that MDN context menu item is " + message);
info("Set a CSS property name as popupNode");
let root = rootElement(view);
let node = root.querySelector("." + PROPERTY_NAME_CLASS).firstChild;
let allMenuItems = openStyleContextMenuAndGetAllItems(view, node);
let menuitemShowMdnDocs = allMenuItems.find(item => item.label ===
STYLE_INSPECTOR_L10N.getStr("styleinspector.contextmenu.showMdnDocs"));
let isVisible = menuitemShowMdnDocs.visible;
is(isVisible, shouldBeVisible,
"The MDN context menu item is " + message);
}
/**
* Returns the root element for the rule view.
*/
var rootElement = view => (view.element) ? view.element : view.styleDocument;
@@ -25,9 +25,6 @@ const STYLE_INSPECTOR_PROPERTIES = "devtools/shared/locales/styleinspector.prope
const {LocalizationHelper} = require("devtools/shared/l10n");
const STYLE_INSPECTOR_L10N = new LocalizationHelper(STYLE_INSPECTOR_PROPERTIES);
const PREF_ENABLE_MDN_DOCS_TOOLTIP =
"devtools.inspector.mdnDocsTooltip.enabled";
/**
* Style inspector context menu
*
@@ -56,7 +53,6 @@ function StyleInspectorMenu(view, options) {
this._onCopySelector = this._onCopySelector.bind(this);
this._onCopyUrl = this._onCopyUrl.bind(this);
this._onSelectAll = this._onSelectAll.bind(this);
this._onShowMdnDocs = this._onShowMdnDocs.bind(this);
this._onToggleOrigSources = this._onToggleOrigSources.bind(this);
}
@@ -229,19 +225,6 @@ StyleInspectorMenu.prototype = {
});
menu.append(menuitemAddRule);
// Show MDN Docs
let mdnDocsAccessKey = "styleinspector.contextmenu.showMdnDocs.accessKey";
let menuitemShowMdnDocs = new MenuItem({
label: STYLE_INSPECTOR_L10N.getStr("styleinspector.contextmenu.showMdnDocs"),
accesskey: STYLE_INSPECTOR_L10N.getStr(mdnDocsAccessKey),
click: () => {
this._onShowMdnDocs();
},
visible: (Services.prefs.getBoolPref(PREF_ENABLE_MDN_DOCS_TOOLTIP) &&
this._isPropertyName()),
});
menu.append(menuitemShowMdnDocs);
// Show Original Sources
let sourcesAccessKey = "styleinspector.contextmenu.toggleOrigSources.accessKey";
let menuitemSources = new MenuItem({
@@ -407,16 +390,6 @@ StyleInspectorMenu.prototype = {
clipboardHelper.copyString(message);
}),
/**
* Show docs from MDN for a CSS property.
*/
_onShowMdnDocs: function () {
let cssPropertyName = this.styleDocument.popupNode.textContent;
let anchor = this.styleDocument.popupNode.parentNode;
let cssDocsTooltip = this.view.tooltips.cssDocs;
cssDocsTooltip.show(anchor, cssPropertyName);
},
/**
* Add a new rule to the current element.
*/
@@ -18,7 +18,6 @@ const {
} = require("devtools/client/inspector/shared/node-types");
const { getColor } = require("devtools/client/shared/theme");
const { getCssProperties } = require("devtools/shared/fronts/css-properties");
const CssDocsTooltip = require("devtools/client/shared/widgets/tooltip/CssDocsTooltip");
const { HTMLTooltip } = require("devtools/client/shared/widgets/tooltip/HTMLTooltip");
const {
getImageDimensions,
@@ -82,9 +81,6 @@ TooltipsOverlay.prototype = {
this.previewTooltip.startTogglingOnHover(this.view.element,
this._onPreviewTooltipTargetHover.bind(this));
// MDN CSS help tooltip
this.cssDocs = new CssDocsTooltip(toolbox.doc);
if (this.isRuleView) {
// Color picker tooltip
this.colorPicker = new SwatchColorPickerTooltip(toolbox.doc,
@@ -120,10 +116,6 @@ TooltipsOverlay.prototype = {
this.cubicBezier.destroy();
}
if (this.cssDocs) {
this.cssDocs.destroy();
}
if (this.filterEditor) {
this.filterEditor.destroy();
}
@@ -151,7 +143,7 @@ TooltipsOverlay.prototype = {
// Font preview tooltip
if (type === VIEW_NODE_VALUE_TYPE && prop.property === "font-family") {
let value = prop.value.toLowerCase();
if (value !== "inherit" && value !== "unset" && value !== "initial") {
if (value !== "inherit" && value !== "unset" && value !== "initial" && value !== "revert") {
tooltipType = TOOLTIP_FONTFAMILY_TYPE;
}
}
@@ -191,10 +183,6 @@ TooltipsOverlay.prototype = {
this.cubicBezier.hide();
}
if (this.isRuleView && this.cssDocs.tooltip.isVisible()) {
this.cssDocs.hide();
}
if (this.isRuleView && this.filterEditor.tooltip.isVisible()) {
this.filterEditor.revert();
this.filterEdtior.hide();
@@ -295,10 +283,6 @@ TooltipsOverlay.prototype = {
this.cubicBezier.hide();
}
if (this.cssDocs) {
this.cssDocs.hide();
}
if (this.filterEditor) {
this.filterEditor.hide();
}
-1
View File
@@ -117,7 +117,6 @@ devtools.jar:
content/framework/connect/connect.js (framework/connect/connect.js)
content/shared/widgets/graphs-frame.xhtml (shared/widgets/graphs-frame.xhtml)
content/shared/widgets/cubic-bezier.css (shared/widgets/cubic-bezier.css)
content/shared/widgets/mdn-docs.css (shared/widgets/mdn-docs.css)
content/shared/widgets/filter-widget.css (shared/widgets/filter-widget.css)
content/shared/widgets/spectrum.css (shared/widgets/spectrum.css)
content/aboutdebugging/aboutdebugging.xhtml (aboutdebugging/aboutdebugging.xhtml)
@@ -29,7 +29,7 @@
padding-top: 8px;
padding-bottom: 4px;
font-weight: bold;
-moz-user-select: none;
user-select: none;
}
.headersPanelBox .netInfoParamValue {
+1 -1
View File
@@ -22,7 +22,7 @@
white-space: nowrap;
vertical-align: middle;
cursor: pointer;
-moz-user-select: none;
user-select: none;
padding: 0 2px;
border-radius: 2px;
}
@@ -48,14 +48,6 @@ eyedropper.disabled.title=Unavailable in non-HTML documents
#LOCALIZATION NOTE: Used in the image preview tooltip when the image could not be loaded
eventsTooltip.openInDebugger=Open in Debugger
# LOCALIZATION NOTE (docsTooltip.visitMDN): Shown in the tooltip that displays
# help from MDN. This is a link to the complete MDN documentation page.
docsTooltip.visitMDN=Visit MDN page
# LOCALIZATION NOTE (docsTooltip.visitMDN): Shown in the docs tooltip when the MDN page
# could not be loaded (for example, because of a connectivity problem).
docsTooltip.loadDocsError=Could not load docs page.
# LOCALIZATION NOTE (inspector.collapsePane): This is the tooltip for the button
# that collapses the right panel (rules, computed, box-model, etc...) in the
# inspector UI.
-2
View File
@@ -47,8 +47,6 @@ pref("devtools.inspector.imagePreviewTooltipSize", 300);
pref("devtools.inspector.showUserAgentStyles", false);
// Show all native anonymous content (like controls in <video> tags)
pref("devtools.inspector.showAllAnonymousContent", false);
// Enable the MDN docs tooltip
pref("devtools.inspector.mdnDocsTooltip.enabled", false);
// Enable the Font Inspector
pref("devtools.fontinspector.enabled", true);
Loaded 100 of 10540 files, more files were not shown because too many files have changed in this diff. Show more