Compare commits

...
610 Commits
Author SHA1 Message Date
Moonchild 254efe6759 Issue #2664 - Include date interval formatting in ICU build 2024-12-19 14:38:42 +01:00
Moonchild 2e68f35707 Merge pull request 'Fix master branch compilation' (#2666) from martok/UXP-contrib:mr/compilation-fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2666
2024-12-15 00:17:03 +00:00
Martok 786dc56351 Issue #1787 - Follow-up: remove no longer used AppClearDataObserver. 2024-12-14 23:20:01 +01:00
Martok 2c4ef2600e No issue - Follow-up: fix compilation 2024-12-14 23:20:00 +01:00
Moonchild 8c8072860d No issue - Cloned <audio>/<video> elements should respect muted attribute. 2024-12-05 14:16:07 +01:00
Brian Smith 54043a8b0a No Issue - Fixes assembling with binutil as >= 2.41. https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/effadce6c756247ea8bae32dc13bb3e6f464f0eb Same code exists in libav so applying the same patch there as well. 2024-12-04 11:07:18 +01:00
Moonchild 350e9c1879 Merge remote-tracking branch 'dbsoft/cocoawindow' 2024-12-01 20:51:22 +01:00
Brian Smith 0887abea30 No Issue - Make nsCocoaWindow hold a death grip on its native window until its destructor.
https://bugzilla.mozilla.org/show_bug.cgi?id=1880582
2024-11-30 17:53:28 -06:00
Moonchild cd78019ba6 Update NSS to 3.90.5 2024-11-28 11:11:09 +01:00
Moonchild 3a26f14966 [XPCOM] Warn about .library-ms files on Windows (treat as executable) 2024-11-28 09:59:45 +01:00
Moonchild e2714e6938 Issue #2255 - Follow-up: Check if we actually have a non-null global object.
This should avoid the intermittent crashes that are still being reported
on this issue that end up crashing because of a proxied object that can't
be unwrapped after being passed around.
2024-11-27 18:27:00 +01:00
Moonchild c0b74ce133 [network] Update effective TLD names list. 2024-11-26 22:45:53 +01:00
Moonchild 14b9599104 [js] Avoid potential crash if GC cell is no longer valid. 2024-11-23 13:54:29 +01:00
Moonchild f336312483 Merge branch '2561-revertffmpeg6' 2024-11-23 00:37:52 +01:00
Moonchild c7f25b6b9a Revert "Issue #2317 - Part 1 - Update and cleanup ffvpx documentation in preparation for lib update."
This reverts commit ea464a764f.
2024-11-22 23:07:20 +01:00
Moonchild 29445ecfbe Revert "Issue #2317 - Part 2 - Import FFmpeg 6.0 source files for ffvpx"
This reverts commit 3a67a9510b.
2024-11-22 23:07:13 +01:00
Moonchild b6925236cc Revert "Issue #2317 - Part 2a - Update changes.patch for ffvpx"
This reverts commit 4321dbddcc.
2024-11-22 23:07:06 +01:00
Moonchild 3b580c88d3 Revert "Issue #2317 - Part 2b - Clip constants used with shift instructions within inline assembly"
This reverts commit 45b9cfbe93.
2024-11-22 23:06:59 +01:00
Moonchild 946c79b573 Revert "Issue #2317 - Part 3 - Update symbols list for FFmpeg 6.0"
This reverts commit ff4d550c80.
2024-11-22 23:06:53 +01:00
Moonchild 44ef435a21 Revert "Issue #2317 - Part 4 - Regenerate config* files for ffvpx"
This reverts commit 21face45d3.
2024-11-22 23:06:46 +01:00
Moonchild 9f32e371cb Revert "Issue #2317 - Part 5 - Build ffvpx against the FFmpeg 6.0 headers"
This reverts commit ef8447ad4b.
2024-11-22 23:06:40 +01:00
Moonchild c959b55dd0 Revert "Issue #2317 - Part 6 - Remove old workaround for clang-cl"
This reverts commit aff6fbf36c.
2024-11-22 23:06:34 +01:00
Moonchild 7786fc9d84 Revert "Issue #2317 - Part 7 - Don't use -ffreestanding flag when building with clang"
This reverts commit 9d333be11b.
2024-11-22 23:06:29 +01:00
Moonchild 0e09f19795 Revert "Issue #2317 - Part 8 - Update compiler flags used for ffvpx"
This reverts commit 165ef56547.
2024-11-22 23:06:24 +01:00
Moonchild aae12e5b54 Revert "Issue #2317 - Part 9 - "send" before "receive"-ing when decoding audio using FFmpeg"
This reverts commit 6ee56b0a60.
2024-11-22 23:06:18 +01:00
Moonchild 5418ade030 Revert " Issue #2317 - Follow-up - Update ffvpx to 6.0.1"
This reverts commit 1f7023294a.
2024-11-22 23:06:11 +01:00
Moonchild 2b85a07fb9 Merge pull request 'Remove nsIAppsService, mozIApplication and mozapp data cleanup.' (#2659) from DOMApps-cleanup into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2659
2024-11-21 10:12:55 +00:00
Moonchild 25d668395b Issue #1787 - Remove nsIAppsService, mozIApplication and mozapp data cleanup. 2024-11-20 20:18:19 +01:00
Moonchild 32dd996cf2 Issue #2657 - Remove -moz-samplesize resize-decoding for low-vram mobiles
Resolves #2657
2024-11-20 14:10:10 +01:00
Moonchild 4222ca929d Merge pull request 'Remove pre-allocated process manager.' (#2656) from preallocatedprocessmanager-cleanup into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2656
2024-11-19 12:54:24 +00:00
Moonchild 35a4d4172e Merge pull request 'Remove mozapp/appID and isolated mozbrowser element support' (#2655) from isolatedmozbrowser-cleanup into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2655
2024-11-19 12:38:16 +00:00
Moonchild 945e5b88fb Issue #2654 - Remove pre-allocated process manager.
Resolves #2654
2024-11-19 13:18:31 +01:00
Moonchild dcba66d719 Issue #2653 - Part 5: Simplify and clean up some quota code
Since we no longer need a complex check, we can remove some indirection.
2024-11-18 19:15:23 +01:00
Moonchild a64ed8a1db Issue #2653 - Part 4: Remove isApp from quota manager and its clients 2024-11-18 15:00:21 +01:00
Moonchild 5206e5316c Issue #2653 - Part 3: Remove support for packaged apps from asmjscache 2024-11-18 13:58:43 +01:00
Moonchild 8f21ccd0a2 Issue #2653 - Part 2: Update tests 2024-11-17 21:38:15 +01:00
Moonchild 01a1a8557b Issue #2653 - Part 1: Initial cleanup of AppId and isolated mozbrowser.
This removes a lot of the plumbing for having the platform embed itself
through IPC which was required for B2G running the browser as both
shell and browser application.
2024-11-17 20:39:45 +01:00
Moonchild b2cab55756 No issue - Stop WebGL context forcing spew in non-debug builds. 2024-11-15 21:45:59 +01:00
Moonchild 3ead6cadb6 Issue #2652 - Part2: Add "Clear DNS cache" button to about:networking
Resolves #2652
2024-11-15 12:47:24 +01:00
Moonchild 8a4db5fa4b Issue #2652 - Part 1: Add a way to programmatically clear the DNS cache. 2024-11-15 12:25:52 +01:00
Moonchild a421c7fab4 No Issue - stop spewing useless xfo < CSP warning in non-debug builds
This warning throws off a lot of users reporting issues. It's not even
a proper warning as it's informative at best.
Leave it in for debug builds, but stop spewing these common notices in
release builds.
2024-11-14 21:53:59 +01:00
Moonchild 7894ac066c Merge pull request 'Implement Regexp Match indices' (#2650) from matchindices-work2 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2650
2024-11-12 13:54:02 +00:00
Moonchild 1d3c46ea86 Issue #2305 Part 4: Check for failure when getting RegExp match result template
Null deref crash fix.
2024-11-12 14:30:36 +01:00
Martok 62a47c35c1 Issue #2305 Part 3c: Merge repeated loops over MatchPairs 2024-11-11 09:56:07 +01:00
Martok a2cb54f93b Issue #2305 Part 3b: Create .indices and .indices.groups 2024-11-11 09:55:47 +01:00
Moonchild 4cc45366d7 Issue #2305 Part 3a: Pass ResultTemplateKind through CreateRegExpMatchResult
This sets up the MatchResult with the proper structure to contain indices
when necessary.
2024-11-11 09:55:39 +01:00
Moonchild 935d1b9e1b Issue #2305 Part 2: Support .indices in match result template objects
Before match indices, all match results had the same shape. (If there are
no named capture groups, `.groups` exists but is undefined.) Match results
with `.indices` have a distinct shape, so we need a distinct template
object. We also need a template object for `.indices` itself.
2024-11-11 09:54:26 +01:00
Moonchild c18edb0b67 Issue #2305 Part 1: Add support for hasIndices to RegExpFlags (/d)
Adds recognition and parsing of the /d RegExp flag.
Drive-by correction: add missing "s" for dotAll to RegExpObject::toString.
Tag #1284 and #2008
2024-11-11 09:53:05 +01:00
Karl Tomlinson 7f93d25967 Bug 1920800 - Remove oldImages from check for flushed old principal handle
The logic should be equivalent when frame IDs on aImages are contiguously
increasing from IDs on previously set frames.

There are currently no callers passing empty aImages, but the logic in this
case would now be as described in the documentation of
UpdatePrincipalHandleForFrameID():

> We will notify mElement that aPrincipalHandle has been applied when all
> FrameIDs prior to aFrameID have been flushed out.
2024-10-30 13:21:33 +01:00
Moonchild 0f007a16d5 Issue #2648 - Inherit the content disposition of the multipart response 2024-10-30 09:50:08 +01:00
Moonchild eacd48cccb Issue #2648 - Apply CSP to documents sent through multipart/x-mixed-replace 2024-10-30 09:48:28 +01:00
Moonchild fc1fe7d0c5 Issue #2646 - Parse "variations" keywords.
Resolves #2646
2024-10-29 15:27:44 +01:00
Moonchild 92873ead3e Revert "Issue #2645 - Fix type confusion for ResumeKind"
This reverts commit 12e9db2481.
2024-10-28 14:51:10 +01:00
Moonchild 9fede4a3ba Merge branch '2645-resumekind' 2024-10-23 10:52:32 +02:00
Moonchild dbd5dc9554 Issue #2645 - Return null if getName() PC is invalid. 2024-10-21 22:50:57 +02:00
Moonchild 3f538909ab Merge branch 'master' into 2645-resumekind 2024-10-21 13:56:59 +02:00
Moonchild 8e4ce9b800 Issue #2641 - Update Fetch to adhere to the updated spec (pass refpolicy)
Resolves #2641
2024-10-21 12:37:01 +02:00
Moonchild edf4210e12 Issue #2641 - Speculative load changes for referrerpolicy 2024-10-21 12:36:11 +02:00
Moonchild 5a64fd9657 Merge pull request 'Apply border-radius to Outlines as fallback to -moz-outline-radius' (#2643) from RealityRipple/UXP:outline-radius-fallback into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2643
2024-10-11 21:55:29 +00:00
Moonchild 12e9db2481 Issue #2645 - Fix type confusion for ResumeKind
It used a mix of uint8_t and uint16_t. Set it to uint16_t.
Also don't allow non-typeset to simplify stubs used in compound opcodes.
2024-10-11 22:02:44 +02:00
Andy 0af6123536 The border-radius Directive Should Apply to Outlines
However, `-moz-outline-radius` should still override any `border-radius`.
This is primarily done for backward compatibility with some themes.
Additionally, it also allows for more advanced outline control than the CSS spec provides, without breaking spec.
Finally, if the spec is ever updated to include `outline-radius`, we'll be ready to drop the `-moz-` prefix!

Note: BZ 315209 has an inadvertent double-negative in nsDisplayList.cpp:
HasRadius() essentially returns the opposite value it should.
2024-10-09 12:08:46 -07:00
Moonchild e2c94125cc [GMP] Factor out more detailed CheckDimensions function for CreateFrame. 2024-10-02 10:34:38 +02:00
Steve Fink 723ca48613 [js] Disallow deserializing structured clone buffers with transferables more than once. 2024-10-01 22:22:04 +02:00
Boris Zbarsky 15514da406 Bug 1493449 - Change the default credentials mode for module scripts from 'omit' to 'same-origin'
Resolves #2642
2024-10-01 00:03:06 +02:00
Moonchild 04d1e3e53a Revert "Issue #2523 - Part 1 - Import headers from FFmpeg 7.0"
This reverts commit 27bb48deaf.
2024-09-30 23:49:05 +02:00
Moonchild c654c1820f Revert "Issue #2523 - Part 2 - Update audio & video decoders to work with FFmpeg 7.0"
This reverts commit 7dbc24a739.
2024-09-30 23:48:55 +02:00
Moonchild 39dd9d560a Revert "Issue #2527 - Part 1 - Remove old FFmpeg and LibAV headers"
This reverts commit b970fc412a.
2024-09-30 23:48:43 +02:00
Moonchild 032357c053 Revert "Issue #2527 - Part 2 - Remove support for libavcodec < 58"
This reverts commit 738c6a740a.
2024-09-30 23:48:33 +02:00
Moonchild ecacd4a4d9 Revert "Issue #2527 - Part 3 - Remove additional checks for LibAV"
This reverts commit b0f872c919.
2024-09-30 23:48:25 +02:00
Moonchild a6bc5962c4 Bug 1900191 - Use nestegg advertised default duration if it exists. 2024-09-30 22:34:37 +02:00
Moonchild 12e93be21a Bug 1878510 - Follow-up: Explicitly pass values through variadic functions
While MSVC has no issue with this and understands values should be passed,
clang doesn't like it and aborts.
2024-09-27 13:15:06 +02:00
Moonchild 0aeac02b89 Bug 1878510 - When recreating WebM demuxer when encountering a new segment, propagate media time 2024-09-25 22:22:49 +02:00
Moonchild 1402d8eee6 Merge pull request 'libjpeg: NetBSD/powerpc ALTIVEC simd support' (#2591) from discoM/UXP:powerpc_altivec into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2591
2024-09-23 13:02:25 +00:00
Martin Husemann 42b3e18a4a libjpeg: add NetBSD/powerpc spcific Altivec cpu feature detection 2024-09-23 12:51:33 +02:00
Moonchild cabe9ea2d5 Update README to point to the xref site.
Gitea's bleve indexer is too slow and resource-intensive to use.
2024-09-22 15:14:37 +02:00
Moonchild c57a1eee66 Merge pull request 'Make NetBSD use the same xptcall support as others.' (#2588) from discoM/UXP:xptcall_netbsd_powerpc into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2588
2024-09-22 10:50:03 +00:00
Moonchild a8fbc1dfbe Merge pull request 'Make NetBSD/powerpc use the powerpc atomic ops.' (#2589) from discoM/UXP:netbsd_ppc_atomicops into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2589
2024-09-22 10:49:44 +00:00
Martin Husemann 1f457514b0 Hardcode '-maltivec' as compiler flag for powerpc/altivec support 2024-09-22 12:39:23 +02:00
Martin Husemann acd339fcf7 Make NetBSD/powerpc use the powerpc atomic ops.
NetBSD/powerpc gcc does not predefine __ppc__, but only __powerpc__,
so add that to the preprocessor ifdef cascade to select atomic
ops.
2024-09-22 12:10:32 +02:00
Martin Husemann 07bb7f379b Make NetBSD use the same xptcall support as others.
These functions are only ELF ABI specific, not really OS specific.
Add powerpc, powerpc64 and sparc64 support for NetBSD
by using the same code as other ELF systems do.
2024-09-22 11:56:04 +02:00
Moonchild 8cabf0bf72 [Debug] Make inaccurate GC stats reporting non-fatal in debug builds.
Not sure why this was fatal as it only hinders being able to report memory
issues to a debugging dev :P
2024-09-21 15:38:34 +02:00
Moonchild 178f72365d Merge branch '2251-ghostbuster-work' 2024-09-20 16:47:02 +02:00
FranklinDM f819937a31 Issue #2251 - Expose unlink ghost windows to about:memory 2024-09-19 19:08:04 +02:00
FranklinDM 114b5265d6 Issue #2251 - Expose ghost window unlinking to release builds. 2024-09-19 19:07:33 +02:00
Moonchild 8595dc550f No issue - Fix asserts in debug.
Hashbang parser changes allow more than one EOL which screws up these
assertions' premise. Just remove them as the preconditions are no longer
valid.
2024-09-19 19:04:22 +02:00
Moonchild 5b8d28ba4d Merge pull request 'Fix building for Apple Silicon Mac with Xcode 16.' (#2587) from dbsoft/UXP:clangarm64fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2587
2024-09-19 12:47:55 +00:00
Brian Smith 8146ba5a07 No Issue - Fix building for Apple Silicon Mac with Xcode 16.
Due to the following LLVM change labels need to be outside .cfi_start/endprocs:
https://reviews.llvm.org/D155245
Solution pointed out here is to move the label above .cfi_startproc:
https://github.com/libffi/libffi/issues/807
2024-09-18 13:47:23 -05:00
Moonchild 727b9c9adf Merge pull request 'media/libcubeb: Use Sun audio backend also on NetBSD' (#2583) from nia/UXP:sunaudio-netbsd into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2583
2024-09-13 10:33:35 +00:00
Moonchild 7056301965 Merge pull request 'Fix bashism in old-configure.in' (#2582) from nia/UXP:shellport into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2582
2024-09-13 10:29:01 +00:00
Nia Alarie dc3c2f3da8 media/libcubeb: Use Sun audio backend also on NetBSD 2024-09-13 12:15:20 +02:00
Nia Alarie baf4c5b6bb Fix bashism in old-configure.in 2024-09-13 12:13:13 +02:00
Moonchild 3575bc580f Merge pull request 'Implement and expose config preferences for SOP and CORS' (#2580) from FranklinDM/UXP-contrib:work_content-disable-cors-sop into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2580
2024-09-12 16:19:47 +00:00
FranklinDM 21e49b0a92 Issue #2578 - Part 3: Expose CORS and CORS bypass preflight requests preferences. 2024-09-13 00:00:11 +08:00
FranklinDM 9d9534cc71 Issue #2578 - Part 2: Implement preference for disabling CORS preflight requests if CORS is disabled 2024-09-13 00:00:11 +08:00
FranklinDM 993681b010 Issue #2578 - Part 1: Implement preference for controlling same-origin policy 2024-09-13 00:00:10 +08:00
Moonchild 3d29257050 Merge pull request 'js: Support for the MPROTECT security feature (PaX and NetBSD)' (#2579) from nia/UXP:mprotect into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2579
2024-09-12 13:04:23 +00:00
Nia Alarie 7dd9438137 js: Support for the MPROTECT security feature (PaX and NetBSD)
On such platforms, remapping memory that was once writable
to executable is forbidden unless the initial mmap() is declared
to change in such a way using the PROT_MPROTECT macro.
2024-09-12 09:42:44 +02:00
Moonchild 44c611aeaf [js xpconnect] Fix error handling in xpc::CreateSandboxObject 2024-09-04 15:21:42 +02:00
Moonchild 7c4cbfd49e [js] Simplify with-env handling in FetchName 2024-09-04 15:21:08 +02:00
Moonchild 64bc57fa85 [DOM] Stop exposing NotifyPaintEvent to web content.
There's no reason this should be available to the web, as it's an
indicator of browser internals.
2024-09-04 13:31:23 +02:00
Moonchild c6a82aa32c Merge pull request 'Implement hashbang grammar (ES2023)' (#2560) from hashbang-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2560
2024-09-01 09:22:33 +00:00
Moonchild 334fe4be6c Issue #2559 - Implement hashbang grammar
This adds special-case #! comment handling at the top level, treating
any hashbang line as a single-line comment in the parser.
This only applies to Eval(), module script or global context.
2024-08-29 11:40:42 +02:00
Moonchild d76e865563 Merge pull request 'Add DOMMatrix versions of getTransform/setTransform' (#2558) from dommatrix-transforms-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2558
2024-08-17 09:06:31 +00:00
Moonchild ed862e5777 Issue #1810 - Add DOMMatrix {get|set}Transform WebIDL interfaces 2024-08-16 14:33:06 +02:00
Moonchild 719bed3ead Issue #1810 - Allow superfluous [LenientFloat] extended attributes.
This changes the way the extended attribute [LenientFloat] behaves, so
that overloading functions can match extended attributes while not
having restricted float type arguments themselves.
2024-08-16 14:31:51 +02:00
Moonchild e1c28ba852 Issue #1810 - Implement {get|set}Transform with DOMMatrix arguments.
We already had part of the plumbing for other canvas manipulations, so
this is somewhat simplified.

This excludes the interface as that is breaking the build at this stage.
Some more research is required.
2024-08-16 11:02:07 +02:00
Moonchild ba54621f01 Issue #1925 - Follow-up: Fix debug builds (namespace) 2024-08-12 11:23:35 +02:00
Moonchild 9babba6c44 No issue - Update TwemojiMozilla to 15.1.2
Fixes out-of-bounds watermelon emoji size.
2024-08-09 19:35:21 +02:00
Moonchild 5ff9b81126 Issue #2554 - Follow-up: Also block [::] and [::0.0.0.0] IPv6 addresses. 2024-08-09 19:17:49 +02:00
Moonchild 70c32d67f9 Issue #2554 - Follow-up: Correct code comment (no functional changes) 2024-08-09 16:18:37 +02:00
Moonchild 09a4832168 Issue #2554 - Block access to 0.0.0.0 on non-Windows OSes.
Resolves #2554.
2024-08-09 15:56:21 +02:00
Moonchild 1fd02db477 Update NSS to 3.90.4
Note: manually updated the version indicators due to BZ Bug 1912012
(https://bugzilla.mozilla.org/show_bug.cgi?id=1912012)
2024-08-07 13:03:17 +02:00
Moonchild 810a054eb5 [DOM] Pass error up the chain in SetColorValue. 2024-08-07 11:58:14 +02:00
Moonchild 3104055d42 Merge pull request '[gfx] Fix loading libGL on NetBSD' (#2553) from nia/UXP:webgl-netbsd into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2553
2024-08-04 19:01:49 +00:00
Nia Alarie 0d3d33623f [gfx] Fix loading libGL on NetBSD
The unversioned libGL is preferred on OpenBSD and NetBSD because
both (a) always install it (b) have forks of X11 with different
ABI versions.  However, many Linux distributions do not ship
unversioned .so symlinks unless you install -dev packages.

Unfortunately also needs to be fixed in ANGLE which has the same
problem.
2024-08-04 13:39:17 +02:00
Moonchild 3c46251443 Merge pull request 'Clean up CSS Macro use' (#2552) from 1925-macro-cleanup-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2552
2024-08-03 06:32:26 +00:00
Moonchild 186c58897b Issue #1925 - Replace RectCorner with Corner. 2024-08-02 12:10:27 +02:00
Moonchild bb3405c8b6 Issue #1925 - Convert NS_SIDE_TO_HALF_CORNER to a constexpr function. 2024-08-02 11:15:28 +02:00
Moonchild b82596eb98 Issue #1925 - Convert NS_SIDE_TO_FULL_CORNER to a constexpr function. 2024-08-02 10:36:07 +02:00
Moonchild cf7b3e3a09 Issue #1925 - Convert NS_SIDE_IS_VERTICAL to a constexpr function. 2024-08-02 10:31:21 +02:00
Moonchild c9cd25abc5 Issue #1925 - Convert NS_FULL_TO_HALF_CORNER to a constexpr function.
Note: Because the new function checks types, we need to change the
fullCorner type in `nsComputedDOMStyle::GetEllipseRadii()` and
`StyleAnimationValue::ExtractComputedValue()` to `Corner` instead of the
underlying base type.
2024-08-02 10:15:50 +02:00
Moonchild 73e0e8bbbe Issue #1925 - Convert NS_HALF_TO_FULL_CORNER to a constexpr function. 2024-08-02 09:25:03 +02:00
Moonchild 0bdb90ab40 Issue #1925 - Convert NS_HALF_CORNER_IS_X to a constexpr function. 2024-08-02 08:30:23 +02:00
Moonchild c0d87ea595 Issue #1925 - Move NS_FOR_CSS_HALF_CORNER to gfx/2d/Types.h and rewrite it. 2024-08-02 08:10:52 +02:00
Moonchild 11c9b60eba Issue #1925 - Convert half-corner index macros to an enum. 2024-08-02 08:01:01 +02:00
Moonchild f9d1e87756 Issue #1925 - Remove use of NS_CORNER_{TOP|BOTTOM}_{LEFT|RIGHT} macros. 2024-08-02 06:08:29 +02:00
Moonchild 15ad259ac7 Issue #1925 - Rewrite NS_FOR_CSS_CORNERS to be similar to *_SIDES
- Renames it to NS_CSS_FULL_CORNERS and uses the one macro for all full
  corners. In preparation for giving half corners the same treatment.
- Swaps to prefix operator++
2024-08-02 04:50:01 +02:00
Moonchild 819c3c990b Issue #1925 - Move Corner enum from mozilla::css to mozilla namespace. 2024-08-01 20:28:28 +02:00
Moonchild c4d4c9d6de Issue #1925 - Rename Corner to LogicalCorner and move it to nsStyleCoord.h.
To avoid confusion with mozilla::css::corner, rename ::Corner to
mozilla::LogicalCorner, and move it to nsStyleCoord.h from the illogical
nsCellMap.h location.
Also, append the LogicalCorner prefix to all the enum values, to match
the surrounding coding style.
2024-08-01 20:09:22 +02:00
Moonchild 903dea4285 Issue #1925 - Move NS_FOR_CSS_CORNERS and enum to gfx/2d/Types.h. 2024-08-01 19:55:20 +02:00
Moonchild 620a3336eb Issue #1925 - Change Side's operator++ from postfix to prefix.
The postfix operator++ was actually incorrectly implemented (the
implementation is a prefix version). Since it's only used in the adjacent
macro, there's no risk with this change to correct that.
2024-08-01 18:58:14 +02:00
Moonchild 6d20a50b09 Issue #1925 - Remove use of SIDE_BIT{S}_* macros.
This already has an enum in gfx/Types.h
2024-08-01 18:23:03 +02:00
Moonchild dc4316132b Issue #1925 - Remove use of NS_SIDE_* macros. 2024-08-01 17:28:01 +02:00
Moonchild 9b375ff678 Issue #1925 - Remove mozilla::css::Side typedef. 2024-08-01 16:46:27 +02:00
Moonchild 7a0c651c5d Issue #1925 - Move NS_FOR_CSS_SIDES and operator++ to gfx/2d/Types.h 2024-08-01 16:11:48 +02:00
Moonchild a653cb9b83 No issue - Update Twemoji Mozilla to 15.1.1
This updates Lime and Watermelon emoji to slightly larger versions.
2024-07-29 23:17:42 +02:00
Moonchild 4875759e78 Merge branch '2515-remove-content-dispatch-flags' 2024-07-25 22:44:15 +02:00
Moonchild 126b981629 Issue #2515 - Guard devtools click handlers against non-primary clicks.
We only want clicks on HTML elements to respond to the primary button.
2024-07-25 15:50:31 +02:00
Moonchild 103cf524ec Issue #2515 - Clarify only dispatching in chrome. 2024-07-25 15:42:08 +02:00
Moonchild ea96fed795 Issue #2515 - Remove mForceContentDispatch and mNoContentDispatch 2024-07-25 15:33:07 +02:00
Moonchild 8c46320564 Merge pull request 'constants.py: fix powerpc arch detection' (#2550) from barracuda156/UXP:arch_fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2550
2024-07-20 21:36:14 +00:00
Sergey Fedorov 23b2a53d4c constants.py: fix powerpc arch detection 2024-07-16 21:14:14 +08:00
Moonchild 4616af0c7c Bump platform version 2024-07-16 11:40:03 +02:00
Moonchild a873824668 Merge pull request 'Implement parser and CSSOM support for layer at-rules' (#2549) from FranklinDM/UXP-contrib:work_css-cascade-layers-parser-only into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2549
Reviewed-by: Moonchild <moonchild@palemoon.org>
2024-07-16 09:12:34 +00:00
FranklinDM e5cec10a4e Issue #2486 - Part 5: Fix parsing of nested layer names
This does not handle the merging of same-named layers, however.
2024-07-15 09:00:53 +08:00
FranklinDM 917cac9674 Issue #2486 - Part 4: Ensure layer statement rule is appended and invalid tokens are restored 2024-07-15 08:33:34 +08:00
FranklinDM be4699e54c Issue #2486 - Part 3: Fix serialization of layer statement rule 2024-07-15 08:33:26 +08:00
FranklinDM caaf54a046 Issue #2486 - Part 2: Implement parser support for layer block and layer statements
This does not deal with layer specificity.
2024-07-14 22:58:25 +08:00
FranklinDM d3812c1a0e Issue #2486 - Part 1: Initial plumbing and CSSOM support for cascade layers 2024-07-14 22:58:24 +08:00
Moonchild 729b32a2f0 Issue #2547 - Remove hidden network.dns.disablePrefetchFromHTTPS pref.
Resolves #2547
2024-07-10 23:25:49 +02:00
Moonchild 79c8e2e86c [DOM/network] Disable DNS prefetching if document nodePrincipal is systemPrincipal 2024-07-10 09:14:47 +02:00
Moonchild 93b4e6566d [IPC] Clean up control flow in WaitableEvent. 2024-07-10 07:43:38 +02:00
Moonchild 42a3dffe69 [network] Add additional cookie setting checks.
Added checks for sub-document navigations from cross-site to same-site in
third-party checks when setting a cookie.
2024-07-10 00:22:49 +02:00
Moonchild b21dd824a2 Merge branch 'master' of https://repo.palemoon.org/MoonchildProductions/UXP 2024-07-09 22:38:36 +02:00
Moonchild ccd9e8e106 Merge pull request 'Implement Sec-Fetch headers and improve mixed content blocker' (#2544) from sec-fetch-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2544
2024-07-09 20:37:45 +00:00
Moonchild eebb25dda0 No issue - Update SQLite to 3.46.0 2024-07-09 21:29:41 +02:00
Moonchild 27ce4ea0fa No issue - Update NSS to 3.90.3 2024-07-09 21:18:25 +02:00
Moonchild fb4ede7d2e Merge branch 'remove-foxeye' 2024-07-09 13:30:27 +02:00
Moonchild a09c6b6ce0 Issue #2546 - Part 6: Remove canvas.imagebitmap_extensions.enabled preference. 2024-07-09 12:16:18 +02:00
Moonchild a8f376aa3b Issue #2546 - Part 5: Remove tests 2024-07-09 12:00:35 +02:00
Moonchild e9868fcb47 Issue #2546 - Part 4: Remove mappedDataLength and findOptimalFormat 2024-07-09 11:56:51 +02:00
Moonchild 7e49aebcc8 Issue #2546 - Part 3: Remove mapDataInto 2024-07-09 00:33:06 +02:00
Moonchild 1c04829dca Issue #2546 - Part 2: Remove special FoxEye CreateImageBitmap method. 2024-07-08 23:45:49 +02:00
Moonchild 2379bb29be Issue #2546 - Part 1: Remove BufferSource support in CreateImageBitmap. 2024-07-08 23:36:40 +02:00
Moonchild 2b2475905e Issue #2542 - Part 9: Remove TODO comment.
From our understanding of the spec, our current implementation is
feature-complete.
2024-07-07 03:07:29 +02:00
Moonchild f25c809ff0 Issue #2045 - Temporarily force hidden elements to be actually hidden.
For the time being, because we don't have `revert` yet, we should force
normally hidden elements to be hidden, so they aren't revealed by sites
using the bad practice of `*{ }` style blanking rules but then using
`revert` to re-hide them.
2024-07-06 17:47:06 +02:00
Moonchild ff9f024589 Issue #2542 - Part 8: Enable Sec-Fetch-* headers by default. 2024-07-05 15:26:49 +02:00
Moonchild add1037bb8 Issue #2542 - Part 7: Move SecFetch.* to /netwerk where it belongs. 2024-07-05 14:05:45 +02:00
Moonchild 962ca150bd Issue #2542 - Part 6: Add Sec-Fetch-User header for all requests that
are the direct result of a system principal request.

This means navigation resulting from interaction with the browser UI
should result in a -user header (address bar navigation, bookmarks, etc.)
2024-07-04 22:40:06 +02:00
Moonchild b693f60fc7 Issue #2542 - Part 5: Assume browser-initiated requests for unspecified
content types to always be user-triggered.
2024-07-04 22:34:00 +02:00
Moonchild a4cd652b6f Issue #2542 - Part 4b: Fix pointer mess-up. 2024-07-04 19:00:29 +02:00
Moonchild 689cbd7509 Issue #2542 - Part 4: Use BasePrincipal's IsSameOrigin() in SecFetch. 2024-07-03 17:03:36 +02:00
Moonchild a3f4272093 Issue #2542 - Part 3: Expand BasePrincipal with an IsSameOrigin check
Manual checking of the origins in SecFetch fails, so we add this
capability to the base principal interface for sake of ease.
We could use ScriptSecurityManager directly but it's more convenient
this way and can be re-used elsewhere in the future.
2024-07-03 17:02:32 +02:00
Moonchild 927173b648 Issue #2542 - Part 2b: Fix typo in pref check 2024-07-03 16:59:39 +02:00
Moonchild c62cc61613 Issue #2542 - Part 2: Base implementation of Sec-Fetch-* header code.
Currently following Mozilla putting stuff in /dom for additional porting,
but it's actually the wrong location since it belongs in /netwerk with
the other code that deals with http headers.
2024-07-03 11:00:53 +02:00
Moonchild b4a50f830c Issue #2542 - Part 1b: Fix dom.securecontext.whitelist code issues
Some minor bugfixes (wrong condition and string type)
2024-07-02 22:07:39 +02:00
Moonchild 5cadc0eee2 Issue #2542 - Part 1: Factor out Potentially Trustworthy URI checks.
For sake of ease of use, converted to boolean functions that just assume "false"
in case of errors.

Note: Mozilla makes special arrangements for .onion addresses as well but
we explicitly do not adopt that. TOR browser can do that all day if it wants.
2024-07-02 21:23:30 +02:00
Moonchild 59431e104c Issue #2531 - Adjust rounding in toExponential (and kin) to round up at midpoint.
Resolves #2531
2024-07-02 00:14:28 +02:00
Moonchild 47de3819f6 Issue #2543 - adjust toFixed precision range according to spec update.
As pointed out in the ecma-262 spec change discussion, the behavior is
inconsistent for negative numbers because the exponential fallback assumes
all the digits will be displayed. The negative support was motivated just
by consistency, without any particular concrete use cases, and it's not
supported in other browsers, so this patch removes negatives.

Resolves #2543
2024-07-01 23:43:24 +02:00
Moonchild 037f0ac647 Issue #2541 - Deal with empty LineNameList in CSS grid templates.
Resolves #2541
2024-06-30 22:33:59 +02:00
Moonchild b97f03f0c6 Issue #2537 - Don't assume username fields appear before password fields in forms. 2024-06-28 14:55:06 +02:00
Moonchild e3443de36e Merge pull request 'Separate Emoji Cluster Extenders' (#2539) from RealityRipple/UXP:Component2538 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2539
2024-06-28 12:43:10 +00:00
Andy 4b1bf3620d Issue #2538 - Part 3: Bring ZWJ Awareness to ClusterReverseIterator
Additional patch to resolve a bug exposed while working on the Cluster issue.
2024-06-27 18:29:23 -07:00
Andy 5d221d0cb2 Issue #2538 - Part 2: Add IsEmojiClusterExtender
Check specifically for Emoji-specific clusters only in Emoji-specific contexts.
2024-06-26 11:11:19 -07:00
Andy 9cca2f22c5 Issue #2538 - Part 1: Undo IsClusterExtender Change
This partially reverts commit 49b7816286.
So much for getting rid of the stupid constants...
2024-06-26 11:10:15 -07:00
Moonchild 8a9955f181 Issue #2534 - Part 2: Update tests 2024-06-23 18:11:22 +02:00
Moonchild 90a67a4825 Issue #2534 - Part 1: window.postMessage should provide a trusted MessageEvent 2024-06-23 17:55:13 +02:00
Moonchild 4381067d04 Issue #2536 - Re-implement plugin enumeration shuffle.
Resolves #2536
2024-06-23 17:31:02 +02:00
Moonchild 5457c3711b Merge pull request 'Remove support for libavcodec 57 and below' (#2535) from trav90/UXP-contrib:2527 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2535
2024-06-23 14:43:40 +00:00
trav90 b0f872c919 Issue #2527 - Part 3 - Remove additional checks for LibAV
Also removes the "media.libavcodec.allow-obsolete" pref.
2024-06-21 07:14:53 -05:00
trav90 738c6a740a Issue #2527 - Part 2 - Remove support for libavcodec < 58
This removes all support for LibAV and FFmpeg 3.x and below. Only FFmpeg 4.x or higher is supported now.
2024-06-19 15:39:31 -05:00
trav90 b970fc412a Issue #2527 - Part 1 - Remove old FFmpeg and LibAV headers 2024-06-19 14:51:14 -05:00
Moonchild 0886ccfa95 No Issue - Add navigator.webdriver attribute.
This patch adds an enumerable, configurable, readonly attribute "webdriver" to
the Navigator object. The attribute is always false because we do not support
WebDriver or scripted automation.

The navigator.webdriver attribute is meant as an indication to web authors that
a document is visited by WebDriver. It is important to stress that it is not
meant as a way to detect that a website is being visited by a browser automation
tool or bot, but as a tool for web documents to take alternate code paths.

On the off-chance exposing navigator.webdriver turns out to be catastrophic,
we put it behind a new preference dom.webdriver.enabled that controls its
exposure.
2024-06-17 09:44:52 +02:00
Moonchild f3786e036c Merge pull request 'Add support for libavcodec61' (#2528) from trav90/UXP-contrib:2523 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2528
2024-06-17 06:50:26 +00:00
Moonchild d8091d3958 Issue #2532 - Align dialog submission triggered by form.submit() with the spec.
Submission in click handler of submit button should not be deferred
per https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#submit-dialog

See Bug 1719872
2024-06-15 17:04:24 +02:00
Moonchild 726452fc88 Issue #2532 - Prevent unwanted text selection when backdrop is clicked. 2024-06-15 17:03:43 +02:00
Moonchild 361b76beb2 Issue #2532 - Don't do PreventDefault for escape key if <select> dropdown is not shown
We always use PreventDefault for <select> element, which is problematic if modal
dialog is on as it prevents cancelling the dialog. We fix it by not blocking the
default action if <select> is not shown.

See Bug 1649278
2024-06-15 17:03:16 +02:00
Moonchild 6ca3eb7c98 Issue #2532 - Fix a null pointer crash while doing dialog form submission
See Bug 1652699
2024-06-15 17:02:31 +02:00
Moonchild 42a208e60c Issue #2532 - Default pref check to true 2024-06-15 17:01:57 +02:00
Moonchild c2de359372 Issue #2532 - Implement form[method=dialog]
See bug 1557303
2024-06-15 17:01:27 +02:00
Moonchild 40016a1bf9 Merge pull request 'Fix altivec code, fix building for PPC' (#2530) from o_o/UXP:master into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2530
2024-06-15 07:19:12 +00:00
Richard-Rogalski e593872f19 Fix altivec code, fix building for PPC
Altivec code was previously uncompilable, and the altivec accelerations
also could not be disabled with a build flag or env variable, leading
to pale moon not being buildable on any altivec supported CPU ( all
PPC CPUs ever almost ). Why? I don't know, 'inline' in C is cursed
and making it static makes it significantly less so.

Closes: https://forum.palemoon.org/viewtopic.php?f=5&t=31108&p=252462#p252462
Signed-off-by: Richard Rogalski <rrogalski@firemail.cc>
2024-06-14 19:45:13 -05:00
Daniel Holbert e6199f8a32 [layout] Initialize PerSpanData members mBaseline and mReflowInput.
We null-initialize all of the other pointer members in NewPerSpanData; we should
do the same for these ones, for consistency & robustness.

(In practice, the callers end up initializing these members before reading them
anyway, so it's been benign that we weren't initializing them. But better for
safety & futureproofing to have them reliably initialized.)
2024-06-12 22:31:23 +02:00
Moonchild ae87e5c8ca [uri] Implement additional filename checks. 2024-06-12 21:34:12 +02:00
Moonchild 130720d927 [js gc] Suppress GC during JSObject::swap
We already suppressed GC for part of this, but we may sweep before the pre-write
barrier is established.
The simplest and safest thing is to suppress GC for the whole method.
2024-06-12 20:04:44 +02:00
Moonchild 0f0d36de2d [toolkit] Close autocomplete popup when window is resized. 2024-06-12 19:42:16 +02:00
Moonchild 2879b5abf6 [DOM] Clone video info properly. 2024-06-12 12:58:55 +02:00
Moonchild 84a29728aa [uri] Fix issues with external protocol handlers.
Remove early return in nsExternalProtocolHandler::NewChannel when handler doesn't exist.
Fix devtools expectation that newChannel throws for unsupported external handlers
2024-06-12 00:42:33 +02:00
Moonchild 38e63a2457 [network] Avoid accessing raw pointers in nsTransportEventSinkProxy. 2024-06-11 19:01:24 +02:00
Moonchild 809bb089c1 [network] Perform a case-insensitive match on special cookie prefixes. 2024-06-11 18:10:22 +02:00
trav90 7dbc24a739 Issue #2523 - Part 2 - Update audio & video decoders to work with FFmpeg 7.0 2024-06-10 07:55:58 -05:00
Moonchild 7cc6e4f072 Merge pull request 'Implement small, large, dynamic, and logical viewport units' (#2525) from FranklinDM/UXP-contrib:work_css-viewport-units-sld-logical into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2525
2024-06-09 13:29:50 +00:00
FranklinDM 9605315718 Issue #2522 - Part 2: Implement support for logical viewport units 2024-06-09 19:53:56 +08:00
FranklinDM c2362f7f61 Issue #2522 - Part 1: Alias small, large, and dynamic viewport units to base viewport 2024-06-09 19:53:56 +08:00
trav90 27bb48deaf Issue #2523 - Part 1 - Import headers from FFmpeg 7.0 2024-06-08 15:54:35 -05:00
Moonchild 6e2a713c37 Issue #2524 - Implement smart granularity for canvas poisoning.
User-configurable time interval between 1s and 8h. Default 5 minutes.
Resolves #2524
2024-06-07 16:25:36 +02:00
Moonchild c617548958 Merge pull request 'Remove DBM configuration and platform considerations.' (#2521) from 2516 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2521
2024-06-06 08:42:05 +00:00
Moonchild d8acf27de1 Issue #2516 - Part 3: Reconfigure platform to no longer build NSS DBM back-end. 2024-06-03 19:27:37 +02:00
Moonchild de2bd6aa57 Issue #2516 - Part 2: Remove MOZ_SECURITY_SQLSTORE and always use SQLite db back-end. 2024-06-03 18:49:41 +02:00
Moonchild 666b1f2db8 Issue #2516 - Part 1: Remove configure options for NSS db back-end selection. 2024-06-03 17:39:33 +02:00
Moonchild 17e3f40c2e Merge pull request 'Fix crash when reporting export error in modules' (#2520) from martok/UXP-contrib:mr/2519-module-error into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2520
2024-06-03 11:33:50 +00:00
Martok be0dc5dd26 Issue #2519 - Use parser error reporter to report missing module exports 2024-06-02 21:15:57 +02:00
Moonchild 43862ee764 Issue #2518 - Make various arguments optional in XPathEvaluator/XPathExpression.
Resolves #2518
2024-06-01 19:30:47 +02:00
Moonchild fe6af19126 [gfx] Use calloc for cairo font-creation functions. 2024-05-21 15:04:22 +02:00
Moonchild f982245af3 [gfx] Ensure font entry's unitsPerEm and font extents are initialized when gfxFont is created. 2024-05-21 14:10:27 +02:00
Moonchild 1fe46b057e [DOM] Clean up ReportLoadError and normalize error messages. 2024-05-21 13:24:45 +02:00
Moonchild 197e21f6de [gfx] Clear mSharedBlobData if blob creation failed. 2024-05-21 13:19:48 +02:00
Moonchild 58a3105a0e [network] Make http digest auth cnonce length configurable. 2024-05-21 12:30:47 +02:00
Moonchild c1703a6928 Merge pull request 'Emoji Sequence Clusters' (#2514) from RealityRipple/UXP:emoji-nowrap into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2514
2024-05-12 20:40:07 +00:00
Moonchild 786c16fd45 Merge pull request 'Import autoconf 2.13 and fix issues with GCC 14 and Clang 16.' (#2513) from dbsoft/UXP:autoconf2512 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2513
2024-05-11 16:57:34 +00:00
Andy 49b7816286 Don't split up happy emoji sequences
Loosely based on https://phabricator.services.mozilla.com/D25101
Includes changes to `GetEmojiPresentation`, added in e38b57ca.
The `EmojiComponent` response includes hair color, skin tone, ZWJ, VS16, Combining Enclosing Keycap, and the Tag unicode characters used for subdivision flag emojis.
This means that `IsClusterExtender` should support all these characters, and be forward compatible with any future Unicode changes.
This also lets us restructure `ClusterIterator::Next` to check for EmojiComponents after a TextDefault character, without any stupid constants.
2024-05-09 15:44:02 -07:00
Brian Smith 3aec8d2838 Issue #2512 - Part 5 - Fix Python 2.7 issue with unicode environment on Windows. 2024-05-07 22:49:35 -05:00
Brian Smith e4829019cd Issue #2512 - Part 4 - Look for gm4 in addition to m4.
https://bugzilla.mozilla.org/show_bug.cgi?id=1670807
2024-05-07 22:40:39 -05:00
Brian Smith acb34c35db Issue #2512 - Part 3 - Fix new failures with GCC 14. 2024-05-07 22:40:39 -05:00
Brian Smith e484c9d311 Issue #2512 - Part 2 - Fix autoconf basic compiler test.
GCC 14 and Clang 16 changed implicit-int from warning to error.
Causing the compiler test from 1996 to fail in C99 mode.
2024-05-07 22:40:38 -05:00
Brian Smith 6cbb2c372b Issue #2512 - Part 1 - Imported minimal autoconf 2.13.
https://bugzilla.mozilla.org/show_bug.cgi?id=1663863
2024-05-07 22:40:38 -05:00
Moonchild 5470407781 Merge pull request 'Implement missing parts of <dialog>' (#2511) from 2472-htmldialog-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2511
2024-05-07 09:34:36 +00:00
Brian Smith f9eaedbe2d Issue #2472 - Part 8: Fix conflicting defines on Mac. 2024-05-07 11:30:59 +02:00
Moonchild 5152b9b64a Merge branch 'master' into 2472-htmldialog-work
# Conflicts:
#	layout/style/res/html.css
2024-05-06 22:16:16 +02:00
Moonchild 46feb81dd3 Issue #2472 - Part 7: Unprefix fit-content in dialog style. 2024-05-06 22:11:36 +02:00
Moonchild 59796f3e9d Issue #2510 - Unprefix -moz-fit-content
No aliasing since this has been out for a while.
Devtools db regenerated with `mach devtools-css-db`

Resolves #2510
2024-05-06 22:09:18 +02:00
Moonchild 83b16ecc7f No issue - Regenerate devtools css database
We were missing ::slotted, apparently.
2024-05-06 21:21:53 +02:00
Moonchild 2baeb2083b Issue #2472 - Part 6: Fire cancel event and close modal <dialog> on [ESC]
This implementation is different than Mozilla, not indirectly queueing cancel
tasks to be arbitrarily ordered, but rather synchronously close in reverse
top layer order.
2024-05-06 12:33:09 +02:00
Moonchild 3ac7635150 Issue #2472 - Part 5: Make modal versions of <dialog> work, and tune styles.
This adds a pseudo-class `:-moz-modal-dialog` to be able to track whether the
dialog is in the top layer in CSS.
This implements default styling for modal dialogs following the HTML standard.
Slightly off-extreme color scheme chosen for unstyled <dialog> elements.
2024-05-04 18:32:41 +02:00
Moonchild a7e19fc7ae Issue #2472 - Part 4: Make TopLayer{Push|Pop} part of nsIDocument. 2024-05-04 18:16:28 +02:00
Moonchild 229517f9cd Merge branch 'master' into 2472-htmldialog-work 2024-05-02 11:49:28 +02:00
Moonchild d90a4ea28c Merge pull request 'FIPS cleanup' (#2509) from FIPS-cleanup-2 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2509
2024-05-01 20:46:56 +00:00
Moonchild 70b1711085 Issue #2505 - Part 4: Restore PK11_IsFips symbol for Mac building secutil. 2024-05-01 14:15:22 +02:00
Moonchild 49aa1346da Issue #2505 - Part 3: Remove FIPS interfaces and controls. 2024-05-01 13:38:01 +02:00
Moonchild aba23a13a3 Issue #2505 - Part 2: Update NSS to 3.90.2
This re-lands the NSS update that was backed out previously for RC bustage.
2024-05-01 13:37:30 +02:00
Moonchild e4254a9555 Issue #2505 - Part 1: Stop signing NSS libraries. 2024-04-23 23:16:13 +02:00
Moonchild cafaac1939 [dom media] Avoid a potential issue when assigning a media data buffer. 2024-04-17 22:30:57 +02:00
Moonchild 803f821d5b [gfx] Pull several OTS fixes from upstream to improve data safety.
- Don't check STAT designAxisSize if the designAxisCount is zero.
- Avoid potential arithmetic overflow during Buffer read operations.
- Use more careful range checks in STAT parsing.
2024-04-17 22:14:38 +02:00
Moonchild f3fb26a44f [js] Simplify tracing of arguments in MarkThisAndArguments. 2024-04-17 21:25:30 +02:00
Moonchild 27f64dc348 [network] Keep track of and check HTTP/2 header sizes. 2024-04-17 19:10:44 +02:00
Moonchild ac36221d70 [XPCOM] Warn about .xrm-ms files on Windows (treat as executable) 2024-04-17 16:30:00 +02:00
Moonchild 0f8e267fd1 Merge pull request 'Add exposed CPU flags' (#2504) from CPUflags-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2504
2024-04-15 07:41:53 +00:00
Moonchild c4665f5f6c Issue #2503 - Part 3: Add CPU capabilities to about:support. 2024-04-14 21:58:20 +02:00
Moonchild 983be16f8a Issue #2503 - Part 2b: Fix missing navigator in UpdateUtils. 2024-04-14 21:57:48 +02:00
Moonchild 6ebd47222a Issue #2503 - Part 2: Add CPU IS support flags to UpdateUtils URL substitutions. 2024-04-14 21:01:31 +02:00
Moonchild 68a4b8e3d4 Issue #2503 - Part 1: add CPU IS support flags to Navigator interface 2024-04-14 20:47:17 +02:00
Moonchild 3d76969fa8 [DOM] Add nullcheck on mDoc in GetEventTargetParent 2024-04-14 17:48:12 +02:00
Moonchild 791fd0300e Issue #2472 - Enable dialog element by default.
While work is still on-going to get layering/modal right, this should be enabled
by default for web compatibility reasons.
2024-04-13 12:07:46 +02:00
Moonchild 0635ffcca3 Merge pull request 'Add checks for IDXGIKeyedMutex failure.' (#2502) from 2470 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2502
2024-04-12 17:48:35 +00:00
Moonchild b96a2237e0 [devtools] fix issue with ctrl+c handling
See https://repo.palemoon.org/MoonchildProductions/Pale-Moon/issues/1961
2024-04-10 15:06:49 +02:00
Moonchild 59c863a900 Merge pull request 'Implement CSS shorthand properties for logical box margin and padding' (#2500) from FranklinDM/UXP-contrib:work_css-shorthand-block-inline-margin-padding into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2500
2024-04-10 12:56:20 +00:00
FranklinDM 8bfe1f3a7d Issue #2477 - Part 4: Regenerate developer tools' static CSS properties database 2024-04-09 11:08:27 +08:00
FranklinDM 878709cd23 Issue #2477 - Part 3: Logical box properties should accept auto values 2024-04-09 11:08:26 +08:00
FranklinDM ea87895dd9 Issue #2477 - Part 2: Implement shorthand properties for [margin/padding][block/inline] 2024-04-09 11:08:26 +08:00
FranklinDM 6b25fb2b3a Issue #2477 - Part 1: Implement a separate function for parsing pair box properties
This reuses existing logic from ParseGap.
2024-04-09 11:08:25 +08:00
Martok 02a1efa9fa [DOM] Simplify WorkerRunnable sanity checks and make them more readable. 2024-04-08 13:19:46 +02:00
Moonchild d65a4c0628 Issue #2470 - Check for failure of getting IDXGIKeyedMutex. 2024-04-07 23:29:39 +02:00
Moonchild c991295c93 Merge pull request 'Move CSS rules to WebIDL interfaces' (#2496) from css-webidl-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2496
2024-04-07 16:05:04 +00:00
Moonchild 763bcea405 Issue #2495 - Implement webkitURL legacy window alias for URL
Resolves #2495
2024-04-06 14:08:41 +02:00
Moonchild c87d9f3cff Merge branch 'master' into css-webidl-work
# Conflicts:
#	layout/style/StyleRule.cpp
2024-04-05 18:05:54 +02:00
Moonchild 8bc18ff5d4 Issue #2490 - Part 20: Remove the stuff that was added temporarily to deal with
a mix of WebIDL and non-WebIDL rules.
2024-04-04 20:07:33 +02:00
Moonchild f9508fa3cc Issue #2490 - Part 19: Convert CSSCounterStyleRule to WebIDL. 2024-04-04 19:52:36 +02:00
Moonchild 28836a35ed Issue #2490 - Part 18: Convert CSSKeyframesRule to WebIDL. 2024-04-04 14:13:43 +02:00
Moonchild a7d460c060 Issue #2490 - Part 17: Convert CSSKeyframeRule to WebIDL. 2024-04-04 14:00:59 +02:00
Moonchild 3434ea57c1 Issue #2490 - Part 16: Convert CSSFontFeatureValuesRule to WebIDL. 2024-04-04 10:20:43 +02:00
Moonchild 631e3a73e3 Issue #2490 - Part 15: Convert CSSFontFaceRule to WebIDL.
The .style PutForwards bit is coming along for the ride here as a new feature.
2024-04-04 10:02:17 +02:00
Moonchild b4a3d59128 Issue #2490 - Part 14: Convert CSSPageRule to WebIDL.
The .style PutForwards bit is coming along for the ride here as a new feature.
2024-04-03 16:47:23 +02:00
Moonchild cd8b0b38e8 Issue #2490 - Part 13: Convert media, supports, and moz-document rules to WebIDL.
This also converts the internal ConditionRule and GroupingRule classes.
2024-04-03 15:52:32 +02:00
Moonchild 35311d664a Issue #2490 - Part 12: Convert CSSStyleRule to WebIDL.
The .style PutForwards bit is coming along for the ride here, aligning us with
the behavior of Blink and Gecko.
2024-04-03 13:59:06 +02:00
Moonchild 9a5fe6f542 Issue #2490 - Part 11: Convert CSSImportRule to WebIDL.
Note that the .media PutForwards is a new feature coming along for the ride, now
that we're using the spec IDL.
2024-04-03 13:22:41 +02:00
Moonchild 28ba2fb374 Issue #2490 - Part 10b: Fix line endings (no code change). 2024-04-03 12:40:33 +02:00
Moonchild d423c54d9c Issue #2490 - Part 10: Convert CSSNamespaceRule to WebIDL. 2024-04-03 12:29:31 +02:00
Moonchild b3a016ac20 Merge pull request 'Emoji 15.1 Support' (#2492) from RealityRipple/UXP:emoji-15.1 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2492
2024-04-01 14:26:17 +00:00
Moonchild 536af00ab2 Issue #2490 - Part 9b: Add a CSSRule Web IDL interface.
Fix Paris bindings by providing a temporary IID for nsIDOMCSSRule
(thanks FranklinDM!)
2024-04-01 14:42:27 +02:00
Moonchild 041f0bd4f4 Merge pull request 'Remove style system magic pointer classes' (#2491) from FranklinDM/UXP-contrib:work_ss-remove-magic-pointer-classes into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2491
2024-04-01 11:30:43 +00:00
Andy dc6a8eea09 Transparent Keycap Patch 2024-03-31 23:26:34 -07:00
Andy ea4c79e18d Keycap Bug Fixes
Adds 0-9, #, and * as simple pictographs.
Duplicates (C), (R), (TM), and (M) with the Keycap suffix.
Turns Combining Enclosing Keycap into a zero-width character.
2024-03-31 12:37:56 -07:00
Moonchild f8861235ed Issue #2490 - WIP: part 9. Add a CSSRule Web IDL interface. 2024-03-31 00:47:10 +01:00
Moonchild 55bee27c30 Issue #2490 - Part 8: Get rid of css::Rule::GetDOMRule. 2024-03-30 22:32:33 +01:00
Moonchild d5add46c05 Issue #2490 - Part 7: Push the nsIDOMCSSRule implementation up to css::Rule. 2024-03-30 19:31:09 +01:00
Moonchild 13cfa63316 Issue #2490 - Part 6: Make css::Rule inherit from nsIDOMCSSRule. 2024-03-30 17:30:24 +01:00
Moonchild bbb66a5500 Issue #2490 - Part 5: Get rid of DOMCSSStyleRule. 2024-03-30 13:34:31 +01:00
Andy 90b015560d Don't Assume System Font for Emojis with Suffixes
A few dozen Emojis use otherwise general font characters in the lower codepages.
Luckily, the Emoji codepages always include either a VS16 or KeyCap suffix.
2024-03-30 04:57:34 -07:00
Andy e38b57caa7 Standardized use of Emoji Character Properties
Detection of Emoji Components, for use as suffixes of TextDefault.
Detection of Non-Presentation Emojis as TextDefault.
Detection of all Extended Pictographics as EmojiDefault.
2024-03-30 04:57:12 -07:00
Andy d003a2fba9 Update TwemojiMozilla.ttf to E15.1
Includes partially qualified and unqualified codepoints for all Emojis except (C), (R), (TM), and (M).
Updates Martinique flag.
Uses True South flag for Antarctica.
2024-03-30 04:56:20 -07:00
Moonchild b22e7e4350 Issue #2490 - Part 4: Make css::Rule wrappercached. 2024-03-30 12:39:15 +01:00
Moonchild 1c8d691c2a Issue #2490 - Part 3: Give CSS rules a PreCreate hook so we can safely wrappercache them. 2024-03-30 11:38:44 +01:00
Moonchild 5f39ff87a0 Issue #2490 - Part 2: Remove the now-unused GetExistingDOMRule() function. 2024-03-30 11:27:48 +01:00
FranklinDM 3ec13cbb4e Issue #2488 - Part 6: Define and declare CSSStyleSheet cast functions directly in StyleSheet
This renames AsGecko calls to AsConcrete and removes the header containing leftover Stylo macros.
2024-03-30 08:46:35 +08:00
FranklinDM 8dd55ce170 Issue #2488 - Part 5: Remove HandleRefPtr (exclusively used by smart pointer classes) 2024-03-30 08:46:34 +08:00
FranklinDM 1ed0fa9f83 Issue #2488 - Part 4: Remove the RestyleManagerHandle smart pointer class 2024-03-30 08:46:33 +08:00
FranklinDM 9eb661a899 Issue #2488 - Part 3: Remove the StyleSetHandle smart pointer class 2024-03-30 08:46:32 +08:00
FranklinDM b3bde74dce Issue #2488 - Part 2: Remove the DeclarationBlock class and use Declaration directly 2024-03-30 08:46:31 +08:00
FranklinDM b4224e3aff Issue #2488 - Part 1b: Move PseudoElementType getter/setter implementation of Element away from header 2024-03-30 08:46:30 +08:00
FranklinDM dbeb9a8d4f Issue #2488 - Part 1a: nsCSSPseudoClassList should not include any header 2024-03-30 08:46:30 +08:00
FranklinDM 0555400605 Issue #2111 - Follow-up: Add missing include and fix namespace conflict when building layout deunified 2024-03-30 08:46:29 +08:00
Moonchild fb88b2cc90 Merge branch 'master' into css-webidl-work 2024-03-30 00:19:21 +01:00
Moonchild 7f48de6549 Merge branch 'master' of https://repo.palemoon.org/MoonchildProductions/UXP 2024-03-30 00:15:04 +01:00
Moonchild f16c8418aa Merge pull request 'Remove Stylo from the platform' (#2487) from FranklinDM/UXP-contrib:work_stylo-removal-take3 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2487
2024-03-29 23:13:37 +00:00
Moonchild 4d90060dd8 Merge pull request 'Issue #2483 - Support DOMMatrix2DInit for addPath' (#2484) from craniumcadoo/UXP:issue-2483 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2484
2024-03-29 23:07:20 +00:00
Moonchild c0c6b38c18 Issue #2490 - Part 1: Make all CSS rules cycle-collected. 2024-03-29 18:18:36 +01:00
FranklinDM fb6a751759 Issue #2112 - Follow-up: Fix broken rule node assertion 2024-03-28 20:11:31 +08:00
FranklinDM e8e43b846c Issue #58 - Follow-up: Remove Rust binding leftovers 2024-03-26 02:21:52 +08:00
FranklinDM 3e33eda290 Issue #2112 - Part 15: Remove leftover comment 2024-03-26 02:21:51 +08:00
FranklinDM 2e8852cbf0 Issue #2112 - Part 14: Remove style context source and use rule node directly
Based on reverting bug 1260310.
2024-03-26 02:21:51 +08:00
FranklinDM df9a143414 Issue #2112 - Part 13: Remove construction context for style structs
Partial reversion of bug 1261552. This keeps the behavior of always passing the presentation context to the style structs, unlike pre-stylo where it is conditional.
2024-03-26 01:27:52 +08:00
FranklinDM 9dbaf7f6f8 Issue #2112 - Part 12: Remove reserved Servo bits from node/element flags and event states 2024-03-26 01:27:52 +08:00
FranklinDM c3fa38f0d7 Issue #2112 - Part 11: Remove dead off-thread Stylo functions in nsStyleStruct 2024-03-26 01:27:51 +08:00
FranklinDM da4399a912 Issue #2112 - Part 10: Remove remaining Stylo/Servo includes and code
Some classes have been marked for removal/merging, macros used for forwarding/casting were moved to DeprecatedUtils.h.
2024-03-26 01:25:59 +08:00
FranklinDM 425dc7f02b Issue #2112 - Part 9: Remove handling for multiple style backends 2024-03-26 01:25:53 +08:00
FranklinDM 456e1a5860 Issue #2112 - Part 8: Remove Stylo Stylesheet Cache 2024-03-26 01:25:31 +08:00
FranklinDM f82f5aaf29 Issue #2112 - Part 7: Remove Servo CSS Loader support 2024-03-26 01:25:14 +08:00
FranklinDM e18de3ac2b Issue #2112 - Part 6: Remove IsStyledByServo function and callers 2024-03-26 01:24:54 +08:00
FranklinDM 1ecde083b1 Issue #2112 - Part 5: Remove Servo from forwarding code used by magic pointer classes 2024-03-26 01:24:49 +08:00
FranklinDM 71101dc40c Issue #2112 - Part 4: Remove Stylo support for mask-image 2024-03-26 01:24:40 +08:00
FranklinDM a00ca6d871 Issue #2112 - Part 3: Remove --enable-stylo config and conditionals 2024-03-26 01:24:34 +08:00
FranklinDM 182b567fa8 Issue #2112 - Part 2: Stub out Servo functions 2024-03-26 01:24:29 +08:00
FranklinDM 7d330b89c8 Issue #2112 - Part 1: Remove Stylo tests 2024-03-26 01:24:23 +08:00
Moonchild 21c13fc9cd Revert "Update NSS to 3.90.2"
This reverts commit a79400a939.
2024-03-23 07:47:14 +01:00
Moonchild 889e3e3805 Revert "Undo build system change from NSS update to fix missing command-line utils."
This reverts commit 999640b68c.
2024-03-23 07:46:55 +01:00
Moonchild 7ad5cc471d Merge pull request 'No Issue - Only explicitly enforce GCC SSE2 optimizations when building on Intel 32-bit architectures' (#2485) from trav90/UXP-contrib:gcc-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2485
2024-03-22 23:51:42 +00:00
trav90 7ef3048c5e No Issue - Only explicitly enforce GCC SSE2 optimizations when building on Intel 32-bit architectures
SSE2 optimizations are used by default on 64-bit platforms. By no longer explicitly enabling SSE2 on 64-bit GCC, we can more easily enable other optimizations (e.g. AVX) without worrying about them being overridden by the SSE2 flags.
2024-03-22 10:28:06 -05:00
Moonchild 999640b68c Undo build system change from NSS update to fix missing command-line utils. 2024-03-21 21:54:22 +01:00
Daniel Jacobs 1abfd0f004 Issue #2483 - Slight adjustments for allowing addPath with DOMMatrix 2024-03-20 14:31:42 -04:00
Daniel Jacobs 37a033304d Issue #2483 - Support DOMMatrix2DInit for addPath 2024-03-20 18:29:30 +00:00
Moonchild 8df70dabe6 [MFBT] Make move assignment of RefPtr have the same behavior as nsCOMPtr 2024-03-20 15:55:46 +01:00
Moonchild 2c50617e64 [parser] Specialize AddAttributes for <html>/<body>. 2024-03-20 15:25:19 +01:00
Moonchild 87d7489bc3 Merge branch 'nss-update' 2024-03-20 14:35:13 +01:00
Moonchild a79400a939 Update NSS to 3.90.2 2024-03-20 14:23:51 +01:00
Moonchild 4b51e3ecc9 Merge pull request 'Colump picker should work even if there are no rows in the tree' (#2481) from yup/UXP:master into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2481
2024-03-17 15:47:41 +00:00
yup 9dbe31a41e Minor performance improvement by elimination of an unnecessary intermediate array 2024-03-17 15:41:22 +00:00
yup a5366670aa Merge branch 'master' into master 2024-03-09 18:23:08 +00:00
yup abb1298631 Colump picker should work even if there are no rows in the tree 2024-03-09 12:03:08 +00:00
Moonchild 56f255859c Merge pull request 'Return early when "this.view" does not exist (empty tree)' (#2479) from yup/UXP:master into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2479
2024-03-08 18:35:31 +00:00
yup 7a1e01c0f3 Eliminated exceptions in event handlers that happen when "this.view" does not exists (empty tree) 2024-03-08 14:04:02 +00:00
Moonchild 83857453b1 Issue #2472 - Part 3: Refactor Fullscreen stack to Top Layer stack
Fullscreen stack isn't part of the spec anymore; it's been changed to a more
generic version called Top Layer stack, which is being used by both full-screen
APIs and dialog elements.

This patch refactors it to Top Layer stack so that it can be reused for dialog
elements.

Top Layer stack spec: https://fullscreen.spec.whatwg.org/#new-stacking-layer
2024-03-07 12:24:06 +01:00
Moonchild 046c7e92a4 Issue #2472 - Part 2: Add FunctionRef callable type
Prerequisite for top layer refactor.

FunctionRef is a generic callable type that can be initialized from any
compatible callable, suitable for use as a function argument for the duration of
the function call (and no longer).
2024-03-07 11:14:20 +01:00
Moonchild 3e7fbd39df Issue #2472 - Part 1: Add helper method to directly dispatch events to widgets. 2024-03-01 13:08:06 +01:00
Moonchild 56d1a62f5d [network] Block set-cookie from multipart/x-mixed-replace 2024-02-22 22:08:23 +01:00
Eitan Isaacson 8e609c4594 [layout] Process pairs in coord list in PolyArea.
Range -1 assures the array is even with a step size of 2, avoiding lone
value processing.
2024-02-22 20:36:30 +01:00
Jens Stutte 238226ce46 [DOM] Check if WorkerRunnable::Run runs on top of WorkerThreadPrimaryRunnable::Run in a worker thread. 2024-02-22 19:53:24 +01:00
Moonchild 0d2e285caa Merge pull request 'Fix error when destroying the developer tools window and remove remaining doorhanger code' (#2476) from FranklinDM/UXP-contrib:work_fix-devtools-destroy-and-remove-doorhanger into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2476
2024-02-22 11:04:43 +00:00
FranklinDM 91309c6d9d No issue - Replacing location might throw NS_ERROR_UNEXPECTED while the developer tools window is being destroyed 2024-02-22 09:35:43 +08:00
FranklinDM 268c95d95f No issue - Remove leftover doorhanger code from the developer tools
Partially based on reverting https://bugzilla.mozilla.org/show_bug.cgi?id=1078539
2024-02-22 09:35:43 +08:00
Moonchild f0cce53b37 Merge pull request 'Use hard-coded minimum timer interval in workers' (#2474) from martok/UXP-contrib:mr/worker-timer into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2474
2024-02-10 17:13:25 +00:00
Martok 8f11d64255 Issue #2453 - Follow-Up: Use hard-coded minimum timer interval in workers.
From the spec: "If nesting level is greater than 5, and timeout is less than 4, then set timeout to 4.",
therefore not having it user-configurable doesn't really break anything.
2024-02-10 16:29:23 +01:00
Moonchild 7c32e33769 Merge pull request 'Implement new csp -src-elem and -src-attr directives' (#2469) from csp-elem-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2469
2024-02-07 12:17:21 +00:00
Moonchild 99f208ad22 Merge pull request 'Fix scrolling with mouse wheel when NPAPI is disabled.' (#2468) from athenian200/UXP:scroll_wheel_npapi_disabled into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2468
2024-02-04 22:27:15 +00:00
Moonchild 06eca091f7 Issue #2466 - Part 3: Implement style-src-elem and style-src-attr 2024-02-04 23:24:50 +01:00
Moonchild 8fc5e4bd24 Issue #2466 - Part 2: Implement script-src-elem and script-src-attr 2024-02-04 20:15:14 +01:00
Jeremy Andrews 110e4f1ca2 Issue #2467 - Fix scrolling with mouse wheel when NPAPI is disabled.
Refactors an else if statement into an else inside an if block.
2024-02-04 08:51:25 -06:00
Moonchild 73e94dd628 Issue #2466 - Part 1: Reduce nsContentPolicy type usage.
Use CSPDirective instead, since it directly deals with CSP anyway.
This cleanup prepares for the following changes.
2024-02-04 13:33:32 +01:00
Moonchild 783b48a083 Disable URL-paste content loading by default.
See https://repo.palemoon.org/MoonchildProductions/Pale-Moon/issues/1957
2024-02-02 13:28:43 +01:00
Moonchild 9279b01433 Issue #2465 - Do not use our in-tree metrics hints if using system-cairo
Use a somewhat equivalent font-options instance when using the
system-supplied cairo lib, instead of our in-tree extension.

Resolves #2465
2024-02-01 11:20:25 +01:00
Moonchild afc9a8cafa Merge pull request 'Implement support for <link rel=preload> meta' (#2463) from FranklinDM/UXP-contrib:work_dom-preload-link-ns into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2463
2024-01-28 17:20:48 +00:00
FranklinDM 476fc70de9 Issue #2158 - Follow-up: Add missing include 2024-01-29 00:53:36 +08:00
Moonchild ea7435c05e Issue #618 - Follow-up: Fix missed constant refactor preventing ExportEntries from working. 2024-01-28 15:08:57 +01:00
FranklinDM 01d0962f62 Issue #2158 - Part 5: Guard preload links support with a preference
This is enabled by default.
2024-01-27 23:10:49 +08:00
FranklinDM 16aeb39791 Issue #2158 - Part 4: Dispatch load/error events upon parsing preload links 2024-01-27 23:10:48 +08:00
FranklinDM ba97710cdf Issue #2158 - Part 3: Parse preload links as part of the HTML5 parser's speculative load queue 2024-01-27 23:10:48 +08:00
FranklinDM 56157c149a Issue #2158 - Part 2: Handle and expose preload link destination to DOM
This also defines known preload destinations and ensures it is reflected in JS.
2024-01-27 23:10:47 +08:00
FranklinDM 02c4302711 Issue #2158 - Part 1: Add the 'as' attribute to the HTML Parser 2024-01-27 23:10:47 +08:00
Moonchild 0616807ac3 Merge pull request 'Remove leftover reference to focus handler for dev edition doorhanger' (#2462) from FranklinDM/UXP-contrib:work_remove-leftover-ff-ref-devtools into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2462
2024-01-25 14:44:13 +00:00
FranklinDM 2d7a4f2655 No issue - Remove leftover reference to focus handler for dev edition doorhanger
Follow-up to 038774e52b
2024-01-25 20:50:41 +08:00
Moonchild 7182490961 [HSTS] Let parent hosts determine whether HSTS subs should be applied.
This aligns with the wording in RFC 6797.
2024-01-24 19:35:02 +01:00
Moonchild a054bcc23b Bug 1863083 2024-01-24 17:26:44 +01:00
John Schanck 2fdc4c71ce [NSS] add a defensive check for large ssl_DefSend return values. 2024-01-24 17:19:35 +01:00
Geoff Lang 6689328efe [gfx] Cherry-pick chromium:1864587 2024-01-24 16:38:28 +01:00
Daniel Holbert c757d71379 [gtk] Let printer enumeration run to completion, to avoid a GTK bug. 2024-01-24 16:21:26 +01:00
Moonchild 690127c618 No issue - Clean up some devtools comments and prefs. 2024-01-23 10:31:25 +01:00
Moonchild 038774e52b No issue - Remove leftover beta-only dev edition promo in devtools. 2024-01-23 10:22:20 +01:00
Moonchild c38a8256f3 Merge pull request 'Collected Microtask timing updates' (#2459) from martok/UXP-contrib:mr/2452-mt-updates into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2459
2024-01-18 13:15:16 +00:00
Moonchild c6a60994b7 Merge pull request 'Align selection and focus behavior more with mainstream' (#2461) from 2388-select-and-focus into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2461
2024-01-18 13:14:13 +00:00
Moonchild 38411ba78a Merge pull request 'Intersection Observer update to fix failures on sites using Document as root.' (#2460) from dbsoft/UXP:int-obs-2456 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2460
2024-01-17 17:44:06 +00:00
Moonchild c03d2c2cc5 Issue #2388 - Part 5: Make Selection::ToString flush frames 2024-01-17 13:55:23 +01:00
Moonchild 3c46488a8c No issue - Update build status messages 2024-01-17 10:42:52 +01:00
Moonchild 60f1eab6c2 Issue #2388 - Part 4: Align focus behavior more with Blink/Gecko 2024-01-16 21:54:52 +01:00
Moonchild 9851eee94a Issue #2388 - Part 3: Update tests 2024-01-16 21:28:36 +01:00
Moonchild 09b3e1deeb Issue #2388 - Part 2: move focus at every selection change when it's called by JS 2024-01-16 21:28:04 +01:00
Moonchild 993e1b50e2 Issue #2388 - Part 1: Mark Selection as "called by JS" when caused by a JS call to the selection API 2024-01-16 19:28:24 +01:00
Moonchild cf06215a9d Merge pull request 'Don't try to directly access pref on worker thread.' (#2457) from 2453-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2457
2024-01-16 12:14:31 +00:00
Martok 252c4bdc74 Issue #2452 - Handle re-entrant Microtask checkpoints from Events dispatched by StableState callbacks 2024-01-16 11:04:58 +01:00
Martok b2319aff7f Issue #2452 - Don't use WebVTTListener, JS wrapper, MediaShutdownManager in stable state
https://bugzilla.mozilla.org/show_bug.cgi?id=1443429
https://bugzilla.mozilla.org/show_bug.cgi?id=1515021
2024-01-16 11:02:51 +01:00
Martok a9f263c081 Issue #2452 - Fix getter constness
https://bugzilla.mozilla.org/show_bug.cgi?id=1443429 Pt. 2
2024-01-16 11:02:51 +01:00
Martok 9db0c6779a Issue #2452 - Prevent nsDocShell access when it is already being destroyed
https://bugzilla.mozilla.org/show_bug.cgi?id=1432396
2024-01-16 11:02:51 +01:00
Martok 16d0e3694c Issue #2452 - Bail out from PresShell::Initialize if the pres shell is being destroyed in XBLConstructorRunner
https://bugzilla.mozilla.org/show_bug.cgi?id=1428694
2024-01-16 11:02:50 +01:00
Martok fc170a373c Issue #2452 - Fire events after iterating ServiceWorkerManager::mControlledDocuments is done.
https://bugzilla.mozilla.org/show_bug.cgi?id=1413466
2024-01-16 11:02:50 +01:00
Martok 6cd9f36c28 Issue #2452 - Ensure DOM events aren't dispatched at unexpected time
https://bugzilla.mozilla.org/show_bug.cgi?id=1409985
https://bugzilla.mozilla.org/show_bug.cgi?id=1443746
2024-01-16 11:02:50 +01:00
Martok d4070c7554 Issue #2452 - Declare the NS_ERROR_DOCSHELL_DYING error
From https://bugzilla.mozilla.org/show_bug.cgi?id=1337537
2024-01-16 11:02:50 +01:00
Moonchild ac32a184f1 Merge pull request 'Guard the classic email account wizard with its own configure option' (#2455) from FranklinDM/UXP-contrib:work_config-classic-email-account-wizard into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2455
2024-01-15 20:36:46 +00:00
Moonchild 6bb1b66457 Issue #2453 - Simplify CalculateTargetTime() code and fix typo.
We should always be on a worker thread so the MainThread call isn't
needed.
Also: DOMMinTimoutValue -> DOMMinTimeoutValue
2024-01-15 20:58:30 +01:00
Moonchild be728322e0 Issue #2458 - Make HTMLInputElement.files read-write
Resolves #2458
2024-01-15 20:26:10 +01:00
Moonchild 70f567950b Issue #2453 - Don't try to directly access pref on worker thread. 2024-01-15 15:10:31 +01:00
Brian Smith cc697eb106 Issue #2456 - Intersection Observer - Accept a Document as an explicit root.
https://bugzilla.mozilla.org/show_bug.cgi?id=1617154
2024-01-15 05:54:48 -06:00
FranklinDM e2e50d065f Issue #2454 - Guard the classic email account wizard with its own configure option 2024-01-15 18:34:31 +08:00
Moonchild 133ec26f5e Merge pull request 'Allow disabling NPAPI to make GTK3-only builds possible.' (#2450) from athenian200/UXP:npapi_disable_work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2450
2024-01-14 16:56:32 +00:00
Jeremy Andrews a66c8a088f Issue #1638 - Follow-up: Fix syntax error in Part 6. 2024-01-12 00:32:33 -06:00
Moonchild 2354011d48 Issue #2451 - Send referrer headers with CORS preflight requests.
This is dependent on referrer policy.

Fixes #2451
2024-01-11 22:21:57 +01:00
Jeremy Andrews 722eaab39a Merge branch 'npapi_disable_work' of https://repo.palemoon.org/athenian200/UXP into npapi_disable_work 2024-01-11 12:30:40 -06:00
Jeremy Andrews 05cebf17e0 Issue #1638 - Part 8: Additional Mac fixes. 2024-01-11 12:30:13 -06:00
athenian200 9ea951fa6a Issue #1638 - Part 7: Allow GTK2 builds without gtk2xtbin. 2024-01-11 09:28:14 -06:00
Jeremy Andrews 174b2b76df Issue #1638 - Part 6: Disable plugin-container. 2024-01-11 07:10:27 -06:00
athenian200 9af4b97fbe Issue #1638 - Follow-up: Fix syntax error in Part 5. 2024-01-11 05:23:34 -06:00
Jeremy Andrews bbf374ad17 Issue #1638 - Part 5: Disallow mixing --enable-webrtc with --disable-npapi. 2024-01-11 04:43:33 -06:00
Jeremy Andrews ba58438b41 Issue #1638 - Part 4: Fix Mac build.
This was in the original removal bug, I just missed a couple lines.
2024-01-11 04:06:15 -06:00
Jeremy Andrews 0bf5eaaa2b Issue #1638 - Part 3: Clean up moz.build files. 2024-01-10 09:16:23 -06:00
Moonchild 2f65157f25 Merge pull request 'Don't toggle focus-within state past the nearest common flattened tree ancestor.' (#2449) from 2401-focus-within-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2449
2024-01-10 10:11:12 +00:00
athenian200 ff713f133e Issue #1638 - Part 2: Disable GTK2 when building with GTK3 and without NPAPI.
The original purpose of this issue.

Ref: BZ 1377445
2024-01-10 04:03:35 -06:00
athenian200 b787af5702 Issue #1638 - Part 1: Put NPAPI code behind MOZ_ENABLE_NPAPI.
Adds --disable-npapi as an additional build option. The default is still to build in NPAPI compatibility, but with this flag, it's finally possible to build without pulling in GTK2 on systems that don't have the package.

This essentially ifdefs everything associated with NPAPI, following various Mozilla removal bugs.

Ref: BZ 1682030, BZ 1251202, BZ 1217665, BZ 1687239
2024-01-10 04:03:35 -06:00
Moonchild 82395acfa6 Issue #2401 - Part 3: Don't toggle focus-within state past the nearest
common flattened tree ancestor.

Resolves #2401
2024-01-09 18:23:47 +01:00
Moonchild 994792bdc8 Issue #2401 - Part 2: Add GetCommonFlattenedTreeAncestor.
Passing GetFlattenedTreeParent() as the "get parent" function.

This way we can reduce the complexity in our EventStateManager by simply
calling out to the templatized function from Part 1.
2024-01-09 17:40:12 +01:00
Moonchild d36fa8bfce Issue #2401 - Part 1: Templatize GetCommonAncestor. 2024-01-09 11:32:18 +01:00
Moonchild 9dac9de154 Merge pull request 'Collection of CSP updates from Firefox 54-70.' (#2448) from dbsoft/UXP:csp-updates4 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2448
2024-01-09 09:42:42 +00:00
Brian Smith 391e17626b Issue #2402 - Fill in column in CSP Report. 2024-01-08 21:14:05 -06:00
Brian Smith 2150fb7fa9 Issue #2402 - Print Related JS-Line on CSP Violation (if any).
https://bugzilla.mozilla.org/show_bug.cgi?id=1100630
2024-01-08 08:49:05 -06:00
Brian Smith 3dd8bc0ddb Issue #2402 - CSP Violation events should have the correct sample for inline contexts.
https://bugzilla.mozilla.org/show_bug.cgi?id=1473587
Add preference to increase max length of CSP report source sample.
https://bugzilla.mozilla.org/show_bug.cgi?id=1415352
Return valid columnNumber value in CSP violation events.
https://bugzilla.mozilla.org/show_bug.cgi?id=1418246
2024-01-08 07:46:11 -06:00
Brian Smith 0fe8ac9349 Issue #2402 - Workers.setTimeout/setInterval must handle CSP rejections.
https://bugzilla.mozilla.org/show_bug.cgi?id=1490165
Has some namespace issues adding the files, so differs slightly.
2024-01-08 03:22:44 -06:00
Brian Smith a35ee1a6a5 Issue #2402 - CSP should throw EvalError when blocking eval() and Function().
https://bugzilla.mozilla.org/show_bug.cgi?id=1473024
https://bugzilla.mozilla.org/show_bug.cgi?id=1490165
2024-01-07 11:59:24 -06:00
Brian Smith d20b1f2fb6 Issue #2402 - CSP violation: blockedURI inline/eval.
https://bugzilla.mozilla.org/show_bug.cgi?id=1418241
CSP: Blocked URI should be empty for inline violations.
https://bugzilla.mozilla.org/show_bug.cgi?id=1236222
2024-01-07 11:48:56 -06:00
Brian Smith a86b4c35f1 Issue #2402 - Optionally strictly enforce the MIME type of scripts loaded by importScripts().
https://bugzilla.mozilla.org/show_bug.cgi?id=1514680
This is default on in Firefox 67 but Moonchild requested it be set off by default.
2024-01-07 08:29:30 -06:00
Brian Smith 6b00d13010 Issue #2402 - Require ServiceWorkerGlobalScope.importScripts() to only accept JavaScript MIME types.
https://bugzilla.mozilla.org/show_bug.cgi?id=1354577
Require ServiceWorkerContainer.register() to only accept JavaScript MIME types.
2024-01-07 07:37:47 -06:00
Brian Smith 830a634cec Issue #2402 - Don't call WorkerPrivate::WorkerName() to get service worker scope.
https://bugzilla.mozilla.org/show_bug.cgi?id=1350433
2024-01-07 07:34:05 -06:00
Brian Smith 80207d6d3f Issue #2402 - importScripts should be governed by script-src in Web Workers.
https://bugzilla.mozilla.org/show_bug.cgi?id=1322111
Add TYPE_INTERNAL_WORKER_IMPORT_SCRIPTS content policy.
Update the Cache API schema to account for new nsIContentPolicy type.
2024-01-06 15:32:04 -06:00
Brian Smith f4a49d6063 Issue #2402 - Move WorkerPrivate::SetPrincipal() logic into a WorkerLoadInfo method.
https://bugzilla.mozilla.org/show_bug.cgi?id=1333573
Make worker SetPrincipalOnMainThread fallible.
https://bugzilla.mozilla.org/show_bug.cgi?id=1338523
2024-01-06 15:32:04 -06:00
Brian Smith 86d22c2135 Issue #2402 - Persist response headers for offlined service worker scripts.
https://bugzilla.mozilla.org/show_bug.cgi?id=1337543
2024-01-06 15:32:04 -06:00
Brian Smith 2b14856b57 Issue #2402 - Move code to fill InternalHeaders from an nsIChannel response into utility method.
https://bugzilla.mozilla.org/show_bug.cgi?id=1337543
2024-01-06 15:32:03 -06:00
Brian Smith dfbf2aef81 Issue #2402 - Apply CSP headers to ServiceWorker when loading offlined script.
https://bugzilla.mozilla.org/show_bug.cgi?id=1337543
2024-01-06 15:32:03 -06:00
Brian Smith db049fa0cd Issue #2402 - Factor out code to set WorkerPrivate CSP from headers.
https://bugzilla.mozilla.org/show_bug.cgi?id=1337543
2024-01-06 15:32:03 -06:00
Brian Smith 27f416684f Issue #2402 - Improve ServiceWorker asserts and verify load principal does not inherit CSP.
https://bugzilla.mozilla.org/show_bug.cgi?id=1337543
2024-01-06 15:32:03 -06:00
Brian Smith 6ad6336fc9 Issue #2402 - ServiceWorker should not inherit CSP from registration principal.
https://bugzilla.mozilla.org/show_bug.cgi?id=1337543
2024-01-06 15:32:03 -06:00
Brian Smith 0044a85a07 Issue #2402 - Sanitize the nsIPrincipal used to register a service worker to ensure CSP is not persisted.
https://bugzilla.mozilla.org/show_bug.cgi?id=1337543
2024-01-06 15:32:02 -06:00
Brian Smith ec5d6d9b5d Issue #2402 - Fix SecurityPolicyViolationEvent.violatedDirective.
https://bugzilla.mozilla.org/show_bug.cgi?id=1418243
2024-01-06 15:32:02 -06:00
Brian Smith d9bd92c926 Issue #2402 - Implement security policy violation event.
https://bugzilla.mozilla.org/show_bug.cgi?id=1037335
2024-01-06 15:32:02 -06:00
Brian Smith afeab7fe26 Issue #2402 - Remove child-src deprecation warning.
https://bugzilla.mozilla.org/show_bug.cgi?id=1486331
2024-01-06 15:32:02 -06:00
Brian Smith ba183ce002 Issue #2402 - Ignore empty CSP directives.
https://bugzilla.mozilla.org/show_bug.cgi?id=1439425
2024-01-06 15:32:02 -06:00
Moonchild e3520a9118 Merge pull request 'Implement events for Promise rejection' (#2436) from martok/UXP-contrib:mr/prom-rejection-event into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2436
2024-01-06 12:09:05 +00:00
Martok ae667c9a36 Issue #2435 - Re-Implement rejected Promises events according to spec
Own implementation; upstream gets several things wrong.
2024-01-05 17:19:51 +01:00
Martok 14826c037b Issue #2435 - Implement notifying of rejected promises
Based-on: m-c 1362272
2024-01-05 17:19:51 +01:00
Martok 6bc2cfe6c1 Issue #2435 - Add onrejectionhandled and onunhandledrejection EventHandler
Based-on: m-c 1362272
2024-01-05 17:19:51 +01:00
Martok ca2f56cd5c Issue #2435 - Declare PromiseRejectionEvent WebIDL
Based-on: m-c 1338059
2024-01-05 17:19:50 +01:00
Martok 0dde96ba82 Issue #2240 - Align Microtasks and promises scheduling with spec
Microtasks, resolved Promises and Observers are handled after the sync
task that caused them, in the order they were generated.
Also simplifies reentrancy handling.

Based-on: m-c 1193394
2024-01-05 17:19:42 +01:00
Martok 980956063f Issue #2435 - Make CycleCollectedJSContext.h dependency explicit 2024-01-05 17:12:34 +01:00
Moonchild babe1377c6 Merge pull request 'No longer force tcp send buffer size on HTTP/2 uploads > 128KB' (#2431) from martok/UXP-contrib:2430-http2 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2431
Reviewed-by: Moonchild <moonchild@palemoon.org>
2024-01-03 21:40:12 +00:00
Martok 5e53809bb7 Issue #2430 - No longer force tcp send buffer size on HTTP/2 uploads > 128KB
With connection-level and stream-level flow control, it is not needed.
On fast connections with large-ish BWP, this can improve upload speed by > 5x
2024-01-02 01:41:02 +01:00
Martok c92b079235 Issue #2430 - Allow network.http.spdy.chunk-size to be larger than 16K
According to https://datatracker.ietf.org/doc/html/rfc7540#section-4.2    The size of a frame payload is limited by the maximum size that a
    receiver advertises in the SETTINGS_MAX_FRAME_SIZE setting. This
    setting can have any value between 2^14 (16,384) and 2^24-1
    (16,777,215) octets, inclusive.
2024-01-02 01:41:02 +01:00
Moonchild 9e3d5c38e8 Bump platform version 2024-01-01 18:35:14 +01:00
Moonchild 13476d771e Merge pull request 'No issue - Allow embedded search module in HYPE_ICEDOVE project' (#2433) from g4jc/UXP-contrib:hype_ice into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2433
2024-01-01 14:35:01 +00:00
Moonchild 1c298ec2a6 Merge pull request 'Fix debug build assertions' (#2432) from g4jc/UXP-contrib:2410_debug into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2432
2024-01-01 14:34:29 +00:00
Gaming4JC bf94026f51 No issue - Allow embedded search module in HYPE_ICEDOVE project 2023-12-30 22:50:55 -05:00
Gaming4JC 06714827ac Debug: Remove assertion for nsDOMNavigationTiming.
As mentioned in issue #2410, this aggressive assertion can cause an uneeded crash during debug build runs.
2023-12-30 22:35:42 -05:00
Gaming4JC be7d317f21 Issue #1442 Follow-up: Fix debug assertion in JSFun
Change in d5020b69bd introduced a debug build crash, this fixes the crash by properly porting the changes to an assertion as mentioned in issue #2410.
2023-12-30 22:35:38 -05:00
Moonchild bfe71e3271 No issue - Tighten default script time-outs and expose stop_slow_scripts
The timings here are still slightly more lenient than the hard-coded
fallback timings in code (10/20 for content/chrome respectively) but
we definitely should not need very long time-outs by default on Chrome
scripts anymore.

Also exposes dom.always_stop_slow_scripts to about:config since we're
making it also UI-configurable in Pale Moon and it just makes sense not
to hide this option.
2023-12-29 22:56:38 +01:00
Moonchild c4354d3775 Issue #2407 - Rename full-screen-api.ignore-widgets
Renames to full-screen-api.restrict-to-window and clarifies comments for
its intended use.
Resolves #2407.
2023-12-29 13:53:16 +01:00
Moonchild 22def28c94 Merge pull request 'No Issue - Fix syntax in js/src/jsapi-tests/moz.build' (#2411) from mrnhmath/UXP:jstests-fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2411
2023-12-29 10:54:49 +00:00
Matheus Marinho d79038b500 No Issue - Fix syntax in js/src/jsapi-tests/moz.build 2023-12-28 15:01:38 -03:00
Moonchild 9a3ac861de Revert "[XPCOM] Compare return value of readlink in nsLocalFileUnix::GetNativeTarget"
This reverts commit 66b07ce699.
2023-12-21 14:04:34 +01:00
Kershaw Chang 6929ce1f87 Bug 1736385 - Make sure thread is alive in CacheIOThread::ThreadFunc 2023-12-20 21:52:13 +01:00
Moonchild eaaa7ec3ab [dom] Better handling of aborted websocket workers.
Catch the case where we are in worker-shutdown but are still connecting
and make filing and closing connections a bit more robust with a RefPtr.
2023-12-20 21:41:00 +01:00
Barret Rennie 66b07ce699 [XPCOM] Compare return value of readlink in nsLocalFileUnix::GetNativeTarget 2023-12-20 18:33:23 +01:00
Moonchild dda1cf6f26 [layout] Always check against fragment length in nsTextFrame 2023-12-20 13:19:00 +01:00
Moonchild 779fc8abf3 Bug 1868901 2023-12-20 07:34:04 +01:00
Jeremy Andrews 87b346631f No Issue - Add full-screen-api.ignore-widgets pref to about:config.
This was already in the codebase, but not exposed by default. Mozilla exposed
the pref to fulfill user requests in Firefox 59. Forum users requested the same feaure of pseudo-fullscreen windows. Seems minor enough not to be worth
creating an issue for, since users can already access this by creating a bool
pref.

Ref: BZ 1422535
2023-12-19 00:23:03 -06:00
Moonchild b6121d3525 Merge pull request 'Add a pref to disable CSP reporting.' (#2406) from 2405 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2406
2023-12-18 11:56:45 +00:00
Moonchild 49a6a85969 Issue #2405 - Add a pref to disable CSP reporting.
Resolves #2405
2023-12-17 22:56:04 +01:00
Moonchild ce717e2633 No issue - Allow redirects for requests that require preflight
Spec update, see Bug 1312864
2023-12-12 12:38:45 +01:00
Moonchild b2399c9b76 [DOM] Fix double-free crash in MessagePort.cpp 2023-12-10 17:02:56 +01:00
Moonchild dd2f013047 Merge pull request 'Initial XULRunner bringup' (#2389) from mrnhmath/UXP:xulrunner-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2389
2023-12-03 23:54:21 +00:00
mrnhmath bc6de3eb9d Merge branch 'master' into xulrunner-work 2023-12-03 16:46:50 +00:00
Moonchild 27c8f022f1 Merge pull request 'Update ffvpx lib to 6.0.1' (#2398) from trav90/UXP-contrib:ffvpx-601 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2398
2023-12-02 07:46:08 +00:00
Moonchild 7ee0259133 Merge pull request 'Fix LDAP on Linux.' (#2400) from athenian200/UXP:ldap-fix-extern-c into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2400
2023-12-02 07:43:46 +00:00
Jeremy Andrews c84c6189cf Issue #2399 - Fix LDAP on Linux. 2023-12-01 19:01:18 -06:00
trav90 1f7023294a Issue #2317 - Follow-up - Update ffvpx to 6.0.1 2023-12-01 16:12:00 -06:00
Moonchild 041e7e7e47 Merge pull request 'Fix click handling.' (#2397) from toplevel-click-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2397
2023-12-01 21:50:24 +00:00
Moonchild 4b1b9cac33 Issue #2362 - Fix click handling according to the spec.
This removes some hackery surrounding preventing content clicks, and in
general handles auxclick as it should, firing that event on secondary
buttons (wheel/right on default setup for right-handed mouse).
2023-11-30 18:56:26 +01:00
mrnhmath f9898e24e9 Merge branch 'master' into xulrunner-work 2023-11-30 16:39:41 +00:00
Matheus Marinho b6bb2995b1 Issue #2391 - Follow-up: Don't discriminate against Darwin for the stub name 2023-11-30 13:35:23 -03:00
Moonchild 37e49bec28 Merge pull request 'Add general Big Endian ICU data file and initial Mac PowerPC support.' (#2392) from dbsoft/UXP:macppc-rebased3 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2392
2023-11-30 08:54:40 +00:00
Moonchild 0c392684fa Merge branch 'master' of https://repo.palemoon.org/MoonchildProductions/UXP 2023-11-30 00:03:10 +01:00
Moonchild 244c1e9ad1 Revert "No issue - Stop supporting data: scheme in SVG <use> elements."
This reverts commit 7e60482d80.

Of course it's not that simple. In Mozilla land they are also running
into issues but of a different variety and it was backed out there also.
2023-11-29 23:42:28 +01:00
Moonchild f85cb8d2f7 Merge pull request 'Fix crashes when canceling dynamic imports.' (#2395) from dbsoft/UXP:dmi-fix-2387 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2395
2023-11-29 22:25:52 +00:00
Moonchild c29be84c26 Merge pull request 'Add support for texture recycling' (#2394) from trav90/UXP-contrib:Issue2393 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2394
2023-11-29 20:32:38 +00:00
trav90 425914e43d Issue #2393 - Part 8 - Fix TextureClient-creating functions 2023-11-29 10:23:04 -06:00
trav90 6bfef39da0 Issue #2393 - Part 7 - Add missing #include to D3D11YCbCrImage.cpp 2023-11-29 07:56:15 -06:00
trav90 a7d9607b7a Issue #2393 - Part 6 - Remove stray "+". 2023-11-28 14:54:12 -06:00
trav90 5dfa048f04 Issue #2393 - Part 5 - Extract D3D11MTAutoEnter and reuse 2023-11-28 14:44:29 -06:00
trav90 3f497c7991 Issue #2393 - Part 4 - Reduce VideoQueue size for GPU based images 2023-11-28 14:42:53 -06:00
trav90 44b5594756 Issue #2393 - Part 3 - Remove extra copy of YUV buffer on Windows 2023-11-28 14:41:34 -06:00
trav90 d7baf6fc35 Issue #2393 - Part 2 - Add D3D11YCbCrImage type and related methods
Will allow to directly upload a YUV420 buffer into a D3D11 texture.
2023-11-28 14:40:11 -06:00
trav90 907ff19190 Issue #2393 - Part 1 - Allow client side uploads on Intel hardware 2023-11-28 14:38:32 -06:00
Brian Smith 2aee4a7692 Issue #2387 - Remove a missed AddRef() which could cause leaks.
Update comments explaining how the reference counting works.
2023-11-28 11:55:03 -06:00
Brian Smith 65d318f307 Issue #2387 - Collection of fixes related to a crash while canceling a dynamic import.
Add AddRef/Release hooks for embedding's script or module private value and set this script source object where appropriate.
https://bugzilla.mozilla.org/show_bug.cgi?id=1519140 Partial, no Value passing changes.
Clear the list of dynamic import requests after cancelling them in ScriptLoader::ParsingComplete as we do for other requests.
https://bugzilla.mozilla.org/show_bug.cgi?id=1291535
ScriptLoader::OnStreamComplete never returns a failure.
https://bugzilla.mozilla.org/show_bug.cgi?id=1627275
Also cancel the correct kind of parser for Modules.
2023-11-27 23:30:25 -06:00
mrnhmath 9a99a6ce3c Merge branch 'master' into xulrunner-work 2023-11-27 00:43:42 +00:00
Matheus Marinho 58ddf7abf4 Issue #2391 - Part 12: Use XML-style license block in simple.xul 2023-11-26 21:40:55 -03:00
Matheus Marinho a803a6c13b Issue #2391 - Part 11: Remove obsolete define for older MSVC
Also cleans up trailing spaces.
2023-11-25 18:50:53 -03:00
Matheus Marinho 77c99edbd8 Issue #2391 - Part 10: Update README 2023-11-25 18:50:46 -03:00
Matheus Marinho 8efcea0172 Issue #2391 - Part 9: Remove resource edit tool
Broken and largely unused outside B2G and Fennec
2023-11-25 18:50:36 -03:00
Matheus Marinho 9c121d2651 Issue #2391 - Part 8: Remove deb packaging target 2023-11-25 18:50:28 -03:00
Matheus Marinho 06d4d4f9c5 Issue #2391 - Part 7: Restore Windows installer folder 2023-11-25 18:50:19 -03:00
Matheus Marinho bcbfdfa370 Issue #2391 - Part 6: Use platform defaults 2023-11-25 18:50:13 -03:00
Matheus Marinho cf26dcd241 Issue #2391 - Part 5: Restore xulrunner-stub name overriding 2023-11-25 18:50:06 -03:00
Matheus Marinho 891b4cf513 Issue #2391 - Part 4: Restore building of stub, examples and (the bits of) installer 2023-11-25 18:49:55 -03:00
Matheus Marinho 23dc95f80a Issue #2391 - Part 3: Restore build.mk 2023-11-25 18:49:38 -03:00
Matheus Marinho 85fc119179 Issue #2391 - Part 2: Return the correct path for xulrunner 2023-11-25 18:49:31 -03:00
Matheus Marinho 169518553e Issue #2391 - Part 1: Revert XULRunner removal
This reverts commits 0f52679d2e and 4a7af0d90f.
Also accounts for non-comm building and comment changes.
2023-11-25 18:49:17 -03:00
Moonchild 6cd8c381b5 Issue #2381 - Fix error() mistake. 2023-11-25 17:16:28 +01:00
Moonchild 74266b6c30 Merge pull request 'Implement write-only version of Navigator.clipboard' (#2386) from 2361-nav-clipboard-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2386
2023-11-23 17:30:40 +00:00
Moonchild 231a8f6989 Merge branch 'master' into 2361-nav-clipboard-work
# Conflicts:
#	modules/libpref/init/all.js
2023-11-23 18:29:27 +01:00
Moonchild 6180288a7a [WebGL] Flip the validation state for gl_KHR_no_validation.
The original state was inverted due to confusion due to a double
negative (not:no_error).
This validation should only be enabled on Windows (for now).
Future tracking and discussion in BZ 1862039
2023-11-23 18:05:58 +01:00
Moonchild 9ed96de5a6 [DOM] Improve MessagePort state machine. 2023-11-23 17:32:44 +01:00
Moonchild a81085e7b7 [Network] Fix relative URL path starting with multiple slashes 2023-11-23 16:08:26 +01:00
Moonchild 88a656ec70 [DOM] Check if rootDoc is secure context for web compat 2023-11-23 14:44:33 +01:00
Moonchild e953529b5d [WebGL] Turn on more validation/error checking in webgl (when not on Win) 2023-11-23 14:05:37 +01:00
Brian Smith 7ffbfde627 Issue #2051 - Part 5 - Identify intel32 and powerpc platform types for Mac packaging.
Fix warnings building on MacOS 10.5 PPC.
2023-11-23 01:42:12 -06:00
Brian Smith 9dfc190714 Issue #2378 & #2051 - Part 4 - Remove unused moz_xposix_memalign().
Also switch to using HAVE_POSIX_MEMALIGN for Mac PowerPC tests.
When there is no posix_memalign() on Mac, just call malloc().
2023-11-23 01:42:12 -06:00
Brian Smith af52fd45f1 Issue #2051 - Part 3 - Use pre-built big-endian ICU data file for big-endian builds.
https://bugzilla.mozilla.org/show_bug.cgi?id=1264836
Disable unused ICU code during build.
2023-11-23 01:42:12 -06:00
Brian Smith 4f010e9218 Issue #2051 - Part 2 - Fix building with GCC 12 and on newer versions of MacOS.
AvailabilityMacros.h needed to be included manually, or it builds old font code.
2023-11-23 01:42:11 -06:00
Brian Smith 8cffdc299f Issue #2051 - Part 1 - Initial changes to get UXP building on Mac 10.5 PowerPC.
Additionally update the version detection back to 10.5 and forward to 14.
Fill some parts with code from TenFourFox when changes are not obvious.
Using gcc 7 from MacPorts, the gcc 4.8 TenFourFox used is too old.
Don't use GNU as on MacPPC it is too old.
Fix struct/class sizes by limiting bool size.
2023-11-23 01:42:11 -06:00
Moonchild 02e572c000 Issue #2361 - Enable Navigator.clipboard by default. 2023-11-19 16:22:59 +01:00
Gerald Squelart 3a092d3ae6 Bug 1332825 - Use move semantics in MozPromise::All() and AllPromiseHolder.
MozPromise::All sets up 'Then' lambdas on all sub-promises, each one
taking the resolve/reject object by value. Since this value will not be
used again in the lambda, it is safe to Move it, and from there
MozPromiseHolder::Resolve/Reject can also Move it again into the holder
storage, potentially saving two copies per Resolve/Reject. Also, once
all sub-promises have been resolved, the resolve-values can be Move'd
into the joining promise's Resolve function.
2023-11-19 16:19:11 +01:00
Moonchild 15d1f659a4 Issue #2249 - Stop advertising FIPS being a thing in the device manager.
If it can't be enabled, don't show the button at all
(don't just disable it)
2023-11-16 21:15:19 +01:00
Moonchild 272b8e43ac Issue #2361 - Remove clipboard-read code
Web content should never read the clipboard; extensions have other APIs
they can use through XPCOM so do not need to go through
Navigator.Clipboard, removing the only reason why it would even be here.
2023-11-16 01:34:40 +01:00
Moonchild 1ea0595e59 Issue #2361 - Base implementation of Navigator.Clipboard
This hard-refuses any reads from clipboard with a promise rejection.
2023-11-15 21:58:44 +01:00
Moonchild a14d588673 Merge pull request 'Remove MOZ_TREE_FREETYPE and freetype2 from tree.' (#2383) from athenian200/UXP:remove_tree_freetype into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2383
2023-11-15 14:10:20 +00:00
Moonchild fd81fe325f Merge pull request 'Switch to NSS mozpkix and update our cert signature handling' (#2384) from mozpkix-PSM-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2384
2023-11-15 14:05:14 +00:00
Moonchild baa57dd092 Merge branch 'master' of https://repo.palemoon.org/MoonchildProductions/UXP 2023-11-15 12:19:49 +01:00
Moonchild 465ae3c5e5 Revert "No Issue - add mutex in EventSource"
This reverts commit e4643f5bed.

Apparently causes deadlocks in Linux.
2023-11-15 12:19:13 +01:00
Moonchild fad42bb2d7 Revert "No Issue - add mutex in EventSource"
This reverts commit e4643f5bed.

Apparently causes deadlocks in Linux.
2023-11-15 11:34:15 +01:00
Jeremy Andrews d8bc8410b0 Issue #1312 - Switch to X-Mailer, and pull from AppInfo instead of HTTP headers.
I've been thinking about this issue, and ultimately it's just correcting a
mistake Mozilla made that no consumer of UXP's MailNews ever complained about
before, so I think it's reasonable to fix the default behavior first, and then
let others complain before I start worrying about prefs or ifdefs. One thing
at a time.
2023-11-14 23:47:34 -06:00
Moonchild 0b2e876d7d Issue #2366 - Part 5: Update mailnews core to use NSS mozpkix. 2023-11-14 17:49:28 +01:00
Moonchild 8f80ba860d Issue #2366 - Part 4: Remove old code in security/pkix 2023-11-14 17:43:13 +01:00
Moonchild cb509b2318 Issue #2366 - Part 3: Support RSA-PSS signatures on certificates 2023-11-14 17:36:42 +01:00
Moonchild c1e972f199 Issue #2366 - Part 2: PSM changes for pkix signature verification changes.
NSS 3.77 changed how mozilla::pkix verifies signatures.
This patch makes the corresponding changes in PSM.
2023-11-14 17:35:44 +01:00
Moonchild d8e44207ed Issue #2366 - Part 1: Switch PKIX handling over to NSS mozpkix 2023-11-14 17:28:39 +01:00
Jeremy Andrews acb1d52fe4 Issue #2382 - Move font-related stuff back to old-configure.
It's really easy to overlook configure options in moz.configure,
since most of what we work with is old-configure. Might as well move it
back in here so we can keep track more easily.
2023-11-13 20:59:54 -06:00
Jeremy Andrews 2fa3a6935e Issue #2382 - Remove remnants of MOZ_TREE_FREETYPE. 2023-11-13 20:59:44 -06:00
Jeremy Andrews 8d9c0d1209 Issue #2382 - Remove in-tree freetype2 library. 2023-11-13 20:59:33 -06:00
Jeremy Andrews 1d709ef0af Issue #2382 - Don't build dummy freetype2 library.
We don't actually build this, the build system just generates the
ghost of a static lib that pulls in OS libs. Someone made a mistake
at Mozilla years ago that they have not noticed to this day. They
only ever built freetype2 on Android, GTK always used the system FT2.
2023-11-13 20:59:17 -06:00
Moonchild f1f7466a72 No issue - Stop supporting data: scheme in SVG <use> elements. 2023-11-13 19:28:44 +01:00
Moonchild a36a691826 Merge pull request 'Use elfdump on SunOS instead of readelf.' (#2380) from athenian200/UXP:sunos-elfdump-fix into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2380
2023-11-13 11:46:33 +00:00
Moonchild 9816215ea7 Issue #2381 - Remove system-nspr/nss leftovers
Resolves #2381
2023-11-13 00:26:23 +01:00
Moonchild 294698153c Issue #1053 - Remove Android block in security/moz.build
Just ran across this, and thought I'd kick it off while there.
2023-11-13 00:02:06 +01:00
Moonchild db4ddc5f68 Merge pull request 'Replace MOZ_FALLTHROUGH with [[fallthrough]]' (#2379) from 2343-fallthrough-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2379
2023-11-12 20:30:17 +00:00
Moonchild 9c75c8235e Issue #2343 - Fix typo 2023-11-12 18:07:44 +01:00
Moonchild d854696ec9 Issue #2343 - Replace missed occurrences in .mm files 2023-11-12 17:59:41 +01:00
athenian200 98f59fb96c Issue #1824 - Use elfdump on SunOS instead of readelf.
GNU readelf isn't available as consistently as I assumed across SunOS,
and it can be named different things on different illumos distros (some call
it readelf, others call it greadelf, etc), so it's safer to use elfdump.
This is a fairly easy fix, just kind of annoying.
2023-11-11 10:39:42 -06:00
Moonchild 734f0957fb Issue #2343 - replace MOZ_FALLTHROUGH with [[fallthrough]]
Basically a S&R. Removed the macro and adjusts IDL codegen accordingly.
2023-11-11 14:27:03 +01:00
Moonchild c789882a29 Merge pull request 'Replace MOZ_MUST_USE with [[nodiscard]]' (#2375) from 2342-nodiscard-work into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2375
2023-11-11 01:55:07 +00:00
Moonchild f9ad625822 Issue #2342 - Fix attribute order in misc files (found by clang builds) 2023-11-10 23:34:34 +01:00
Moonchild c43a68113f Issue #2342 - Fix attribute order in nsIPipe.idl 2023-11-10 13:50:37 +01:00
Moonchild e869b44d0f Issue #2342 - Don't use [[nodiscard]] in C mode in mozalloc.
Since both gcc and clang support the internal __attribute__ form, and
this is guarded by HAVE_POSIX_MEMALIGN which is not a Windows thing,
it's safe to just use that attribute style unconditionally.
2023-11-10 10:53:47 +01:00
Moonchild 93eee35e84 Merge pull request 'Fix Linux and Oracle Solaris builds after recent changes.' (#2377) from dbsoft/UXP:sedfix-2376 into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2377
2023-11-09 12:54:20 +00:00
Moonchild ad134c48d6 Merge pull request 'Remove --enable-stdcxx-compat option.' (#2374) from athenian200/UXP:old-stdcxx-compat-cleanup into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2374
2023-11-09 12:52:52 +00:00
Moonchild e4643f5bed No Issue - add mutex in EventSource
Potentially avoids a gc crash when load is high.
2023-11-09 12:25:41 +01:00
Brian Smith bcc531f53b Issue #2281 - Follow-up: Don't include headers in extern "C".
In C++17 mode using GCC 13 on Linux this is causing C linkage
to be applied to the throw_gcc.h functions instead of C++.
2023-11-08 23:24:46 -06:00
Brian Smith 007b998b23 Issue #2376 - Split NSPR sed into BSD and GNU.
Mac and the BSDs use [^[:space:]].
Use GNU sed on other platforms with \S.
2023-11-08 19:20:13 -06:00
Moonchild 2637007c78 No Issue - Adjust configure to deal with FreeBSD regex breakage for \S 2023-11-08 15:34:07 +01:00
Moonchild 3dfad03649 Issue #2342: Remove MOZ_MUST_USE macro 2023-11-08 13:50:54 +01:00
Moonchild 190e7bd30a Issue #2342: Use [[nodiscard]] in /mfbt 2023-11-08 13:50:33 +01:00
Moonchild 292ece5fde Issue #2342: Use [[nodiscard]] in /xpcom and xpidl parser 2023-11-08 13:50:12 +01:00
Moonchild ccc8c3b988 Issue #2342: Use [[nodiscard]] in /uriloader /widget
Also a few misc low-volume places.
2023-11-08 13:49:51 +01:00
Moonchild d53992cc12 Issue #2342: Use [[nodiscard]] in /netwerk 2023-11-08 13:49:30 +01:00
Moonchild 6f7a751520 Issue #2342: Use [[nodiscard]] in /memory and remove Sun Studio hack 2023-11-08 13:49:08 +01:00
Moonchild 037fb1d123 Issue #2342: Use [[nodiscard]] in /media 2023-11-08 13:48:43 +01:00
Moonchild 706d07b3d5 Issue #2342: Use [[nodiscard]] in /js 2023-11-08 13:48:12 +01:00
Moonchild eb7be8c637 Issue #2342: Use [[nodiscard]] in IPDL generation and fix warnings
DOM plugin code had two warning in IPC caught by [[nodiscard]], these
were fixed in one go.
2023-11-08 13:47:43 +01:00
Moonchild 080c8cc134 Issue #2342: Use [[nodiscard]] in /ipc 2023-11-08 13:47:10 +01:00
Moonchild 8e81d25f5d Issue #2342: Use [[nodiscard]] in /hal /image and /intl 2023-11-08 13:46:01 +01:00
Moonchild 0cfefdfd42 Issue #2342: Use [[nodiscard]] in /accessible and /caps 2023-11-08 13:45:38 +01:00
Moonchild ad321f50d9 Issue #2342: Use [[nodiscard]] in /gfx and /layout 2023-11-08 13:45:15 +01:00
Moonchild cd8c5dae0c Issue #2342: Use [[nodiscard]] in /dom 2023-11-08 13:44:49 +01:00
Moonchild 7f99af4101 Merge pull request 'Switch our tree to building with c++17' (#2372) from 2281-c++17-buildwork into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2372
2023-11-08 12:33:50 +00:00
Moonchild e6f9b29951 Issue #2281 - Exclude throw wrapping on modern libcpp.
As discussed.
2023-11-07 19:54:01 +01:00
Moonchild 7181c37a39 Merge pull request 'Clean up GMP decryptor code' (#2368) from GMPdecryptor-cleanup into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2368
2023-11-07 01:40:09 +00:00
Jeremy Andrews 6e0ec4b5bc Issue #2373 - Remove all remaining traces of CHECK_STDCXX.
As far as I can tell, all this code is unused in our platform. GCC older than
7 didn't have the macro _GLIBC_RELEASE. As far as I can tell, using newer GCC
means you don't have to check for incompatible symbol versions in the build
system, not even if you are compiling with clang against GCC's libc.
2023-11-05 20:54:31 -06:00
Jeremy Andrews ab51260232 Issue #2373 - Remove obsolete GLIBCXX version checks.
These version checks were only used with --enable-stdcxx-compat,
which as far as I can tell no UXP application has ever relied on.
The only use case seems to have been building with clang against an
old version of GCC's libc that predates C++11, let alone C++17.
2023-11-05 20:54:20 -06:00
Jeremy Andrews 34cadf6068 Issue #2373 - Remove --enable-stdcxx-compat option. 2023-11-05 20:54:03 -06:00
Moonchild 087aa28bc7 Issue #2281 - Patch out google protobuf inheritance from std::iterator
Updating Iterators to be compatible with C++17

The std::iterator class is being deprecated on MSVC++,
and currently if the compilation flag /std:c++latest
is used a warning is issued in this regard if any
iterators use the class as a base class.

If an external source file being compiled includes
the repeated_field.h header, the iterator clases
RepeatedPtrIterator and RepeatedPtrOverPtrsIterator
trigger the warning.

This change solves the warning and should avoid it in
the future when the default is to remove the class.

See https://github.com/protocolbuffers/protobuf/commit/2949ebd842e25c1bcb8b63b377a454a0887ea5a2
2023-11-05 20:05:27 +01:00
Moonchild d0d212143a Merge pull request 'No Issue - Structured Clone Spec Compliance and Bugfix' (#2365) from Basilisk-Dev/UXP-contrib:master into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2365
2023-11-05 12:38:54 +00:00
Moonchild 05abfd8200 Issue #2281 - Remove the use of non-standard namespace std::tr1 in
Google's WebRTC gtest code
2023-11-05 13:17:15 +01:00
Moonchild a8a9d2cbd4 Issue #2281 - Force clobber
Without a clobber, mozconfigure doesn't properly pick up the /std:c++17
or -std=gnu++17 compiler switches needed to put them into C++17 mode.
2023-11-05 13:16:51 +01:00
Moonchild c87116b332 Issue #2281 - Add some deduction guides for class template arguments.
This is necessary if we want to start using Span() constructors
instead of the MakeSpan() kludge.
2023-11-05 13:16:39 +01:00
Moonchild e29ae4e08c Issue #2281 - Default to C++17 when building.
Configure the toolchain to default to C++17 language standard with
optional gnu extensions (if on GCC)
2023-11-05 13:16:24 +01:00
Moonchild 865d49bdc1 Issue #2281 - Avoid class-static constexpr in TypedArrayObject 2023-11-05 13:16:08 +01:00
Moonchild 9074b8d943 Issue #2281 - Build LZ4 as C instead of including it as C++. 2023-11-05 13:15:56 +01:00
Moonchild 01c37ba21f Issue #2281 - The 'register' storage class is no longer a thing in c++17 2023-11-05 13:15:39 +01:00
Moonchild b886cfadff Issue #2281 - Mark mozalloc new() as noexcept to aligh with what the VC
runtime expects.

Currently spams warnings but may actually error out if not fixed, or
result in undefined behaviour if mismatching signatures are treated as
redeclarations with different exception specifications.
2023-11-05 13:15:26 +01:00
Moonchild 73169b6863 Issue #2281 - Replace std::iterator inheritance with iterator traits
definitions (as required by C++17).
2023-11-05 13:15:08 +01:00
Moonchild 7a9e29d580 Merge pull request 'Various SunOS Fixes, rebased on current master.' (#2370) from athenian200/UXP:sunos_update_rebased into master
Reviewed-on: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2370
2023-11-04 21:48:02 +00:00
athenian200 98cb21f1bd Issue #1824 - Support SunOS Linker mapfiles.
Generating OS-appropriate mapfiles from a provided SYMBOL_FILE is
apparently required to work with newer ffvpx. Nothing else in our
codebase actually seemed to require it. Also seems to reduce the amount
of console spam I see relating to symbol visibility during the build
process, and I think it even makes libxul.so link a bit faster.

Signed-off-by: athenian200 <athenian200@outlook.com>
2023-11-04 13:36:18 -05:00
athenian200 8a11926150 Issue #1824 - Move to GCC 10.
It seems to work, but it is a lot slower than compiling with GCC 7.

Signed-off-by: athenian200 <athenian200@outlook.com>
2023-11-04 13:35:45 -05:00
Moonchild 6652764751 Issue #2346 - Remove now-unused DecryptorId 2023-11-03 21:50:37 +01:00
Moonchild d16bc65a16 Issue #2346 - Back-factor GetDecryptingGMPVideoDecoder to GetGMPVideoDecoder
The latter was still there as an alias for webRTC tests, making this
a bit simpler because the interface was still there.
2023-11-03 16:48:15 +01:00
Moonchild dc93e309e2 Issue #2346 - Cut out GMPDecryptor code 2023-11-03 16:26:01 +01:00
Basilisk-Dev fc1697622c No Issue - StructuredClone serialize and deserialize should treat back reference consistently
Backport of https://bugzilla.mozilla.org/show_bug.cgi?id=1538622
2023-10-30 15:38:40 -04:00
Basilisk-Dev ecb8ae6aba No issue - Structured clone algorithm doesn't serialize Array Length contrary to HTML spec, resulting in truncation of trailing sparse arrays like [1,2,3,,]
Backport of https://bugzilla.mozilla.org/show_bug.cgi?id=1476955
2023-10-30 15:36:44 -04:00
3780 changed files with 177138 additions and 827340 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.
Removal of SIMD.js and associated scalar types requires CLOBBER. (Issue #2307)
Clobber for NSS update
+7
View File
@@ -19,6 +19,13 @@ If you are interested in the development and building side of things, some
information will be available on the [Pale Moon developer site](http://developer.palemoon.org).
You are also always welcome to get in touch with our community on the [Pale Moon forum](https://forum.palemoon.org/).
### Code search
While our repo has basic code searching capabilities (via `git grep`), you are strongly
encouraged to instead use the dedicated code search and cross-referencing site:
[https://xref.palemoon.org/](https://xref.palemoon.org/)
This repo and a copy of the front-end are amalgamated in the `goanna-central` index.
### A note about trademarks and branding
Although this repository is primarily licensed under Mozilla Public License v2.0, the
+4
View File
@@ -7,6 +7,10 @@
* ROLE(geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role, nameRule)
*/
#ifndef NSAccessibilityCellRole
#define NSAccessibilityCellRole NSAccessibilityUnknownRole
#endif
ROLE(NOTHING,
"nothing",
ATK_ROLE_UNKNOWN,
+1 -1
View File
@@ -80,7 +80,7 @@ StyleInfo::TextIndent(nsAString& aValue)
}
void
StyleInfo::Margin(css::Side aSide, nsAString& aValue)
StyleInfo::Margin(Side aSide, nsAString& aValue)
{
MOZ_ASSERT(mElement->GetPrimaryFrame(), " mElement->GetPrimaryFrame() needs to be valid pointer");
aValue.Truncate();
+9 -1
View File
@@ -44,7 +44,9 @@
#ifdef XP_WIN
#include "mozilla/a11y/Compatibility.h"
#include "mozilla/dom/ContentChild.h"
#ifdef MOZ_ENABLE_NPAPI
#include "HTMLWin32ObjectAccessible.h"
#endif
#include "mozilla/StaticPtr.h"
#endif
@@ -55,7 +57,9 @@
#include "nsImageFrame.h"
#include "nsIObserverService.h"
#include "nsLayoutUtils.h"
#ifdef MOZ_ENABLE_NPAPI
#include "nsPluginFrame.h"
#endif
#include "nsSVGPathGeometryFrame.h"
#include "nsTreeBodyFrame.h"
#include "nsTreeColumns.h"
@@ -79,7 +83,7 @@
#include "XULTabAccessible.h"
#include "XULTreeGridAccessibleWrap.h"
#if defined(XP_WIN) || defined(MOZ_ACCESSIBILITY_ATK)
#if (defined(XP_WIN) || defined(MOZ_ACCESSIBILITY_ATK)) && defined(MOZ_ENABLE_NPAPI)
#include "nsNPAPIPluginInstance.h"
#endif
@@ -431,6 +435,7 @@ private:
NS_IMPL_ISUPPORTS(PluginTimerCallBack, nsITimerCallback)
#endif
#ifdef MOZ_ENABLE_NPAPI
already_AddRefed<Accessible>
nsAccessibilityService::CreatePluginAccessible(nsPluginFrame* aFrame,
nsIContent* aContent,
@@ -493,6 +498,7 @@ nsAccessibilityService::CreatePluginAccessible(nsPluginFrame* aFrame,
return nullptr;
}
#endif // MOZ_ENABLE_NPAPI
void
nsAccessibilityService::DeckPanelSwitched(nsIPresShell* aPresShell,
@@ -1638,11 +1644,13 @@ nsAccessibilityService::CreateAccessibleByFrameType(nsIFrame* aFrame,
case eOuterDocType:
newAcc = new OuterDocAccessible(aContent, document);
break;
#ifdef MOZ_ENABLE_NPAPI
case ePluginType: {
nsPluginFrame* pluginFrame = do_QueryFrame(aFrame);
newAcc = CreatePluginAccessible(pluginFrame, aContent, aContext);
break;
}
#endif
case eTextLeafType:
newAcc = new TextLeafAccessibleWrap(aContent, document);
break;
+4
View File
@@ -20,7 +20,9 @@
class nsImageFrame;
class nsIArray;
class nsIPersistentProperties;
#ifdef MOZ_ENABLE_NPAPI
class nsPluginFrame;
#endif
class nsITreeView;
namespace mozilla {
@@ -87,9 +89,11 @@ public:
Accessible* GetRootDocumentAccessible(nsIPresShell* aPresShell,
bool aCanCreate);
#ifdef MOZ_ENABLE_NPAPI
already_AddRefed<Accessible>
CreatePluginAccessible(nsPluginFrame* aFrame, nsIContent* aContent,
Accessible* aContext);
#endif
/**
* Adds/remove ATK root accessible for gtk+ native window to/from children
+2 -1
View File
@@ -486,13 +486,14 @@ DocAccessibleParent::SetCOMProxy(const RefPtr<IAccessible>& aCOMProxy)
IAccessibleHolder holder(Move(ptr));
Unused << SendParentCOMProxy(holder);
}
#ifdef MOZ_ENABLE_NPAPI
bool
DocAccessibleParent::RecvGetWindowedPluginIAccessible(
const WindowsHandle& aHwnd, IAccessibleHolder* aPluginCOMProxy)
{
return false;
}
#endif
#endif // defined(XP_WIN)
+4 -3
View File
@@ -143,10 +143,11 @@ public:
#if defined(XP_WIN)
void SetCOMProxy(const RefPtr<IAccessible>& aCOMProxy);
#ifdef MOZ_ENABLE_NPAPI
virtual bool RecvGetWindowedPluginIAccessible(
const WindowsHandle& aHwnd, IAccessibleHolder* aPluginCOMProxy) override;
#endif
#endif // MOZ_ENABLE_NPAPI
#endif // XP_WIN
private:
@@ -176,7 +177,7 @@ private:
uint32_t AddSubtree(ProxyAccessible* aParent,
const nsTArray<AccessibleData>& aNewTree, uint32_t aIdx,
uint32_t aIdxInParent);
MOZ_MUST_USE bool CheckDocTree() const;
[[nodiscard]] bool CheckDocTree() const;
xpcAccessibleGeneric* GetXPCAccessible(ProxyAccessible* aProxy);
nsTArray<DocAccessibleParent*> mChildDocs;
+2
View File
@@ -61,8 +61,10 @@ parent:
*/
async BindChildDoc(PDocAccessible aChildDoc, uint64_t aID);
#ifdef MOZ_ENABLE_NPAPI
sync GetWindowedPluginIAccessible(WindowsHandle aHwnd)
returns (IAccessibleHolder aPluginCOMProxy);
#endif
child:
async ParentCOMProxy(IAccessibleHolder aParentCOMProxy);
+1 -1
View File
@@ -8,7 +8,7 @@ if CONFIG['COMPILE_ENVIRONMENT']:
# With --disable-accessibility, we need to compile PDocAccessible.ipdl (which
# also depends on COMPtrTypes.h), but not the C++.
IPDL_SOURCES += ['PDocAccessible.ipdl']
PREPROCESSED_IPDL_SOURCES += ['PDocAccessible.ipdl']
EXPORTS.mozilla.a11y += ['COMPtrTypes.h']
if CONFIG['ACCESSIBILITY']:
+2 -2
View File
@@ -340,9 +340,9 @@ this.AccessFu = { // jshint ignore:line
case 'remote-browser-shown':
case 'inprocess-browser-shown':
{
// Ignore notifications that aren't from a BrowserOrApp
// Ignore notifications that aren't from a Browser
let frameLoader = aSubject.QueryInterface(Ci.nsIFrameLoader);
if (!frameLoader.ownerIsMozBrowserOrAppFrame) {
if (!frameLoader.ownerIsMozBrowserFrame) {
return;
}
this._handleMessageManager(frameLoader.messageManager);
+2
View File
@@ -295,6 +295,7 @@ enum CheckboxValue {
@implementation mozPaneAccessible
#if defined(MAC_OS_X_VERSION_10_6) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
- (NSUInteger)accessibilityArrayAttributeCount:(NSString*)attribute
{
AccessibleWrap* accWrap = [self getGeckoAccessible];
@@ -313,6 +314,7 @@ enum CheckboxValue {
return [super accessibilityArrayAttributeCount:attribute];
}
#endif
- (NSArray*)children
{
+34 -4
View File
@@ -47,6 +47,24 @@ ConvertToNSArray(nsTArray<ProxyAccessible*>& aArray)
return nativeArray;
}
// Convert to an object without @ syntax
static inline id
ConvertToId(NSInteger val)
{
return [NSString stringWithFormat:@"%i", val];
}
// Missing from SDK 10.5
#if !defined(MAC_OS_X_VERSION_10_6) || (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6)
#define __IntToNSString(x) ([NSString stringWithFormat:@"%i", x])
#define NSAccessibilityRowIndexRangeAttribute @"AXRowIndexRange"
#define NSAccessibilityColumnIndexRangeAttribute @"AXColumnIndexRange"
#define NSAccessibilityRowHeaderUIElementsAttribute @"AXRowHeaderUIElements"
#define NSAccessibilityColumnHeaderUIElementsAttribute @"AXColumnHeaderUIElements"
#define NSAccessibilityRowCountAttribute @"AXRowCount"
#define NSAccessibilityColumnCountAttribute @"AXColumnCount"
#endif
@implementation mozTablePartAccessible
- (BOOL)isLayoutTablePart;
{
@@ -83,10 +101,14 @@ ConvertToNSArray(nsTArray<ProxyAccessible*>& aArray)
{
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
#if defined(MAC_OS_X_VERSION_10_6) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
NSArray* additionalAttributes = [super additionalAccessibilityAttributeNames];
if ([self isLayoutTablePart]) {
return additionalAttributes;
}
#else
NSArray* additionalAttributes = [[NSArray alloc] init];
#endif
static NSArray* tableAttrs = nil;
if (!tableAttrs) {
@@ -108,9 +130,9 @@ ConvertToNSArray(nsTArray<ProxyAccessible*>& aArray)
if (AccessibleWrap* accWrap = [self getGeckoAccessible]) {
TableAccessible* table = accWrap->AsTable();
if ([attribute isEqualToString:NSAccessibilityRowCountAttribute])
return @(table->RowCount());
return ConvertToId(table->RowCount());
if ([attribute isEqualToString:NSAccessibilityColumnCountAttribute])
return @(table->ColCount());
return ConvertToId(table->ColCount());
if ([attribute isEqualToString:NSAccessibilityRowsAttribute]) {
// Create a new array with the list of table rows.
NSMutableArray* nativeArray = [[NSMutableArray alloc] init];
@@ -127,9 +149,9 @@ ConvertToNSArray(nsTArray<ProxyAccessible*>& aArray)
}
} else if (ProxyAccessible* proxy = [self getProxyAccessible]) {
if ([attribute isEqualToString:NSAccessibilityRowCountAttribute])
return @(proxy->TableRowCount());
return ConvertToId(proxy->TableRowCount());
if ([attribute isEqualToString:NSAccessibilityColumnCountAttribute])
return @(proxy->TableColumnCount());
return ConvertToId(proxy->TableColumnCount());
if ([attribute isEqualToString:NSAccessibilityRowsAttribute]) {
// Create a new array with the list of table rows.
NSMutableArray* nativeArray = [[NSMutableArray alloc] init];
@@ -155,10 +177,14 @@ ConvertToNSArray(nsTArray<ProxyAccessible*>& aArray)
{
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
#if defined(MAC_OS_X_VERSION_10_6) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
NSArray* additionalAttributes = [super additionalAccessibilityAttributeNames];
if ([self isLayoutTablePart]) {
return additionalAttributes;
}
#else
NSArray* additionalAttributes = [[NSArray alloc] init];
#endif
static NSArray* tableRowAttrs = nil;
if (!tableRowAttrs) {
@@ -214,10 +240,14 @@ ConvertToNSArray(nsTArray<ProxyAccessible*>& aArray)
{
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
#if defined(MAC_OS_X_VERSION_10_6) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
NSArray* additionalAttributes = [super additionalAccessibilityAttributeNames];
if ([self isLayoutTablePart]) {
return additionalAttributes;
}
#else
NSArray* additionalAttributes = [[NSArray alloc] init];
#endif
static NSArray* tableCellAttrs = nil;
if (!tableCellAttrs) {
+2 -2
View File
@@ -173,7 +173,7 @@ public: // construction, destruction
/**
* Find an accessible by the given child ID in cached documents.
*/
MOZ_MUST_USE already_AddRefed<IAccessible>
[[nodiscard]] already_AddRefed<IAccessible>
GetIAccessibleFor(const VARIANT& aVarChild, bool* aIsDefunct);
virtual void GetNativeInterface(void **aOutAccessible) override;
@@ -198,7 +198,7 @@ protected:
/**
* Find a remote accessible by the given child ID.
*/
MOZ_MUST_USE already_AddRefed<IAccessible>
[[nodiscard]] already_AddRefed<IAccessible>
GetRemoteIAccessibleFor(const VARIANT& aVarChild);
/**
+7
View File
@@ -38,6 +38,13 @@ SOURCES += [
'XULTreeGridAccessibleWrap.cpp',
]
if CONFIG['MOZ_ENABLE_NPAPI']:
SOURCES += [
'HTMLWin32ObjectAccessible.cpp',
]
LOCAL_INCLUDES += [
'/accessible/base',
'/accessible/generic',
File diff suppressed because it is too large. Load diff
+80
View File
@@ -0,0 +1,80 @@
dnl Map old names of Autoconf macros to new regularized names.
dnl This file is part of Autoconf.
dnl Copyright (C) 1994 Free Software Foundation, Inc.
dnl
dnl This program is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 2, or (at your option)
dnl any later version.
dnl
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
dnl 02111-1307, USA.
dnl
dnl General macros.
dnl
define(AC_WARN, [indir([AC_MSG_WARN], $@)])dnl
define(AC_ERROR, [indir([AC_MSG_ERROR], $@)])dnl
AC_DEFUN(AC_PROGRAM_CHECK, [indir([AC_CHECK_PROG], $@)])dnl
AC_DEFUN(AC_PROGRAM_PATH, [indir([AC_PATH_PROG], $@)])dnl
AC_DEFUN(AC_PROGRAMS_CHECK, [indir([AC_CHECK_PROGS], $@)])dnl
AC_DEFUN(AC_PROGRAMS_PATH, [indir([AC_PATH_PROGS], $@)])dnl
AC_DEFUN(AC_PREFIX, [indir([AC_PREFIX_PROGRAM], $@)])dnl
AC_DEFUN(AC_HEADER_EGREP, [indir([AC_EGREP_HEADER], $@)])dnl
AC_DEFUN(AC_PROGRAM_EGREP, [indir([AC_EGREP_CPP], $@)])dnl
AC_DEFUN(AC_TEST_PROGRAM, [indir([AC_TRY_RUN], $@)])dnl
AC_DEFUN(AC_TEST_CPP, [indir([AC_TRY_CPP], $@)])dnl
AC_DEFUN(AC_HEADER_CHECK, [indir([AC_CHECK_HEADER], $@)])dnl
AC_DEFUN(AC_FUNC_CHECK, [indir([AC_CHECK_FUNC], $@)])dnl
AC_DEFUN(AC_HAVE_FUNCS, [indir([AC_CHECK_FUNCS], $@)])dnl
AC_DEFUN(AC_HAVE_HEADERS, [indir([AC_CHECK_HEADERS], $@)])dnl
AC_DEFUN(AC_SIZEOF_TYPE, [indir([AC_CHECK_SIZEOF], $@)])dnl
dnl
dnl Specific macros.
dnl
AC_DEFUN(AC_GCC_TRADITIONAL, [indir([AC_PROG_GCC_TRADITIONAL])])dnl
AC_DEFUN(AC_MINUS_C_MINUS_O, [indir([AC_PROG_CC_C_O])])dnl
AC_DEFUN(AC_SET_MAKE, [indir([AC_PROG_MAKE_SET])])dnl
AC_DEFUN(AC_YYTEXT_POINTER, [indir([AC_DECL_YYTEXT])])dnl
AC_DEFUN(AC_LN_S, [indir([AC_PROG_LN_S])])dnl
AC_DEFUN(AC_STDC_HEADERS, [indir([AC_HEADER_STDC])])dnl
AC_DEFUN(AC_MAJOR_HEADER, [indir([AC_HEADER_MAJOR])])dnl
AC_DEFUN(AC_STAT_MACROS_BROKEN, [indir([AC_HEADER_STAT])])dnl
AC_DEFUN(AC_SYS_SIGLIST_DECLARED, [indir([AC_DECL_SYS_SIGLIST])])dnl
AC_DEFUN(AC_GETGROUPS_T, [indir([AC_TYPE_GETGROUPS])])dnl
AC_DEFUN(AC_UID_T, [indir([AC_TYPE_UID_T])])dnl
AC_DEFUN(AC_SIZE_T, [indir([AC_TYPE_SIZE_T])])dnl
AC_DEFUN(AC_PID_T, [indir([AC_TYPE_PID_T])])dnl
AC_DEFUN(AC_OFF_T, [indir([AC_TYPE_OFF_T])])dnl
AC_DEFUN(AC_MODE_T, [indir([AC_TYPE_MODE_T])])dnl
AC_DEFUN(AC_RETSIGTYPE, [indir([AC_TYPE_SIGNAL])])dnl
AC_DEFUN(AC_MMAP, [indir([AC_FUNC_MMAP])])dnl
AC_DEFUN(AC_VPRINTF, [indir([AC_FUNC_VPRINTF])])dnl
AC_DEFUN(AC_VFORK, [indir([AC_FUNC_VFORK])])dnl
AC_DEFUN(AC_WAIT3, [indir([AC_FUNC_WAIT3])])dnl
AC_DEFUN(AC_ALLOCA, [indir([AC_FUNC_ALLOCA])])dnl
AC_DEFUN(AC_GETLOADAVG, [indir([AC_FUNC_GETLOADAVG])])dnl
AC_DEFUN(AC_UTIME_NULL, [indir([AC_FUNC_UTIME_NULL])])dnl
AC_DEFUN(AC_STRCOLL, [indir([AC_FUNC_STRCOLL])])dnl
AC_DEFUN(AC_SETVBUF_REVERSED, [indir([AC_FUNC_SETVBUF_REVERSED])])dnl
AC_DEFUN(AC_TIME_WITH_SYS_TIME, [indir([AC_HEADER_TIME])])dnl
AC_DEFUN(AC_TIMEZONE, [indir([AC_STRUCT_TIMEZONE])])dnl
AC_DEFUN(AC_ST_BLOCKS, [indir([AC_STRUCT_ST_BLOCKS])])dnl
AC_DEFUN(AC_ST_BLKSIZE, [indir([AC_STRUCT_ST_BLKSIZE])])dnl
AC_DEFUN(AC_ST_RDEV, [indir([AC_STRUCT_ST_RDEV])])dnl
AC_DEFUN(AC_CROSS_CHECK, [indir([AC_C_CROSS])])dnl
AC_DEFUN(AC_CHAR_UNSIGNED, [indir([AC_C_CHAR_UNSIGNED])])dnl
AC_DEFUN(AC_LONG_DOUBLE, [indir([AC_C_LONG_DOUBLE])])dnl
AC_DEFUN(AC_WORDS_BIGENDIAN, [indir([AC_C_BIGENDIAN])])dnl
AC_DEFUN(AC_INLINE, [indir([AC_C_INLINE])])dnl
AC_DEFUN(AC_CONST, [indir([AC_C_CONST])])dnl
AC_DEFUN(AC_LONG_FILE_NAMES, [indir([AC_SYS_LONG_FILE_NAMES])])dnl
AC_DEFUN(AC_RESTARTABLE_SYSCALLS, [indir([AC_SYS_RESTARTABLE_SYSCALLS])])dnl
AC_DEFUN(AC_FIND_X, [indir([AC_PATH_X])])dnl
AC_DEFUN(AC_FIND_XTRA, [indir([AC_PATH_XTRA])])dnl
File diff suppressed because it is too large. Load diff
+28
View File
@@ -0,0 +1,28 @@
dnl Driver that loads the Autoconf macro files.
dnl Requires GNU m4.
dnl This file is part of Autoconf.
dnl Copyright (C) 1994 Free Software Foundation, Inc.
dnl
dnl This program is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 2, or (at your option)
dnl any later version.
dnl
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with this program; if not, write to the Free Software
dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
dnl 02111-1307, USA.
dnl
dnl Written by David MacKenzie.
dnl
include(acgeneral.m4)dnl
builtin(include, acspecific.m4)dnl
builtin(include, acoldnames.m4)dnl
dnl Do not sinclude acsite.m4 here, because it may not be installed
dnl yet when Autoconf is frozen.
dnl Do not sinclude ./aclocal.m4 here, to prevent it from being frozen.
+159
View File
@@ -0,0 +1,159 @@
#! @SHELL@
# autoconf -- create `configure' using m4 macros
# Copyright (C) 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
# If given no args, create `configure' from template file `configure.in'.
# With one arg, create a configure script on standard output from
# the given template file.
usage="\
Usage: autoconf [-h] [--help] [-m dir] [--macrodir=dir]
[-l dir] [--localdir=dir] [--version] [template-file]"
# NLS nuisances.
# Only set these to C if already set. These must not be set unconditionally
# because not all systems understand e.g. LANG=C (notably SCO).
# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
# Non-C LC_CTYPE values break the ctype check.
if test "${LANG+set}" = set; then LANG=C; export LANG; fi
if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
: ${AC_MACRODIR=@datadir@}
: ${M4=@M4@}
: ${AWK=@AWK@}
case "${M4}" in
/*) # Handle the case that m4 has moved since we were configured.
# It may have been found originally in a build directory.
test -f "${M4}" || M4=m4 ;;
esac
: ${TMPDIR=/tmp}
tmpout=${TMPDIR}/acout.$$
localdir=
show_version=no
while test $# -gt 0 ; do
case "${1}" in
-h | --help | --h* )
echo "${usage}" 1>&2; exit 0 ;;
--localdir=* | --l*=* )
localdir="`echo \"${1}\" | sed -e 's/^[^=]*=//'`"
shift ;;
-l | --localdir | --l*)
shift
test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
localdir="${1}"
shift ;;
--macrodir=* | --m*=* )
AC_MACRODIR="`echo \"${1}\" | sed -e 's/^[^=]*=//'`"
shift ;;
-m | --macrodir | --m* )
shift
test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
AC_MACRODIR="${1}"
shift ;;
--version | --v* )
show_version=yes; shift ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
break ;;
-* )
echo "${usage}" 1>&2; exit 1 ;;
* )
break ;;
esac
done
if test $show_version = yes; then
version=`sed -n 's/define.AC_ACVERSION.[ ]*\([0-9.]*\).*/\1/p' \
$AC_MACRODIR/acgeneral.m4`
echo "Autoconf version $version"
exit 0
fi
case $# in
0) infile=configure.in ;;
1) infile="$1" ;;
*) echo "$usage" >&2; exit 1 ;;
esac
trap 'rm -f $tmpin $tmpout; exit 1' 1 2 15
tmpin=${TMPDIR}/acin.$$ # Always set this, to avoid bogus errors from some rm's.
if test z$infile = z-; then
infile=$tmpin
cat > $infile
elif test ! -r "$infile"; then
echo "autoconf: ${infile}: No such file or directory" >&2
exit 1
fi
if test -n "$localdir"; then
use_localdir="-I$localdir -DAC_LOCALDIR=$localdir"
else
use_localdir=
fi
# Use the frozen version of Autoconf if available.
r= f=
# Some non-GNU m4's don't reject the --help option, so give them /dev/null.
case `$M4 --help < /dev/null 2>&1` in
*reload-state*) test -r $AC_MACRODIR/autoconf.m4f && { r=--reload f=f; } ;;
*traditional*) ;;
*) echo Autoconf requires GNU m4 1.1 or later >&2; rm -f $tmpin; exit 1 ;;
esac
$M4 -I$AC_MACRODIR $use_localdir $r autoconf.m4$f $infile > $tmpout ||
{ rm -f $tmpin $tmpout; exit 2; }
# You could add your own prefixes to pattern if you wanted to check for
# them too, e.g. pattern='\(AC_\|ILT_\)', except that UNIX sed doesn't do
# alternation.
pattern="AC_"
status=0
if grep "^[^#]*${pattern}" $tmpout > /dev/null 2>&1; then
echo "autoconf: Undefined macros:" >&2
sed -n "s/^[^#]*\\(${pattern}[_A-Za-z0-9]*\\).*/\\1/p" $tmpout |
while read macro; do
grep -n "^[^#]*$macro" $infile /dev/null
test $? -eq 1 && echo >&2 "***BUG in Autoconf--please report*** $macro"
done | sort -u >&2
status=1
fi
if test $# -eq 0; then
exec 4> configure; chmod +x configure
else
exec 4>&1
fi
# Put the real line numbers into configure to make config.log more helpful.
$AWK '
/__oline__/ { printf "%d:", NR + 1 }
{ print }
' $tmpout | sed '
/__oline__/s/^\([0-9][0-9]*\):\(.*\)__oline__/\2\1/
' >&4
rm -f $tmpout
exit $status
+9 -7
View File
@@ -179,10 +179,12 @@ if test "$GNU_CC"; then
CFLAGS="$CFLAGS -fno-math-errno -pipe"
CXXFLAGS="$CXXFLAGS -fno-exceptions -fno-math-errno -pipe"
if test "$CPU_ARCH" = "x86" -o "$CPU_ARCH" = "x86_64"; then
CFLAGS="$CFLAGS -msse2 -mfpmath=sse"
CXXFLAGS="$CXXFLAGS -msse2 -mfpmath=sse"
fi
case "${host_cpu}" in
i*86)
CFLAGS="$CFLAGS -msse2 -mfpmath=sse"
CXXFLAGS="$CXXFLAGS -msse2 -mfpmath=sse"
;;
esac
if test -z "$CLANG_CC"; then
case "$CC_VERSION" in
@@ -190,9 +192,9 @@ if test "$GNU_CC"; then
AC_MSG_ERROR([Unsupported GCC version.])
;;
*)
# Lifetime Dead Store Elimination level 2 (default in GCC6+) breaks Gecko.
# Instead of completely disabling this optimization on newer GCC's,
# we'll force them to use level 1 optimization with -flifetime-dse=1.
# Lifetime Dead Store Elimination level 2 (default in GCC) breaks Goanna.
# Instead of completely disabling this optimization, we force level 1
# optimization instead with -flifetime-dse=1.
# Add it first so that a mozconfig can override by setting CFLAGS/CXXFLAGS.
CFLAGS="-flifetime-dse=1 $CFLAGS"
CXXFLAGS="-flifetime-dse=1 $CXXFLAGS"
+2 -3
View File
@@ -28,9 +28,7 @@ if test -n "$USE_ICU"; then
fi
MOZ_ICU_VERSION="$version"
# TODO: the l is actually endian-dependent
# We could make this set as 'l' or 'b' for little or big, respectively,
# but we'd need to check in a big-endian version of the file.
ICU_DATA_FILE_BIG="icudt${version}b.dat"
ICU_DATA_FILE="icudt${version}l.dat"
dnl We won't build ICU data as a separate file when building
@@ -46,6 +44,7 @@ fi
AC_SUBST(MOZ_ICU_VERSION)
AC_SUBST(USE_ICU)
AC_SUBST(ICU_DATA_FILE_BIG)
AC_SUBST(ICU_DATA_FILE)
AC_SUBST(MOZ_ICU_DATA_ARCHIVE)
AC_SUBST(MOZ_SHARED_ICU)
-7
View File
@@ -33,10 +33,3 @@ endif
# correctly. Note that the binary produced here is a host tool and doesn't need
# to be distributed.
MACOSX_DEPLOYMENT_TARGET :=
# Temporarily relax the requirements for libstdc++ symbol versions on static
# analysis plugin in order to use a recent clang by accepting libstdc++ from
# gcc 4.4.0 (GLIBCXX_3.4.11).
ifdef CHECK_STDCXX
CHECK_STDCXX = $(call CHECK_SYMBOLS,$(1),GLIBCXX,libstdc++,v[1] > 3 || (v[1] == 3 && v[2] == 4 && v[3] > 11))
endif
+12 -2
View File
@@ -499,6 +499,14 @@ set_config('INTEL_ARCHITECTURE', delayed_getattr(target_variables,
'INTEL_ARCHITECTURE'))
set_config('TARGET_CPU', delayed_getattr(target, 'raw_cpu'))
set_config('TARGET_OS', delayed_getattr(target, 'raw_os'))
set_config('TARGET_ENDIANNESS', delayed_getattr(target, 'endianness'))
@depends(target)
def target_is_big_endian(target):
if target.endianness == 'big':
return True
set_define('TARGET_ENDIAN_BIG', target_is_big_endian)
@depends(host)
@@ -591,7 +599,9 @@ imply_option('--enable-project', application)
@depends(check_build_environment, '--help')
def default_project(build_env, help):
return 'js'
if build_env.topobjdir.endswith('/js/src'):
return 'js'
return 'xulrunner'
option('--enable-project', nargs=1, default=default_project,
help='Project to build')
@@ -638,7 +648,7 @@ def build_project(noncomm_build, project, external_source_dir, build_env, help):
build_app = project[0]
if not external_source_dir and build_app not in ('js'):
if not external_source_dir and build_app not in ('xulrunner', 'js'):
if noncomm_build:
log.info("=====WARNING WARNING WARNING=====")
log.info("UNSUPPORTED NONCOMM-BUILD: Application code SHOULD NOT be put inside the platform tree, and doing so may have unforseen consequences if/when platform code is changed.")
+26 -55
View File
@@ -10,66 +10,28 @@ def encoded_open(path, mode):
return codecs.open(path, mode, encoding)
option(env='AUTOCONF', nargs=1, help='Path to autoconf 2.13')
m4 = check_prog(
"M4",
(
"gm4",
"m4",
),
)
@depends(mozconfig, 'AUTOCONF')
@checking('for autoconf')
@imports(_from='os.path', _import='exists')
@imports('re')
def autoconf(mozconfig, autoconf):
mozconfig_autoconf = None
if mozconfig['path']:
make_extra = mozconfig['make_extra']
if make_extra:
for assignment in make_extra:
m = re.match('(?:export\s+)?AUTOCONF\s*:?=\s*(.+)$',
assignment)
if m:
mozconfig_autoconf = m.group(1)
autoconf = autoconf[0] if autoconf else None
for ac in (mozconfig_autoconf, autoconf, 'autoconf-2.13', 'autoconf2.13',
'autoconf213'):
if ac:
autoconf = find_program(ac)
if autoconf:
break
else:
fink = find_program('fink')
if fink:
autoconf = os.path.normpath(os.path.join(
fink, '..', '..', 'lib', 'autoconf2.13', 'bin', 'autoconf'))
else:
brew = find_program('brew')
if brew:
autoconf = os.path.normpath(os.path.join(
brew, '..', '..', 'Cellar', 'autoconf213', '2.13', 'bin',
'autoconf213'))
if not autoconf:
die('Could not find autoconf 2.13')
if not exists(autoconf):
die('Could not find autoconf 2.13 at %s', autoconf)
return autoconf
set_config('AUTOCONF', autoconf)
@depends('OLD_CONFIGURE', mozconfig, autoconf, check_build_environment, shell,
@depends('OLD_CONFIGURE', mozconfig, awk, m4, check_build_environment, shell,
old_configure_assignments, build_project)
@imports(_from='__builtin__', _import='open')
@imports(_from='__builtin__', _import='print')
@imports('glob')
@imports('sys')
@imports('itertools')
@imports('subprocess')
# Import getmtime without overwriting the sandbox os.path.
@imports(_from='os.path', _import='getmtime')
@imports(_from='os.path', _import='exists')
@imports(_from='mozbuild.shellutil', _import='quote')
def prepare_configure(old_configure, mozconfig, autoconf, build_env, shell,
@imports(_from='os', _import='environ')
def prepare_configure(old_configure, mozconfig, awk, m4, build_env, shell,
old_configure_assignments, build_project):
# os.path.abspath in the sandbox will ensure forward slashes on Windows,
# which is actually necessary because this path actually ends up literally
@@ -98,11 +60,22 @@ def prepare_configure(old_configure, mozconfig, autoconf, build_env, shell,
refresh = False
if refresh:
autoconf = os.path.join(build_env.topsrcdir, 'build', 'autoconf', 'autoconf.sh')
log.info('Refreshing %s with %s', old_configure, autoconf)
env = dict(environ)
env['M4'] = m4
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'])
old_configure + '.in'], env=my_env)
# 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
@@ -127,10 +100,6 @@ def prepare_configure(old_configure, mozconfig, autoconf, build_env, shell,
for key in mozconfig[t]['removed'].keys():
inject("unset %s" % key)
# Autoconf is special, because it might be passed from
# mozconfig['make_extra'], which we don't pass automatically above.
inject('export AUTOCONF=%s' % quote(autoconf))
for assignment in old_configure_assignments:
inject(assignment)
@@ -207,6 +176,7 @@ def old_configure_options(*options):
'--enable-necko-wifi',
'--enable-negotiateauth',
'--enable-nfc',
'--enable-npapi',
'--enable-nspr-build',
'--enable-official-branding',
'--enable-official-vendor',
@@ -235,7 +205,6 @@ def old_configure_options(*options):
'--enable-small-chunk-size',
'--enable-startup-notification',
'--enable-startupcache',
'--enable-stdcxx-compat',
'--enable-strip',
'--enable-synth-pico',
'--enable-system-cairo',
@@ -299,6 +268,7 @@ def old_configure_options(*options):
'--with-thumb-interwork',
'--with-unify-dist',
'--with-user-appdir',
'--with-xulrunner-stub-name',
'--x-includes',
'--x-libraries',
@@ -311,6 +281,7 @@ def old_configure_options(*options):
'--enable-incomplete-external-linkage',
'--enable-mailnews',
'--enable-mailnews-oauth2',
'--enable-classic-account-wizard',
# Below are configure flags used by Pale Moon
'--disable-browser-statusbar',
+9 -10
View File
@@ -340,17 +340,16 @@ def check_compiler(compiler, language, target):
if info.type in ('clang-cl', 'clang', 'gcc'):
append_flag('-std=gnu99')
# Note: this is a strict version check because we used to always add
# -std=gnu++14.
cxx14_version = 201402
cxx17_version = 201703
if info.language == 'C++':
if info.type in ('clang', 'gcc') and info.language_version != cxx14_version:
append_flag('-std=gnu++14')
# MSVC 2015 headers include C++14 features, but don't guard them
# with appropriate checks.
if info.type == 'clang-cl' and info.language_version != cxx14_version:
append_flag('-std=c++14')
# MSVC from 2015 on defaults to C++14.
if info.language_version != cxx17_version:
# Compiler doesn't default to C++17, so add the appropriate flag.
if info.type in ('clang', 'gcc'):
# We're on Clang or GCC, enable C++17 and add GNU extensions.
append_flag('-std=gnu++17')
else:
# We're on MSVC; enable C++17 language mode.
append_flag('-std:c++17')
# We force clang-cl to emulate Visual C++ 2015 Update 3 with fallback to
# cl.exe.
+1 -1
View File
@@ -52,7 +52,7 @@ check_and_add_gcc_warning('-Wclass-varargs')
check_and_add_gcc_warning('-Wloop-analysis')
# catches C++ version forward-compat issues
check_and_add_gcc_warning('-Wc++1z-compat', cxx_compiler)
# check_and_add_gcc_warning('-Wc++2a-compat', cxx_compiler)
# catches unintentional switch case fallthroughs
check_and_add_gcc_warning('-Wimplicit-fallthrough', cxx_compiler)
-21
View File
@@ -8,9 +8,6 @@ def Binary():
'''Generic template for target binaries. Meant to be used by other
templates.'''
if CONFIG['MOZ_LIBSTDCXX_TARGET_VERSION']:
USE_LIBS += ['stdc++compat']
# Ideally, we'd support not adding this to the LIB_IS_C_ONLY case,
# but that variable is actually only set in db/sqlite/src, which
# doesn't build a shared library on the relevant platforms anyways.
@@ -77,27 +74,11 @@ def Framework(name):
IS_FRAMEWORK = True
@template
def HostStdCppCompat():
'''Template for libstdc++ compatibility for host binaries.'''
if CONFIG['MOZ_LIBSTDCXX_HOST_VERSION']:
HOST_USE_LIBS += ['host_stdc++compat']
@template
def HostProgram(name, c_only=False):
'''Template for build tools executables.'''
HOST_PROGRAM = name
# With context-based templates, this won't be needed anymore, and will
# work better than relying on the caller setting it, but at the moment,
# this is the best we have. And it doesn't matter /that/ much, so there's
# really only one place using this, where it does matter to avoid the
# extra dependency (because it creates a circular one).
if not c_only:
HostStdCppCompat()
@template
def HostSimplePrograms(names, ext='.cpp'):
@@ -109,8 +90,6 @@ def HostSimplePrograms(names, ext='.cpp'):
HOST_SOURCES += ['%s%s' % (name.replace('host_', ''), ext)
for name in names]
HostStdCppCompat()
@template
def HostLibrary(name):
-3
View File
@@ -3,9 +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/.
if CONFIG['MOZ_LIBSTDCXX_TARGET_VERSION'] or CONFIG['MOZ_LIBSTDCXX_HOST_VERSION']:
DIRS += ['stdc++compat']
if CONFIG['USE_ELF_HACK']:
DIRS += ['elfhack']
-15
View File
@@ -1,15 +0,0 @@
# Avoid dependency on libstdc++ 4.7
ac_add_options --enable-stdcxx-compat
TOOLTOOL_DIR=${TOOLTOOL_DIR:-$topsrcdir}
if [ -f "$TOOLTOOL_DIR/clang/lib/libstdc++.so" ]; then
LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOOLTOOL_DIR/clang/lib
elif [ -f "$TOOLTOOL_DIR/gcc/lib/libstdc++.so" ]; then
# We put both 32-bits and 64-bits library path in LD_LIBRARY_PATH: ld.so
# will prefer the files in the 32-bits path when loading 32-bits executables,
# and the files in the 64-bits path when loading 64-bits executables.
LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOOLTOOL_DIR/gcc/lib64:$TOOLTOOL_DIR/gcc/lib
fi
mk_add_options "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
-2
View File
@@ -30,5 +30,3 @@ ac_add_options --enable-pie
ac_add_options --disable-install-strip
# -gline-tables-only results in significantly smaller binaries.
ac_add_options --enable-debug-symbols="-gline-tables-only"
. "$topsrcdir/build/unix/mozconfig.stdcxx"
-7
View File
@@ -1,7 +0,0 @@
# 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 http://mozilla.org/MPL/2.0/.
ENABLE_CLANG_PLUGIN :=
include $(topsrcdir)/config/rules.mk
-23
View File
@@ -1,23 +0,0 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# 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 http://mozilla.org/MPL/2.0/.
if CONFIG['MOZ_LIBSTDCXX_TARGET_VERSION']:
Library('stdc++compat')
SOURCES += ['stdc++compat.cpp']
if CONFIG['MOZ_LIBSTDCXX_HOST_VERSION']:
HostLibrary('host_stdc++compat')
HOST_SOURCES += [
'stdc++compat.cpp',
]
FORCE_STATIC_LIB = True
NO_PGO = True
DISABLE_STL_WRAPPING = True
DEFINES['MOZ_LIBSTDCXX_VERSION'] = CONFIG['MOZ_LIBSTDCXX_TARGET_VERSION']
HOST_DEFINES['MOZ_LIBSTDCXX_VERSION'] = CONFIG['MOZ_LIBSTDCXX_HOST_VERSION']
-78
View File
@@ -1,78 +0,0 @@
/* 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 http://mozilla.org/MPL/2.0/. */
#include <ostream>
#include <istream>
#include <string>
#include <stdarg.h>
#include <stdio.h>
#include <mozilla/Assertions.h>
/* GLIBCXX_3.4.8 is from gcc 4.1.1 (111691)
GLIBCXX_3.4.9 is from gcc 4.2.0 (111690)
GLIBCXX_3.4.10 is from gcc 4.3.0 (126287)
GLIBCXX_3.4.11 is from gcc 4.4.0 (133006)
GLIBCXX_3.4.12 is from gcc 4.4.1 (147138)
GLIBCXX_3.4.13 is from gcc 4.4.2 (151127)
GLIBCXX_3.4.14 is from gcc 4.5.0 (151126)
GLIBCXX_3.4.15 is from gcc 4.6.0 (160071)
GLIBCXX_3.4.16 is from gcc 4.6.1 (172240)
GLIBCXX_3.4.17 is from gcc 4.7.0 (174383)
GLIBCXX_3.4.18 is from gcc 4.8.0 (190787)
GLIBCXX_3.4.19 is from gcc 4.8.1 (199309)
GLIBCXX_3.4.20 is from gcc 4.9.0 (199307)
GLIBCXX_3.4.21 is from gcc 5.0 (210290)
This file adds the necessary compatibility tricks to avoid symbols with
version GLIBCXX_3.4.16 and bigger, keeping binary compatibility with
libstdc++ 4.6.1.
*/
#define GLIBCXX_VERSION(a, b, c) (((a) << 16) | ((b) << 8) | (c))
#if MOZ_LIBSTDCXX_VERSION >= GLIBCXX_VERSION(3, 4, 20)
namespace std {
/* We shouldn't be throwing exceptions at all, but it sadly turns out
we call STL (inline) functions that do. */
void __throw_out_of_range_fmt(char const* fmt, ...)
{
va_list ap;
char buf[1024]; // That should be big enough.
va_start(ap, fmt);
vsnprintf(buf, sizeof(buf), fmt, ap);
buf[sizeof(buf) - 1] = 0;
va_end(ap);
__throw_range_error(buf);
}
}
#endif
#if MOZ_LIBSTDCXX_VERSION >= GLIBCXX_VERSION(3, 4, 20)
/* Technically, this symbol is not in GLIBCXX_3.4.20, but in CXXABI_1.3.8,
but that's equivalent, version-wise. Those calls are added by the compiler
itself on `new Class[n]` calls. */
extern "C" void
__cxa_throw_bad_array_new_length()
{
MOZ_CRASH();
}
#endif
#if MOZ_LIBSTDCXX_VERSION >= GLIBCXX_VERSION(3, 4, 21)
/* While we generally don't build with exceptions, we have some host tools
* that do use them. libstdc++ from GCC 5.0 added exception constructors with
* char const* argument. Older versions only have a constructor with
* std::string. */
namespace std {
runtime_error::runtime_error(char const* s)
: runtime_error(std::string(s))
{
}
}
#endif
+19 -7
View File
@@ -560,6 +560,23 @@ BasePrincipal::GetCspJSON(nsAString& outCSPinJSON)
return mCSP->ToJSON(outCSPinJSON);
}
NS_IMETHODIMP
BasePrincipal::IsSameOrigin(nsIURI* aURI, bool aIsPrivateWin, bool* aRes) {
*aRes = false;
nsCOMPtr<nsIURI> prinURI;
nsresult rv = GetURI(getter_AddRefs(prinURI));
if (NS_FAILED(rv) || !prinURI) {
return NS_OK;
}
nsIScriptSecurityManager* ssm = nsContentUtils::GetSecurityManager();
if (!ssm) {
return NS_ERROR_UNEXPECTED;
;
}
*aRes = NS_SUCCEEDED(ssm->CheckSameOriginURI(prinURI, aURI, aIsPrivateWin));
return NS_OK;
}
NS_IMETHODIMP
BasePrincipal::GetIsNullPrincipal(bool* aResult)
{
@@ -607,13 +624,8 @@ BasePrincipal::GetOriginSuffix(nsACString& aOriginAttributes)
NS_IMETHODIMP
BasePrincipal::GetAppStatus(uint16_t* aAppStatus)
{
if (AppId() == nsIScriptSecurityManager::UNKNOWN_APP_ID) {
NS_WARNING("Asking for app status on a principal with an unknown app id");
*aAppStatus = nsIPrincipal::APP_STATUS_NOT_INSTALLED;
return NS_OK;
}
*aAppStatus = nsScriptSecurityManager::AppStatusForPrincipal(this);
// TODO: Remove GetAppStatus.
*aAppStatus = nsIPrincipal::APP_STATUS_NOT_INSTALLED;
return NS_OK;
}
+4 -3
View File
@@ -51,12 +51,12 @@ public:
// Don't use this method for anything else than debugging!
void CreateAnonymizedSuffix(nsACString& aStr) const;
MOZ_MUST_USE bool PopulateFromSuffix(const nsACString& aStr);
[[nodiscard]] bool PopulateFromSuffix(const nsACString& aStr);
// Populates the attributes from a string like
// |uri!key1=value1&key2=value2| and returns the uri without the suffix.
MOZ_MUST_USE bool PopulateFromOrigin(const nsACString& aOrigin,
nsACString& aOriginNoSuffix);
[[nodiscard]] bool PopulateFromOrigin(const nsACString& aOrigin,
nsACString& aOriginNoSuffix);
// Helper function to match mIsPrivateBrowsing to existing private browsing
// flags. Once all other flags are removed, this can be removed too.
@@ -282,6 +282,7 @@ public:
NS_IMETHOD GetUnknownAppId(bool* aUnknownAppId) final;
NS_IMETHOD GetUserContextId(uint32_t* aUserContextId) final;
NS_IMETHOD GetPrivateBrowsingId(uint32_t* aPrivateBrowsingId) final;
NS_IMETHOD IsSameOrigin(nsIURI* aURI, bool aIsPrivateWin, bool* aRes) override;
bool EqualsIgnoringAddonId(nsIPrincipal *aOther);
+6 -9
View File
@@ -223,6 +223,12 @@ interface nsIPrincipal : nsISerializable
*/
readonly attribute AUTF8String originSuffix;
/**
* Uses NS_Security Compare to determine if the
* other URI is same-origin as the uri of the Principal
*/
bool IsSameOrigin(in nsIURI otherURI, in bool aIsPrivateWin);
/**
* The base domain of the codebase URI to which this principal pertains
* (generally the document URI), handling null principals and
@@ -297,15 +303,6 @@ interface nsIPrincipal : nsISerializable
*/
[infallible] readonly attribute unsigned long privateBrowsingId;
/**
* Returns true iff the principal is inside an isolated mozbrowser element.
* <iframe mozbrowser mozapp> and <xul:browser> are not considered to be
* mozbrowser elements. <iframe mozbrowser noisolation> does not count as
* isolated since isolation is disabled. Isolation can only be disabled if
* the containing document is chrome.
*/
[infallible] readonly attribute boolean isInIsolatedMozBrowserElement;
/**
* Returns true if this principal has an unknown appId. This shouldn't
* generally be used. We only expose it due to not providing the correct
-2
View File
@@ -31,8 +31,6 @@
#include "mozilla/Preferences.h"
#include "mozilla/HashFunctions.h"
#include "nsIAppsService.h"
using namespace mozilla;
static bool gCodeBasePrincipalSupport = false;
+25 -70
View File
@@ -9,7 +9,6 @@
#include "xpcpublic.h"
#include "XPCWrapper.h"
#include "nsIAppsService.h"
#include "nsIInputStreamChannel.h"
#include "nsILoadContext.h"
#include "nsIServiceManager.h"
@@ -55,7 +54,6 @@
#include "nsIChromeRegistry.h"
#include "nsIContentSecurityPolicy.h"
#include "nsIAsyncVerifyRedirectCallback.h"
#include "mozIApplication.h"
#include "mozilla/Preferences.h"
#include "mozilla/dom/BindingUtils.h"
#include "mozilla/dom/ContentParent.h"
@@ -76,6 +74,7 @@ nsIIOService *nsScriptSecurityManager::sIOService = nullptr;
nsIStringBundle *nsScriptSecurityManager::sStrBundle = nullptr;
JSContext *nsScriptSecurityManager::sContext = nullptr;
bool nsScriptSecurityManager::sStrictFileOriginPolicy = true;
bool nsScriptSecurityManager::sSameOriginPolicy = true;
///////////////////////////
// Convenience Functions //
@@ -239,68 +238,6 @@ nsScriptSecurityManager::SecurityHashURI(nsIURI* aURI)
return NS_SecurityHashURI(aURI);
}
uint16_t
nsScriptSecurityManager::AppStatusForPrincipal(nsIPrincipal *aPrin)
{
uint32_t appId = aPrin->GetAppId();
// After bug 1238160, the principal no longer knows how to answer "is this a
// browser element", which is really what this code path wants. Currently,
// desktop is the only platform where we intend to disable isolation on a
// browser frame, so non-desktop should be able to assume that
// inIsolatedMozBrowser is true for all mozbrowser frames. Additionally,
// apps are no longer used on desktop, so appId is always NO_APP_ID. We use
// a release assertion in nsFrameLoader::OwnerIsIsolatedMozBrowserFrame so
// that platforms with apps can assume inIsolatedMozBrowser is true for all
// mozbrowser frames.
bool inIsolatedMozBrowser = aPrin->GetIsInIsolatedMozBrowserElement();
NS_WARNING_ASSERTION(
appId != nsIScriptSecurityManager::UNKNOWN_APP_ID,
"Asking for app status on a principal with an unknown app id");
// Installed apps have a valid app id (not NO_APP_ID or UNKNOWN_APP_ID)
// and they are not inside a mozbrowser.
if (appId == nsIScriptSecurityManager::NO_APP_ID ||
appId == nsIScriptSecurityManager::UNKNOWN_APP_ID ||
inIsolatedMozBrowser)
{
return nsIPrincipal::APP_STATUS_NOT_INSTALLED;
}
nsCOMPtr<nsIAppsService> appsService = do_GetService(APPS_SERVICE_CONTRACTID);
NS_ENSURE_TRUE(appsService, nsIPrincipal::APP_STATUS_NOT_INSTALLED);
nsCOMPtr<mozIApplication> app;
appsService->GetAppByLocalId(appId, getter_AddRefs(app));
NS_ENSURE_TRUE(app, nsIPrincipal::APP_STATUS_NOT_INSTALLED);
uint16_t status = nsIPrincipal::APP_STATUS_INSTALLED;
NS_ENSURE_SUCCESS(app->GetAppStatus(&status),
nsIPrincipal::APP_STATUS_NOT_INSTALLED);
nsString appOrigin;
NS_ENSURE_SUCCESS(app->GetOrigin(appOrigin),
nsIPrincipal::APP_STATUS_NOT_INSTALLED);
nsCOMPtr<nsIURI> appURI;
NS_ENSURE_SUCCESS(NS_NewURI(getter_AddRefs(appURI), appOrigin),
nsIPrincipal::APP_STATUS_NOT_INSTALLED);
// The app could contain a cross-origin iframe - make sure that the content
// is actually same-origin with the app.
MOZ_ASSERT(inIsolatedMozBrowser == false, "Checked this above");
nsAutoCString suffix;
PrincipalOriginAttributes attrs;
NS_ENSURE_TRUE(attrs.PopulateFromOrigin(NS_ConvertUTF16toUTF8(appOrigin), suffix),
nsIPrincipal::APP_STATUS_NOT_INSTALLED);
attrs.mAppId = appId;
attrs.mInIsolatedMozBrowser = false;
nsCOMPtr<nsIPrincipal> appPrin = BasePrincipal::CreateCodebasePrincipal(appURI, attrs);
NS_ENSURE_TRUE(appPrin, nsIPrincipal::APP_STATUS_NOT_INSTALLED);
return aPrin->Equals(appPrin) ? status
: nsIPrincipal::APP_STATUS_NOT_INSTALLED;
}
/*
* GetChannelResultPrincipal will return the principal that the resource
* returned by this channel will use. For example, if the resource is in
@@ -535,7 +472,8 @@ NS_IMPL_ISUPPORTS(nsScriptSecurityManager,
///////////////// Security Checks /////////////////
bool
nsScriptSecurityManager::ContentSecurityPolicyPermitsJSAction(JSContext *cx)
nsScriptSecurityManager::ContentSecurityPolicyPermitsJSAction(JSContext *cx,
JS::HandleValue aValue)
{
MOZ_ASSERT(cx == nsContentUtils::GetCurrentJSContext());
nsCOMPtr<nsIPrincipal> subjectPrincipal = nsContentUtils::SubjectPrincipal();
@@ -558,12 +496,23 @@ nsScriptSecurityManager::ContentSecurityPolicyPermitsJSAction(JSContext *cx)
}
if (reportViolation) {
nsAutoString fileName;
unsigned lineNum = 0;
NS_NAMED_LITERAL_STRING(scriptSample, "call to eval() or related function blocked by CSP");
JS::Rooted<JSString*> jsString(cx, JS::ToString(cx, aValue));
if (NS_WARN_IF(!jsString)) {
JS_ClearPendingException(cx);
return false;
}
nsAutoJSString scriptSample;
if (NS_WARN_IF(!scriptSample.init(cx, jsString))) {
JS_ClearPendingException(cx);
return false;
}
JS::AutoFilename scriptFilename;
if (JS::DescribeScriptedCaller(cx, &scriptFilename, &lineNum)) {
nsAutoString fileName;
unsigned lineNum = 0;
unsigned columnNum = 0;
if (JS::DescribeScriptedCaller(cx, &scriptFilename, &lineNum, &columnNum)) {
if (const char *file = scriptFilename.get()) {
CopyUTF8toUTF16(nsDependentCString(file), fileName);
}
@@ -574,6 +523,7 @@ nsScriptSecurityManager::ContentSecurityPolicyPermitsJSAction(JSContext *cx)
fileName,
scriptSample,
lineNum,
columnNum,
EmptyString(),
EmptyString());
}
@@ -594,7 +544,7 @@ nsScriptSecurityManager::CheckSameOriginURI(nsIURI* aSourceURI,
nsIURI* aTargetURI,
bool reportError)
{
if (!SecurityCompareURIs(aSourceURI, aTargetURI))
if (sSameOriginPolicy && !SecurityCompareURIs(aSourceURI, aTargetURI))
{
if (reportError) {
ReportError(nullptr, NS_LITERAL_STRING("CheckSameOriginError"),
@@ -1421,10 +1371,13 @@ nsScriptSecurityManager::CanGetService(JSContext *cx,
const char sJSEnabledPrefName[] = "javascript.enabled";
const char sFileOriginPolicyPrefName[] =
"security.fileuri.strict_origin_policy";
const char sSameOriginPolicyPrefName[] =
"security.same_origin_policy.enabled";
static const char* kObservedPrefs[] = {
sJSEnabledPrefName,
sFileOriginPolicyPrefName,
sSameOriginPolicyPrefName,
"capability.policy.",
nullptr
};
@@ -1580,6 +1533,8 @@ nsScriptSecurityManager::ScriptSecurityPrefChanged()
Preferences::GetBool(sJSEnabledPrefName, mIsJavaScriptEnabled);
sStrictFileOriginPolicy =
Preferences::GetBool(sFileOriginPolicyPrefName, false);
sSameOriginPolicy =
Preferences::GetBool(sSameOriginPolicyPrefName, true);
mFileURIWhitelist.reset();
}
+2 -1
View File
@@ -91,7 +91,7 @@ private:
// Decides, based on CSP, whether or not eval() and stuff can be executed.
static bool
ContentSecurityPolicyPermitsJSAction(JSContext *cx);
ContentSecurityPolicyPermitsJSAction(JSContext *cx, JS::HandleValue aValue);
static bool
JSPrincipalsSubsume(JSPrincipals *first, JSPrincipals *second);
@@ -152,6 +152,7 @@ private:
}
static bool sStrictFileOriginPolicy;
static bool sSameOriginPolicy;
static nsIIOService *sIOService;
static nsIStringBundle *sStrBundle;
-1
View File
@@ -4,7 +4,6 @@ support-files =
file_disableScript.html
!/js/xpconnect/tests/mochitest/file_empty.html
[test_app_principal_equality.html]
[test_bug246699.html]
[test_bug292789.html]
[test_bug423375.html]
@@ -1,88 +0,0 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=777467
-->
<head>
<meta charset="utf-8">
<title>Test app principal's equality</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=777467">Mozilla Bug 777467</a>
<p id="display"></p>
<script>
/** Test for app principal's equality **/
SimpleTest.waitForExplicitFinish();
var permissions = new Promise(resolve => {
SpecialPowers.pushPermissions(
[{ type: "browser", allow: true, context: document },
{ type: "embed-apps", allow: true, context: document }],
resolve);
});
permissions.then(() => {
$('content').innerHTML =
'<iframe src="error404"></iframe>\n' +
'<iframe mozbrowser src="error404"></iframe>\n' +
'<iframe mozapp="http://example.org/manifest.webapp" mozbrowser src="error404"></iframe>';
var iframes = document.getElementsByTagName("iframe");
var promises = []
for (var i = 0; i < promises.length; ++i) {
promises.push(new Promise(resolve => {
iframes[i].addEventListener("load", resolve);
}));
}
return Promise.all(promises);
});
var prefs = new Promise(resolve => {
SpecialPowers.pushPrefEnv(
{ set: [[ "dom.mozBrowserFramesEnabled", true ],
[ "dom.ipc.browser_frames.oop_by_default", false ]] },
resolve);
});
</script>
<div id="content" style="display: none;">
</div>
<pre id="test">
<script type="application/javascript">
function canAccessDocument(win) {
var result = true;
try {
win.document;
} catch(e) {
result = false;
}
return result;
}
var loaded = new Promise(resolve => addLoadEvent(resolve));
Promise.all([ permissions, prefs, loaded ]).then(runTest);
function runTest() {
// Test the witness frame (we can access same-origin frame).
is(canAccessDocument(frames[0]), true,
"should be able to access the first frame");
// Test different app/browserElement frames.
for (var i=1; i<frames.length; ++i) {
is(canAccessDocument(frames[i]), false,
"should not be able to access the other frames");
}
SimpleTest.finish();
}
</script>
</pre>
</body>
</html>
+1
View File
@@ -86,6 +86,7 @@ included_inclnames_to_ignore = set([
'unicode/uclean.h', # ICU
'unicode/ucol.h', # ICU
'unicode/udat.h', # ICU
'unicode/udateintervalformat.h', # ICU
'unicode/udatpg.h', # ICU
'unicode/udisplaycontext.h',# ICU
'unicode/uenum.h', # ICU
+5 -33
View File
@@ -526,45 +526,17 @@ EXPAND_MKSHLIB_ARGS += --symbol-order $(SYMBOL_ORDER)
endif
EXPAND_MKSHLIB = $(EXPAND_LIBS_EXEC) $(EXPAND_MKSHLIB_ARGS) -- $(MKSHLIB)
# $(call CHECK_SYMBOLS,lib,PREFIX,dep_name,test)
# Checks that the given `lib` doesn't contain dependency on symbols with a
# version starting with `PREFIX`_ and matching the `test`. `dep_name` is only
# used for the error message.
# `test` is an awk expression using the information in the variable `v` which
# contains a list of version items ([major, minor, ...]).
define CHECK_SYMBOLS
@$(TOOLCHAIN_PREFIX)readelf -sW $(1) | \
awk '$$8 ~ /@$(2)_/ { \
split($$8,a,"@"); \
split(a[2],b,"_"); \
split(b[2],v,"."); \
if ($(4)) { \
if (!found) { \
print "TEST-UNEXPECTED-FAIL | check_stdcxx | We do not want these $(3) symbol versions to be used:" \
} \
print " ",$$8; \
found=1 \
} \
} \
END { \
if (found) { \
exit(1) \
} \
}'
endef
ifneq (,$(MOZ_LIBSTDCXX_TARGET_VERSION)$(MOZ_LIBSTDCXX_HOST_VERSION))
CHECK_STDCXX = $(call CHECK_SYMBOLS,$(1),GLIBCXX,libstdc++,v[1] > 3 || (v[1] == 3 && v[2] == 4 && v[3] > 16))
CHECK_GLIBC = $(call CHECK_SYMBOLS,$(1),GLIBC,libc,v[1] > 2 || (v[1] == 2 && v[2] > 12))
ifeq ($(OS_ARCH),SunOS)
ELF_TEST = elfdump -N .dynamic $(1)
else
ELF_TEST = $(TOOLCHAIN_PREFIX)readelf -d $(1)
endif
ifeq (,$(filter $(OS_TARGET),WINNT Darwin))
CHECK_TEXTREL = @$(TOOLCHAIN_PREFIX)readelf -d $(1) | grep TEXTREL > /dev/null && echo 'TEST-UNEXPECTED-FAIL | check_textrel | We do not want text relocations in libraries and programs' || true
CHECK_TEXTREL = @$(ELF_TEST) | grep TEXTREL > /dev/null && echo 'TEST-UNEXPECTED-FAIL | check_textrel | We do not want text relocations in libraries and programs' || true
endif
define CHECK_BINARY
$(call CHECK_GLIBC,$(1))
$(call CHECK_STDCXX,$(1))
$(call CHECK_TEXTREL,$(1))
$(call LOCAL_CHECKS,$(1))
$(call CHECK_MOZGLUE_ORDER,$(1))
-13
View File
@@ -1,13 +0,0 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# 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 http://mozilla.org/MPL/2.0/.
Library('freetype')
if CONFIG['MOZ_TREE_FREETYPE']:
USE_LIBS += [
'static:/modules/freetype2/.libs/freetype',
]
else:
OS_LIBS += CONFIG['FT2_LIBS']
+2
View File
@@ -15,3 +15,5 @@ LOCAL_INCLUDES += ['/intl/icu/source/i18n']
include('../defs.mozbuild')
include('sources.mozbuild')
SOURCES += sources
+30 -29
View File
@@ -1,5 +1,5 @@
# THIS FILE IS GENERATED BY /intl/icu_sources_data.py DO NOT EDIT
SOURCES += [
sources = [
'/intl/icu/source/common/appendable.cpp',
'/intl/icu/source/common/bmpset.cpp',
'/intl/icu/source/common/brkeng.cpp',
@@ -8,15 +8,12 @@ SOURCES += [
'/intl/icu/source/common/bytestream.cpp',
'/intl/icu/source/common/bytestrie.cpp',
'/intl/icu/source/common/bytestriebuilder.cpp',
'/intl/icu/source/common/bytestrieiterator.cpp',
'/intl/icu/source/common/caniter.cpp',
'/intl/icu/source/common/characterproperties.cpp',
'/intl/icu/source/common/chariter.cpp',
'/intl/icu/source/common/charstr.cpp',
'/intl/icu/source/common/cmemory.cpp',
'/intl/icu/source/common/cstr.cpp',
'/intl/icu/source/common/cstring.cpp',
'/intl/icu/source/common/cwchar.cpp',
'/intl/icu/source/common/dictbe.cpp',
'/intl/icu/source/common/dictionarydata.cpp',
'/intl/icu/source/common/dtintrv.cpp',
@@ -24,8 +21,6 @@ SOURCES += [
'/intl/icu/source/common/errorcode.cpp',
'/intl/icu/source/common/filteredbrk.cpp',
'/intl/icu/source/common/filterednormalizer2.cpp',
'/intl/icu/source/common/icudataver.cpp',
'/intl/icu/source/common/icuplug.cpp',
'/intl/icu/source/common/loadednormalizer2impl.cpp',
'/intl/icu/source/common/locavailable.cpp',
'/intl/icu/source/common/locbased.cpp',
@@ -42,9 +37,7 @@ SOURCES += [
'/intl/icu/source/common/normlzr.cpp',
'/intl/icu/source/common/parsepos.cpp',
'/intl/icu/source/common/patternprops.cpp',
'/intl/icu/source/common/pluralmap.cpp',
'/intl/icu/source/common/propname.cpp',
'/intl/icu/source/common/propsvec.cpp',
'/intl/icu/source/common/punycode.cpp',
'/intl/icu/source/common/putil.cpp',
'/intl/icu/source/common/rbbi.cpp',
@@ -57,7 +50,6 @@ SOURCES += [
'/intl/icu/source/common/rbbistbl.cpp',
'/intl/icu/source/common/rbbitblb.cpp',
'/intl/icu/source/common/resbund.cpp',
'/intl/icu/source/common/resbund_cnv.cpp',
'/intl/icu/source/common/resource.cpp',
'/intl/icu/source/common/ruleiter.cpp',
'/intl/icu/source/common/schriter.cpp',
@@ -77,13 +69,11 @@ SOURCES += [
'/intl/icu/source/common/ubidi.cpp',
'/intl/icu/source/common/ubidi_props.cpp',
'/intl/icu/source/common/ubidiln.cpp',
'/intl/icu/source/common/ubiditransform.cpp',
'/intl/icu/source/common/ubidiwrt.cpp',
'/intl/icu/source/common/ubrk.cpp',
'/intl/icu/source/common/ucase.cpp',
'/intl/icu/source/common/ucasemap.cpp',
'/intl/icu/source/common/ucasemap_titlecase_brkiter.cpp',
'/intl/icu/source/common/ucat.cpp',
'/intl/icu/source/common/uchar.cpp',
'/intl/icu/source/common/ucharstrie.cpp',
'/intl/icu/source/common/ucharstriebuilder.cpp',
@@ -92,28 +82,18 @@ SOURCES += [
'/intl/icu/source/common/ucln_cmn.cpp',
'/intl/icu/source/common/ucmndata.cpp',
'/intl/icu/source/common/ucnv.cpp',
'/intl/icu/source/common/ucnv2022.cpp',
'/intl/icu/source/common/ucnv_bld.cpp',
'/intl/icu/source/common/ucnv_cb.cpp',
'/intl/icu/source/common/ucnv_cnv.cpp',
'/intl/icu/source/common/ucnv_ct.cpp',
'/intl/icu/source/common/ucnv_err.cpp',
'/intl/icu/source/common/ucnv_ext.cpp',
'/intl/icu/source/common/ucnv_io.cpp',
'/intl/icu/source/common/ucnv_lmb.cpp',
'/intl/icu/source/common/ucnv_set.cpp',
'/intl/icu/source/common/ucnv_u16.cpp',
'/intl/icu/source/common/ucnv_u32.cpp',
'/intl/icu/source/common/ucnv_u7.cpp',
'/intl/icu/source/common/ucnv_u8.cpp',
'/intl/icu/source/common/ucnvbocu.cpp',
'/intl/icu/source/common/ucnvdisp.cpp',
'/intl/icu/source/common/ucnvhz.cpp',
'/intl/icu/source/common/ucnvisci.cpp',
'/intl/icu/source/common/ucnvlat1.cpp',
'/intl/icu/source/common/ucnvmbcs.cpp',
'/intl/icu/source/common/ucnvscsu.cpp',
'/intl/icu/source/common/ucnvsel.cpp',
'/intl/icu/source/common/ucol_swp.cpp',
'/intl/icu/source/common/ucptrie.cpp',
'/intl/icu/source/common/ucurr.cpp',
@@ -123,7 +103,6 @@ SOURCES += [
'/intl/icu/source/common/uenum.cpp',
'/intl/icu/source/common/uhash.cpp',
'/intl/icu/source/common/uhash_us.cpp',
'/intl/icu/source/common/uidna.cpp',
'/intl/icu/source/common/uinit.cpp',
'/intl/icu/source/common/uinvchar.cpp',
'/intl/icu/source/common/uiter.cpp',
@@ -149,25 +128,20 @@ SOURCES += [
'/intl/icu/source/common/unistr_cnv.cpp',
'/intl/icu/source/common/unistr_props.cpp',
'/intl/icu/source/common/unistr_titlecase_brkiter.cpp',
'/intl/icu/source/common/unorm.cpp',
'/intl/icu/source/common/unormcmp.cpp',
'/intl/icu/source/common/uobject.cpp',
'/intl/icu/source/common/uprops.cpp',
'/intl/icu/source/common/ures_cnv.cpp',
'/intl/icu/source/common/uresbund.cpp',
'/intl/icu/source/common/uresdata.cpp',
'/intl/icu/source/common/usc_impl.cpp',
'/intl/icu/source/common/uscript.cpp',
'/intl/icu/source/common/uscript_props.cpp',
'/intl/icu/source/common/uset.cpp',
'/intl/icu/source/common/uset_props.cpp',
'/intl/icu/source/common/usetiter.cpp',
'/intl/icu/source/common/ushape.cpp',
'/intl/icu/source/common/usprep.cpp',
'/intl/icu/source/common/ustack.cpp',
'/intl/icu/source/common/ustr_cnv.cpp',
'/intl/icu/source/common/ustr_titlecase_brkiter.cpp',
'/intl/icu/source/common/ustr_wcs.cpp',
'/intl/icu/source/common/ustrcase.cpp',
'/intl/icu/source/common/ustrcase_locale.cpp',
'/intl/icu/source/common/ustrenum.cpp',
@@ -177,7 +151,6 @@ 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 +163,35 @@ SOURCES += [
'/intl/icu/source/common/uvectr64.cpp',
'/intl/icu/source/common/wintz.cpp',
]
other_sources = [
'/intl/icu/source/common/bytestrieiterator.cpp',
'/intl/icu/source/common/cstr.cpp',
'/intl/icu/source/common/cwchar.cpp',
'/intl/icu/source/common/icudataver.cpp',
'/intl/icu/source/common/icuplug.cpp',
'/intl/icu/source/common/pluralmap.cpp',
'/intl/icu/source/common/propsvec.cpp',
'/intl/icu/source/common/resbund_cnv.cpp',
'/intl/icu/source/common/ubiditransform.cpp',
'/intl/icu/source/common/ucat.cpp',
'/intl/icu/source/common/ucnv2022.cpp',
'/intl/icu/source/common/ucnv_ct.cpp',
'/intl/icu/source/common/ucnv_ext.cpp',
'/intl/icu/source/common/ucnv_lmb.cpp',
'/intl/icu/source/common/ucnv_set.cpp',
'/intl/icu/source/common/ucnvdisp.cpp',
'/intl/icu/source/common/ucnvhz.cpp',
'/intl/icu/source/common/ucnvisci.cpp',
'/intl/icu/source/common/ucnvmbcs.cpp',
'/intl/icu/source/common/ucnvsel.cpp',
'/intl/icu/source/common/uidna.cpp',
'/intl/icu/source/common/unorm.cpp',
'/intl/icu/source/common/ures_cnv.cpp',
'/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',
'/intl/icu/source/common/unicode/brkiter.h',
+14 -5
View File
@@ -3,10 +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/.
if CONFIG['MOZ_ICU_DATA_ARCHIVE']:
# Copy the pre-built ICU data file to dist/bin.
FINAL_TARGET_FILES += [CONFIG['ICU_DATA_FILE']]
# Build a library containing the ICU data for use in the JS shell, so that
# JSAPI consumers don't have to deal with setting ICU's data path.
Library('icudata')
@@ -17,8 +13,13 @@ if CONFIG['OS_ARCH'] == 'WINNT':
elif CONFIG['OS_ARCH'] == 'Darwin':
ASFLAGS += ['-DPREFIX']
data_file = {
'little': 'icudt%sl.dat' % CONFIG['MOZ_ICU_VERSION'],
'big': 'icudt%sb.dat' % CONFIG['MOZ_ICU_VERSION'],
}
ASFLAGS += [
'-DICU_DATA_FILE="%s"' % CONFIG['ICU_DATA_FILE'],
'-DICU_DATA_FILE="%s"' % data_file[CONFIG['TARGET_ENDIANNESS']],
'-DICU_DATA_SYMBOL=icudt%s_dat' % CONFIG['MOZ_ICU_VERSION'],
]
LOCAL_INCLUDES += ['.']
@@ -26,5 +27,13 @@ LOCAL_INCLUDES += ['.']
if CONFIG['HAVE_YASM']:
USE_YASM = True
SOURCES += ['icudata.s']
elif CONFIG['OS_ARCH'] == 'Darwin':
if CONFIG['CPU_ARCH'] != 'ppc':
SOURCES += ['icudata_gas.S']
elif CONFIG['GNU_AS']:
SOURCES += ['icudata_gas.S']
if CONFIG['MOZ_ICU_DATA_ARCHIVE']:
# Copy the pre-built ICU data file to dist/bin.
FINAL_TARGET_FILES += [data_file[CONFIG['TARGET_ENDIANNESS']]]
+3
View File
@@ -12,3 +12,6 @@ LOCAL_INCLUDES += ['/intl/icu/source/common']
include('../defs.mozbuild')
include('sources.mozbuild')
SOURCES += sources
+57 -56
View File
@@ -1,14 +1,10 @@
# THIS FILE IS GENERATED BY /intl/icu_sources_data.py DO NOT EDIT
SOURCES += [
'/intl/icu/source/i18n/alphaindex.cpp',
'/intl/icu/source/i18n/anytrans.cpp',
sources = [
'/intl/icu/source/i18n/astro.cpp',
'/intl/icu/source/i18n/basictz.cpp',
'/intl/icu/source/i18n/bocsu.cpp',
'/intl/icu/source/i18n/brktrans.cpp',
'/intl/icu/source/i18n/buddhcal.cpp',
'/intl/icu/source/i18n/calendar.cpp',
'/intl/icu/source/i18n/casetrn.cpp',
'/intl/icu/source/i18n/cecal.cpp',
'/intl/icu/source/i18n/chnsecal.cpp',
'/intl/icu/source/i18n/choicfmt.cpp',
@@ -35,15 +31,6 @@ SOURCES += [
'/intl/icu/source/i18n/collationweights.cpp',
'/intl/icu/source/i18n/compactdecimalformat.cpp',
'/intl/icu/source/i18n/coptccal.cpp',
'/intl/icu/source/i18n/cpdtrans.cpp',
'/intl/icu/source/i18n/csdetect.cpp',
'/intl/icu/source/i18n/csmatch.cpp',
'/intl/icu/source/i18n/csr2022.cpp',
'/intl/icu/source/i18n/csrecog.cpp',
'/intl/icu/source/i18n/csrmbcs.cpp',
'/intl/icu/source/i18n/csrsbcs.cpp',
'/intl/icu/source/i18n/csrucode.cpp',
'/intl/icu/source/i18n/csrutf8.cpp',
'/intl/icu/source/i18n/curramt.cpp',
'/intl/icu/source/i18n/currfmt.cpp',
'/intl/icu/source/i18n/currpinf.cpp',
@@ -68,20 +55,15 @@ SOURCES += [
'/intl/icu/source/i18n/dtptngen.cpp',
'/intl/icu/source/i18n/dtrule.cpp',
'/intl/icu/source/i18n/erarules.cpp',
'/intl/icu/source/i18n/esctrn.cpp',
'/intl/icu/source/i18n/ethpccal.cpp',
'/intl/icu/source/i18n/fmtable.cpp',
'/intl/icu/source/i18n/fmtable_cnv.cpp',
'/intl/icu/source/i18n/format.cpp',
'/intl/icu/source/i18n/fphdlimp.cpp',
'/intl/icu/source/i18n/fpositer.cpp',
'/intl/icu/source/i18n/funcrepl.cpp',
'/intl/icu/source/i18n/gender.cpp',
'/intl/icu/source/i18n/gregocal.cpp',
'/intl/icu/source/i18n/gregoimp.cpp',
'/intl/icu/source/i18n/hebrwcal.cpp',
'/intl/icu/source/i18n/indiancal.cpp',
'/intl/icu/source/i18n/inputext.cpp',
'/intl/icu/source/i18n/islamcal.cpp',
'/intl/icu/source/i18n/japancal.cpp',
'/intl/icu/source/i18n/listformatter.cpp',
@@ -89,13 +71,10 @@ SOURCES += [
'/intl/icu/source/i18n/measunit.cpp',
'/intl/icu/source/i18n/measure.cpp',
'/intl/icu/source/i18n/msgfmt.cpp',
'/intl/icu/source/i18n/name2uni.cpp',
'/intl/icu/source/i18n/nfrs.cpp',
'/intl/icu/source/i18n/nfrule.cpp',
'/intl/icu/source/i18n/nfsubs.cpp',
'/intl/icu/source/i18n/nortrans.cpp',
'/intl/icu/source/i18n/nounit.cpp',
'/intl/icu/source/i18n/nultrans.cpp',
'/intl/icu/source/i18n/number_affixutils.cpp',
'/intl/icu/source/i18n/number_asformat.cpp',
'/intl/icu/source/i18n/number_capi.cpp',
@@ -138,27 +117,13 @@ SOURCES += [
'/intl/icu/source/i18n/persncal.cpp',
'/intl/icu/source/i18n/plurfmt.cpp',
'/intl/icu/source/i18n/plurrule.cpp',
'/intl/icu/source/i18n/quant.cpp',
'/intl/icu/source/i18n/quantityformatter.cpp',
'/intl/icu/source/i18n/rbnf.cpp',
'/intl/icu/source/i18n/rbt.cpp',
'/intl/icu/source/i18n/rbt_data.cpp',
'/intl/icu/source/i18n/rbt_pars.cpp',
'/intl/icu/source/i18n/rbt_rule.cpp',
'/intl/icu/source/i18n/rbt_set.cpp',
'/intl/icu/source/i18n/rbtz.cpp',
'/intl/icu/source/i18n/regexcmp.cpp',
'/intl/icu/source/i18n/regeximp.cpp',
'/intl/icu/source/i18n/regexst.cpp',
'/intl/icu/source/i18n/regextxt.cpp',
'/intl/icu/source/i18n/region.cpp',
'/intl/icu/source/i18n/reldatefmt.cpp',
'/intl/icu/source/i18n/reldtfmt.cpp',
'/intl/icu/source/i18n/rematch.cpp',
'/intl/icu/source/i18n/remtrans.cpp',
'/intl/icu/source/i18n/repattrn.cpp',
'/intl/icu/source/i18n/rulebasedcollator.cpp',
'/intl/icu/source/i18n/scientificnumberformatter.cpp',
'/intl/icu/source/i18n/scriptset.cpp',
'/intl/icu/source/i18n/search.cpp',
'/intl/icu/source/i18n/selfmt.cpp',
@@ -168,20 +133,12 @@ SOURCES += [
'/intl/icu/source/i18n/smpdtfst.cpp',
'/intl/icu/source/i18n/sortkey.cpp',
'/intl/icu/source/i18n/standardplural.cpp',
'/intl/icu/source/i18n/strmatch.cpp',
'/intl/icu/source/i18n/strrepl.cpp',
'/intl/icu/source/i18n/stsearch.cpp',
'/intl/icu/source/i18n/taiwncal.cpp',
'/intl/icu/source/i18n/timezone.cpp',
'/intl/icu/source/i18n/titletrn.cpp',
'/intl/icu/source/i18n/tmunit.cpp',
'/intl/icu/source/i18n/tmutamt.cpp',
'/intl/icu/source/i18n/tmutfmt.cpp',
'/intl/icu/source/i18n/tolowtrn.cpp',
'/intl/icu/source/i18n/toupptrn.cpp',
'/intl/icu/source/i18n/translit.cpp',
'/intl/icu/source/i18n/transreg.cpp',
'/intl/icu/source/i18n/tridpars.cpp',
'/intl/icu/source/i18n/tzfmt.cpp',
'/intl/icu/source/i18n/tzgnames.cpp',
'/intl/icu/source/i18n/tznames.cpp',
@@ -194,42 +151,86 @@ SOURCES += [
'/intl/icu/source/i18n/ucol_res.cpp',
'/intl/icu/source/i18n/ucol_sit.cpp',
'/intl/icu/source/i18n/ucoleitr.cpp',
'/intl/icu/source/i18n/ucsdet.cpp',
'/intl/icu/source/i18n/udat.cpp',
'/intl/icu/source/i18n/udateintervalformat.cpp',
'/intl/icu/source/i18n/udatpg.cpp',
'/intl/icu/source/i18n/ufieldpositer.cpp',
'/intl/icu/source/i18n/uitercollationiterator.cpp',
'/intl/icu/source/i18n/ulistformatter.cpp',
'/intl/icu/source/i18n/ulocdata.cpp',
'/intl/icu/source/i18n/umsg.cpp',
'/intl/icu/source/i18n/unesctrn.cpp',
'/intl/icu/source/i18n/uni2name.cpp',
'/intl/icu/source/i18n/unum.cpp',
'/intl/icu/source/i18n/unumsys.cpp',
'/intl/icu/source/i18n/upluralrules.cpp',
'/intl/icu/source/i18n/uregex.cpp',
'/intl/icu/source/i18n/uregexc.cpp',
'/intl/icu/source/i18n/uregion.cpp',
'/intl/icu/source/i18n/usearch.cpp',
'/intl/icu/source/i18n/uspoof.cpp',
'/intl/icu/source/i18n/uspoof_build.cpp',
'/intl/icu/source/i18n/uspoof_conf.cpp',
'/intl/icu/source/i18n/uspoof_impl.cpp',
'/intl/icu/source/i18n/utf16collationiterator.cpp',
'/intl/icu/source/i18n/utf8collationiterator.cpp',
'/intl/icu/source/i18n/utmscale.cpp',
'/intl/icu/source/i18n/utrans.cpp',
'/intl/icu/source/i18n/vtzone.cpp',
'/intl/icu/source/i18n/vzone.cpp',
'/intl/icu/source/i18n/windtfmt.cpp',
'/intl/icu/source/i18n/winnmfmt.cpp',
'/intl/icu/source/i18n/wintzimpl.cpp',
'/intl/icu/source/i18n/zonemeta.cpp',
]
other_sources = [
'/intl/icu/source/i18n/alphaindex.cpp',
'/intl/icu/source/i18n/anytrans.cpp',
'/intl/icu/source/i18n/brktrans.cpp',
'/intl/icu/source/i18n/casetrn.cpp',
'/intl/icu/source/i18n/cpdtrans.cpp',
'/intl/icu/source/i18n/csdetect.cpp',
'/intl/icu/source/i18n/csmatch.cpp',
'/intl/icu/source/i18n/csr2022.cpp',
'/intl/icu/source/i18n/csrecog.cpp',
'/intl/icu/source/i18n/csrmbcs.cpp',
'/intl/icu/source/i18n/csrsbcs.cpp',
'/intl/icu/source/i18n/csrucode.cpp',
'/intl/icu/source/i18n/csrutf8.cpp',
'/intl/icu/source/i18n/esctrn.cpp',
'/intl/icu/source/i18n/fmtable_cnv.cpp',
'/intl/icu/source/i18n/funcrepl.cpp',
'/intl/icu/source/i18n/gender.cpp',
'/intl/icu/source/i18n/inputext.cpp',
'/intl/icu/source/i18n/name2uni.cpp',
'/intl/icu/source/i18n/nortrans.cpp',
'/intl/icu/source/i18n/nultrans.cpp',
'/intl/icu/source/i18n/quant.cpp',
'/intl/icu/source/i18n/rbt.cpp',
'/intl/icu/source/i18n/rbt_data.cpp',
'/intl/icu/source/i18n/rbt_pars.cpp',
'/intl/icu/source/i18n/rbt_rule.cpp',
'/intl/icu/source/i18n/rbt_set.cpp',
'/intl/icu/source/i18n/regexcmp.cpp',
'/intl/icu/source/i18n/regeximp.cpp',
'/intl/icu/source/i18n/regexst.cpp',
'/intl/icu/source/i18n/regextxt.cpp',
'/intl/icu/source/i18n/rematch.cpp',
'/intl/icu/source/i18n/remtrans.cpp',
'/intl/icu/source/i18n/repattrn.cpp',
'/intl/icu/source/i18n/scientificnumberformatter.cpp',
'/intl/icu/source/i18n/strmatch.cpp',
'/intl/icu/source/i18n/strrepl.cpp',
'/intl/icu/source/i18n/titletrn.cpp',
'/intl/icu/source/i18n/tolowtrn.cpp',
'/intl/icu/source/i18n/toupptrn.cpp',
'/intl/icu/source/i18n/translit.cpp',
'/intl/icu/source/i18n/transreg.cpp',
'/intl/icu/source/i18n/tridpars.cpp',
'/intl/icu/source/i18n/ucsdet.cpp',
'/intl/icu/source/i18n/ulocdata.cpp',
'/intl/icu/source/i18n/unesctrn.cpp',
'/intl/icu/source/i18n/uni2name.cpp',
'/intl/icu/source/i18n/uregex.cpp',
'/intl/icu/source/i18n/uregexc.cpp',
'/intl/icu/source/i18n/uregion.cpp',
'/intl/icu/source/i18n/uspoof_build.cpp',
'/intl/icu/source/i18n/uspoof_conf.cpp',
'/intl/icu/source/i18n/utrans.cpp',
'/intl/icu/source/i18n/vzone.cpp',
'/intl/icu/source/i18n/zrule.cpp',
'/intl/icu/source/i18n/ztrans.cpp',
]
EXPORTS.unicode += [
'/intl/icu/source/i18n/unicode/alphaindex.h',
'/intl/icu/source/i18n/unicode/basictz.h',
+2 -2
View File
@@ -46,7 +46,7 @@ elif CONFIG['OS_TARGET'] == 'Darwin':
)
SOURCES += [
'/nsprpub/pr/src/md/unix/darwin.c',
'/nsprpub/pr/src/md/unix/os_Darwin.s',
'/nsprpub/pr/src/md/unix/os_Darwin.S',
]
if not CONFIG['MOZ_IOS']:
DEFINES['HAVE_CRT_EXTERNS_H'] = True
@@ -85,7 +85,7 @@ elif CONFIG['OS_TARGET'] == 'WINNT':
else:
DEFINES['_X86_'] = True
else:
error('Not a supported OS_TARGET for NSPR in moz.build: "%s". Use --with-system-nspr' % CONFIG['OS_TARGET'])
error('Not a supported OS_TARGET for NSPR in moz.build: "%s". Cannot build.' % CONFIG['OS_TARGET'])
LOCAL_INCLUDES += [
+1 -1
View File
@@ -8,4 +8,4 @@
# Referenced by milestone.py.
#--------------------------------------------------------
6.5.0
6.7.0
+2
View File
@@ -155,8 +155,10 @@ endif
# Interdependencies that moz.build world don't know about yet for compilation.
# Note some others are hardcoded or "guessed" in recursivemake.py and emitter.py
ifeq ($(MOZ_WIDGET_TOOLKIT),gtk3)
ifdef MOZ_ENABLE_NPAPI
toolkit/library/target: widget/gtk/mozgtk/gtk3/target
endif
endif
ifdef MOZ_LDAP_XPCOM
ldap/target: security/target mozglue/build/target
toolkit/library/target: ldap/target
+4 -6
View File
@@ -411,6 +411,10 @@ EXTRA_DSO_LDOPTS += -Wl,--version-script,$(SYMBOLS_FILE)
else
ifeq ($(OS_TARGET),Darwin)
EXTRA_DSO_LDOPTS += -Wl,-exported_symbols_list,$(SYMBOLS_FILE)
else
ifeq ($(OS_TARGET),SunOS)
EXTRA_DSO_LDOPTS += -Wl,-M,$(SYMBOLS_FILE)
endif
endif
endif
endif
@@ -667,9 +671,6 @@ else
$(EXPAND_LIBS_EXEC) -- $(HOST_CC) -o $@ $(HOST_CFLAGS) $(HOST_LDFLAGS) $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
endif # HOST_CPP_PROG_LINK
endif
ifndef CROSS_COMPILE
$(call CHECK_STDCXX,$@)
endif
#
# This is an attempt to support generation of multiple binaries
@@ -712,9 +713,6 @@ else
$(EXPAND_LIBS_EXEC) -- $(HOST_CC) $(HOST_OUTOPTION)$@ $(HOST_CFLAGS) $(INCLUDES) $< $(HOST_LIBS) $(HOST_EXTRA_LIBS)
endif
endif
ifndef CROSS_COMPILE
$(call CHECK_STDCXX,$@)
endif
ifdef DTRACE_PROBE_OBJ
EXTRA_DEPS += $(DTRACE_PROBE_OBJ)
+9 -34
View File
@@ -1,39 +1,14 @@
This directory contains source code to
This is the SQLite amalgamation.
Check sqlite3.h for the version number and source id.
SQLite: An Embeddable SQL Database Engine
See http://www.sqlite.org/ for more info.
To compile the project, first create a directory in which to place
the build products. It is recommended, but not required, that the
build directory be separate from the source directory. Cd into the
build directory and then from the build directory run the configure
script found at the root of the source tree. Then run "make".
We have a UXP-specific moz.build in src/ (normally not there) that we
use to build. Adfditionally, src/ contains sqlite.symbols which lists
all explicitly exported symbols from the library to expose.
For example:
To move to a new version:
tar xzf sqlite.tar.gz ;# Unpack the source tree into "sqlite"
mkdir bld ;# Build will occur in a sibling directory
cd bld ;# Change to the build directory
../sqlite/configure ;# Run the configure script
make ;# Run the makefile.
make install ;# (Optional) Install the build products
Copy the sqlite3.h and sqlite3.c files from the amalgamation of sqlite.
The configure script uses autoconf 2.61 and libtool. If the configure
script does not work out for you, there is a generic makefile named
"Makefile.linux-gcc" in the top directory of the source tree that you
can copy and edit to suit your needs. Comments on the generic makefile
show what changes are needed.
The linux binaries on the website are created using the generic makefile,
not the configure script. The windows binaries on the website are created
using MinGW32 configured as a cross-compiler running under Linux. For
details, see the ./publish.sh script at the top-level of the source tree.
The developers do not use teh configure script.
SQLite does not require TCL to run, but a TCL installation is required
by the makefiles. SQLite contains a lot of generated code and TCL is
used to do much of that code generation. The makefile also requires
AWK.
Contacts:
http://www.sqlite.org/
Be sure to update SQLITE_VERSION accordingly in $(topsrcdir)/old-configure.in.
-13
View File
@@ -1,13 +0,0 @@
This is the SQLite amalgamation.
Check sqlite3.h for the version number and source id.
See http://www.sqlite.org/ for more info.
We have a mozilla-specific Makefile.in in src/ (normally no
Makefile.in there) that we use to build.
To move to a new version:
Copy the sqlite3.h and sqlite3.c files from the amalgamation of sqlite.
Be sure to update SQLITE_VERSION accordingly in $(topsrcdir)/configure.in.
+18003 -7959
View File
File diff suppressed because it is too large. Load diff
+450 -93
View File
@@ -146,9 +146,9 @@ extern "C" {
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
#define SQLITE_VERSION "3.42.0"
#define SQLITE_VERSION_NUMBER 3042000
#define SQLITE_SOURCE_ID "2023-05-16 12:36:15 831d0fb2836b71c9bc51067c49fee4b8f18047814f2ff22d817d25195cf350b0"
#define SQLITE_VERSION "3.46.0"
#define SQLITE_VERSION_NUMBER 3046000
#define SQLITE_SOURCE_ID "2024-05-23 13:25:27 96c92aba00c8375bc32fafcdf12429c58bd8aabfcadab6683e35bbb9cdebf19e"
/*
** CAPI3REF: Run-Time Library Version Numbers
@@ -420,6 +420,8 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
** the 1st parameter to sqlite3_exec() while sqlite3_exec() is running.
** <li> The application must not modify the SQL statement text passed into
** the 2nd parameter of sqlite3_exec() while sqlite3_exec() is running.
** <li> The application must not dereference the arrays or string pointers
** passed as the 3rd and 4th callback parameters after it returns.
** </ul>
*/
SQLITE_API int sqlite3_exec(
@@ -528,6 +530,7 @@ SQLITE_API int sqlite3_exec(
#define SQLITE_IOERR_ROLLBACK_ATOMIC (SQLITE_IOERR | (31<<8))
#define SQLITE_IOERR_DATA (SQLITE_IOERR | (32<<8))
#define SQLITE_IOERR_CORRUPTFS (SQLITE_IOERR | (33<<8))
#define SQLITE_IOERR_IN_PAGE (SQLITE_IOERR | (34<<8))
#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8))
#define SQLITE_LOCKED_VTAB (SQLITE_LOCKED | (2<<8))
#define SQLITE_BUSY_RECOVERY (SQLITE_BUSY | (1<<8))
@@ -761,11 +764,11 @@ struct sqlite3_file {
** </ul>
** xLock() upgrades the database file lock. In other words, xLock() moves the
** database file lock in the direction NONE toward EXCLUSIVE. The argument to
** xLock() is always on of SHARED, RESERVED, PENDING, or EXCLUSIVE, never
** xLock() is always one of SHARED, RESERVED, PENDING, or EXCLUSIVE, never
** SQLITE_LOCK_NONE. If the database file lock is already at or above the
** requested lock, then the call to xLock() is a no-op.
** xUnlock() downgrades the database file lock to either SHARED or NONE.
* If the lock is already at or below the requested lock state, then the call
** If the lock is already at or below the requested lock state, then the call
** to xUnlock() is a no-op.
** The xCheckReservedLock() method checks whether any database connection,
** either in this process or in some other process, is holding a RESERVED,
@@ -1190,7 +1193,7 @@ struct sqlite3_io_methods {
** by clients within the current process, only within other processes.
**
** <li>[[SQLITE_FCNTL_CKSM_FILE]]
** The [SQLITE_FCNTL_CKSM_FILE] opcode is for use interally by the
** The [SQLITE_FCNTL_CKSM_FILE] opcode is for use internally by the
** [checksum VFS shim] only.
**
** <li>[[SQLITE_FCNTL_RESET_CACHE]]
@@ -2126,7 +2129,7 @@ struct sqlite3_mem_methods {
** is stored in each sorted record and the required column values loaded
** from the database as records are returned in sorted order. The default
** value for this option is to never use this optimization. Specifying a
** negative value for this option restores the default behaviour.
** negative value for this option restores the default behavior.
** This option is only available if SQLite is compiled with the
** [SQLITE_ENABLE_SORTER_REFERENCES] compile-time option.
**
@@ -2140,6 +2143,22 @@ struct sqlite3_mem_methods {
** configuration setting is never used, then the default maximum is determined
** by the [SQLITE_MEMDB_DEFAULT_MAXSIZE] compile-time option. If that
** compile-time option is not set, then the default maximum is 1073741824.
**
** [[SQLITE_CONFIG_ROWID_IN_VIEW]]
** <dt>SQLITE_CONFIG_ROWID_IN_VIEW
** <dd>The SQLITE_CONFIG_ROWID_IN_VIEW option enables or disables the ability
** for VIEWs to have a ROWID. The capability can only be enabled if SQLite is
** compiled with -DSQLITE_ALLOW_ROWID_IN_VIEW, in which case the capability
** defaults to on. This configuration option queries the current setting or
** changes the setting to off or on. The argument is a pointer to an integer.
** If that integer initially holds a value of 1, then the ability for VIEWs to
** have ROWIDs is activated. If the integer initially holds zero, then the
** ability is deactivated. Any other initial value for the integer leaves the
** setting unchanged. After changes, if any, the integer is written with
** a 1 or 0, if the ability for VIEWs to have ROWIDs is on or off. If SQLite
** is compiled without -DSQLITE_ALLOW_ROWID_IN_VIEW (which is the usual and
** recommended case) then the integer is always filled with zero, regardless
** if its initial value.
** </dl>
*/
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
@@ -2171,6 +2190,7 @@ struct sqlite3_mem_methods {
#define SQLITE_CONFIG_SMALL_MALLOC 27 /* boolean */
#define SQLITE_CONFIG_SORTERREF_SIZE 28 /* int nByte */
#define SQLITE_CONFIG_MEMDB_MAXSIZE 29 /* sqlite3_int64 */
#define SQLITE_CONFIG_ROWID_IN_VIEW 30 /* int* */
/*
** CAPI3REF: Database Connection Configuration Options
@@ -2301,7 +2321,7 @@ struct sqlite3_mem_methods {
** database handle, SQLite checks if this will mean that there are now no
** connections at all to the database. If so, it performs a checkpoint
** operation before closing the connection. This option may be used to
** override this behaviour. The first parameter passed to this operation
** override this behavior. The first parameter passed to this operation
** is an integer - positive to disable checkpoints-on-close, or zero (the
** default) to enable them, and negative to leave the setting unchanged.
** The second parameter is a pointer to an integer
@@ -2454,7 +2474,7 @@ struct sqlite3_mem_methods {
** the [VACUUM] command will fail with an obscure error when attempting to
** process a table with generated columns and a descending index. This is
** not considered a bug since SQLite versions 3.3.0 and earlier do not support
** either generated columns or decending indexes.
** either generated columns or descending indexes.
** </dd>
**
** [[SQLITE_DBCONFIG_STMT_SCANSTATUS]]
@@ -2735,6 +2755,7 @@ SQLITE_API sqlite3_int64 sqlite3_total_changes64(sqlite3*);
**
** ^The [sqlite3_is_interrupted(D)] interface can be used to determine whether
** or not an interrupt is currently in effect for [database connection] D.
** It returns 1 if an interrupt is currently in effect, or 0 otherwise.
*/
SQLITE_API void sqlite3_interrupt(sqlite3*);
SQLITE_API int sqlite3_is_interrupted(sqlite3*);
@@ -3284,8 +3305,8 @@ SQLITE_API int sqlite3_set_authorizer(
#define SQLITE_RECURSIVE 33 /* NULL NULL */
/*
** CAPI3REF: Tracing And Profiling Functions
** METHOD: sqlite3
** CAPI3REF: Deprecated Tracing And Profiling Functions
** DEPRECATED
**
** These routines are deprecated. Use the [sqlite3_trace_v2()] interface
** instead of the routines described here.
@@ -3388,8 +3409,10 @@ SQLITE_API SQLITE_DEPRECATED void *sqlite3_profile(sqlite3*,
** M argument should be the bitwise OR-ed combination of
** zero or more [SQLITE_TRACE] constants.
**
** ^Each call to either sqlite3_trace() or sqlite3_trace_v2() overrides
** (cancels) any prior calls to sqlite3_trace() or sqlite3_trace_v2().
** ^Each call to either sqlite3_trace(D,X,P) or sqlite3_trace_v2(D,M,X,P)
** overrides (cancels) all prior calls to sqlite3_trace(D,X,P) or
** sqlite3_trace_v2(D,M,X,P) for the [database connection] D. Each
** database connection may have at most one trace callback.
**
** ^The X callback is invoked whenever any of the events identified by
** mask M occur. ^The integer return value from the callback is currently
@@ -3758,7 +3781,7 @@ SQLITE_API int sqlite3_open_v2(
** as F) must be one of:
** <ul>
** <li> A database filename pointer created by the SQLite core and
** passed into the xOpen() method of a VFS implemention, or
** passed into the xOpen() method of a VFS implementation, or
** <li> A filename obtained from [sqlite3_db_filename()], or
** <li> A new filename constructed using [sqlite3_create_filename()].
** </ul>
@@ -3871,7 +3894,7 @@ SQLITE_API sqlite3_file *sqlite3_database_file_object(const char*);
/*
** CAPI3REF: Create and Destroy VFS Filenames
**
** These interfces are provided for use by [VFS shim] implementations and
** These interfaces are provided for use by [VFS shim] implementations and
** are not useful outside of that context.
**
** The sqlite3_create_filename(D,J,W,N,P) allocates memory to hold a version of
@@ -3950,14 +3973,17 @@ SQLITE_API void sqlite3_free_filename(sqlite3_filename);
** </ul>
**
** ^The sqlite3_errmsg() and sqlite3_errmsg16() return English-language
** text that describes the error, as either UTF-8 or UTF-16 respectively.
** text that describes the error, as either UTF-8 or UTF-16 respectively,
** or NULL if no error message is available.
** (See how SQLite handles [invalid UTF] for exceptions to this rule.)
** ^(Memory to hold the error message string is managed internally.
** The application does not need to worry about freeing the result.
** However, the error string might be overwritten or deallocated by
** subsequent calls to other SQLite interface functions.)^
**
** ^The sqlite3_errstr() interface returns the English-language text
** that describes the [result code], as UTF-8.
** ^The sqlite3_errstr(E) interface returns the English-language text
** that describes the [result code] E, as UTF-8, or NULL if E is not an
** result code for which a text error message is available.
** ^(Memory to hold the error message string is managed internally
** and must not be freed by the application)^.
**
@@ -4418,6 +4444,41 @@ SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
*/
SQLITE_API int sqlite3_stmt_isexplain(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Change The EXPLAIN Setting For A Prepared Statement
** METHOD: sqlite3_stmt
**
** The sqlite3_stmt_explain(S,E) interface changes the EXPLAIN
** setting for [prepared statement] S. If E is zero, then S becomes
** a normal prepared statement. If E is 1, then S behaves as if
** its SQL text began with "[EXPLAIN]". If E is 2, then S behaves as if
** its SQL text began with "[EXPLAIN QUERY PLAN]".
**
** Calling sqlite3_stmt_explain(S,E) might cause S to be reprepared.
** SQLite tries to avoid a reprepare, but a reprepare might be necessary
** on the first transition into EXPLAIN or EXPLAIN QUERY PLAN mode.
**
** Because of the potential need to reprepare, a call to
** sqlite3_stmt_explain(S,E) will fail with SQLITE_ERROR if S cannot be
** reprepared because it was created using [sqlite3_prepare()] instead of
** the newer [sqlite3_prepare_v2()] or [sqlite3_prepare_v3()] interfaces and
** hence has no saved SQL text with which to reprepare.
**
** Changing the explain setting for a prepared statement does not change
** the original SQL text for the statement. Hence, if the SQL text originally
** began with EXPLAIN or EXPLAIN QUERY PLAN, but sqlite3_stmt_explain(S,0)
** is called to convert the statement into an ordinary statement, the EXPLAIN
** or EXPLAIN QUERY PLAN keywords will still appear in the sqlite3_sql(S)
** output, even though the statement now acts like a normal SQL statement.
**
** This routine returns SQLITE_OK if the explain mode is successfully
** changed, or an error code if the explain mode could not be changed.
** The explain mode cannot be changed while a statement is active.
** Hence, it is good practice to call [sqlite3_reset(S)]
** immediately prior to calling sqlite3_stmt_explain(S,E).
*/
SQLITE_API int sqlite3_stmt_explain(sqlite3_stmt *pStmt, int eMode);
/*
** CAPI3REF: Determine If A Prepared Statement Has Been Reset
** METHOD: sqlite3_stmt
@@ -4581,7 +4642,7 @@ typedef struct sqlite3_context sqlite3_context;
** with it may be passed. ^It is called to dispose of the BLOB or string even
** if the call to the bind API fails, except the destructor is not called if
** the third parameter is a NULL pointer or the fourth parameter is negative.
** ^ (2) The special constant, [SQLITE_STATIC], may be passsed to indicate that
** ^ (2) The special constant, [SQLITE_STATIC], may be passed to indicate that
** the application remains responsible for disposing of the object. ^In this
** case, the object and the provided pointer to it must remain valid until
** either the prepared statement is finalized or the same SQL parameter is
@@ -5260,20 +5321,33 @@ SQLITE_API int sqlite3_finalize(sqlite3_stmt *pStmt);
** ^The [sqlite3_reset(S)] interface resets the [prepared statement] S
** back to the beginning of its program.
**
** ^If the most recent call to [sqlite3_step(S)] for the
** [prepared statement] S returned [SQLITE_ROW] or [SQLITE_DONE],
** or if [sqlite3_step(S)] has never before been called on S,
** then [sqlite3_reset(S)] returns [SQLITE_OK].
** ^The return code from [sqlite3_reset(S)] indicates whether or not
** the previous evaluation of prepared statement S completed successfully.
** ^If [sqlite3_step(S)] has never before been called on S or if
** [sqlite3_step(S)] has not been called since the previous call
** to [sqlite3_reset(S)], then [sqlite3_reset(S)] will return
** [SQLITE_OK].
**
** ^If the most recent call to [sqlite3_step(S)] for the
** [prepared statement] S indicated an error, then
** [sqlite3_reset(S)] returns an appropriate [error code].
** ^The [sqlite3_reset(S)] interface might also return an [error code]
** if there were no prior errors but the process of resetting
** the prepared statement caused a new error. ^For example, if an
** [INSERT] statement with a [RETURNING] clause is only stepped one time,
** that one call to [sqlite3_step(S)] might return SQLITE_ROW but
** the overall statement might still fail and the [sqlite3_reset(S)] call
** might return SQLITE_BUSY if locking constraints prevent the
** database change from committing. Therefore, it is important that
** applications check the return code from [sqlite3_reset(S)] even if
** no prior call to [sqlite3_step(S)] indicated a problem.
**
** ^The [sqlite3_reset(S)] interface does not change the values
** of any [sqlite3_bind_blob|bindings] on the [prepared statement] S.
*/
SQLITE_API int sqlite3_reset(sqlite3_stmt *pStmt);
/*
** CAPI3REF: Create Or Redefine SQL Functions
** KEYWORDS: {function creation routines}
@@ -5484,7 +5558,7 @@ SQLITE_API int sqlite3_create_window_function(
** [application-defined SQL function]
** that has side-effects or that could potentially leak sensitive information.
** This will prevent attacks in which an application is tricked
** into using a database file that has had its schema surreptiously
** into using a database file that has had its schema surreptitiously
** modified to invoke the application-defined function in ways that are
** harmful.
** <p>
@@ -5520,13 +5594,27 @@ SQLITE_API int sqlite3_create_window_function(
** </dd>
**
** [[SQLITE_SUBTYPE]] <dt>SQLITE_SUBTYPE</dt><dd>
** The SQLITE_SUBTYPE flag indicates to SQLite that a function may call
** The SQLITE_SUBTYPE flag indicates to SQLite that a function might call
** [sqlite3_value_subtype()] to inspect the sub-types of its arguments.
** Specifying this flag makes no difference for scalar or aggregate user
** functions. However, if it is not specified for a user-defined window
** function, then any sub-types belonging to arguments passed to the window
** function may be discarded before the window function is called (i.e.
** sqlite3_value_subtype() will always return 0).
** This flag instructs SQLite to omit some corner-case optimizations that
** might disrupt the operation of the [sqlite3_value_subtype()] function,
** causing it to return zero rather than the correct subtype().
** SQL functions that invokes [sqlite3_value_subtype()] should have this
** property. If the SQLITE_SUBTYPE property is omitted, then the return
** value from [sqlite3_value_subtype()] might sometimes be zero even though
** a non-zero subtype was specified by the function argument expression.
**
** [[SQLITE_RESULT_SUBTYPE]] <dt>SQLITE_RESULT_SUBTYPE</dt><dd>
** The SQLITE_RESULT_SUBTYPE flag indicates to SQLite that a function might call
** [sqlite3_result_subtype()] to cause a sub-type to be associated with its
** result.
** Every function that invokes [sqlite3_result_subtype()] should have this
** property. If it does not, then the call to [sqlite3_result_subtype()]
** might become a no-op if the function is used as term in an
** [expression index]. On the other hand, SQL functions that never invoke
** [sqlite3_result_subtype()] should avoid setting this property, as the
** purpose of this property is to disable certain optimizations that are
** incompatible with subtypes.
** </dd>
** </dl>
*/
@@ -5534,6 +5622,7 @@ SQLITE_API int sqlite3_create_window_function(
#define SQLITE_DIRECTONLY 0x000080000
#define SQLITE_SUBTYPE 0x000100000
#define SQLITE_INNOCUOUS 0x000200000
#define SQLITE_RESULT_SUBTYPE 0x001000000
/*
** CAPI3REF: Deprecated Functions
@@ -5730,6 +5819,12 @@ SQLITE_API int sqlite3_value_encoding(sqlite3_value*);
** information can be used to pass a limited amount of context from
** one SQL function to another. Use the [sqlite3_result_subtype()]
** routine to set the subtype for the return value of an SQL function.
**
** Every [application-defined SQL function] that invoke this interface
** should include the [SQLITE_SUBTYPE] property in the text
** encoding argument when the function is [sqlite3_create_function|registered].
** If the [SQLITE_SUBTYPE] property is omitted, then sqlite3_value_subtype()
** might return zero instead of the upstream subtype in some corner cases.
*/
SQLITE_API unsigned int sqlite3_value_subtype(sqlite3_value*);
@@ -5828,48 +5923,56 @@ SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
** METHOD: sqlite3_context
**
** These functions may be used by (non-aggregate) SQL functions to
** associate metadata with argument values. If the same value is passed to
** multiple invocations of the same SQL function during query execution, under
** some circumstances the associated metadata may be preserved. An example
** of where this might be useful is in a regular-expression matching
** function. The compiled version of the regular expression can be stored as
** metadata associated with the pattern string.
** associate auxiliary data with argument values. If the same argument
** value is passed to multiple invocations of the same SQL function during
** query execution, under some circumstances the associated auxiliary data
** might be preserved. An example of where this might be useful is in a
** regular-expression matching function. The compiled version of the regular
** expression can be stored as auxiliary data associated with the pattern string.
** Then as long as the pattern string remains the same,
** the compiled regular expression can be reused on multiple
** invocations of the same function.
**
** ^The sqlite3_get_auxdata(C,N) interface returns a pointer to the metadata
** ^The sqlite3_get_auxdata(C,N) interface returns a pointer to the auxiliary data
** associated by the sqlite3_set_auxdata(C,N,P,X) function with the Nth argument
** value to the application-defined function. ^N is zero for the left-most
** function argument. ^If there is no metadata
** function argument. ^If there is no auxiliary data
** associated with the function argument, the sqlite3_get_auxdata(C,N) interface
** returns a NULL pointer.
**
** ^The sqlite3_set_auxdata(C,N,P,X) interface saves P as metadata for the N-th
** argument of the application-defined function. ^Subsequent
** ^The sqlite3_set_auxdata(C,N,P,X) interface saves P as auxiliary data for the
** N-th argument of the application-defined function. ^Subsequent
** calls to sqlite3_get_auxdata(C,N) return P from the most recent
** sqlite3_set_auxdata(C,N,P,X) call if the metadata is still valid or
** NULL if the metadata has been discarded.
** sqlite3_set_auxdata(C,N,P,X) call if the auxiliary data is still valid or
** NULL if the auxiliary data has been discarded.
** ^After each call to sqlite3_set_auxdata(C,N,P,X) where X is not NULL,
** SQLite will invoke the destructor function X with parameter P exactly
** once, when the metadata is discarded.
** SQLite is free to discard the metadata at any time, including: <ul>
** once, when the auxiliary data is discarded.
** SQLite is free to discard the auxiliary data at any time, including: <ul>
** <li> ^(when the corresponding function parameter changes)^, or
** <li> ^(when [sqlite3_reset()] or [sqlite3_finalize()] is called for the
** SQL statement)^, or
** <li> ^(when sqlite3_set_auxdata() is invoked again on the same
** parameter)^, or
** <li> ^(during the original sqlite3_set_auxdata() call when a memory
** allocation error occurs.)^ </ul>
** allocation error occurs.)^
** <li> ^(during the original sqlite3_set_auxdata() call if the function
** is evaluated during query planning instead of during query execution,
** as sometimes happens with [SQLITE_ENABLE_STAT4].)^ </ul>
**
** Note the last bullet in particular. The destructor X in
** Note the last two bullets in particular. The destructor X in
** sqlite3_set_auxdata(C,N,P,X) might be called immediately, before the
** sqlite3_set_auxdata() interface even returns. Hence sqlite3_set_auxdata()
** should be called near the end of the function implementation and the
** function implementation should not make any use of P after
** sqlite3_set_auxdata() has been called.
** sqlite3_set_auxdata() has been called. Furthermore, a call to
** sqlite3_get_auxdata() that occurs immediately after a corresponding call
** to sqlite3_set_auxdata() might still return NULL if an out-of-memory
** condition occurred during the sqlite3_set_auxdata() call or if the
** function is being evaluated during query planning rather than during
** query execution.
**
** ^(In practice, metadata is preserved between function calls for
** ^(In practice, auxiliary data is preserved between function calls for
** function parameters that are compile-time constants, including literal
** values and [parameters] and expressions composed from the same.)^
**
@@ -5879,10 +5982,67 @@ SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context*);
**
** These routines must be called from the same thread in which
** the SQL function is running.
**
** See also: [sqlite3_get_clientdata()] and [sqlite3_set_clientdata()].
*/
SQLITE_API void *sqlite3_get_auxdata(sqlite3_context*, int N);
SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));
/*
** CAPI3REF: Database Connection Client Data
** METHOD: sqlite3
**
** These functions are used to associate one or more named pointers
** with a [database connection].
** A call to sqlite3_set_clientdata(D,N,P,X) causes the pointer P
** to be attached to [database connection] D using name N. Subsequent
** calls to sqlite3_get_clientdata(D,N) will return a copy of pointer P
** or a NULL pointer if there were no prior calls to
** sqlite3_set_clientdata() with the same values of D and N.
** Names are compared using strcmp() and are thus case sensitive.
**
** If P and X are both non-NULL, then the destructor X is invoked with
** argument P on the first of the following occurrences:
** <ul>
** <li> An out-of-memory error occurs during the call to
** sqlite3_set_clientdata() which attempts to register pointer P.
** <li> A subsequent call to sqlite3_set_clientdata(D,N,P,X) is made
** with the same D and N parameters.
** <li> The database connection closes. SQLite does not make any guarantees
** about the order in which destructors are called, only that all
** destructors will be called exactly once at some point during the
** database connection closing process.
** </ul>
**
** SQLite does not do anything with client data other than invoke
** destructors on the client data at the appropriate time. The intended
** use for client data is to provide a mechanism for wrapper libraries
** to store additional information about an SQLite database connection.
**
** There is no limit (other than available memory) on the number of different
** client data pointers (with different names) that can be attached to a
** single database connection. However, the implementation is optimized
** for the case of having only one or two different client data names.
** Applications and wrapper libraries are discouraged from using more than
** one client data name each.
**
** There is no way to enumerate the client data pointers
** associated with a database connection. The N parameter can be thought
** of as a secret key such that only code that knows the secret key is able
** to access the associated data.
**
** Security Warning: These interfaces should not be exposed in scripting
** languages or in other circumstances where it might be possible for an
** an attacker to invoke them. Any agent that can invoke these interfaces
** can probably also take control of the process.
**
** Database connection client data is only available for SQLite
** version 3.44.0 ([dateof:3.44.0]) and later.
**
** See also: [sqlite3_set_auxdata()] and [sqlite3_get_auxdata()].
*/
SQLITE_API void *sqlite3_get_clientdata(sqlite3*,const char*);
SQLITE_API int sqlite3_set_clientdata(sqlite3*, const char*, void*, void(*)(void*));
/*
** CAPI3REF: Constants Defining Special Destructor Behavior
@@ -6084,6 +6244,20 @@ SQLITE_API int sqlite3_result_zeroblob64(sqlite3_context*, sqlite3_uint64 n);
** higher order bits are discarded.
** The number of subtype bytes preserved by SQLite might increase
** in future releases of SQLite.
**
** Every [application-defined SQL function] that invokes this interface
** should include the [SQLITE_RESULT_SUBTYPE] property in its
** text encoding argument when the SQL function is
** [sqlite3_create_function|registered]. If the [SQLITE_RESULT_SUBTYPE]
** property is omitted from the function that invokes sqlite3_result_subtype(),
** then in some cases the sqlite3_result_subtype() might fail to set
** the result subtype.
**
** If SQLite is compiled with -DSQLITE_STRICT_SUBTYPE=1, then any
** SQL function that invokes the sqlite3_result_subtype() interface
** and that does not have the SQLITE_RESULT_SUBTYPE property will raise
** an error. Future versions of SQLite might enable -DSQLITE_STRICT_SUBTYPE=1
** by default.
*/
SQLITE_API void sqlite3_result_subtype(sqlite3_context*,unsigned int);
@@ -6515,7 +6689,7 @@ SQLITE_API int sqlite3_db_readonly(sqlite3 *db, const char *zDbName);
SQLITE_API int sqlite3_txn_state(sqlite3*,const char *zSchema);
/*
** CAPI3REF: Allowed return values from [sqlite3_txn_state()]
** CAPI3REF: Allowed return values from sqlite3_txn_state()
** KEYWORDS: {transaction state}
**
** These constants define the current transaction state of a database file.
@@ -6647,7 +6821,7 @@ SQLITE_API void *sqlite3_rollback_hook(sqlite3*, void(*)(void *), void*);
** ^Each call to the sqlite3_autovacuum_pages() interface overrides all
** previous invocations for that database connection. ^If the callback
** argument (C) to sqlite3_autovacuum_pages(D,C,P,X) is a NULL pointer,
** then the autovacuum steps callback is cancelled. The return value
** then the autovacuum steps callback is canceled. The return value
** from sqlite3_autovacuum_pages() is normally SQLITE_OK, but might
** be some other error code if something goes wrong. The current
** implementation will only return SQLITE_OK or SQLITE_MISUSE, but other
@@ -6713,6 +6887,12 @@ SQLITE_API int sqlite3_autovacuum_pages(
** The exceptions defined in this paragraph might change in a future
** release of SQLite.
**
** Whether the update hook is invoked before or after the
** corresponding change is currently unspecified and may differ
** depending on the type of change. Do not rely on the order of the
** hook call with regards to the final result of the operation which
** triggers the hook.
**
** The update hook implementation must not do anything that will modify
** the database connection that invoked the update hook. Any actions
** to modify the database connection must be deferred until after the
@@ -7166,6 +7346,10 @@ struct sqlite3_module {
/* The methods above are in versions 1 and 2 of the sqlite_module object.
** Those below are for version 3 and greater. */
int (*xShadowName)(const char*);
/* The methods above are in versions 1 through 3 of the sqlite_module object.
** Those below are for version 4 and greater. */
int (*xIntegrity)(sqlite3_vtab *pVTab, const char *zSchema,
const char *zTabName, int mFlags, char **pzErr);
};
/*
@@ -7653,7 +7837,7 @@ SQLITE_API int sqlite3_blob_reopen(sqlite3_blob *, sqlite3_int64);
** code is returned and the transaction rolled back.
**
** Calling this function with an argument that is not a NULL pointer or an
** open blob handle results in undefined behaviour. ^Calling this routine
** open blob handle results in undefined behavior. ^Calling this routine
** with a null pointer (such as would be returned by a failed call to
** [sqlite3_blob_open()]) is a harmless no-op. ^Otherwise, if this function
** is passed a valid open blob handle, the values returned by the
@@ -7880,9 +8064,11 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
**
** ^(Some systems (for example, Windows 95) do not support the operation
** implemented by sqlite3_mutex_try(). On those systems, sqlite3_mutex_try()
** will always return SQLITE_BUSY. The SQLite core only ever uses
** sqlite3_mutex_try() as an optimization so this is acceptable
** behavior.)^
** will always return SQLITE_BUSY. In most cases the SQLite core only uses
** sqlite3_mutex_try() as an optimization, so this is acceptable
** behavior. The exceptions are unix builds that set the
** SQLITE_ENABLE_SETLK_TIMEOUT build option. In that case a working
** sqlite3_mutex_try() is required.)^
**
** ^The sqlite3_mutex_leave() routine exits a mutex that was
** previously entered by the same thread. The behavior
@@ -8133,6 +8319,7 @@ SQLITE_API int sqlite3_test_control(int op, ...);
#define SQLITE_TESTCTRL_PRNG_SAVE 5
#define SQLITE_TESTCTRL_PRNG_RESTORE 6
#define SQLITE_TESTCTRL_PRNG_RESET 7 /* NOT USED */
#define SQLITE_TESTCTRL_FK_NO_ACTION 7
#define SQLITE_TESTCTRL_BITVEC_TEST 8
#define SQLITE_TESTCTRL_FAULT_INSTALL 9
#define SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS 10
@@ -8140,6 +8327,7 @@ SQLITE_API int sqlite3_test_control(int op, ...);
#define SQLITE_TESTCTRL_ASSERT 12
#define SQLITE_TESTCTRL_ALWAYS 13
#define SQLITE_TESTCTRL_RESERVE 14 /* NOT USED */
#define SQLITE_TESTCTRL_JSON_SELFCHECK 14
#define SQLITE_TESTCTRL_OPTIMIZATIONS 15
#define SQLITE_TESTCTRL_ISKEYWORD 16 /* NOT USED */
#define SQLITE_TESTCTRL_SCRATCHMALLOC 17 /* NOT USED */
@@ -8161,7 +8349,8 @@ SQLITE_API int sqlite3_test_control(int op, ...);
#define SQLITE_TESTCTRL_TRACEFLAGS 31
#define SQLITE_TESTCTRL_TUNE 32
#define SQLITE_TESTCTRL_LOGEST 33
#define SQLITE_TESTCTRL_LAST 33 /* Largest TESTCTRL */
#define SQLITE_TESTCTRL_USELONGDOUBLE 34
#define SQLITE_TESTCTRL_LAST 34 /* Largest TESTCTRL */
/*
** CAPI3REF: SQL Keyword Checking
@@ -8174,7 +8363,7 @@ SQLITE_API int sqlite3_test_control(int op, ...);
** The sqlite3_keyword_count() interface returns the number of distinct
** keywords understood by SQLite.
**
** The sqlite3_keyword_name(N,Z,L) interface finds the N-th keyword and
** The sqlite3_keyword_name(N,Z,L) interface finds the 0-based N-th keyword and
** makes *Z point to that keyword expressed as UTF8 and writes the number
** of bytes in the keyword into *L. The string that *Z points to is not
** zero-terminated. The sqlite3_keyword_name(N,Z,L) routine returns
@@ -9617,7 +9806,7 @@ SQLITE_API int sqlite3_vtab_config(sqlite3*, int op, ...);
** [[SQLITE_VTAB_DIRECTONLY]]<dt>SQLITE_VTAB_DIRECTONLY</dt>
** <dd>Calls of the form
** [sqlite3_vtab_config](db,SQLITE_VTAB_DIRECTONLY) from within the
** the [xConnect] or [xCreate] methods of a [virtual table] implmentation
** the [xConnect] or [xCreate] methods of a [virtual table] implementation
** prohibits that virtual table from being used from within triggers and
** views.
** </dd>
@@ -9753,24 +9942,45 @@ SQLITE_API const char *sqlite3_vtab_collation(sqlite3_index_info*,int);
** <li value="2"><p>
** ^(If the sqlite3_vtab_distinct() interface returns 2, that means
** that the query planner does not need the rows returned in any particular
** order, as long as rows with the same values in all "aOrderBy" columns
** are adjacent.)^ ^(Furthermore, only a single row for each particular
** combination of values in the columns identified by the "aOrderBy" field
** needs to be returned.)^ ^It is always ok for two or more rows with the same
** values in all "aOrderBy" columns to be returned, as long as all such rows
** are adjacent. ^The virtual table may, if it chooses, omit extra rows
** that have the same value for all columns identified by "aOrderBy".
** ^However omitting the extra rows is optional.
** order, as long as rows with the same values in all columns identified
** by "aOrderBy" are adjacent.)^ ^(Furthermore, when two or more rows
** contain the same values for all columns identified by "colUsed", all but
** one such row may optionally be omitted from the result.)^
** The virtual table is not required to omit rows that are duplicates
** over the "colUsed" columns, but if the virtual table can do that without
** too much extra effort, it could potentially help the query to run faster.
** This mode is used for a DISTINCT query.
** <li value="3"><p>
** ^(If the sqlite3_vtab_distinct() interface returns 3, that means
** that the query planner needs only distinct rows but it does need the
** rows to be sorted.)^ ^The virtual table implementation is free to omit
** rows that are identical in all aOrderBy columns, if it wants to, but
** it is not required to omit any rows. This mode is used for queries
** ^(If the sqlite3_vtab_distinct() interface returns 3, that means the
** virtual table must return rows in the order defined by "aOrderBy" as
** if the sqlite3_vtab_distinct() interface had returned 0. However if
** two or more rows in the result have the same values for all columns
** identified by "colUsed", then all but one such row may optionally be
** omitted.)^ Like when the return value is 2, the virtual table
** is not required to omit rows that are duplicates over the "colUsed"
** columns, but if the virtual table can do that without
** too much extra effort, it could potentially help the query to run faster.
** This mode is used for queries
** that have both DISTINCT and ORDER BY clauses.
** </ol>
**
** <p>The following table summarizes the conditions under which the
** virtual table is allowed to set the "orderByConsumed" flag based on
** the value returned by sqlite3_vtab_distinct(). This table is a
** restatement of the previous four paragraphs:
**
** <table border=1 cellspacing=0 cellpadding=10 width="90%">
** <tr>
** <td valign="top">sqlite3_vtab_distinct() return value
** <td valign="top">Rows are returned in aOrderBy order
** <td valign="top">Rows with the same value in all aOrderBy columns are adjacent
** <td valign="top">Duplicates over all colUsed columns may be omitted
** <tr><td>0<td>yes<td>yes<td>no
** <tr><td>1<td>no<td>yes<td>no
** <tr><td>2<td>no<td>yes<td>yes
** <tr><td>3<td>yes<td>yes<td>yes
** </table>
**
** ^For the purposes of comparing virtual table output values to see if the
** values are same value for sorting purposes, two NULL values are considered
** to be the same. In other words, the comparison operator is "IS"
@@ -9807,7 +10017,7 @@ SQLITE_API int sqlite3_vtab_distinct(sqlite3_index_info*);
** communicated to the xBestIndex method as a
** [SQLITE_INDEX_CONSTRAINT_EQ] constraint.)^ If xBestIndex wants to use
** this constraint, it must set the corresponding
** aConstraintUsage[].argvIndex to a postive integer. ^(Then, under
** aConstraintUsage[].argvIndex to a positive integer. ^(Then, under
** the usual mode of handling IN operators, SQLite generates [bytecode]
** that invokes the [xFilter|xFilter() method] once for each value
** on the right-hand side of the IN operator.)^ Thus the virtual table
@@ -10236,7 +10446,7 @@ SQLITE_API int sqlite3_db_cacheflush(sqlite3*);
** When the [sqlite3_blob_write()] API is used to update a blob column,
** the pre-update hook is invoked with SQLITE_DELETE. This is because the
** in this case the new values are not available. In this case, when a
** callback made with op==SQLITE_DELETE is actuall a write using the
** callback made with op==SQLITE_DELETE is actually a write using the
** sqlite3_blob_write() API, the [sqlite3_preupdate_blobwrite()] returns
** the index of the column being written. In other cases, where the
** pre-update hook is being invoked for some other reason, including a
@@ -10497,6 +10707,13 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_snapshot_recover(sqlite3 *db, const c
** SQLITE_SERIALIZE_NOCOPY bit is set but no contiguous copy
** of the database exists.
**
** After the call, if the SQLITE_SERIALIZE_NOCOPY bit had been set,
** the returned buffer content will remain accessible and unchanged
** until either the next write operation on the connection or when
** the connection is closed, and applications must not modify the
** buffer. If the bit had been clear, the returned buffer will not
** be accessed by SQLite after the call.
**
** A call to sqlite3_serialize(D,S,P,F) might return NULL even if the
** SQLITE_SERIALIZE_NOCOPY bit is omitted from argument F if a memory
** allocation error occurs.
@@ -10545,6 +10762,9 @@ SQLITE_API unsigned char *sqlite3_serialize(
** SQLite will try to increase the buffer size using sqlite3_realloc64()
** if writes on the database cause it to grow larger than M bytes.
**
** Applications must not modify the buffer P or invalidate it before
** the database connection D is closed.
**
** The sqlite3_deserialize() interface will fail with SQLITE_BUSY if the
** database is currently in a read transaction or is involved in a backup
** operation.
@@ -10553,6 +10773,13 @@ SQLITE_API unsigned char *sqlite3_serialize(
** S argument to sqlite3_deserialize(D,S,P,N,M,F) is "temp" then the
** function returns SQLITE_ERROR.
**
** The deserialized database should not be in [WAL mode]. If the database
** is in WAL mode, then any attempt to use the database file will result
** in an [SQLITE_CANTOPEN] error. The application can set the
** [file format version numbers] (bytes 18 and 19) of the input database P
** to 0x01 prior to invoking sqlite3_deserialize(D,S,P,N,M,F) to force the
** database file into rollback mode and work around this limitation.
**
** If sqlite3_deserialize(D,S,P,N,M,F) fails for any reason and if the
** SQLITE_DESERIALIZE_FREEONCLOSE bit is set in argument F, then
** [sqlite3_free()] is invoked on argument P prior to returning.
@@ -11625,6 +11852,18 @@ SQLITE_API int sqlite3changeset_concat(
);
/*
** CAPI3REF: Upgrade the Schema of a Changeset/Patchset
*/
SQLITE_API int sqlite3changeset_upgrade(
sqlite3 *db,
const char *zDb,
int nIn, const void *pIn, /* Input changeset */
int *pnOut, void **ppOut /* OUT: Inverse of input */
);
/*
** CAPI3REF: Changegroup Handle
**
@@ -11671,6 +11910,38 @@ typedef struct sqlite3_changegroup sqlite3_changegroup;
*/
SQLITE_API int sqlite3changegroup_new(sqlite3_changegroup **pp);
/*
** CAPI3REF: Add a Schema to a Changegroup
** METHOD: sqlite3_changegroup_schema
**
** This method may be used to optionally enforce the rule that the changesets
** added to the changegroup handle must match the schema of database zDb
** ("main", "temp", or the name of an attached database). If
** sqlite3changegroup_add() is called to add a changeset that is not compatible
** with the configured schema, SQLITE_SCHEMA is returned and the changegroup
** object is left in an undefined state.
**
** A changeset schema is considered compatible with the database schema in
** the same way as for sqlite3changeset_apply(). Specifically, for each
** table in the changeset, there exists a database table with:
**
** <ul>
** <li> The name identified by the changeset, and
** <li> at least as many columns as recorded in the changeset, and
** <li> the primary key columns in the same position as recorded in
** the changeset.
** </ul>
**
** The output of the changegroup object always has the same schema as the
** database nominated using this function. In cases where changesets passed
** to sqlite3changegroup_add() have fewer columns than the corresponding table
** in the database schema, these are filled in using the default column
** values from the database schema. This makes it possible to combined
** changesets that have different numbers of columns for a single table
** within a changegroup, provided that they are otherwise compatible.
*/
SQLITE_API int sqlite3changegroup_schema(sqlite3_changegroup*, sqlite3*, const char *zDb);
/*
** CAPI3REF: Add A Changeset To A Changegroup
** METHOD: sqlite3_changegroup
@@ -11739,16 +12010,45 @@ SQLITE_API int sqlite3changegroup_new(sqlite3_changegroup **pp);
** If the new changeset contains changes to a table that is already present
** in the changegroup, then the number of columns and the position of the
** primary key columns for the table must be consistent. If this is not the
** case, this function fails with SQLITE_SCHEMA. If the input changeset
** appears to be corrupt and the corruption is detected, SQLITE_CORRUPT is
** returned. Or, if an out-of-memory condition occurs during processing, this
** function returns SQLITE_NOMEM. In all cases, if an error occurs the state
** of the final contents of the changegroup is undefined.
** case, this function fails with SQLITE_SCHEMA. Except, if the changegroup
** object has been configured with a database schema using the
** sqlite3changegroup_schema() API, then it is possible to combine changesets
** with different numbers of columns for a single table, provided that
** they are otherwise compatible.
**
** If no error occurs, SQLITE_OK is returned.
** If the input changeset appears to be corrupt and the corruption is
** detected, SQLITE_CORRUPT is returned. Or, if an out-of-memory condition
** occurs during processing, this function returns SQLITE_NOMEM.
**
** In all cases, if an error occurs the state of the final contents of the
** changegroup is undefined. If no error occurs, SQLITE_OK is returned.
*/
SQLITE_API int sqlite3changegroup_add(sqlite3_changegroup*, int nData, void *pData);
/*
** CAPI3REF: Add A Single Change To A Changegroup
** METHOD: sqlite3_changegroup
**
** This function adds the single change currently indicated by the iterator
** passed as the second argument to the changegroup object. The rules for
** adding the change are just as described for [sqlite3changegroup_add()].
**
** If the change is successfully added to the changegroup, SQLITE_OK is
** returned. Otherwise, an SQLite error code is returned.
**
** The iterator must point to a valid entry when this function is called.
** If it does not, SQLITE_ERROR is returned and no change is added to the
** changegroup. Additionally, the iterator must not have been opened with
** the SQLITE_CHANGESETAPPLY_INVERT flag. In this case SQLITE_ERROR is also
** returned.
*/
SQLITE_API int sqlite3changegroup_add_change(
sqlite3_changegroup*,
sqlite3_changeset_iter*
);
/*
** CAPI3REF: Obtain A Composite Changeset From A Changegroup
** METHOD: sqlite3_changegroup
@@ -12010,10 +12310,17 @@ SQLITE_API int sqlite3changeset_apply_v2(
** <li>an insert change if all fields of the conflicting row match
** the row being inserted.
** </ul>
**
** <dt>SQLITE_CHANGESETAPPLY_FKNOACTION <dd>
** If this flag it set, then all foreign key constraints in the target
** database behave as if they were declared with "ON UPDATE NO ACTION ON
** DELETE NO ACTION", even if they are actually CASCADE, RESTRICT, SET NULL
** or SET DEFAULT.
*/
#define SQLITE_CHANGESETAPPLY_NOSAVEPOINT 0x0001
#define SQLITE_CHANGESETAPPLY_INVERT 0x0002
#define SQLITE_CHANGESETAPPLY_IGNORENOOP 0x0004
#define SQLITE_CHANGESETAPPLY_FKNOACTION 0x0008
/*
** CAPI3REF: Constants Passed To The Conflict Handler
@@ -12546,8 +12853,8 @@ struct Fts5PhraseIter {
** EXTENSION API FUNCTIONS
**
** xUserData(pFts):
** Return a copy of the context pointer the extension function was
** registered with.
** Return a copy of the pUserData pointer passed to the xCreateFunction()
** API when the extension function was registered.
**
** xColumnTotalSize(pFts, iCol, pnToken):
** If parameter iCol is less than zero, set output variable *pnToken
@@ -12579,8 +12886,11 @@ struct Fts5PhraseIter {
** created with the "columnsize=0" option.
**
** xColumnText:
** This function attempts to retrieve the text of column iCol of the
** current document. If successful, (*pz) is set to point to a buffer
** If parameter iCol is less than zero, or greater than or equal to the
** number of columns in the table, SQLITE_RANGE is returned.
**
** Otherwise, this function attempts to retrieve the text of column iCol of
** the current document. If successful, (*pz) is set to point to a buffer
** containing the text in utf-8 encoding, (*pn) is set to the size in bytes
** (not characters) of the buffer and SQLITE_OK is returned. Otherwise,
** if an error occurs, an SQLite error code is returned and the final values
@@ -12590,8 +12900,10 @@ struct Fts5PhraseIter {
** Returns the number of phrases in the current query expression.
**
** xPhraseSize:
** Returns the number of tokens in phrase iPhrase of the query. Phrases
** are numbered starting from zero.
** If parameter iCol is less than zero, or greater than or equal to the
** number of phrases in the current query, as returned by xPhraseCount,
** 0 is returned. Otherwise, this function returns the number of tokens in
** phrase iPhrase of the query. Phrases are numbered starting from zero.
**
** xInstCount:
** Set *pnInst to the total number of occurrences of all phrases within
@@ -12607,12 +12919,13 @@ struct Fts5PhraseIter {
** Query for the details of phrase match iIdx within the current row.
** Phrase matches are numbered starting from zero, so the iIdx argument
** should be greater than or equal to zero and smaller than the value
** output by xInstCount().
** output by xInstCount(). If iIdx is less than zero or greater than
** or equal to the value returned by xInstCount(), SQLITE_RANGE is returned.
**
** Usually, output parameter *piPhrase is set to the phrase number, *piCol
** Otherwise, output parameter *piPhrase is set to the phrase number, *piCol
** to the column in which it occurs and *piOff the token offset of the
** first token of the phrase. Returns SQLITE_OK if successful, or an error
** code (i.e. SQLITE_NOMEM) if an error occurs.
** first token of the phrase. SQLITE_OK is returned if successful, or an
** error code (i.e. SQLITE_NOMEM) if an error occurs.
**
** This API can be quite slow if used with an FTS5 table created with the
** "detail=none" or "detail=column" option.
@@ -12638,6 +12951,10 @@ struct Fts5PhraseIter {
** Invoking Api.xUserData() returns a copy of the pointer passed as
** the third argument to pUserData.
**
** If parameter iPhrase is less than zero, or greater than or equal to
** the number of phrases in the query, as returned by xPhraseCount(),
** this function returns SQLITE_RANGE.
**
** If the callback function returns any value other than SQLITE_OK, the
** query is abandoned and the xQueryPhrase function returns immediately.
** If the returned value is SQLITE_DONE, xQueryPhrase returns SQLITE_OK.
@@ -12752,6 +13069,39 @@ struct Fts5PhraseIter {
**
** xPhraseNextColumn()
** See xPhraseFirstColumn above.
**
** xQueryToken(pFts5, iPhrase, iToken, ppToken, pnToken)
** This is used to access token iToken of phrase iPhrase of the current
** query. Before returning, output parameter *ppToken is set to point
** to a buffer containing the requested token, and *pnToken to the
** size of this buffer in bytes.
**
** If iPhrase or iToken are less than zero, or if iPhrase is greater than
** or equal to the number of phrases in the query as reported by
** xPhraseCount(), or if iToken is equal to or greater than the number of
** tokens in the phrase, SQLITE_RANGE is returned and *ppToken and *pnToken
are both zeroed.
**
** The output text is not a copy of the query text that specified the
** token. It is the output of the tokenizer module. For tokendata=1
** tables, this includes any embedded 0x00 and trailing data.
**
** xInstToken(pFts5, iIdx, iToken, ppToken, pnToken)
** This is used to access token iToken of phrase hit iIdx within the
** current row. If iIdx is less than zero or greater than or equal to the
** value returned by xInstCount(), SQLITE_RANGE is returned. Otherwise,
** output variable (*ppToken) is set to point to a buffer containing the
** matching document token, and (*pnToken) to the size of that buffer in
** bytes. This API is not available if the specified token matches a
** prefix query term. In that case both output variables are always set
** to 0.
**
** The output text is not a copy of the document text that was tokenized.
** It is the output of the tokenizer module. For tokendata=1 tables, this
** includes any embedded 0x00 and trailing data.
**
** This API can be quite slow if used with an FTS5 table created with the
** "detail=none" or "detail=column" option.
*/
struct Fts5ExtensionApi {
int iVersion; /* Currently always set to 3 */
@@ -12789,6 +13139,13 @@ struct Fts5ExtensionApi {
int (*xPhraseFirstColumn)(Fts5Context*, int iPhrase, Fts5PhraseIter*, int*);
void (*xPhraseNextColumn)(Fts5Context*, Fts5PhraseIter*, int *piCol);
/* Below this point are iVersion>=3 only */
int (*xQueryToken)(Fts5Context*,
int iPhrase, int iToken,
const char **ppToken, int *pnToken
);
int (*xInstToken)(Fts5Context*, int iIdx, int iToken, const char**, int*);
};
/*
@@ -12983,8 +13340,8 @@ struct Fts5ExtensionApi {
** as separate queries of the FTS index are required for each synonym.
**
** When using methods (2) or (3), it is important that the tokenizer only
** provide synonyms when tokenizing document text (method (2)) or query
** text (method (3)), not both. Doing so will not cause any errors, but is
** provide synonyms when tokenizing document text (method (3)) or query
** text (method (2)), not both. Doing so will not cause any errors, but is
** inefficient.
*/
typedef struct Fts5Tokenizer Fts5Tokenizer;
@@ -13032,7 +13389,7 @@ struct fts5_api {
int (*xCreateTokenizer)(
fts5_api *pApi,
const char *zName,
void *pContext,
void *pUserData,
fts5_tokenizer *pTokenizer,
void (*xDestroy)(void*)
);
@@ -13041,7 +13398,7 @@ struct fts5_api {
int (*xFindTokenizer)(
fts5_api *pApi,
const char *zName,
void **ppContext,
void **ppUserData,
fts5_tokenizer *pTokenizer
);
@@ -13049,7 +13406,7 @@ struct fts5_api {
int (*xCreateFunction)(
fts5_api *pApi,
const char *zName,
void *pContext,
void *pUserData,
fts5_extension_function xFunction,
void (*xDestroy)(void*)
);
Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

@@ -1,94 +0,0 @@
/* 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 http://mozilla.org/MPL/2.0/. */
window {
-moz-appearance: none;
background-color: transparent;
}
#doorhanger-container {
width: 450px;
}
#top-panel {
padding: 20px;
background: #343c45; /* toolbars */
color: #8fa1b2; /* body text */
/*
* Sloppy preprocessing since UNIX_BUT_NOT_MAC is only defined
* in `browser/app/profile/firefox.js`, which this file cannot
* depend on. Must style font-size to target linux.
*/
%ifdef XP_UNIX
%ifndef XP_MACOSX
font-size: 13px;
%else
font-size: 15px;
%endif
%else
font-size: 15px;
%endif
line-height: 19px;
min-height: 100px;
}
#top-panel h1 {
font-weight: bold;
font-family: Open Sans, sans-serif;
font-size: 1.1em;
}
#top-panel p {
font-family: Open Sans, sans-serif;
font-size: 0.9em;
width: 300px;
display: block;
margin: 5px 0px 0px 0px;
}
#icon {
background-image: url("chrome://devtools/content/framework/dev-edition-promo/dev-edition-logo.png");
background-size: 64px 64px;
background-repeat: no-repeat;
width: 64px;
height: 64px;
margin-right: 20px;
}
#lower-panel {
padding: 20px;
background-color: #252c33; /* tab toolbars */
min-height: 75px;
border-top: 1px solid #292e33; /* text high contrast (light) */
}
#button-container {
margin: auto 20px;
}
#button-container button {
font: message-box !important;
font-size: 16px !important;
cursor: pointer;
width: 125px;
opacity: 1;
position: static;
-moz-appearance: none;
border-radius: 5px;
height: 30px;
width: 450px;
/* Override embossed borders on Windows/Linux */
border: none;
}
#close {
background-color: transparent;
color: #8fa1b2; /* body text */
}
#go {
margin-left: 100px;
background-color: #70bf53; /* green */
color: #f5f7fa; /* selection text color */
}
@@ -1,36 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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 http://mozilla.org/MPL/2.0/. -->
<!DOCTYPE window [
<!ENTITY % toolboxDTD SYSTEM "chrome://devtools/locale/toolbox.dtd" >
%toolboxDTD;
]>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet rel="stylesheet" href="chrome://devtools/content/framework/dev-edition-promo/dev-edition-promo.css" type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id="dev-edition-promo">
<vbox id="doorhanger-container">
<hbox flex="1" id="top-panel">
<image id="icon" />
<vbox id="info">
<h1>Using Developer Tools in your browser?</h1>
<p>Download Firefox Developer Edition, our first browser made just for you.</p>
</vbox>
</hbox>
<hbox id="lower-panel" flex="1">
<hbox id="button-container" flex="1">
<button id="close"
flex="1"
standalone="true"
label="No thanks">
</button>
<button id="go"
flex="1"
standalone="true"
label="Learn more »">
</button>
</hbox>
</hbox>
</vbox>
</window>
+9 -25
View File
@@ -46,8 +46,6 @@ loader.lazyRequireGetter(this, "InspectorFront",
"devtools/shared/fronts/inspector", true);
loader.lazyRequireGetter(this, "flags",
"devtools/shared/flags");
loader.lazyRequireGetter(this, "showDoorhanger",
"devtools/client/shared/doorhanger", true);
loader.lazyRequireGetter(this, "createPerformanceFront",
"devtools/shared/fronts/performance", true);
loader.lazyRequireGetter(this, "system",
@@ -117,7 +115,6 @@ function Toolbox(target, selectedTool, hostType, contentWindow, frameId) {
this._saveSplitConsoleHeight = this._saveSplitConsoleHeight.bind(this);
this._onFocus = this._onFocus.bind(this);
this._onBrowserMessage = this._onBrowserMessage.bind(this);
this._showDevEditionPromo = this._showDevEditionPromo.bind(this);
this._updateTextBoxMenuItems = this._updateTextBoxMenuItems.bind(this);
this._onBottomHostMinimized = this._onBottomHostMinimized.bind(this);
this._onBottomHostMaximized = this._onBottomHostMaximized.bind(this);
@@ -149,8 +146,6 @@ function Toolbox(target, selectedTool, hostType, contentWindow, frameId) {
this.on("host-changed", this._refreshHostTitle);
this.on("select", this._refreshHostTitle);
this.on("ready", this._showDevEditionPromo);
gDevTools.on("tool-registered", this._toolRegistered);
gDevTools.on("tool-unregistered", this._toolUnregistered);
@@ -2095,7 +2090,6 @@ Toolbox.prototype = {
this._target.off("frame-update", this._updateFrames);
this.off("select", this._refreshHostTitle);
this.off("host-changed", this._refreshHostTitle);
this.off("ready", this._showDevEditionPromo);
gDevTools.off("tool-registered", this._toolRegistered);
gDevTools.off("tool-unregistered", this._toolUnregistered);
@@ -2188,14 +2182,16 @@ Toolbox.prototype = {
.then(() => {
this._removeHostListeners();
// `location` may already be null if the toolbox document is already
// in process of destruction. Otherwise if it is still around, ensure
// releasing toolbox document and triggering cleanup thanks to unload
// event. We do that precisely here, before nullifying the target as
// various cleanup code depends on the target attribute to be still
// defined.
if (win.location) {
// `location` may already be invalid if the toolbox document is
// already in process of destruction. Otherwise if it is still
// around, ensure releasing toolbox document and triggering cleanup
// thanks to unload event. We do that precisely here, before
// nullifying the target as various cleanup code depends on the
// target attribute to be still defined.
try {
win.location.replace("about:blank");
} catch (e) {
// Do nothing.
}
// Targets need to be notified that the toolbox is being torn down.
@@ -2251,18 +2247,6 @@ Toolbox.prototype = {
this.emit("highlighter-hide");
},
/**
* For displaying the promotional Doorhanger on first opening of
* the developer tools, promoting the Developer Edition.
*/
_showDevEditionPromo: function () {
// Do not display in browser toolbox
if (this.target.chrome) {
return;
}
showDoorhanger({ window: this.win, type: "deveditionpromo" });
},
/**
* Enable / disable necessary textbox menu items using globalOverlay.js.
*/
-3
View File
@@ -111,9 +111,6 @@ devtools.jar:
content/framework/options-panel.css (framework/options-panel.css)
content/framework/toolbox-process-window.xul (framework/toolbox-process-window.xul)
* content/framework/toolbox-process-window.js (framework/toolbox-process-window.js)
content/framework/dev-edition-promo/dev-edition-promo.xul (framework/dev-edition-promo/dev-edition-promo.xul)
* content/framework/dev-edition-promo/dev-edition-promo.css (framework/dev-edition-promo/dev-edition-promo.css)
content/framework/dev-edition-promo/dev-edition-logo.png (framework/dev-edition-promo/dev-edition-logo.png)
content/inspector/inspector.xhtml (inspector/inspector.xhtml)
content/framework/connect/connect.xhtml (framework/connect/connect.xhtml)
content/framework/connect/connect.css (framework/connect/connect.css)
@@ -39,9 +39,8 @@ function ConverterObserver() {
ConverterObserver.prototype = {
initialize: function () {
// Only the DevEdition has this feature available by default.
// Users need to manually flip 'devtools.jsonview.enabled' preference
// to have it available in other distributions.
// to have it available.
if (this.isEnabled()) {
this.register();
}
-11
View File
@@ -3,17 +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/.
// Developer edition promo preferences
pref("devtools.devedition.promo.shown", false);
pref("devtools.devedition.promo.url", "https://www.mozilla.org/firefox/developer/?utm_source=firefox-dev-tools&utm_medium=firefox-browser&utm_content=betadoorhanger");
// Only potentially show in beta release
#if MOZ_UPDATE_CHANNEL == beta
pref("devtools.devedition.promo.enabled", true);
#else
pref("devtools.devedition.promo.enabled", false);
#endif
// DevTools development workflow
pref("devtools.loader.hotreload", false);
@@ -8,7 +8,6 @@ const Cu = Components.utils;
var {loader, require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
var Telemetry = require("devtools/client/shared/telemetry");
var {showDoorhanger} = require("devtools/client/shared/doorhanger");
var {TouchEventSimulator} = require("devtools/shared/touch/simulator");
var {Task} = require("devtools/shared/task");
var promise = require("promise");
@@ -255,14 +254,6 @@ ResponsiveUI.prototype = {
yield this.connectToServer();
this.userAgentInput.hidden = false;
// Hook to display promotional Developer Edition doorhanger.
// Only displayed once.
showDoorhanger({
window: this.mainWindow,
type: "deveditionpromo",
anchor: this.chromeDoc.querySelector("#content")
});
// Notify that responsive mode is on.
this._telemetry.toolOpened("responsive");
ResponsiveUIManager.emit("on", { tab: this.tab });
+3
View File
@@ -209,6 +209,9 @@ SplitView.prototype = {
this._nav.appendChild(aSummary);
aSummary.addEventListener("click", (aEvent) => {
if (aEvent.button != 0) {
return;
}
aEvent.stopPropagation();
this.activeSummary = aSummary;
}, false);
@@ -97,6 +97,9 @@ AutocompletePopup.prototype = {
},
onClick: function (e) {
if (e.button != 0) {
return;
}
let item = e.target.closest(".autocomplete-item");
if (item && typeof item.dataset.index !== "undefined") {
this.selectedIndex = parseInt(item.dataset.index, 10);
-164
View File
@@ -1,164 +0,0 @@
/* 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 http://mozilla.org/MPL/2.0/. */
"use strict";
const { Ci, Cc } = require("chrome");
const Services = require("Services");
const { DOMHelpers } = require("resource://devtools/client/shared/DOMHelpers.jsm");
const { Task } = require("devtools/shared/task");
const defer = require("devtools/shared/defer");
const { getMostRecentBrowserWindow } = require("sdk/window/utils");
const XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
const DEV_EDITION_PROMO_URL = "chrome://devtools/content/framework/dev-edition-promo/dev-edition-promo.xul";
const DEV_EDITION_PROMO_ENABLED_PREF = "devtools.devedition.promo.enabled";
const DEV_EDITION_PROMO_SHOWN_PREF = "devtools.devedition.promo.shown";
const DEV_EDITION_PROMO_URL_PREF = "devtools.devedition.promo.url";
const LOCALE = Cc["@mozilla.org/chrome/chrome-registry;1"]
.getService(Ci.nsIXULChromeRegistry)
.getSelectedLocale("global");
/**
* Only show Dev Edition promo if it's enabled (beta channel),
* if it has not been shown before, and it's a locale build
* for `en-US`
*/
function shouldDevEditionPromoShow() {
return Services.prefs.getBoolPref(DEV_EDITION_PROMO_ENABLED_PREF) &&
!Services.prefs.getBoolPref(DEV_EDITION_PROMO_SHOWN_PREF) &&
LOCALE === "en-US";
}
var TYPES = {
// The Developer Edition promo doorhanger, called by
// opening the toolbox, browser console, WebIDE, or responsive design mode
// in Beta releases. Only displayed once per profile.
deveditionpromo: {
predicate: shouldDevEditionPromoShow,
success: () => {
return Services.prefs.setBoolPref(DEV_EDITION_PROMO_SHOWN_PREF, true);
},
action: () => {
let url = Services.prefs.getCharPref(DEV_EDITION_PROMO_URL_PREF);
getGBrowser().selectedTab = getGBrowser().addTab(url);
},
url: DEV_EDITION_PROMO_URL
}
};
var panelAttrs = {
orient: "vertical",
hidden: "false",
consumeoutsideclicks: "true",
noautofocus: "true",
align: "start",
role: "alert"
};
/**
* Helper to call a doorhanger, defined in `TYPES`, with defined conditions,
* success handlers and loads its own XUL in a frame. Takes an object with
* several properties:
*
* @param {XULWindow} window
* The window that should house the doorhanger.
* @param {String} type
* The type of doorhanger to be displayed is, using the `TYPES`
* definition.
* @param {String} selector
* The selector that the doorhanger should be appended to within
* `window`. Defaults to a XUL Document's `window` element.
*/
exports.showDoorhanger = Task.async(function* ({ window, type, anchor }) {
let { predicate, success, url, action } = TYPES[type];
// Abort if predicate fails
if (!predicate()) {
return;
}
// Call success function to set preferences/cleanup immediately,
// so if triggered multiple times, only happens once (Windows/Linux)
success();
// Wait 200ms to prevent flickering where the popup is displayed
// before the underlying window (Windows 7, 64bit)
yield wait(200);
let document = window.document;
let panel = document.createElementNS(XULNS, "panel");
let frame = document.createElementNS(XULNS, "iframe");
let parentEl = document.querySelector("window");
frame.setAttribute("src", url);
let close = () => parentEl.removeChild(panel);
setDoorhangerStyle(panel, frame);
panel.appendChild(frame);
parentEl.appendChild(panel);
yield onFrameLoad(frame);
panel.openPopup(anchor);
let closeBtn = frame.contentDocument.querySelector("#close");
if (closeBtn) {
closeBtn.addEventListener("click", close);
}
let goBtn = frame.contentDocument.querySelector("#go");
if (goBtn) {
goBtn.addEventListener("click", () => {
if (action) {
action();
}
close();
});
}
});
function setDoorhangerStyle(panel, frame) {
Object.keys(panelAttrs).forEach(prop => {
return panel.setAttribute(prop, panelAttrs[prop]);
});
panel.style.margin = "20px";
panel.style.borderRadius = "5px";
panel.style.border = "none";
panel.style.MozAppearance = "none";
panel.style.backgroundColor = "transparent";
frame.style.borderRadius = "5px";
frame.setAttribute("flex", "1");
frame.setAttribute("width", "450");
frame.setAttribute("height", "179");
}
function onFrameLoad(frame) {
let { resolve, promise } = defer();
if (frame.contentWindow) {
let domHelper = new DOMHelpers(frame.contentWindow);
domHelper.onceDOMReady(resolve);
} else {
let callback = () => {
frame.removeEventListener("DOMContentLoaded", callback);
resolve();
};
frame.addEventListener("DOMContentLoaded", callback);
}
return promise;
}
function getGBrowser() {
return getMostRecentBrowserWindow().gBrowser;
}
function wait(n) {
let { resolve, promise } = defer();
setTimeout(resolve, n);
return promise;
}
-1
View File
@@ -26,7 +26,6 @@ DevToolsModules(
'devices.js',
'devtools-file-watcher.js',
'DOMHelpers.jsm',
'doorhanger.js',
'file-watcher-worker.js',
'file-watcher.js',
'getjson.js',
@@ -240,6 +240,9 @@ Spectrum.prototype = {
},
onElementClick: function (e) {
if (e.button != 0) {
return;
}
e.stopPropagation();
},
@@ -1480,6 +1480,9 @@ Column.prototype = {
* for sorting.
*/
onClick: function (event) {
if (event.button != 0) {
return;
}
let target = event.originalTarget;
if (target.nodeType !== target.ELEMENT_NODE || target == this.column) {
@@ -908,6 +908,10 @@ VariablesView.prototype = {
// Copy current selection to clipboard.
if (e.ctrlKey || e.metaKey) {
let item = this.getFocusedItem();
if (!item) {
// No item is selected; do nothing.
return;
}
clipboardHelper.copyString(
item._nameString + item.separatorStr + item._valueString
);
@@ -174,7 +174,10 @@ StyleEditorUI.prototype = {
this._view = new SplitView(viewRoot);
wire(this._view.rootElement, ".style-editor-newButton", () =>{
wire(this._view.rootElement, ".style-editor-newButton", (e) =>{
if (e.button != 0) {
return;
}
this._debuggee.addStyleSheet(null);
});
-8
View File
@@ -19,7 +19,6 @@ loader.lazyRequireGetter(this, "WebConsoleFrame", "devtools/client/webconsole/we
loader.lazyRequireGetter(this, "gDevTools", "devtools/client/framework/devtools", true);
loader.lazyRequireGetter(this, "DebuggerServer", "devtools/server/main", true);
loader.lazyRequireGetter(this, "DebuggerClient", "devtools/shared/client/main", true);
loader.lazyRequireGetter(this, "showDoorhanger", "devtools/client/shared/doorhanger", true);
loader.lazyRequireGetter(this, "viewSource", "devtools/client/shared/view-source");
const STRINGS_URI = "devtools/client/locales/webconsole.properties";
@@ -675,19 +674,12 @@ BrowserConsole.prototype = extend(WebConsole.prototype, {
// instance.
let onClose = () => {
window.removeEventListener("unload", onClose);
window.removeEventListener("focus", onFocus);
this.destroy();
};
window.addEventListener("unload", onClose);
this._telemetry.toolOpened("browserconsole");
// Create an onFocus handler just to display the dev edition promo.
// This is to prevent race conditions in some environments.
// Hook to display promotional Developer Edition doorhanger. Only displayed once.
let onFocus = () => showDoorhanger({ window, type: "deveditionpromo" });
window.addEventListener("focus", onFocus);
this._bc_init = this.$init();
return this._bc_init;
},
+3 -5
View File
@@ -569,11 +569,9 @@ WebConsoleActor.prototype =
let startedListeners = [];
let window = !this.parentActor.isRootActor ? this.window : null;
let appId = null;
let messageManager = null;
if (this._parentIsContentActor) {
appId = this.parentActor.docShell.appId;
messageManager = this.parentActor.messageManager;
}
@@ -604,16 +602,16 @@ WebConsoleActor.prototype =
// Create a StackTraceCollector that's going to be shared both by the
// NetworkMonitorChild (getting messages about requests from parent) and
// by the NetworkMonitor that directly watches service workers requests.
this.stackTraceCollector = new StackTraceCollector({ window, appId });
this.stackTraceCollector = new StackTraceCollector({ window });
this.stackTraceCollector.init();
let processBoundary = Services.appinfo.processType !=
Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT;
if ((appId || messageManager) && processBoundary) {
if (messageManager && processBoundary) {
// Start a network monitor in the parent process to listen to
// most requests than happen in parent
this.networkMonitor =
new NetworkMonitorChild(appId, this.parentActor.outerWindowID,
new NetworkMonitorChild(this.parentActor.outerWindowID,
messageManager, this.conn, this);
this.networkMonitor.init();
// Spawn also one in the child to listen to service workers
+2 -9
View File
@@ -537,6 +537,7 @@ function newChannelForURL(url, { policy, window, principal }) {
// scheme to see if it helps.
uri = Services.io.newURI("file://" + url, null, null);
}
let channelOptions = {
contentPolicyType: policy,
securityFlags: securityFlags,
@@ -557,15 +558,7 @@ function newChannelForURL(url, { policy, window, principal }) {
}
channelOptions.loadingPrincipal = prin;
try {
return NetUtil.newChannel(channelOptions);
} catch (e) {
// In xpcshell tests on Windows, nsExternalProtocolHandler::NewChannel()
// can throw NS_ERROR_UNKNOWN_PROTOCOL if the external protocol isn't
// supported by Windows, so we also need to handle the exception here if
// parsing the URL above doesn't throw.
return newChannelForURL("file://" + url, { policy, window, principal });
}
return NetUtil.newChannel(channelOptions);
}
// Fetch is defined differently depending on whether we are on the main thread
+89 -14
View File
@@ -2208,10 +2208,10 @@ exports.CSS_PROPERTIES = {
"values": [
"-moz-available",
"-moz-calc",
"-moz-fit-content",
"auto",
"calc",
"content",
"fit-content",
"inherit",
"initial",
"max-content",
@@ -2231,10 +2231,10 @@ exports.CSS_PROPERTIES = {
"values": [
"-moz-available",
"-moz-calc",
"-moz-fit-content",
"auto",
"calc",
"content",
"fit-content",
"inherit",
"initial",
"max-content",
@@ -3282,7 +3282,6 @@ exports.CSS_PROPERTIES = {
"-moz-crisp-edges",
"-moz-deck",
"-moz-element",
"-moz-fit-content",
"-moz-grid",
"-moz-grid-group",
"-moz-grid-line",
@@ -3424,6 +3423,7 @@ exports.CSS_PROPERTIES = {
"extra-expanded",
"fill",
"fill-box",
"fit-content",
"fixed",
"flat",
"flex",
@@ -6000,10 +6000,10 @@ exports.CSS_PROPERTIES = {
"values": [
"-moz-available",
"-moz-calc",
"-moz-fit-content",
"auto",
"calc",
"content",
"fit-content",
"inherit",
"initial",
"max-content",
@@ -6023,10 +6023,10 @@ exports.CSS_PROPERTIES = {
"values": [
"-moz-available",
"-moz-calc",
"-moz-fit-content",
"auto",
"calc",
"content",
"fit-content",
"inherit",
"initial",
"max-content",
@@ -6816,9 +6816,9 @@ exports.CSS_PROPERTIES = {
"values": [
"-moz-available",
"-moz-calc",
"-moz-fit-content",
"auto",
"calc",
"fit-content",
"inherit",
"initial",
"max-content",
@@ -6903,9 +6903,9 @@ exports.CSS_PROPERTIES = {
"values": [
"-moz-available",
"-moz-calc",
"-moz-fit-content",
"auto",
"calc",
"fit-content",
"inherit",
"initial",
"max-content",
@@ -7257,6 +7257,25 @@ exports.CSS_PROPERTIES = {
"unset"
]
},
"margin-block": {
"isInherited": false,
"subproperties": [
"margin-block-start",
"margin-block-end"
],
"supports": [
6,
8
],
"values": [
"-moz-calc",
"auto",
"calc",
"inherit",
"initial",
"unset"
]
},
"margin-block-end": {
"isInherited": false,
"subproperties": [
@@ -7311,6 +7330,25 @@ exports.CSS_PROPERTIES = {
"unset"
]
},
"margin-inline": {
"isInherited": false,
"subproperties": [
"margin-inline-start",
"margin-inline-end"
],
"supports": [
6,
8
],
"values": [
"-moz-calc",
"auto",
"calc",
"inherit",
"initial",
"unset"
]
},
"margin-inline-end": {
"isInherited": false,
"subproperties": [
@@ -7744,8 +7782,8 @@ exports.CSS_PROPERTIES = {
"values": [
"-moz-available",
"-moz-calc",
"-moz-fit-content",
"calc",
"fit-content",
"inherit",
"initial",
"max-content",
@@ -7766,8 +7804,8 @@ exports.CSS_PROPERTIES = {
"values": [
"-moz-available",
"-moz-calc",
"-moz-fit-content",
"calc",
"fit-content",
"inherit",
"initial",
"max-content",
@@ -7788,8 +7826,8 @@ exports.CSS_PROPERTIES = {
"values": [
"-moz-available",
"-moz-calc",
"-moz-fit-content",
"calc",
"fit-content",
"inherit",
"initial",
"max-content",
@@ -7828,9 +7866,9 @@ exports.CSS_PROPERTIES = {
"values": [
"-moz-available",
"-moz-calc",
"-moz-fit-content",
"auto",
"calc",
"fit-content",
"inherit",
"initial",
"max-content",
@@ -7850,9 +7888,9 @@ exports.CSS_PROPERTIES = {
"values": [
"-moz-available",
"-moz-calc",
"-moz-fit-content",
"auto",
"calc",
"fit-content",
"inherit",
"initial",
"max-content",
@@ -7872,9 +7910,9 @@ exports.CSS_PROPERTIES = {
"values": [
"-moz-available",
"-moz-calc",
"-moz-fit-content",
"auto",
"calc",
"fit-content",
"inherit",
"initial",
"max-content",
@@ -8246,6 +8284,24 @@ exports.CSS_PROPERTIES = {
"unset"
]
},
"padding-block": {
"isInherited": false,
"subproperties": [
"padding-block-start",
"padding-block-end"
],
"supports": [
6,
8
],
"values": [
"-moz-calc",
"calc",
"inherit",
"initial",
"unset"
]
},
"padding-block-end": {
"isInherited": false,
"subproperties": [
@@ -8297,6 +8353,24 @@ exports.CSS_PROPERTIES = {
"unset"
]
},
"padding-inline": {
"isInherited": false,
"subproperties": [
"padding-inline-start",
"padding-inline-end"
],
"supports": [
6,
8
],
"values": [
"-moz-calc",
"calc",
"inherit",
"initial",
"unset"
]
},
"padding-inline-end": {
"isInherited": false,
"subproperties": [
@@ -9636,9 +9710,9 @@ exports.CSS_PROPERTIES = {
"values": [
"-moz-available",
"-moz-calc",
"-moz-fit-content",
"auto",
"calc",
"fit-content",
"inherit",
"initial",
"max-content",
@@ -9752,6 +9826,7 @@ exports.CSS_PROPERTIES = {
exports.PSEUDO_ELEMENTS = [
":after",
":before",
":slotted",
":backdrop",
":first-letter",
":first-line",
+4 -4
View File
@@ -37,12 +37,12 @@ function getTopWindow(win) {
.getInterface(Ci.nsIWebNavigation)
.QueryInterface(Ci.nsIDocShell);
if (!docShell.isMozBrowserOrApp) {
if (!docShell.isMozBrowser) {
return win.top;
}
let topDocShell =
docShell.getSameTypeRootTreeItemIgnoreBrowserAndAppBoundaries();
docShell.getSameTypeRootTreeItemIgnoreBrowserBoundaries();
return topDocShell
? topDocShell.contentViewer.DOMDocument.defaultView
@@ -98,12 +98,12 @@ function getParentWindow(win) {
.getInterface(Ci.nsIWebNavigation)
.QueryInterface(Ci.nsIDocShell);
if (!docShell.isMozBrowserOrApp) {
if (!docShell.isMozBrowser) {
return win.parent;
}
let parentDocShell =
docShell.getSameTypeParentIgnoreBrowserAndAppBoundaries();
docShell.getSameTypeParentIgnoreBrowserBoundaries();
return parentDocShell
? parentDocShell.contentViewer.DOMDocument.defaultView
@@ -1551,8 +1551,6 @@ NetworkMonitor.prototype = {
* data to the WebConsoleActor or to a NetworkEventActor.
*
* @constructor
* @param number appId
* The web appId of the child process.
* @param number outerWindowID
* The outerWindowID of the TabActor's main window.
* @param nsIMessageManager messageManager
@@ -1562,8 +1560,7 @@ NetworkMonitor.prototype = {
* @param object owner
* The WebConsoleActor that is listening for the network requests.
*/
function NetworkMonitorChild(appId, outerWindowID, messageManager, conn, owner) {
this.appId = appId;
function NetworkMonitorChild(outerWindowID, messageManager, conn, owner) {
this.outerWindowID = outerWindowID;
this.conn = conn;
this.owner = owner;
@@ -1577,7 +1574,6 @@ function NetworkMonitorChild(appId, outerWindowID, messageManager, conn, owner)
exports.NetworkMonitorChild = NetworkMonitorChild;
NetworkMonitorChild.prototype = {
appId: null,
owner: null,
_netEvents: null,
_saveRequestAndResponseBodies: true,
@@ -1623,7 +1619,6 @@ NetworkMonitorChild.prototype = {
mm.addMessageListener(`${this._msgName}:newEvent`, this._onNewEvent);
mm.addMessageListener(`${this._msgName}:updateEvent`, this._onUpdateEvent);
mm.sendAsyncMessage(this._msgName, {
appId: this.appId,
outerWindowID: this.outerWindowID,
action: "start",
});
-22
View File
@@ -157,28 +157,6 @@ LoadContext::SetRemoteTabs(bool aUseRemoteTabs)
return NS_ERROR_UNEXPECTED;
}
NS_IMETHODIMP
LoadContext::GetIsInIsolatedMozBrowserElement(bool* aIsInIsolatedMozBrowserElement)
{
MOZ_ASSERT(mIsNotNull);
NS_ENSURE_ARG_POINTER(aIsInIsolatedMozBrowserElement);
*aIsInIsolatedMozBrowserElement = mOriginAttributes.mInIsolatedMozBrowser;
return NS_OK;
}
NS_IMETHODIMP
LoadContext::GetAppId(uint32_t* aAppId)
{
MOZ_ASSERT(mIsNotNull);
NS_ENSURE_ARG_POINTER(aAppId);
*aAppId = mOriginAttributes.mAppId;
return NS_OK;
}
NS_IMETHODIMP
LoadContext::GetOriginAttributes(JS::MutableHandleValue aAttrs)
{
-4
View File
@@ -38,8 +38,6 @@ public:
NS_DECL_NSILOADCONTEXT
NS_DECL_NSIINTERFACEREQUESTOR
// appId/inIsolatedMozBrowser arguments override those in SerializedLoadContext
// provided by child process.
LoadContext(const IPC::SerializedLoadContext& aToCopy,
dom::Element* aTopFrameElement,
DocShellOriginAttributes& aAttrs)
@@ -54,8 +52,6 @@ public:
{
}
// appId/inIsolatedMozBrowser arguments override those in SerializedLoadContext
// provided by child process.
LoadContext(const IPC::SerializedLoadContext& aToCopy,
uint64_t aNestedFrameId,
DocShellOriginAttributes& aAttrs)
+4 -3
View File
@@ -136,7 +136,7 @@ nsDSURIContentListener::DoContent(const nsACString& aContentType,
mExistingJPEGRequest = baseChannel;
}
if (rv == NS_ERROR_REMOTE_XUL) {
if (rv == NS_ERROR_REMOTE_XUL || rv == NS_ERROR_DOCSHELL_DYING) {
aRequest->Cancel(rv);
*aAbortProcess = true;
return NS_OK;
@@ -334,7 +334,7 @@ nsDSURIContentListener::CheckOneFrameOptionsPolicy(nsIHttpChannel* aHttpChannel,
curDocShellItem->GetParent(getter_AddRefs(parentDocShellItem))) &&
parentDocShellItem) {
nsCOMPtr<nsIDocShell> curDocShell = do_QueryInterface(curDocShellItem);
if (curDocShell && curDocShell->GetIsMozBrowserOrApp()) {
if (curDocShell && curDocShell->GetIsMozBrowser()) {
break;
}
@@ -427,6 +427,7 @@ ShouldIgnoreFrameOptions(nsIChannel* aChannel, nsIPrincipal* aPrincipal)
return false;
}
#ifdef DEBUG
// log warning to console that xfo is ignored because of CSP
nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
uint64_t innerWindowID = loadInfo ? loadInfo->GetInnerWindowID() : 0;
@@ -440,7 +441,7 @@ ShouldIgnoreFrameOptions(nsIChannel* aChannel, nsIPrincipal* aPrincipal)
0, // no columnnumber
nsIScriptError::warningFlag,
"CSP", innerWindowID);
#endif
return true;
}
+88 -110
View File
@@ -193,7 +193,6 @@
#include "nsSandboxFlags.h"
#include "nsXULAppAPI.h"
#include "nsDOMNavigationTiming.h"
#include "nsIAppsService.h"
#include "nsDSURIContentListener.h"
#include "nsDocShellLoadTypes.h"
#include "nsDocShellTransferableHooks.h"
@@ -892,6 +891,8 @@ nsDocShell::~nsDocShell()
nsresult
nsDocShell::Init()
{
MOZ_ASSERT(!mIsBeingDestroyed);
nsresult rv = nsDocLoader::Init();
NS_ENSURE_SUCCESS(rv, rv);
@@ -1916,6 +1917,8 @@ bool
nsDocShell::SetCurrentURI(nsIURI* aURI, nsIRequest* aRequest,
bool aFireOnLocationChange, uint32_t aLocationFlags)
{
MOZ_ASSERT(!mIsBeingDestroyed);
if (gDocShellLeakLog && MOZ_LOG_TEST(gDocShellLeakLog, LogLevel::Debug)) {
PR_LogPrint("DOCSHELL %p SetCurrentURI %s\n",
this, aURI ? aURI->GetSpecOrDefault().get() : "");
@@ -2176,6 +2179,8 @@ nsDocShell::SetUsePrivateBrowsing(bool aUsePrivateBrowsing)
NS_IMETHODIMP
nsDocShell::SetPrivateBrowsing(bool aUsePrivateBrowsing)
{
MOZ_ASSERT(!mIsBeingDestroyed);
bool changed = aUsePrivateBrowsing != (mPrivateBrowsingId > 0);
if (changed) {
mPrivateBrowsingId = aUsePrivateBrowsing ? 1 : 0;
@@ -2246,6 +2251,8 @@ nsDocShell::SetRemoteTabs(bool aUseRemoteTabs)
NS_IMETHODIMP
nsDocShell::SetAffectPrivateSessionLifetime(bool aAffectLifetime)
{
MOZ_ASSERT(!mIsBeingDestroyed);
bool change = aAffectLifetime != mAffectPrivateSessionLifetime;
if (change && UsePrivateBrowsing()) {
AssertOriginAttributesMatchPrivateBrowsing();
@@ -2556,7 +2563,7 @@ nsDocShell::GetFullscreenAllowed(bool* aFullscreenAllowed)
NS_IMETHODIMP
nsDocShell::SetFullscreenAllowed(bool aFullscreenAllowed)
{
if (!nsIDocShell::GetIsMozBrowserOrApp()) {
if (!nsIDocShell::GetIsMozBrowser()) {
// Only allow setting of fullscreenAllowed on content/process boundaries.
// At non-boundaries the fullscreenAllowed attribute is calculated based on
// whether all enclosing frames have the "mozFullscreenAllowed" attribute
@@ -2748,6 +2755,8 @@ nsDocShell::GetSecurityUI(nsISecureBrowserUI** aSecurityUI)
NS_IMETHODIMP
nsDocShell::SetSecurityUI(nsISecureBrowserUI* aSecurityUI)
{
MOZ_ASSERT(!mIsBeingDestroyed);
mSecurityUI = aSecurityUI;
mSecurityUI->SetDocShell(this);
return NS_OK;
@@ -3386,7 +3395,7 @@ nsDocShell::GetSameTypeParent(nsIDocShellTreeItem** aParent)
NS_ENSURE_ARG_POINTER(aParent);
*aParent = nullptr;
if (nsIDocShell::GetIsMozBrowserOrApp()) {
if (nsIDocShell::GetIsMozBrowser()) {
return NS_OK;
}
@@ -3403,7 +3412,7 @@ nsDocShell::GetSameTypeParent(nsIDocShellTreeItem** aParent)
}
NS_IMETHODIMP
nsDocShell::GetSameTypeParentIgnoreBrowserAndAppBoundaries(nsIDocShell** aParent)
nsDocShell::GetSameTypeParentIgnoreBrowserBoundaries(nsIDocShell** aParent)
{
NS_ENSURE_ARG_POINTER(aParent);
*aParent = nullptr;
@@ -3457,18 +3466,18 @@ nsDocShell::GetSameTypeRootTreeItem(nsIDocShellTreeItem** aRootTreeItem)
}
NS_IMETHODIMP
nsDocShell::GetSameTypeRootTreeItemIgnoreBrowserAndAppBoundaries(nsIDocShell ** aRootTreeItem)
nsDocShell::GetSameTypeRootTreeItemIgnoreBrowserBoundaries(nsIDocShell ** aRootTreeItem)
{
NS_ENSURE_ARG_POINTER(aRootTreeItem);
*aRootTreeItem = static_cast<nsIDocShell *>(this);
nsCOMPtr<nsIDocShell> parent;
NS_ENSURE_SUCCESS(GetSameTypeParentIgnoreBrowserAndAppBoundaries(getter_AddRefs(parent)),
NS_ENSURE_SUCCESS(GetSameTypeParentIgnoreBrowserBoundaries(getter_AddRefs(parent)),
NS_ERROR_FAILURE);
while (parent) {
*aRootTreeItem = parent;
NS_ENSURE_SUCCESS((*aRootTreeItem)->
GetSameTypeParentIgnoreBrowserAndAppBoundaries(getter_AddRefs(parent)),
GetSameTypeParentIgnoreBrowserBoundaries(getter_AddRefs(parent)),
NS_ERROR_FAILURE);
}
NS_ADDREF(*aRootTreeItem);
@@ -3522,12 +3531,6 @@ nsDocShell::CanAccessItem(nsIDocShellTreeItem* aTargetItem,
return false;
}
if (targetDS->GetIsInIsolatedMozBrowserElement() !=
accessingDS->GetIsInIsolatedMozBrowserElement() ||
targetDS->GetAppId() != accessingDS->GetAppId()) {
return false;
}
nsCOMPtr<nsIDocShellTreeItem> accessingRoot;
aAccessingItem->GetSameTypeRootTreeItem(getter_AddRefs(accessingRoot));
nsCOMPtr<nsIDocShell> accessingRootDS = do_QueryInterface(accessingRoot);
@@ -3548,7 +3551,7 @@ nsDocShell::CanAccessItem(nsIDocShellTreeItem* aTargetItem,
if (OriginAttributes::IsFirstPartyEnabled()) {
if (accessingDS == accessingRootDS &&
aAccessingItem->ItemType() == nsIDocShellTreeItem::typeContent &&
!accessingDS->GetIsMozBrowserOrApp()) {
!accessingDS->GetIsMozBrowser()) {
nsCOMPtr<nsIDocument> accessingDoc = aAccessingItem->GetDocument();
@@ -3562,7 +3565,7 @@ nsDocShell::CanAccessItem(nsIDocShellTreeItem* aTargetItem,
if (targetDS == targetRootDS &&
aTargetItem->ItemType() == nsIDocShellTreeItem::typeContent &&
!targetDS->GetIsMozBrowserOrApp()) {
!targetDS->GetIsMozBrowser()) {
nsCOMPtr<nsIDocument> targetDoc = aAccessingItem->GetDocument();
@@ -3759,7 +3762,7 @@ nsDocShell::DoFindItemWithName(const nsAString& aName,
// If we have a same-type parent, respecting browser and app boundaries.
// NOTE: Could use GetSameTypeParent if the issues described in bug 1310344 are fixed.
if (!GetIsMozBrowserOrApp() && parentAsTreeItem->ItemType() == mItemType) {
if (!GetIsMozBrowser() && parentAsTreeItem->ItemType() == mItemType) {
return parentAsTreeItem->FindItemWithName(
aName,
static_cast<nsIDocShellTreeItem*>(this),
@@ -3930,6 +3933,10 @@ PrintDocTree(nsIDocShellTreeItem* aParentNode)
NS_IMETHODIMP
nsDocShell::SetTreeOwner(nsIDocShellTreeOwner* aTreeOwner)
{
if (mIsBeingDestroyed && aTreeOwner) {
return NS_ERROR_FAILURE;
}
#ifdef DEBUG_DOCSHELL_FOCUS
nsCOMPtr<nsIDocShellTreeItem> item(do_QueryInterface(aTreeOwner));
if (item) {
@@ -5186,6 +5193,8 @@ nsDocShell::LoadErrorPage(nsIURI* aURI, const char16_t* aURL,
const char* aCSSClass,
nsIChannel* aFailedChannel)
{
MOZ_ASSERT(!mIsBeingDestroyed);
#if defined(DEBUG)
if (MOZ_LOG_TEST(gDocShellLog, LogLevel::Debug)) {
nsAutoCString chanName;
@@ -5266,16 +5275,6 @@ nsDocShell::LoadErrorPage(nsIURI* aURI, const char16_t* aURL,
errorPageUrl.AppendLiteral("&f=");
errorPageUrl.AppendASCII(frameType.get());
// Append the manifest URL if the error comes from an app.
nsString manifestURL;
nsresult rv = GetAppManifestURL(manifestURL);
if (manifestURL.Length() > 0) {
nsCString manifestParam;
SAFE_ESCAPE(manifestParam, NS_ConvertUTF16toUTF8(manifestURL), url_Path);
errorPageUrl.AppendLiteral("&m=");
errorPageUrl.AppendASCII(manifestParam.get());
}
nsCOMPtr<nsICaptivePortalService> cps = do_GetService(NS_CAPTIVEPORTAL_CID);
int32_t cpsState;
if (cps && NS_SUCCEEDED(cps->GetState(&cpsState)) &&
@@ -5289,7 +5288,7 @@ nsDocShell::LoadErrorPage(nsIURI* aURI, const char16_t* aURL,
errorPageUrl.AppendASCII(escapedDescription.get());
nsCOMPtr<nsIURI> errorPageURI;
rv = NS_NewURI(getter_AddRefs(errorPageURI), errorPageUrl);
nsresult rv = NS_NewURI(getter_AddRefs(errorPageURI), errorPageUrl);
NS_ENSURE_SUCCESS(rv, rv);
return InternalLoad(errorPageURI, nullptr, false, false,
@@ -5539,6 +5538,8 @@ nsDocShell::SetSessionHistory(nsISHistory* aSessionHistory)
// make sure that we are the root docshell and
// set a handle to root docshell in SH.
MOZ_ASSERT(!mIsBeingDestroyed);
nsCOMPtr<nsIDocShellTreeItem> root;
/* Get the root docshell. If *this* is the root docshell
* then save a handle to *this* in SH. SH needs it to do
@@ -5719,16 +5720,22 @@ nsDocShell::Create()
NS_IMETHODIMP
nsDocShell::Destroy()
{
// XXX: We allow this function to be called just once. If you are going to
// reset new variables in this function, please make sure the variables will
// never be re-initialized. Adding assertions to check |mIsBeingDestroyed|
// in the setter functions for the variables would be enough.
if (mIsBeingDestroyed) {
return NS_ERROR_DOCSHELL_DYING;
}
NS_ASSERTION(mItemType == typeContent || mItemType == typeChrome,
"Unexpected item type in docshell");
if (!mIsBeingDestroyed) {
nsCOMPtr<nsIObserverService> serv = services::GetObserverService();
if (serv) {
const char* msg = mItemType == typeContent ?
NS_WEBNAVIGATION_DESTROY : NS_CHROME_WEBNAVIGATION_DESTROY;
serv->NotifyObservers(GetAsSupports(this), msg, nullptr);
}
nsCOMPtr<nsIObserverService> serv = services::GetObserverService();
if (serv) {
const char* msg = mItemType == typeContent ?
NS_WEBNAVIGATION_DESTROY : NS_CHROME_WEBNAVIGATION_DESTROY;
serv->NotifyObservers(GetAsSupports(this), msg, nullptr);
}
mIsBeingDestroyed = true;
@@ -6011,6 +6018,7 @@ nsDocShell::GetParentWidget(nsIWidget** aParentWidget)
NS_IMETHODIMP
nsDocShell::SetParentWidget(nsIWidget* aParentWidget)
{
MOZ_ASSERT(!mIsBeingDestroyed);
mParentWidget = aParentWidget;
return NS_OK;
@@ -6165,9 +6173,7 @@ nsDocShell::SetIsActive(bool aIsActive)
mScriptGlobal->SetIsBackground(!aIsActive);
if (nsCOMPtr<nsIDocument> doc = mScriptGlobal->GetExtantDoc()) {
// Update orientation when the top-level browsing context becomes active.
// We make an exception for apps because they currently rely on
// orientation locks persisting across browsing contexts.
if (aIsActive && !GetIsApp()) {
if (aIsActive) {
nsCOMPtr<nsIDocShellTreeItem> parent;
GetSameTypeParent(getter_AddRefs(parent));
if (!parent) {
@@ -6204,7 +6210,7 @@ nsDocShell::SetIsActive(bool aIsActive)
continue;
}
if (!docshell->GetIsMozBrowserOrApp()) {
if (!docshell->GetIsMozBrowser()) {
docshell->SetIsActive(aIsActive);
}
}
@@ -6281,6 +6287,8 @@ nsDocShell::SetOnePermittedSandboxedNavigator(nsIDocShell* aSandboxedNavigator)
return NS_OK;
}
MOZ_ASSERT(!mIsBeingDestroyed);
mOnePermittedSandboxedNavigator = do_GetWeakReference(aSandboxedNavigator);
NS_ASSERTION(mOnePermittedSandboxedNavigator,
"One Permitted Sandboxed Navigator must support weak references.");
@@ -6641,6 +6649,8 @@ nsDocShell::RefreshURI(nsIURI* aURI,
bool aMetaRefresh,
nsIPrincipal* aPrincipal)
{
MOZ_ASSERT(!mIsBeingDestroyed);
NS_ENSURE_ARG(aURI);
/* Check if Meta refresh/redirects are permitted. Some
@@ -7985,6 +7995,10 @@ nsDocShell::CreateAboutBlankContentViewer(nsIPrincipal* aPrincipal,
// wrong information :-(
//
(void)FirePageHideNotification(!mSavingOldViewer);
// pagehide notification might destroy this docshell.
if (mIsBeingDestroyed) {
return NS_ERROR_DOCSHELL_DYING;
}
}
// Now make sure we don't think we're in the middle of firing unload after
@@ -8128,6 +8142,8 @@ nsDocShell::CanSavePresentation(uint32_t aLoadType,
void
nsDocShell::ReattachEditorToWindow(nsISHEntry* aSHEntry)
{
MOZ_ASSERT(!mIsBeingDestroyed);
NS_ASSERTION(!mEditorData,
"Why reattach an editor when we already have one?");
NS_ASSERTION(aSHEntry && aSHEntry->HasDetachedEditor(),
@@ -8165,6 +8181,9 @@ nsDocShell::DetachEditorFromWindow()
if (NS_SUCCEEDED(res)) {
// Make mOSHE hold the owning ref to the editor data.
if (mOSHE) {
MOZ_ASSERT(!mIsBeingDestroyed || !mOSHE->HasDetachedEditor(),
"We should not set the editor data again once after we "
"detached the editor data during destroying this docshell");
mOSHE->SetEditorData(mEditorData.forget());
} else {
mEditorData = nullptr;
@@ -8351,6 +8370,8 @@ nsDocShell::GetRestoringDocument(bool* aRestoring)
nsresult
nsDocShell::RestorePresentation(nsISHEntry* aSHEntry, bool* aRestoring)
{
MOZ_ASSERT(!mIsBeingDestroyed);
NS_ASSERTION(mLoadType & LOAD_CMD_HISTORY,
"RestorePresentation should only be called for history loads");
@@ -8512,6 +8533,10 @@ nsDocShell::RestoreFromHistory()
// Notify the old content viewer that it's being hidden.
FirePageHideNotification(!mSavingOldViewer);
// pagehide notification might destroy this docshell.
if (mIsBeingDestroyed) {
return NS_ERROR_DOCSHELL_DYING;
}
// If mLSHE was changed as a result of the pagehide event, then
// something else was loaded. Don't finish restoring.
@@ -8969,6 +8994,12 @@ nsDocShell::CreateContentViewer(const nsACString& aContentType,
{
*aContentHandler = nullptr;
if (!mTreeOwner || mIsBeingDestroyed) {
// If we don't have a tree owner, then we're in the process of being
// destroyed. Rather than continue trying to load something, just give up.
return NS_ERROR_DOCSHELL_DYING;
}
// Can we check the content type of the current content viewer
// and reuse it without destroying it and re-creating it?
@@ -9008,6 +9039,11 @@ nsDocShell::CreateContentViewer(const nsACString& aContentType,
aOpenedChannel->GetURI(getter_AddRefs(mLoadingURI));
}
FirePageHideNotification(!mSavingOldViewer);
if (mIsBeingDestroyed) {
// Force to stop the newly created orphaned viewer.
viewer->Stop();
return NS_ERROR_DOCSHELL_DYING;
}
mLoadingURI = nullptr;
// Set mFiredUnloadEvent = false so that the unload handler for the
@@ -9197,6 +9233,8 @@ nsDocShell::NewContentViewerObj(const nsACString& aContentType,
nsresult
nsDocShell::SetupNewViewer(nsIContentViewer* aNewViewer)
{
MOZ_ASSERT(!mIsBeingDestroyed);
//
// Copy content viewer state from previous or parent content viewer.
//
@@ -10508,9 +10546,7 @@ nsDocShell::InternalLoad(nsIURI* aURI,
// lock the orientation of the document to the document's default
// orientation. We don't explicitly check for a top-level browsing context
// here because orientation is only set on top-level browsing contexts.
// We make an exception for apps because they currently rely on
// orientation locks persisting across browsing contexts.
if (OrientationLock() != eScreenOrientation_None && !GetIsApp()) {
if (OrientationLock() != eScreenOrientation_None) {
#ifdef DEBUG
nsCOMPtr<nsIDocShellTreeItem> parent;
GetSameTypeParent(getter_AddRefs(parent));
@@ -10893,7 +10929,7 @@ nsDocShell::DoURILoad(nsIURI* aURI,
NeckoOriginAttributes neckoAttrs;
bool isTopLevelDoc = aContentPolicyType == nsIContentPolicy::TYPE_DOCUMENT &&
mItemType == typeContent &&
!GetIsMozBrowserOrApp();
!GetIsMozBrowser();
neckoAttrs.InheritFromDocShellToNecko(GetOriginAttributes(), isTopLevelDoc, aURI);
rv = loadInfo->SetOriginAttributes(neckoAttrs);
if (NS_WARN_IF(NS_FAILED(rv))) {
@@ -13382,6 +13418,8 @@ nsDocShell::EnsureScriptEnvironment()
NS_IMETHODIMP
nsDocShell::EnsureEditorData()
{
MOZ_ASSERT(!mIsBeingDestroyed);
bool openDocHasDetachedEditor = mOSHE && mOSHE->HasDetachedEditor();
if (!mEditorData && !mIsBeingDestroyed && !openDocHasDetachedEditor) {
// We shouldn't recreate the editor data if it already exists, or
@@ -13397,6 +13435,8 @@ nsDocShell::EnsureEditorData()
nsresult
nsDocShell::EnsureTransferableHookData()
{
MOZ_ASSERT(!mIsBeingDestroyed);
if (!mTransferableHookData) {
mTransferableHookData = new nsTransferableHookData();
}
@@ -14326,16 +14366,9 @@ nsDocShell::GetFrameType(uint32_t* aFrameType)
}
/* [infallible] */ NS_IMETHODIMP
nsDocShell::GetIsApp(bool* aIsApp)
nsDocShell::GetIsMozBrowser(bool* aIsMozBrowser)
{
*aIsApp = (mFrameType == FRAME_TYPE_APP);
return NS_OK;
}
/* [infallible] */ NS_IMETHODIMP
nsDocShell::GetIsMozBrowserOrApp(bool* aIsMozBrowserOrApp)
{
*aIsMozBrowserOrApp = (mFrameType != FRAME_TYPE_REGULAR);
*aIsMozBrowser = (mFrameType == FRAME_TYPE_BROWSER);
return NS_OK;
}
@@ -14358,30 +14391,9 @@ nsDocShell::GetInheritedFrameType()
}
/* [infallible] */ NS_IMETHODIMP
nsDocShell::GetIsIsolatedMozBrowserElement(bool* aIsIsolatedMozBrowserElement)
nsDocShell::GetIsInMozBrowser(bool* aIsInMozBrowser)
{
bool result = mFrameType == FRAME_TYPE_BROWSER &&
mOriginAttributes.mInIsolatedMozBrowser;
*aIsIsolatedMozBrowserElement = result;
return NS_OK;
}
/* [infallible] */ NS_IMETHODIMP
nsDocShell::GetIsInIsolatedMozBrowserElement(bool* aIsInIsolatedMozBrowserElement)
{
MOZ_ASSERT(!mOriginAttributes.mInIsolatedMozBrowser ||
(GetInheritedFrameType() == FRAME_TYPE_BROWSER),
"Isolated mozbrowser should only be true inside browser frames");
bool result = (GetInheritedFrameType() == FRAME_TYPE_BROWSER) &&
mOriginAttributes.mInIsolatedMozBrowser;
*aIsInIsolatedMozBrowserElement = result;
return NS_OK;
}
/* [infallible] */ NS_IMETHODIMP
nsDocShell::GetIsInMozBrowserOrApp(bool* aIsInMozBrowserOrApp)
{
*aIsInMozBrowserOrApp = (GetInheritedFrameType() != FRAME_TYPE_REGULAR);
*aIsInMozBrowser = (GetInheritedFrameType() == FRAME_TYPE_BROWSER);
return NS_OK;
}
@@ -14399,25 +14411,6 @@ nsDocShell::GetIsTopLevelContentDocShell(bool* aIsTopLevelContentDocShell)
return NS_OK;
}
/* [infallible] */ NS_IMETHODIMP
nsDocShell::GetAppId(uint32_t* aAppId)
{
if (mOriginAttributes.mAppId != nsIScriptSecurityManager::UNKNOWN_APP_ID) {
*aAppId = mOriginAttributes.mAppId;
return NS_OK;
}
nsCOMPtr<nsIDocShell> parent;
GetSameTypeParentIgnoreBrowserAndAppBoundaries(getter_AddRefs(parent));
if (!parent) {
*aAppId = nsIScriptSecurityManager::NO_APP_ID;
return NS_OK;
}
return parent->GetAppId(aAppId);
}
// Implements nsILoadContext.originAttributes
NS_IMETHODIMP
nsDocShell::GetOriginAttributes(JS::MutableHandle<JS::Value> aVal)
@@ -14469,6 +14462,8 @@ nsDocShell::CanSetOriginAttributes()
nsresult
nsDocShell::SetOriginAttributes(const DocShellOriginAttributes& aAttrs)
{
MOZ_ASSERT(!mIsBeingDestroyed);
if (!CanSetOriginAttributes()) {
return NS_ERROR_FAILURE;
}
@@ -14524,23 +14519,6 @@ nsDocShell::SetOriginAttributes(JS::Handle<JS::Value> aOriginAttributes,
return SetOriginAttributes(attrs);
}
NS_IMETHODIMP
nsDocShell::GetAppManifestURL(nsAString& aAppManifestURL)
{
uint32_t appId = nsIDocShell::GetAppId();
if (appId != nsIScriptSecurityManager::NO_APP_ID &&
appId != nsIScriptSecurityManager::UNKNOWN_APP_ID) {
nsCOMPtr<nsIAppsService> appsService =
do_GetService(APPS_SERVICE_CONTRACTID);
NS_ASSERTION(appsService, "No AppsService available");
appsService->GetManifestURLByLocalId(appId, aAppManifestURL);
} else {
aAppManifestURL.SetLength(0);
}
return NS_OK;
}
NS_IMETHODIMP
nsDocShell::GetAsyncPanZoomEnabled(bool* aOut)
{
-2
View File
@@ -786,8 +786,6 @@ protected:
static const nsCString FrameTypeToString(uint32_t aFrameType)
{
switch (aFrameType) {
case FRAME_TYPE_APP:
return NS_LITERAL_CSTRING("app");
case FRAME_TYPE_BROWSER:
return NS_LITERAL_CSTRING("browser");
case FRAME_TYPE_REGULAR:
+13 -72
View File
@@ -827,109 +827,50 @@ interface nsIDocShell : nsIDocShellTreeItem
*/
[noscript] void notifyScrollObservers();
/**
* Returns true iff the docshell corresponds to an <iframe mozapp>.
*/
[infallible] readonly attribute boolean isApp;
/**
* The type of iframe that this docshell lives.
*/
const unsigned long FRAME_TYPE_REGULAR = 0;
const unsigned long FRAME_TYPE_BROWSER = 1;
const unsigned long FRAME_TYPE_APP = 2;
[infallible] attribute unsigned long frameType;
/**
* Returns true if this docshell corresponds to an <iframe mozbrowser> or
* <iframe mozapp>. <xul:browser> returns false here.
* Returns true if this docshell corresponds to an <iframe mozbrowser>.
* <xul:browser> returns false here.
*/
[infallible] readonly attribute boolean isMozBrowserOrApp;
[infallible] readonly attribute boolean isMozBrowser;
/**
* Returns true if this docshell corresponds to an isolated <iframe
* mozbrowser>.
*
* <iframe mozbrowser mozapp> and <xul:browser> are not considered to be
* mozbrowser elements. <iframe mozbrowser noisolation> does not count as
* isolated since isolation is disabled. Isolation can only be disabled if
* the containing document is chrome.
*/
[infallible] readonly attribute boolean isIsolatedMozBrowserElement;
/**
* Returns true if this docshell corresponds to an isolated <iframe
* mozbrowser> or if the docshell is contained in an isolated <iframe
* mozbrowser>.
*
* <iframe mozbrowser mozapp> and <xul:browser> are not considered to be
* mozbrowser elements. <iframe mozbrowser noisolation> does not count as
* isolated since isolation is disabled. Isolation can only be disabled if
* the containing document is chrome.
*
* Our notion here of "contained in" means: Walk up the docshell hierarchy in
* this process until we hit an <iframe mozapp> or <iframe mozbrowser> (or
* until the hierarchy ends). Return true iff the docshell we stopped on has
* isIsolatedMozBrowserElement == true.
*/
[infallible] readonly attribute boolean isInIsolatedMozBrowserElement;
/**
* Returns true if this docshell corresponds to an <iframe mozbrowser> or
* <iframe mozapp>, or if this docshell is contained in an <iframe mozbrowser>
* or <iframe mozapp>. <xul:browser> returns false here.
* Returns true if this docshell corresponds to an <iframe mozbrowser>, or
* if this docshell is contained in an <iframe mozbrowser>. <xul:browser>
* returns false here.
*
* To compute this value, we walk up the docshell hierarchy. If we encounter
* a docshell with isMozBrowserOrApp before we hit the end of the hierarchy,
* a docshell with isMozBrowser before we hit the end of the hierarchy,
* we return true. Otherwise, we return false.
*/
[infallible] readonly attribute boolean isInMozBrowserOrApp;
[infallible] readonly attribute boolean isInMozBrowser;
/**
* Returns true if this docshell is the top level content docshell.
*/
[infallible] readonly attribute boolean isTopLevelContentDocShell;
/**
* Returns the id of the app associated with this docshell. If this docshell
* is an <iframe mozbrowser> inside an <iframe mozapp>, we return the app's
* appId.
*
* We compute this value by walking up the docshell hierarchy until we find a
* docshell on which origin attributes was set. (ignoring those docshells
* where x == UNKNOWN_APP_ID). We return the app id x.
*
* If we don't find a docshell with an associated app id in our hierarchy, we
* return NO_APP_ID. We never return UNKNOWN_APP_ID.
*
* Notice that a docshell may have an associated app even if it returns true
* for isBrowserElement!
*/
[infallible] readonly attribute unsigned long appId;
/**
* Return the manifest URL of the app associated with this docshell.
*
* If there is no associated app in our hierarchy, we return empty string.
*/
readonly attribute DOMString appManifestURL;
/**
* Like nsIDocShellTreeItem::GetSameTypeParent, except this ignores <iframe
* mozbrowser> and <iframe mozapp> boundaries.
* mozbrowser> boundaries.
*/
nsIDocShell getSameTypeParentIgnoreBrowserAndAppBoundaries();
nsIDocShell getSameTypeParentIgnoreBrowserBoundaries();
/**
* Like nsIDocShellTreeItem::GetSameTypeRootTreeItem, except this ignores
* <iframe mozbrowser> and <iframe mozapp> boundaries.
* <iframe mozbrowser> boundaries.
*/
nsIDocShell getSameTypeRootTreeItemIgnoreBrowserAndAppBoundaries();
nsIDocShell getSameTypeRootTreeItemIgnoreBrowserBoundaries();
/**
* True iff asynchronous panning and zooming is enabled for this
* docshell.
* True if asynchronous panning and zooming is enabled for this docshell.
*/
readonly attribute bool asyncPanZoomEnabled;
+3 -4
View File
@@ -57,10 +57,9 @@ interface nsIDocShellTreeItem : nsISupports
/*
This getter returns the same thing parent does however if the parent
is of a different itemType, or if the parent is an <iframe mozbrowser>
or <iframe mozapp>, it will instead return nullptr. This call is a
convience function for those wishing to not cross the boundaries at
which item types change.
is of a different itemType, or if the parent is an <iframe mozbrowser>.
It will instead return nullptr. This call is a convience function for
Ithose wishing to not cross the boundaries at which item types change.
*/
readonly attribute nsIDocShellTreeItem sameTypeParent;
-15
View File
@@ -104,21 +104,6 @@ interface nsILoadContext : nsISupports
*/
[noscript] void SetRemoteTabs(in boolean aUseRemoteTabs);
/**
* Returns true iff the load is occurring inside an isolated mozbrowser
* element. <iframe mozbrowser mozapp> and <xul:browser> are not considered to
* be mozbrowser elements. <iframe mozbrowser noisolation> does not count as
* isolated since isolation is disabled. Isolation can only be disabled if
* the containing document is chrome.
*/
readonly attribute boolean isInIsolatedMozBrowserElement;
/**
* Returns the app id of the app the load is occurring is in. Returns
* nsIScriptSecurityManager::NO_APP_ID if the load is not part of an app.
*/
readonly attribute unsigned long appId;
/**
* A dictionary of the non-default origin attributes associated with this
* nsILoadContext.
+32 -5
View File
@@ -1383,6 +1383,30 @@ Animation::GetRenderedDocument() const
return mEffect->AsKeyframeEffect()->GetRenderedDocument();
}
class AsyncFinishNotification : public MicroTaskRunnable
{
public:
explicit AsyncFinishNotification(Animation* aAnimation)
: MicroTaskRunnable()
, mAnimation(aAnimation)
{}
virtual void Run(AutoSlowOperation& aAso) override
{
mAnimation->DoFinishNotificationImmediately(this);
mAnimation = nullptr;
}
virtual bool Suppressed() override
{
nsIGlobalObject* global = mAnimation->GetOwnerGlobal();
return global && global->IsInSyncOperation();
}
private:
RefPtr<Animation> mAnimation;
};
void
Animation::DoFinishNotification(SyncNotifyFlag aSyncNotifyFlag)
{
@@ -1390,9 +1414,8 @@ Animation::DoFinishNotification(SyncNotifyFlag aSyncNotifyFlag)
if (aSyncNotifyFlag == SyncNotifyFlag::Sync) {
DoFinishNotificationImmediately();
} else if (!mFinishNotificationTask.IsPending()) {
RefPtr<nsRunnableMethod<Animation>> runnable =
NewRunnableMethod(this, &Animation::DoFinishNotificationImmediately);
} else if (!mFinishNotificationTask) {
RefPtr<MicroTaskRunnable> runnable = new AsyncFinishNotification(this);
context->DispatchToMicroTask(do_AddRef(runnable));
mFinishNotificationTask = runnable.forget();
}
@@ -1415,9 +1438,13 @@ Animation::MaybeResolveFinishedPromise()
}
void
Animation::DoFinishNotificationImmediately()
Animation::DoFinishNotificationImmediately(MicroTaskRunnable* aAsync)
{
mFinishNotificationTask.Revoke();
if (aAsync && aAsync != mFinishNotificationTask) {
return;
}
mFinishNotificationTask = nullptr;
if (PlayState() != AnimationPlayState::Finished) {
return;
+5 -2
View File
@@ -9,6 +9,7 @@
#include "nsWrapperCache.h"
#include "nsCycleCollectionParticipant.h"
#include "mozilla/Attributes.h"
#include "mozilla/CycleCollectedJSContext.h"
#include "mozilla/DOMEventTargetHelper.h"
#include "mozilla/EffectCompositor.h" // For EffectCompositor::CascadeLevel
#include "mozilla/LinkedList.h"
@@ -42,6 +43,7 @@ class AnimValuesStyleRule;
namespace dom {
class AsyncFinishNotification;
class CSSAnimation;
class CSSTransition;
@@ -378,7 +380,8 @@ protected:
void ResetFinishedPromise();
void MaybeResolveFinishedPromise();
void DoFinishNotification(SyncNotifyFlag aSyncNotifyFlag);
void DoFinishNotificationImmediately();
friend class AsyncFinishNotification;
void DoFinishNotificationImmediately(MicroTaskRunnable* aAsync = nullptr);
void DispatchPlaybackEvent(const nsAString& aName);
/**
@@ -446,7 +449,7 @@ protected:
// getAnimations() list.
bool mIsRelevant;
nsRevocableEventPtr<nsRunnableMethod<Animation>> mFinishNotificationTask;
RefPtr<MicroTaskRunnable> mFinishNotificationTask;
// True if mFinished is resolved or would be resolved if mFinished has
// yet to be created. This is not set when mFinished is rejected since
// in that case mFinished is immediately reset to represent a new current
+7
View File
@@ -155,6 +155,13 @@ DocumentTimeline::WillRefresh(mozilla::TimeStamp aTime)
bool needsTicks = false;
nsTArray<Animation*> animationsToRemove(mAnimations.Count());
// https://drafts.csswg.org/web-animations-1/#update-animations-and-send-events,
// step2.
// Note that this should be done before nsAutoAnimationMutationBatch. If
// PerformMicroTaskCheckpoint was called before nsAutoAnimationMutationBatch
// is destroyed, some mutation records might not be delivered in this
// checkpoint.
nsAutoMicroTask mt;
nsAutoAnimationMutationBatch mb(mDocument);
for (Animation* animation = mAnimationOrder.getFirst(); animation;
+3 -10
View File
@@ -14,8 +14,7 @@
#include "mozilla/AnimationUtils.h"
#include "mozilla/EffectSet.h"
#include "mozilla/LayerAnimationInfo.h"
#include "mozilla/RestyleManagerHandle.h"
#include "mozilla/RestyleManagerHandleInlines.h"
#include "mozilla/RestyleManager.h"
#include "nsComputedDOMStyle.h" // nsComputedDOMStyle::GetPresShellForContent
#include "nsCSSPropertyIDSet.h"
#include "nsCSSProps.h"
@@ -202,10 +201,7 @@ EffectCompositor::RequestRestyle(dom::Element* aElement,
if (aRestyleType == RestyleType::Layer) {
// Prompt layers to re-sync their animations.
MOZ_ASSERT(mPresContext->RestyleManager()->IsGecko(),
"stylo: Servo-backed style system should not be using "
"EffectCompositor");
mPresContext->RestyleManager()->AsGecko()->IncrementAnimationGeneration();
mPresContext->RestyleManager()->IncrementAnimationGeneration();
EffectSet* effectSet =
EffectSet::GetEffectSet(aElement, aPseudoType);
if (effectSet) {
@@ -317,10 +313,7 @@ EffectCompositor::GetAnimationRule(dom::Element* aElement,
return nullptr;
}
MOZ_ASSERT(mPresContext->RestyleManager()->IsGecko(),
"stylo: Servo-backed style system should not be using "
"EffectCompositor");
if (mPresContext->RestyleManager()->AsGecko()->SkipAnimationRules()) {
if (mPresContext->RestyleManager()->SkipAnimationRules()) {
// We don't need to worry about updating mElementsToRestyle in this case
// since this is not the animation restyle we requested when we called
// PostRestyleForAnimation (see comment at start of this method).
+2 -6
View File
@@ -5,8 +5,7 @@
#include "EffectSet.h"
#include "mozilla/dom/Element.h" // For Element
#include "mozilla/RestyleManagerHandle.h"
#include "mozilla/RestyleManagerHandleInlines.h"
#include "mozilla/RestyleManager.h"
#include "nsCSSPseudoElements.h" // For CSSPseudoElementType
#include "nsCycleCollectionNoteChild.h" // For CycleCollectionNoteChild
#include "nsPresContext.h"
@@ -110,11 +109,8 @@ EffectSet::DestroyEffectSet(dom::Element* aElement,
void
EffectSet::UpdateAnimationGeneration(nsPresContext* aPresContext)
{
MOZ_ASSERT(aPresContext->RestyleManager()->IsGecko(),
"stylo: Servo-backed style system should not be using "
"EffectSet");
mAnimationGeneration =
aPresContext->RestyleManager()->AsGecko()->GetAnimationGeneration();
aPresContext->RestyleManager()->GetAnimationGeneration();
}
/* static */ nsIAtom**
+6 -29
View File
@@ -15,7 +15,6 @@
#include "mozilla/FloatingPoint.h" // For IsFinite
#include "mozilla/LookAndFeel.h" // For LookAndFeel::GetInt
#include "mozilla/KeyframeUtils.h"
#include "mozilla/ServoBindings.h"
#include "mozilla/StyleAnimationValue.h"
#include "Layers.h" // For Layer
#include "nsComputedDOMStyle.h" // nsComputedDOMStyle::GetStyleContextForElement
@@ -32,17 +31,7 @@ namespace mozilla {
bool
PropertyValuePair::operator==(const PropertyValuePair& aOther) const
{
if (mProperty != aOther.mProperty || mValue != aOther.mValue) {
return false;
}
if (mServoDeclarationBlock == aOther.mServoDeclarationBlock) {
return true;
}
if (!mServoDeclarationBlock || !aOther.mServoDeclarationBlock) {
return false;
}
return Servo_DeclarationBlock_Equals(mServoDeclarationBlock,
aOther.mServoDeclarationBlock);
return mProperty == aOther.mProperty && mValue == aOther.mValue;
}
namespace dom {
@@ -296,10 +285,7 @@ KeyframeEffectReadOnly::UpdateProperties(nsStyleContext* aStyleContext)
runningOnCompositorProperties.HasProperty(property.mProperty);
}
// FIXME (bug 1303235): Do this for Servo too
if (aStyleContext->PresContext()->StyleSet()->IsGecko()) {
CalculateCumulativeChangeHint(aStyleContext);
}
CalculateCumulativeChangeHint(aStyleContext);
MarkCascadeNeedsUpdate();
@@ -936,13 +922,8 @@ KeyframeEffectReadOnly::GetKeyframes(JSContext*& aCx,
: propertyValue.mProperty;
nsAutoString stringValue;
if (propertyValue.mServoDeclarationBlock) {
Servo_DeclarationBlock_SerializeOneValue(
propertyValue.mServoDeclarationBlock, &stringValue);
} else {
propertyValue.mValue.AppendToString(
propertyForSerializing, stringValue, nsCSSValue::eNormalized);
}
propertyValue.mValue.AppendToString(
propertyForSerializing, stringValue, nsCSSValue::eNormalized);
JS::Rooted<JS::Value> value(aCx);
if (!ToJSValue(aCx, stringValue, &value) ||
@@ -1286,10 +1267,8 @@ CreateStyleContextForAnimationValue(nsCSSPropertyID aProperty,
nsCOMArray<nsIStyleRule> rules;
rules.AppendObject(styleRule);
MOZ_ASSERT(aBaseStyleContext->PresContext()->StyleSet()->IsGecko(),
"ServoStyleSet should not use StyleAnimationValue for animations");
nsStyleSet* styleSet =
aBaseStyleContext->PresContext()->StyleSet()->AsGecko();
aBaseStyleContext->PresContext()->StyleSet();
RefPtr<nsStyleContext> styleContext =
styleSet->ResolveStyleByAddingRules(aBaseStyleContext, rules);
@@ -1362,10 +1341,8 @@ KeyframeEffectReadOnly::CanIgnoreIfNotVisible() const
return false;
}
// FIXME (bug 1303235): We don't calculate mCumulativeChangeHint for
// the Servo backend yet
nsPresContext* presContext = GetPresContext();
if (!presContext || presContext->StyleSet()->IsServo()) {
if (!presContext) {
return false;
}
-7
View File
@@ -19,8 +19,6 @@
#include "mozilla/EffectCompositor.h"
#include "mozilla/KeyframeEffectParams.h"
#include "mozilla/LayerAnimationInfo.h" // LayerAnimations::kRecords
#include "mozilla/ServoBindingTypes.h" // RawServoDeclarationBlock and
// associated RefPtrTraits
#include "mozilla/StyleAnimationValue.h"
#include "mozilla/dom/AnimationEffectReadOnly.h"
#include "mozilla/dom/Element.h"
@@ -63,11 +61,6 @@ struct PropertyValuePair
// (string).
nsCSSValue mValue;
// The specified value when using the Servo backend. However, even when
// using the Servo backend, we still fill in |mValue| in the case where we
// fail to parse the value since we use it to store the original string.
RefPtr<RawServoDeclarationBlock> mServoDeclarationBlock;
bool operator==(const PropertyValuePair&) const;
};
+23 -83
View File
@@ -9,7 +9,6 @@
#include "mozilla/Move.h"
#include "mozilla/Preferences.h"
#include "mozilla/RangedArray.h"
#include "mozilla/ServoBindings.h"
#include "mozilla/StyleAnimationValue.h"
#include "mozilla/TimingParams.h"
#include "mozilla/dom/BaseKeyframeTypesBinding.h" // For FastBaseKeyframe etc.
@@ -319,12 +318,8 @@ public:
// ------------------------------------------------------------------
inline bool
IsInvalidValuePair(const PropertyValuePair& aPair, StyleBackendType aBackend)
IsInvalidValuePair(const PropertyValuePair& aPair)
{
if (aBackend == StyleBackendType::Servo) {
return !aPair.mServoDeclarationBlock;
}
// There are three types of values we store as token streams:
//
// * Shorthand values (where we manually extract the token stream's string
@@ -600,8 +595,6 @@ KeyframeUtils::GetComputedKeyframeValues(const nsTArray<Keyframe>& aKeyframes,
MOZ_ASSERT(aStyleContext);
MOZ_ASSERT(aElement);
StyleBackendType styleBackend = aElement->OwnerDoc()->GetStyleBackendType();
const size_t len = aKeyframes.Length();
nsTArray<ComputedKeyframeValues> result(len);
@@ -610,12 +603,7 @@ KeyframeUtils::GetComputedKeyframeValues(const nsTArray<Keyframe>& aKeyframes,
ComputedKeyframeValues* computedValues = result.AppendElement();
for (const PropertyValuePair& pair :
PropertyPriorityIterator(frame.mPropertyValues)) {
MOZ_ASSERT(!pair.mServoDeclarationBlock ||
styleBackend == StyleBackendType::Servo,
"Animation values were parsed using Servo backend but target"
" element is not using Servo backend?");
if (IsInvalidValuePair(pair, styleBackend)) {
if (IsInvalidValuePair(pair)) {
continue;
}
@@ -623,33 +611,25 @@ KeyframeUtils::GetComputedKeyframeValues(const nsTArray<Keyframe>& aKeyframes,
// a KeyframeValueEntry for each value.
nsTArray<PropertyStyleAnimationValuePair> values;
if (styleBackend == StyleBackendType::Servo) {
// For shorthands, we store the string as a token stream so we need to
// extract that first.
if (nsCSSProps::IsShorthand(pair.mProperty)) {
nsCSSValueTokenStream* tokenStream = pair.mValue.GetTokenStreamValue();
if (!StyleAnimationValue::ComputeValues(pair.mProperty,
CSSEnabledState::eForAllContent, aStyleContext,
*pair.mServoDeclarationBlock, values)) {
CSSEnabledState::eForAllContent, aElement, aStyleContext,
tokenStream->mTokenStream, /* aUseSVGMode */ false, values) ||
IsComputeValuesFailureKey(pair)) {
continue;
}
} else {
// For shorthands, we store the string as a token stream so we need to
// extract that first.
if (nsCSSProps::IsShorthand(pair.mProperty)) {
nsCSSValueTokenStream* tokenStream = pair.mValue.GetTokenStreamValue();
if (!StyleAnimationValue::ComputeValues(pair.mProperty,
CSSEnabledState::eForAllContent, aElement, aStyleContext,
tokenStream->mTokenStream, /* aUseSVGMode */ false, values) ||
IsComputeValuesFailureKey(pair)) {
continue;
}
} else {
if (!StyleAnimationValue::ComputeValues(pair.mProperty,
CSSEnabledState::eForAllContent, aElement, aStyleContext,
pair.mValue, /* aUseSVGMode */ false, values)) {
continue;
}
MOZ_ASSERT(values.Length() == 1,
"Longhand properties should produce a single"
" StyleAnimationValue");
if (!StyleAnimationValue::ComputeValues(pair.mProperty,
CSSEnabledState::eForAllContent, aElement, aStyleContext,
pair.mValue, /* aUseSVGMode */ false, values)) {
continue;
}
MOZ_ASSERT(values.Length() == 1,
"Longhand properties should produce a single"
" StyleAnimationValue");
}
for (auto& value : values) {
@@ -999,30 +979,6 @@ MakePropertyValuePair(nsCSSPropertyID aProperty, const nsAString& aStringValue,
result.mProperty = aProperty;
if (aDocument->GetStyleBackendType() == StyleBackendType::Servo) {
nsCString name = nsCSSProps::GetStringValue(aProperty);
NS_ConvertUTF16toUTF8 value(aStringValue);
RefPtr<ThreadSafeURIHolder> base =
new ThreadSafeURIHolder(aDocument->GetDocumentURI());
RefPtr<ThreadSafeURIHolder> referrer =
new ThreadSafeURIHolder(aDocument->GetDocumentURI());
RefPtr<ThreadSafePrincipalHolder> principal =
new ThreadSafePrincipalHolder(aDocument->NodePrincipal());
nsCString baseString;
aDocument->GetDocumentURI()->GetSpec(baseString);
RefPtr<RawServoDeclarationBlock> servoDeclarationBlock =
Servo_ParseProperty(&name, &value, &baseString,
base, referrer, principal).Consume();
if (servoDeclarationBlock) {
result.mServoDeclarationBlock = servoDeclarationBlock.forget();
return result;
}
}
nsCSSValue value;
if (!nsCSSProps::IsShorthand(aProperty)) {
aParser.ParseLonghandProperty(aProperty,
@@ -1054,13 +1010,6 @@ MakePropertyValuePair(nsCSSPropertyID aProperty, const nsAString& aStringValue,
"The shorthand property of a token stream should be initialized"
" to unknown");
value.SetTokenStreamValue(tokenStream);
} else {
// If we succeeded in parsing with Gecko, but not Servo the animation is
// not going to work since, for the purposes of animation, we're going to
// ignore |mValue| when the backend is Servo.
NS_WARNING_ASSERTION(aDocument->GetStyleBackendType() !=
StyleBackendType::Servo,
"Gecko succeeded in parsing where Servo failed");
}
result.mValue = value;
@@ -1412,8 +1361,6 @@ HasImplicitKeyframeValues(const nsTArray<Keyframe>& aKeyframes,
}
};
StyleBackendType styleBackend = aDocument->GetStyleBackendType();
for (size_t i = 0, len = aKeyframes.Length(); i < len; i++) {
const Keyframe& frame = aKeyframes[i];
@@ -1429,25 +1376,18 @@ HasImplicitKeyframeValues(const nsTArray<Keyframe>& aKeyframes,
: computedOffset;
for (const PropertyValuePair& pair : frame.mPropertyValues) {
if (IsInvalidValuePair(pair, styleBackend)) {
if (IsInvalidValuePair(pair)) {
continue;
}
if (nsCSSProps::IsShorthand(pair.mProperty)) {
if (styleBackend == StyleBackendType::Gecko) {
nsCSSValueTokenStream* tokenStream =
pair.mValue.GetTokenStreamValue();
nsCSSParser parser(aDocument->CSSLoader());
if (!parser.IsValueValidForProperty(pair.mProperty,
tokenStream->mTokenStream)) {
continue;
}
nsCSSValueTokenStream* tokenStream =
pair.mValue.GetTokenStreamValue();
nsCSSParser parser(aDocument->CSSLoader());
if (!parser.IsValueValidForProperty(pair.mProperty,
tokenStream->mTokenStream)) {
continue;
}
// For the Servo backend, invalid shorthand values are represented by
// a null mServoDeclarationBlock member which we skip above in
// IsInvalidValuePair.
MOZ_ASSERT(styleBackend != StyleBackendType::Servo ||
pair.mServoDeclarationBlock);
CSSPROPS_FOR_SHORTHAND_SUBPROPERTIES(
prop, pair.mProperty, CSSEnabledState::eForAllContent) {
addToPropertySets(*prop, offsetToUse);
+1 -1
View File
@@ -135,7 +135,7 @@ TimingParams::ParseEasing(const nsAString& aEasing,
NS_STYLE_TRANSITION_TIMING_FUNCTION_LINEAR) {
return Nothing();
}
MOZ_FALLTHROUGH;
[[fallthrough]];
case eCSSUnit_Cubic_Bezier:
case eCSSUnit_Steps: {
nsTimingFunction timingFunction;
-114
View File
@@ -1,114 +0,0 @@
/* 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 http://mozilla.org/MPL/2.0/. */
"use strict"
function debug(s) {
//dump("-*- AppsService.js: " + s + "\n");
}
const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
const Cr = Components.results;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/Promise.jsm");
const APPS_SERVICE_CID = Components.ID("{05072afa-92fe-45bf-ae22-39b69c117058}");
function AppsService()
{
debug("AppsService Constructor");
this.inParent = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime)
.processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT;
debug("inParent: " + this.inParent);
if (!this.inParent) {
Cu.import("resource://gre/modules/AppsServiceChild.jsm");
}
}
AppsService.prototype = {
isInvalidId: function(localId) {
return (localId == Ci.nsIScriptSecurityManager.NO_APP_ID ||
localId == Ci.nsIScriptSecurityManager.UNKNOWN_APP_ID);
},
getAppByManifestURL: function getAppByManifestURL(aManifestURL) {
debug("GetAppByManifestURL( " + aManifestURL + " )");
throw Cr.NS_ERROR_NOT_IMPLEMENTED;
},
getManifestFor: function getManifestFor(aManifestURL) {
debug("getManifestFor(" + aManifestURL + ")");
if (this.inParent) {
throw Cr.NS_ERROR_NOT_IMPLEMENTED;
} else {
return Promise.reject(
new Error("Calling getManifestFor() from child is not supported"));
}
},
getAppLocalIdByManifestURL: function getAppLocalIdByManifestURL(aManifestURL) {
debug("getAppLocalIdByManifestURL( " + aManifestURL + " )");
throw Cr.NS_ERROR_NOT_IMPLEMENTED;
},
getAppLocalIdByStoreId: function getAppLocalIdByStoreId(aStoreId) {
debug("getAppLocalIdByStoreId( " + aStoreId + " )");
throw Cr.NS_ERROR_NOT_IMPLEMENTED;
},
getAppByLocalId: function getAppByLocalId(aLocalId) {
debug("getAppByLocalId( " + aLocalId + " )");
if (this.isInvalidId(aLocalId)) {
return null;
}
throw Cr.NS_ERROR_NOT_IMPLEMENTED;
},
getManifestURLByLocalId: function getManifestURLByLocalId(aLocalId) {
debug("getManifestURLByLocalId( " + aLocalId + " )");
if (this.isInvalidId(aLocalId)) {
return null;
}
throw Cr.NS_ERROR_NOT_IMPLEMENTED;
},
getCoreAppsBasePath: function getCoreAppsBasePath() {
debug("getCoreAppsBasePath()");
throw Cr.NS_ERROR_NOT_IMPLEMENTED;
},
getWebAppsBasePath: function getWebAppsBasePath() {
debug("getWebAppsBasePath()");
throw Cr.NS_ERROR_NOT_IMPLEMENTED;
},
areAnyAppsInstalled: function() {
throw Cr.NS_ERROR_NOT_IMPLEMENTED;
},
getAppInfo: function getAppInfo(aAppId) {
debug("getAppInfo()");
throw Cr.NS_ERROR_NOT_IMPLEMENTED;
},
getScopeByLocalId: function(aLocalId) {
debug("getScopeByLocalId( " + aLocalId + " )");
if (this.isInvalidId(aLocalId)) {
return null;
}
// TODO : implement properly!
// We just return null for now to not break PushService.jsm
return null;
},
classID : APPS_SERVICE_CID,
QueryInterface : XPCOMUtils.generateQI([Ci.nsIAppsService])
}
this.NSGetFactory = XPCOMUtils.generateNSGetFactory([AppsService])
-2
View File
@@ -1,2 +0,0 @@
component {05072afa-92fe-45bf-ae22-39b69c117058} AppsService.js
contract @mozilla.org/AppsService;1 {05072afa-92fe-45bf-ae22-39b69c117058}
Loaded 100 of 3780 files, more files were not shown because too many files have changed in this diff. Show more