Compare commits
855 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5cae6ba548 | ||
|
|
4705e57bd9 | ||
|
|
f146ba56bb | ||
|
|
24fd754487 | ||
|
|
462718a74b | ||
|
|
1e7c0442f3 | ||
|
|
89608198f4 | ||
|
|
23c7be839d | ||
|
|
72f755bd6f | ||
|
|
bab13b94df | ||
|
|
6f0f3b9cb3 | ||
|
|
eafa7d4b2b | ||
|
|
64c0ad783f | ||
|
|
d96e56c1d7 | ||
|
|
e611a5f217 | ||
|
|
ed74b03b2d | ||
|
|
853aa9dc99 | ||
|
|
0c021524a4 | ||
|
|
f99934eed5 | ||
|
|
dc17442e7c | ||
|
|
c462501e8d | ||
|
|
2d4ef1e9c6 | ||
|
|
b562ef83c9 | ||
|
|
1b8800e37a | ||
|
|
9477265072 | ||
|
|
2762f92444 | ||
|
|
e3513faf0e | ||
|
|
e0c0d9da86 | ||
|
|
1c782e34ff | ||
|
|
b58666ee94 | ||
|
|
842bd5a7be | ||
|
|
e87ce54e2a | ||
|
|
5984ba2190 | ||
|
|
6806656d32 | ||
|
|
d2b8868214 | ||
|
|
f2736110e3 | ||
|
|
abb284ea0a | ||
|
|
7d1764e955 | ||
|
|
b7cf0be137 | ||
|
|
9a2664b2bc | ||
|
|
e6b7799cc6 | ||
|
|
32ea580787 | ||
|
|
0aced88ad7 | ||
|
|
90c68a6ff3 | ||
|
|
4b7cbfdd1f | ||
|
|
634cc6b04f | ||
|
|
6304afcc4b | ||
|
|
feb0fe313d | ||
|
|
2d7fde7ef1 | ||
|
|
56372fb8f8 | ||
|
|
74ec41e9ec | ||
|
|
13c9319e5f | ||
|
|
b11c19c1ff | ||
|
|
461eda4671 | ||
|
|
b1a854bf0a | ||
|
|
2d720ae2e5 | ||
|
|
92be14d9ab | ||
|
|
f1ffcae639 | ||
|
|
c71c4ce322 | ||
|
|
14acb37320 | ||
|
|
3a3ae1f6e7 | ||
|
|
1b2d75db03 | ||
|
|
66392400ba | ||
|
|
170d89d3ae | ||
|
|
2b5a89f8e1 | ||
|
|
4ef0ebecb5 | ||
|
|
17a61ecf81 | ||
|
|
431d7e98cf | ||
|
|
f79bda8a61 | ||
|
|
1d89f3ced4 | ||
|
|
9597b231df | ||
|
|
6049c4d71a | ||
|
|
3dd27b4f6e | ||
|
|
725d62009a | ||
|
|
8309e8fbbc | ||
|
|
f09f930358 | ||
|
|
a5c1b68cbb | ||
|
|
10619cea11 | ||
|
|
e87a3826bc | ||
|
|
4943887c79 | ||
|
|
0b8ab68f72 | ||
|
|
5c006a337e | ||
|
|
f07dadb0c2 | ||
|
|
968cc7c29e | ||
|
|
69bd5c304a | ||
|
|
f09793d1a4 | ||
|
|
9547d5f181 | ||
|
|
63cced6f15 | ||
|
|
e99b0b9e6b | ||
|
|
d06ba1cb58 | ||
|
|
28b6b2d3aa | ||
|
|
f027bb52f4 | ||
|
|
47ca594e39 | ||
|
|
540d80f5e2 | ||
|
|
28fda94a3b | ||
|
|
9b737f0495 | ||
|
|
022fac0b47 | ||
|
|
4cf000a2ec | ||
|
|
96dc4115d3 | ||
|
|
0f065b22d3 | ||
|
|
1b3593d295 | ||
|
|
dfb73a5412 | ||
|
|
56e5a95e64 | ||
|
|
4d9e561f5a | ||
|
|
a2f3fb9e88 | ||
|
|
f342a95238 | ||
|
|
118114e20a | ||
|
|
cc53e14331 | ||
|
|
d6a652127e | ||
|
|
6a5bf93895 | ||
|
|
b369691c13 | ||
|
|
c59de797c2 | ||
|
|
233edd69e3 | ||
|
|
b373f8ce38 | ||
|
|
2ca6a09a02 | ||
|
|
8e7e68ad75 | ||
|
|
29cb80df95 | ||
|
|
281e7fc594 | ||
|
|
60fe59c69f | ||
|
|
dafa26f99e | ||
|
|
45702faa29 | ||
|
|
7c1006e94a | ||
|
|
5766f71b77 | ||
|
|
374d0dbade | ||
|
|
5e17e3db83 | ||
|
|
4d033ce29a | ||
|
|
986578da51 | ||
|
|
e617d07476 | ||
|
|
9008253b4d | ||
|
|
dbd57477ae | ||
|
|
06cb25cdc3 | ||
|
|
7a256903b5 | ||
|
|
6400c3f44b | ||
|
|
1e8e362373 | ||
|
|
a390ac89a8 | ||
|
|
d529b4b41d | ||
|
|
aa135fb517 | ||
|
|
c8803752f0 | ||
|
|
2c1ed0ea17 | ||
|
|
a2fde72d25 | ||
|
|
51be9803b2 | ||
|
|
6021cc0be1 | ||
|
|
b5b76160bf | ||
|
|
8e87d0d10d | ||
|
|
734ed8d8e6 | ||
|
|
693c9dd4b7 | ||
|
|
9cb276b93b | ||
|
|
fa2ec46f3a | ||
|
|
0e10582f61 | ||
|
|
3b51a028b9 | ||
|
|
f3ac8bae08 | ||
|
|
2a1dcfee99 | ||
|
|
c7bc0f02ea | ||
|
|
2223db9e0f | ||
|
|
3e87328081 | ||
|
|
afe48a021c | ||
|
|
06068c9b42 | ||
|
|
d8c6584438 | ||
|
|
ecaeb2239a | ||
|
|
2b368d7cde | ||
|
|
57c29a6f70 | ||
|
|
65a47d46b5 | ||
|
|
70f2a5c6d7 | ||
|
|
98b5183c32 | ||
|
|
3abe4b4c2f | ||
|
|
0bec6f6cb8 | ||
|
|
e86d77bc73 | ||
|
|
6b1b45349a | ||
|
|
6b8e086d0f | ||
|
|
6483fd4d66 | ||
|
|
551e155c73 | ||
|
|
fc19acac9d | ||
|
|
7596b9d884 | ||
|
|
6e089051d3 | ||
|
|
33de47f343 | ||
|
|
a67afa06c9 | ||
|
|
54317224b2 | ||
|
|
eeb1bbaed3 | ||
|
|
c287985714 | ||
|
|
cfa2ac01f5 | ||
|
|
bd69cace74 | ||
|
|
c9e75c0786 | ||
|
|
78eab9ed2c | ||
|
|
d495cf8617 | ||
|
|
a2c2654dd7 | ||
|
|
e889d7b892 | ||
|
|
d2d1f52e7c | ||
|
|
9fca49bffa | ||
|
|
b541b31554 | ||
|
|
ca4f6b0080 | ||
|
|
b9b254a4f7 | ||
|
|
1b229e9131 | ||
|
|
25615f169e | ||
|
|
a8de0be71e | ||
|
|
8e79cd605a | ||
|
|
30c6d64afb | ||
|
|
70d0fad239 | ||
|
|
72a0976166 | ||
|
|
51a20c156b | ||
|
|
f6632082a9 | ||
|
|
8fb032492e | ||
|
|
31c4cad2a2 | ||
|
|
93268d4de0 | ||
|
|
cd5314efb3 | ||
|
|
b7cf17c51a | ||
|
|
fec72bef9f | ||
|
|
74a3220fcc | ||
|
|
ccaca8ccc5 | ||
|
|
b8f11afb6d | ||
|
|
2b5068734c | ||
|
|
e909cb26be | ||
|
|
21fb2dda89 | ||
|
|
950f3eea15 | ||
|
|
7710155d79 | ||
|
|
4fa72a1163 | ||
|
|
7d1a9652e5 | ||
|
|
ebf9521d9c | ||
|
|
d585e605de | ||
|
|
ae36299595 | ||
|
|
96d904afbd | ||
|
|
1ea403d86b | ||
|
|
ff7edcafc6 | ||
|
|
cc170dd2bb | ||
|
|
2dda7f8609 | ||
|
|
ba88b344ea | ||
|
|
f4c7885a69 | ||
|
|
4b6a0d9ad6 | ||
|
|
1ab1054612 | ||
|
|
48f9b0fcc9 | ||
|
|
60b823914a | ||
|
|
c000da176c | ||
|
|
ca2c471553 | ||
|
|
920cc52641 | ||
|
|
5075171b4c | ||
|
|
fc9a1bf390 | ||
|
|
b4332c158a | ||
|
|
8d607f862e | ||
|
|
996d116443 | ||
|
|
36ab0cac6d | ||
|
|
b929e7a15e | ||
|
|
60fdd5abb4 | ||
|
|
45608f2400 | ||
|
|
364db1a553 | ||
|
|
43f91b3884 | ||
|
|
910fc4430e | ||
|
|
8e2f33c0dc | ||
|
|
e75e749caa | ||
|
|
7a484647f4 | ||
|
|
2ff3942389 | ||
|
|
cc5e395ddc | ||
|
|
529383b5e0 | ||
|
|
7ad97d1f71 | ||
|
|
eacd934cf3 | ||
|
|
c7916c91f8 | ||
|
|
79c81d2629 | ||
|
|
6411e9e377 | ||
|
|
d7219ad705 | ||
|
|
2075e765cc | ||
|
|
51ab1ccbbc | ||
|
|
922c11b957 | ||
|
|
aa5399618e | ||
|
|
879253503b | ||
|
|
7658746ef7 | ||
|
|
bdd9cac34e | ||
|
|
69510db050 | ||
|
|
7609d4e357 | ||
|
|
76471413b2 | ||
|
|
fce8323a24 | ||
|
|
fc0a23427b | ||
|
|
0f5857cb63 | ||
|
|
919e30e38f | ||
|
|
331eced30e | ||
|
|
34f14f0c2a | ||
|
|
8454fdf13f | ||
|
|
b469d44cd5 | ||
|
|
588e3b01fb | ||
|
|
e7f0cbc6ca |
||
|
|
2eaa0458a5 | ||
|
|
5d26feb548 | ||
|
|
55e1497866 | ||
|
|
6b33407501 | ||
|
|
82ad299a88 | ||
|
|
d14fa011f0 | ||
|
|
722aeaae74 | ||
|
|
2714c26204 | ||
|
|
e302fd714c | ||
|
|
91f5d4fe1b | ||
|
|
203cb80595 | ||
|
|
911eba94d0 | ||
|
|
ada751ca27 | ||
|
|
e5fa239064 | ||
|
|
ba397925f8 | ||
|
|
0bd6b03b91 | ||
|
|
8bc6287eb9 | ||
|
|
cb96cce64f | ||
|
|
8b2f340656 | ||
|
|
48e82ba9fb | ||
|
|
a0a1cfe51b | ||
|
|
a0d8cf6efb | ||
|
|
712736a215 | ||
|
|
5364193d8d | ||
|
|
ffa346e745 | ||
|
|
118a6c91ec | ||
|
|
b896e22d66 | ||
|
|
29b8dda20b | ||
|
|
8ddd19880e | ||
|
|
13ca66bf71 | ||
|
|
875665f62d | ||
|
|
bf2835c53d | ||
|
|
be149410b9 | ||
|
|
8be16df639 | ||
|
|
5cdf6fcd2d | ||
|
|
06172c51b4 | ||
|
|
d551f9cd18 | ||
|
|
b85953896b | ||
|
|
c6dbf096e6 | ||
|
|
4135db16cc | ||
|
|
66f31e3216 | ||
|
|
a5727f9054 | ||
|
|
35e6001e2e | ||
|
|
0115959c8c | ||
|
|
6bd9bbbb15 | ||
|
|
cd32c2e28f | ||
|
|
86e26c4189 | ||
|
|
edd5f80c82 | ||
|
|
1548005c0d | ||
|
|
6c0e8c3949 | ||
|
|
36a09da5bc | ||
|
|
85de885472 | ||
|
|
e78a18fe12 | ||
|
|
230a3cfdd7 | ||
|
|
c10a044ca5 | ||
|
|
5c11948fd0 | ||
|
|
34b0ea8714 | ||
|
|
5fa8b8e9eb | ||
|
|
fce974e85f | ||
|
|
8089009cb4 | ||
|
|
a35e8720bb | ||
|
|
c68eef9fb2 | ||
|
|
309cf4ddc2 | ||
|
|
1053146416 | ||
|
|
d101b753fb | ||
|
|
60bfa9889d | ||
|
|
4195044fad | ||
|
|
bd405c0fbd | ||
|
|
ef1b31a8c2 | ||
|
|
e1da8d7871 | ||
|
|
b8e076ae59 | ||
|
|
9955d54a56 | ||
|
|
a2075ecfbc | ||
|
|
be98fb4794 | ||
|
|
88e057cc4f | ||
|
|
4eca3ad8d0 | ||
|
|
6cd9c47625 | ||
|
|
c33e16b99e | ||
|
|
9243512991 | ||
|
|
4dc43e7ccf | ||
|
|
bcb41f5083 | ||
|
|
8f1c30db91 | ||
|
|
9baa8f7c2d | ||
|
|
d89dc22930 | ||
|
|
b81896fdd8 | ||
|
|
d175d93ecc | ||
|
|
2606d6a50c | ||
|
|
456ad350a8 | ||
|
|
b2c506e3b4 | ||
|
|
80f05818c3 | ||
|
|
e9c16e2628 | ||
|
|
0e3e51fea7 | ||
|
|
e2f9245924 | ||
|
|
39bb25cd6f | ||
|
|
d693ba16a5 | ||
|
|
7f69d4c3f0 | ||
|
|
fc6d180230 | ||
|
|
fc3b817e29 | ||
|
|
d13c7dc2b6 | ||
|
|
4bb32b2390 | ||
|
|
b44a610b50 | ||
|
|
e81ff02c0f | ||
|
|
d5f2b2028f | ||
|
|
ad7ecb97b8 | ||
|
|
ce6d27cc38 | ||
|
|
33aaf8942f | ||
|
|
9f85dc3c25 | ||
|
|
1449db1d63 | ||
|
|
29ecde0d62 | ||
|
|
d698bc4eec | ||
|
|
24c9accce1 | ||
|
|
afd2fc66a8 | ||
|
|
01c680ce6a | ||
|
|
18483fc2bb | ||
|
|
46be314a6e | ||
|
|
eaaa442861 | ||
|
|
a67d903dec | ||
|
|
7289b9e9a7 | ||
|
|
416ea4ae97 | ||
|
|
255820fae0 | ||
|
|
b35d0d6682 | ||
|
|
701cde858b | ||
|
|
065757c3b4 | ||
|
|
e8035fe0a1 | ||
|
|
b5fde26b8f | ||
|
|
13c22b1d0b | ||
|
|
c5357ea592 | ||
|
|
ee371f01de | ||
|
|
5bddf2e064 | ||
|
|
f2d423870e | ||
|
|
6163653e0d | ||
|
|
f58ac6040c | ||
|
|
e2711446e1 | ||
|
|
d1c72896f3 | ||
|
|
b2b36e851e | ||
|
|
54310019ec | ||
|
|
1913d82157 | ||
|
|
2871a2e567 | ||
|
|
92926706f3 | ||
|
|
4ea325ddca | ||
|
|
42899b8728 | ||
|
|
c33aba22e6 | ||
|
|
916853162b | ||
|
|
802ee5c394 | ||
|
|
8bed0f2480 | ||
|
|
4f8d37fe68 | ||
|
|
8c2f692734 | ||
|
|
cd7d2b004a | ||
|
|
ec6b601b49 | ||
|
|
dc1af54df8 | ||
|
|
37e93aca4b | ||
|
|
50222bf393 | ||
|
|
b8542b1767 | ||
|
|
5c5335d4f7 | ||
|
|
6fa1c4438c | ||
|
|
1d86ce0d55 | ||
|
|
d04948255c | ||
|
|
6d4d79277f | ||
|
|
69f67c3201 | ||
|
|
8cc8a04159 | ||
|
|
2abef0ec2b | ||
|
|
de85410030 | ||
|
|
5acb5af57f | ||
|
|
df84cc2cb6 | ||
|
|
753639d380 | ||
|
|
4dc4e22ba3 | ||
|
|
9d15a20e5c | ||
|
|
5da6e10440 | ||
|
|
e6bc05547a | ||
|
|
6018070ba3 | ||
|
|
34d53c32b5 | ||
|
|
dc74e4c39e | ||
|
|
caacd1dc09 | ||
|
|
97a5bb3a97 | ||
|
|
2d32336ce6 | ||
|
|
c93bbf6684 | ||
|
|
041f2c131b | ||
|
|
724c03d265 | ||
|
|
beb5e712a1 | ||
|
|
f0029706ce | ||
|
|
38d5cff9df | ||
|
|
904a6ec37f | ||
|
|
c3c6c167a2 | ||
|
|
949ba97268 | ||
|
|
1f98173a5b | ||
|
|
61ea27fc64 | ||
|
|
7b980b9542 | ||
|
|
d0beb2802b | ||
|
|
ea59033f8e | ||
|
|
ddc85ef643 | ||
|
|
420bed369a | ||
|
|
64f367594e | ||
|
|
c8fd8993ea | ||
|
|
fc66484a39 | ||
|
|
d033d1ab68 | ||
|
|
64c0f9493e | ||
|
|
8cc909acb9 | ||
|
|
5075a9d0d6 | ||
|
|
3e4bfaceac | ||
|
|
f5c2bd2d80 | ||
|
|
73c24a4d45 | ||
|
|
078b597b1e | ||
|
|
594959d6f8 | ||
|
|
1ad3bd1b24 | ||
|
|
7e1b07c41a | ||
|
|
720c2b63eb | ||
|
|
809044f0dd | ||
|
|
2300fa46f5 | ||
|
|
9d9142cadb | ||
|
|
a23c216427 | ||
|
|
babecc662f | ||
|
|
b65f309bcd | ||
|
|
c6d827cb4e | ||
|
|
bd3fc12e39 | ||
|
|
d9f5bf9ed4 | ||
|
|
85f5f771e9 | ||
|
|
c1b363d122 | ||
|
|
36a931ea7a | ||
|
|
6b8336e97f | ||
|
|
ea24aeef45 | ||
|
|
d101c7b7f4 | ||
|
|
c27f9f504e | ||
|
|
0d92801bb9 | ||
|
|
71b3ae64d2 | ||
|
|
1469e57b10 | ||
|
|
de02f241c5 | ||
|
|
4d45de9bff | ||
|
|
3f1c25e40c | ||
|
|
2f128006b4 | ||
|
|
39f02cbd91 | ||
|
|
a76220b146 | ||
|
|
d3ebfe3ad7 | ||
|
|
72a660f091 | ||
|
|
65d5b6f154 | ||
|
|
ba25b2cbc3 | ||
|
|
6a83fb069e | ||
|
|
1ae08943fc | ||
|
|
aa451636d1 | ||
|
|
e88b5e06a7 | ||
|
|
386d29543d | ||
|
|
8af042bc54 | ||
|
|
cad15cfb85 | ||
|
|
db7de5356d | ||
|
|
eb4214a710 | ||
|
|
5128ca8e5f | ||
|
|
cd6ef2bb82 | ||
|
|
92e16f9069 | ||
|
|
bfdfd329b2 | ||
|
|
33fd704cce | ||
|
|
e2a4b7e32d | ||
|
|
6edb288b6f | ||
|
|
980a9af4dd | ||
|
|
b707846f45 | ||
|
|
fc1bf47cd8 | ||
|
|
61879d2c53 | ||
|
|
2c9b4467e2 | ||
|
|
3ef84c7bac | ||
|
|
888df264aa | ||
|
|
972fcbe039 | ||
|
|
02b4146177 | ||
|
|
23596a6fd9 | ||
|
|
c917e8ec4f | ||
|
|
b6cd53938d | ||
|
|
300248bcb6 | ||
|
|
4fc8990952 | ||
|
|
c66f451d52 | ||
|
|
db2e77cf9f | ||
|
|
94ad0536cd | ||
|
|
b311ef1fb8 | ||
|
|
e4c24fcfb3 | ||
|
|
40fd3206bd | ||
|
|
5ff18ae10d | ||
|
|
93042ae00c | ||
|
|
2dbae13edb | ||
|
|
c7aece4788 | ||
|
|
3b1730925b | ||
|
|
35a5afbafa | ||
|
|
f14b87008a | ||
|
|
73ee25f87e | ||
|
|
70203c58f5 | ||
|
|
32ae24f618 | ||
|
|
b939827f77 | ||
|
|
97fc0b9c63 | ||
|
|
a3c8768d1f | ||
|
|
70d0fd995c | ||
|
|
bd5a45a42f | ||
|
|
b9596148e4 | ||
|
|
12e554d703 | ||
|
|
34e2f4991c | ||
|
|
e7fac329e3 | ||
|
|
ebcad50e22 | ||
|
|
e07951b09b | ||
|
|
ecd56d6e3a | ||
|
|
af44b86020 | ||
|
|
6d9b08e92b | ||
|
|
aa082530eb | ||
|
|
16e6b6b266 | ||
|
|
be5c6d4f08 | ||
|
|
95a88fb616 | ||
|
|
e1f5156d0b |
||
|
|
d36bfd1a15 | ||
|
|
b3b37bff8a | ||
|
|
bacd3c4200 | ||
|
|
9956bb1eaf | ||
|
|
ad9300d2e7 | ||
|
|
951280922d | ||
|
|
caf7474858 | ||
|
|
c70ece2f35 | ||
|
|
4bdababddf | ||
|
|
68f9ad4d6a | ||
|
|
4cb1381d80 | ||
|
|
660dba72e9 | ||
|
|
9d731f880f | ||
|
|
3bb9b07009 | ||
|
|
ff8d52acc2 | ||
|
|
3b9f829218 | ||
|
|
8af4634e76 | ||
|
|
7694527ef5 | ||
|
|
9a6959ca22 | ||
|
|
33af61101f | ||
|
|
fc69159c16 | ||
|
|
375e665e34 | ||
|
|
94eceee642 | ||
|
|
338e1bb21b | ||
|
|
7efdcffe59 | ||
|
|
b1cadbebbf | ||
|
|
02021e6135 | ||
|
|
79e725aec1 | ||
|
|
bca8519a80 | ||
|
|
9bcddab8fd | ||
|
|
43910c991d | ||
|
|
c4b86655eb | ||
|
|
bda8acc88f | ||
|
|
712ce7d35c | ||
|
|
6cbbe92554 | ||
|
|
6f1bee9d19 | ||
|
|
b9def774e6 | ||
|
|
a153f8a474 | ||
|
|
9ff5974999 | ||
|
|
4bbd4de4be | ||
|
|
fa16d5b5aa | ||
|
|
62edaad605 | ||
|
|
690197670a | ||
|
|
f1a9c76f38 | ||
|
|
d03875f6f3 | ||
|
|
3448cc856c | ||
|
|
93f35fa8fd | ||
|
|
9bf28589c3 | ||
|
|
07a0a494bf | ||
|
|
3c537224b4 | ||
|
|
e4a12e3825 | ||
|
|
7edb7c195a | ||
|
|
30110df460 | ||
|
|
a581231171 | ||
|
|
268d397a30 | ||
|
|
4be27bb7af | ||
|
|
53b26adcc4 | ||
|
|
cb71b53f7d | ||
|
|
6f7b8dbb9a | ||
|
|
5ac20193cb | ||
|
|
17d890fb1e | ||
|
|
9dfa7a1527 | ||
|
|
1acf4796b3 | ||
|
|
c213080431 | ||
|
|
63a2618a07 | ||
|
|
5571ee7403 | ||
|
|
4d8fcd73a4 | ||
|
|
fcf7279272 | ||
|
|
53dac96cc2 | ||
|
|
899bfb43c6 | ||
|
|
48cc4c5be5 | ||
|
|
3180583dfa | ||
|
|
defc416c28 | ||
|
|
156f7fd734 | ||
|
|
bdb2a668ff | ||
|
|
97efc42d63 | ||
|
|
c78ce968a8 | ||
|
|
ee402591ab | ||
|
|
18b80a26fe | ||
|
|
05b9a9097b | ||
|
|
0dc9710418 | ||
|
|
f6cd43f449 | ||
|
|
9869746357 | ||
|
|
bbea15a874 | ||
|
|
146396135c | ||
|
|
bcf0095538 | ||
|
|
d060f6fe29 | ||
|
|
8f6a5e7dc4 | ||
|
|
83290b83e7 | ||
|
|
f9687bc9ac | ||
|
|
92a764c2a3 | ||
|
|
d75359e733 | ||
|
|
90ab351db0 | ||
|
|
77d68081bc | ||
|
|
deea491260 | ||
|
|
ecc897a619 | ||
|
|
126134329e | ||
|
|
8204271009 | ||
|
|
624b802b9c | ||
|
|
e6c8746d37 | ||
|
|
e4ae574472 | ||
|
|
cd5875a817 | ||
|
|
91add2d4f7 | ||
|
|
3d13c8adfa | ||
|
|
8ce8e0ad9f | ||
|
|
d943482a84 | ||
|
|
ca19f446c5 | ||
|
|
66c538f0f2 | ||
|
|
5e9102a9fe | ||
|
|
a1c75d68cf | ||
|
|
ba88443605 | ||
|
|
b40693305c | ||
|
|
efc3d162e1 | ||
|
|
4a8ca8ee45 | ||
|
|
c9b8b418a1 | ||
|
|
6d9335e885 | ||
|
|
8f2ad85567 | ||
|
|
806d3f55bd | ||
|
|
9ebc9be748 | ||
|
|
0cbb109e1c | ||
|
|
8f5618205c | ||
|
|
5e9709c411 | ||
|
|
1a0e643278 | ||
|
|
06166d7401 | ||
|
|
e606513ccc | ||
|
|
8746ce4b3a | ||
|
|
4c51d6a65a | ||
|
|
eda702a952 | ||
|
|
2859c0f127 | ||
|
|
818bcfb481 | ||
|
|
d0f12344f4 | ||
|
|
a57a03dc89 | ||
|
|
3507a285d1 | ||
|
|
0e3347ccfd | ||
|
|
57fcfb5e75 | ||
|
|
11cd4df669 | ||
|
|
498b7e2fa5 | ||
|
|
5f5997630b | ||
|
|
f41f7d868d | ||
|
|
ad8d32e847 | ||
|
|
2aea7c4973 | ||
|
|
1f9e6ebbfe | ||
|
|
fe0b918890 | ||
|
|
603d980e8c | ||
|
|
2fe076f06f | ||
|
|
634d3e1ea3 | ||
|
|
7effc75904 | ||
|
|
090200f68b | ||
|
|
08858f399d | ||
|
|
68ac29b2c1 | ||
|
|
7e3bd66d74 | ||
|
|
939db8b115 | ||
|
|
70bb7dede6 | ||
|
|
fd235e9f29 | ||
|
|
85ed0e903c | ||
|
|
d0cb142ca3 | ||
|
|
96e0061c83 | ||
|
|
6bb6aa10c1 | ||
|
|
5a70ac803a | ||
|
|
490f23e1dd | ||
|
|
cee1091026 | ||
|
|
00f050ca50 | ||
|
|
b0526b0936 | ||
|
|
3ee1da498c | ||
|
|
da847de67e | ||
|
|
9892072ed8 | ||
|
|
1fd14fa8e1 | ||
|
|
96ecdd6dff | ||
|
|
f8dd69acc0 | ||
|
|
eb94ecde7c | ||
|
|
afa323cda0 | ||
|
|
9946e9ffbe | ||
|
|
56bb57adac | ||
|
|
96a77865b8 | ||
|
|
5c8d9b2472 | ||
|
|
c302989fdf | ||
|
|
7f14edb2bc | ||
|
|
04e2d77e46 | ||
|
|
a11efdd503 | ||
|
|
ef830a0c93 | ||
|
|
9be9b1e03e | ||
|
|
3ee99c9dd9 | ||
|
|
e369e8cae9 | ||
|
|
9c6d6274ed | ||
|
|
c011d6ef88 | ||
|
|
74d4485a49 | ||
|
|
124546e834 | ||
|
|
51c7ea5b49 | ||
|
|
8d06c8b3e1 | ||
|
|
6823826f79 | ||
|
|
bd21b7a580 | ||
|
|
93f0d9f3e5 | ||
|
|
8167f607a4 | ||
|
|
5bdbffadee | ||
|
|
980824ac9b | ||
|
|
a8b9dbd7d9 | ||
|
|
227f23fb4c | ||
|
|
1fd16dc661 | ||
|
|
9fa380d65c | ||
|
|
23e43ccad7 | ||
|
|
86fec660f2 | ||
|
|
57acc687d0 | ||
|
|
b3f062130f | ||
|
|
d4a7089f0c | ||
|
|
83be9a9005 | ||
|
|
de6c1ba588 | ||
|
|
c46938be64 | ||
|
|
2580b8e407 | ||
|
|
1bc15ffb42 | ||
|
|
387fc84852 | ||
|
|
c8c93a4f8d | ||
|
|
f31d3e52b3 | ||
|
|
bc34c2ba17 | ||
|
|
e8dd3240a4 | ||
|
|
3f23832808 | ||
|
|
44a5ec87b3 | ||
|
|
9a75dee4c8 | ||
|
|
442afe94ba | ||
|
|
d90f815038 | ||
|
|
445c283c34 | ||
|
|
a98651098c | ||
|
|
827afe3683 | ||
|
|
51b68afd6a | ||
|
|
91eeb94fee | ||
|
|
8b6dc7fb98 | ||
|
|
50bcf1e19e | ||
|
|
851602cfe3 | ||
|
|
67833c12c2 | ||
|
|
2c8b2d2cb7 | ||
|
|
0c8e9ec7b7 | ||
|
|
ede0237c17 | ||
|
|
e3b23db4ef | ||
|
|
03f24df291 | ||
|
|
b66e1288c5 | ||
|
|
bec5fd3443 | ||
|
|
23f70d829e | ||
|
|
b0b941cd52 | ||
|
|
018c3c2bae | ||
|
|
58db833ffc | ||
|
|
0bca9e286b | ||
|
|
da83c47ed4 | ||
|
|
100e09ad23 | ||
|
|
80e8837e16 | ||
|
|
6ed69e29be | ||
|
|
bfe259c9fa | ||
|
|
e29a7e2a1d | ||
|
|
33108b9457 | ||
|
|
c61a7166c6 | ||
|
|
757ced5c2a | ||
|
|
2f682bc905 | ||
|
|
68d111b1eb | ||
|
|
21adcd9806 | ||
|
|
378efd26a5 | ||
|
|
3e986258d3 | ||
|
|
3a6292ceff | ||
|
|
f612bd47ce | ||
|
|
7b9a3f8c10 | ||
|
|
feba2cc76d | ||
|
|
196b61c382 | ||
|
|
1eea5d7c7f | ||
|
|
29d82650ed | ||
|
|
6cebbf0a2a | ||
|
|
424613e943 | ||
|
|
aca41cd8ec | ||
|
|
91e11d4448 | ||
|
|
3f5109ef95 | ||
|
|
8a50c1d028 | ||
|
|
8145bf4155 | ||
|
|
3b8656c96a | ||
|
|
fc0089e5a1 | ||
|
|
41c6a12210 | ||
|
|
42bfda0485 | ||
|
|
02791b1506 | ||
|
|
3a1580eca2 | ||
|
|
f11a798b39 | ||
|
|
fb48de5e23 | ||
|
|
e36bb4e634 | ||
|
|
97999f62af |
85 changed files with 5751 additions and 27464 deletions
313
.gitignore
vendored
313
.gitignore
vendored
|
|
@ -434,3 +434,316 @@ firefox-3.6.4.source.tar.bz2
|
|||
/firefox-langpacks-83.0-20201112.tar.xz
|
||||
/firefox-langpacks-83.0-20201116.tar.xz
|
||||
/firefox-testing.tar.gz
|
||||
/site-packages.tar.gz
|
||||
/mochitest-python.tar.gz
|
||||
/firefox-84.0.source.tar.xz
|
||||
/firefox-langpacks-84.0-20201210.tar.xz
|
||||
/firefox-langpacks-84.0-20201214.tar.xz
|
||||
/firefox-84.0.1.source.tar.xz
|
||||
/firefox-langpacks-84.0.1-20201222.tar.xz
|
||||
/firefox-84.0.2.source.tar.xz
|
||||
/firefox-langpacks-84.0.2-20210106.tar.xz
|
||||
/firefox-85.0.source.tar.xz
|
||||
/firefox-langpacks-85.0-20210120.tar.xz
|
||||
/firefox-85.0.1.source.tar.xz
|
||||
/firefox-langpacks-85.0.1-20210208.tar.xz
|
||||
/firefox-86.0.source.tar.xz
|
||||
/firefox-langpacks-86.0-20210222.tar.xz
|
||||
/firefox-86.0.1.source.tar.xz
|
||||
/firefox-langpacks-86.0.1-20210312.tar.xz
|
||||
/firefox-87.0.source.tar.xz
|
||||
/firefox-langpacks-87.0-20210322.tar.xz
|
||||
/firefox-langpacks-88.0-20210419.tar.xz
|
||||
/firefox-88.0.source.tar.xz
|
||||
/firefox-88.0.1.source.tar.xz
|
||||
/firefox-langpacks-88.0.1-20210510.tar.xz
|
||||
/firefox-langpacks-89.0-20210601.tar.xz
|
||||
/firefox-89.0.source.tar.xz
|
||||
/firefox-89.0.2.source.tar.xz
|
||||
/firefox-langpacks-89.0.2-20210624.tar.xz
|
||||
/firefox-90.0.source.tar.xz
|
||||
/firefox-langpacks-90.0-20210712.tar.xz
|
||||
/firefox-90.0.1.source.tar.xz
|
||||
/firefox-langpacks-90.0.1-20210721.tar.xz
|
||||
/firefox-90.0.2.source.tar.xz
|
||||
/firefox-langpacks-90.0.2-20210722.tar.xz
|
||||
/firefox-91.0.source.tar.xz
|
||||
/firefox-langpacks-91.0-20210810.tar.xz
|
||||
/firefox-91.0.2.source.tar.xz
|
||||
/firefox-langpacks-91.0.2-20210826.tar.xz
|
||||
/firefox-langpacks-92.0-20210903.tar.xz
|
||||
/firefox-92.0.source.tar.xz
|
||||
/firefox-92.0.1.source.tar.xz
|
||||
/firefox-langpacks-92.0.1-20210927.tar.xz
|
||||
/firefox-93.0.source.tar.xz
|
||||
/firefox-langpacks-93.0-20210929.tar.xz
|
||||
/firefox-94.0.source.tar.xz
|
||||
/firefox-langpacks-94.0-20211031.tar.xz
|
||||
/firefox-94.0.2.source.tar.xz
|
||||
/firefox-langpacks-94.0.2-20211125.tar.xz
|
||||
/firefox-95.0.source.tar.xz
|
||||
/firefox-langpacks-95.0-20211203.tar.xz
|
||||
/firefox-95.0.2.source.tar.xz
|
||||
/firefox-langpacks-95.0.2-20211220.tar.xz
|
||||
/firefox-96.0.source.tar.xz
|
||||
/firefox-langpacks-96.0-20220111.tar.xz
|
||||
/firefox-langpacks-96.0.1-20220118.tar.xz
|
||||
/firefox-96.0.1.source.tar.xz
|
||||
/firefox-96.0.3.source.tar.xz
|
||||
/firefox-langpacks-96.0.3-20220131.tar.xz
|
||||
/firefox-97.0.source.tar.xz
|
||||
/firefox-langpacks-97.0-20220208.tar.xz
|
||||
/firefox-97.0.1.source.tar.xz
|
||||
/firefox-langpacks-97.0.1-20220218.tar.xz
|
||||
/firefox-98.0.source.tar.xz
|
||||
/firefox-langpacks-98.0-20220301.tar.xz
|
||||
/firefox-langpacks-98.0-20220304.tar.xz
|
||||
/firefox-langpacks-98.0-20220305.tar.xz
|
||||
/firefox-98.0.2.source.tar.xz
|
||||
/firefox-langpacks-98.0.2-20220331.tar.xz
|
||||
/firefox-99.0.source.tar.xz
|
||||
/firefox-langpacks-99.0-20220331.tar.xz
|
||||
/firefox-langpacks-99.0.1-20220413.tar.xz
|
||||
/firefox-99.0.1.source.tar.xz
|
||||
/firefox-100.0.source.tar.xz
|
||||
/firefox-langpacks-100.0-20220502.tar.xz
|
||||
/firefox-100.0.1.source.tar.xz
|
||||
/firefox-langpacks-100.0.1-20220518.tar.xz
|
||||
/firefox-100.0.2.source.tar.xz
|
||||
/firefox-langpacks-100.0.2-20220520.tar.xz
|
||||
/firefox-101.0.source.tar.xz
|
||||
/firefox-langpacks-101.0-20220530.tar.xz
|
||||
/firefox-101.0.1.source.tar.xz
|
||||
/firefox-langpacks-101.0.1-20220609.tar.xz
|
||||
/firefox-102.0.source.tar.xz
|
||||
/firefox-langpacks-102.0-20220628.tar.xz
|
||||
/firefox-103.0.source.tar.xz
|
||||
/firefox-langpacks-103.0-20220721.tar.xz
|
||||
/firefox-103.0.1.source.tar.xz
|
||||
/firefox-langpacks-103.0.1-20220802.tar.xz
|
||||
/firefox-103.0.2.source.tar.xz
|
||||
/firefox-langpacks-103.0.2-20220812.tar.xz
|
||||
/firefox-104.0.source.tar.xz
|
||||
/firefox-langpacks-104.0-20220816.tar.xz
|
||||
/firefox-langpacks-104.0-20220822.tar.xz
|
||||
/firefox-langpacks-104.0.1-20220830.tar.xz
|
||||
/firefox-104.0.1.source.tar.xz
|
||||
/firefox-104.0.2.source.tar.xz
|
||||
/firefox-langpacks-104.0.2-20220906.tar.xz
|
||||
/firefox-langpacks-105.0-20220920.tar.xz
|
||||
/firefox-105.0.source.tar.xz
|
||||
/firefox-105.0.1.source.tar.xz
|
||||
/firefox-langpacks-105.0.1-20220922.tar.xz
|
||||
/firefox-105.0.2.source.tar.xz
|
||||
/firefox-langpacks-105.0.2-20221005.tar.xz
|
||||
/firefox-langpacks-106.0-20221014.tar.xz
|
||||
/firefox-106.0.source.tar.xz
|
||||
/firefox-106.0.1.source.tar.xz
|
||||
/firefox-langpacks-106.0.1-20221023.tar.xz
|
||||
/firefox-106.0.3.source.tar.xz
|
||||
/firefox-langpacks-106.0.3-20221031.tar.xz
|
||||
/firefox-langpacks-107.0-20221114.tar.xz
|
||||
/firefox-107.0.source.tar.xz
|
||||
/firefox-107.0.1.source.tar.xz
|
||||
/firefox-langpacks-107.0.1-20221206.tar.xz
|
||||
/firefox-108.0.source.tar.xz
|
||||
/firefox-langpacks-108.0-20221206.tar.xz
|
||||
/firefox-langpacks-108.0-20221214.tar.xz
|
||||
/firefox-108.0.1.source.tar.xz
|
||||
/firefox-langpacks-108.0.1-20221218.tar.xz
|
||||
/firefox-108.0.2.source.tar.xz
|
||||
/firefox-langpacks-108.0.2-20230112.tar.xz
|
||||
/firefox-109.0.source.tar.xz
|
||||
/firefox-langpacks-109.0-20230111.tar.xz
|
||||
/firefox-109.0.1.source.tar.xz
|
||||
/firefox-langpacks-109.0.1-20230201.tar.xz
|
||||
/firefox-110.0.source.tar.xz
|
||||
/firefox-langpacks-110.0-20230210.tar.xz
|
||||
/firefox-langpacks-110.0-20230214.tar.xz
|
||||
/firefox-111.0.source.tar.xz
|
||||
/firefox-langpacks-111.0-20230320.tar.xz
|
||||
/firefox-langpacks-111.0.1-20230322.tar.xz
|
||||
/firefox-111.0.1.source.tar.xz
|
||||
/firefox-112.0.source.tar.xz
|
||||
/firefox-langpacks-112.0-20230405.tar.xz
|
||||
/firefox-langpacks-112.0-20230406.tar.xz
|
||||
/firefox-langpacks-112.0.1-20230417.tar.xz
|
||||
/firefox-112.0.1.source.tar.xz
|
||||
/firefox-langpacks-112.0.2-20230427.tar.xz
|
||||
/firefox-112.0.2.source.tar.xz
|
||||
/firefox-langpacks-113.0-20230509.tar.xz
|
||||
/firefox-113.0.source.tar.xz
|
||||
/firefox-langpacks-113.0.1-20230515.tar.xz
|
||||
/firefox-113.0.1.source.tar.xz
|
||||
/firefox-114.0.source.tar.xz
|
||||
/firefox-langpacks-114.0-20230605.tar.xz
|
||||
/firefox-langpacks-114.0.2-20230620.tar.xz
|
||||
/firefox-114.0.2.source.tar.xz
|
||||
/firefox-langpacks-115.0-20230629.tar.xz
|
||||
/firefox-115.0.source.tar.xz
|
||||
/firefox-langpacks-115.0-20230703.tar.xz
|
||||
/firefox-115.0.2.source.tar.xz
|
||||
/firefox-langpacks-115.0.2-20230717.tar.xz
|
||||
/firefox-116.0.source.tar.xz
|
||||
/firefox-langpacks-116.0-20230725.tar.xz
|
||||
/firefox-langpacks-116.0-20230731.tar.xz
|
||||
/firefox-116.0.1.source.tar.xz
|
||||
/firefox-langpacks-116.0.1-20230804.tar.xz
|
||||
/firefox-langpacks-116.0.2-20230807.tar.xz
|
||||
/firefox-116.0.2.source.tar.xz
|
||||
/firefox-langpacks-116.0.3-20230817.tar.xz
|
||||
/firefox-116.0.3.source.tar.xz
|
||||
/firefox-117.0.source.tar.xz
|
||||
/firefox-langpacks-117.0-20230828.tar.xz
|
||||
/firefox-117.0.1.source.tar.xz
|
||||
/firefox-langpacks-117.0.1-20230913.tar.xz
|
||||
/firefox-118.0.source.tar.xz
|
||||
/firefox-langpacks-118.0-20230925.tar.xz
|
||||
/firefox-langpacks-118.0.1-20230929.tar.xz
|
||||
/firefox-118.0.1.source.tar.xz
|
||||
/firefox-118.0.2.source.tar.xz
|
||||
/firefox-langpacks-118.0.2-20231010.tar.xz
|
||||
/dump_syms-vendor.tar.xz
|
||||
/firefox-langpacks-119.0.1-20231110.tar.xz
|
||||
/firefox-119.0.1.source.tar.xz
|
||||
/firefox-120.0.source.tar.xz
|
||||
/firefox-langpacks-120.0-20231114.tar.xz
|
||||
/firefox-langpacks-120.0-20231120.tar.xz
|
||||
/firefox-120.0.1.source.tar.xz
|
||||
/firefox-langpacks-120.0.1-20231201.tar.xz
|
||||
/firefox-121.0.source.tar.xz
|
||||
/firefox-langpacks-121.0-20231218.tar.xz
|
||||
/firefox-121.0.1.source.tar.xz
|
||||
/firefox-langpacks-121.0.1-20240112.tar.xz
|
||||
/firefox-122.0.source.tar.xz
|
||||
/firefox-langpacks-122.0-20240119.tar.xz
|
||||
/firefox-langpacks-122.0.1-20240213.tar.xz
|
||||
/firefox-122.0.1.source.tar.xz
|
||||
/firefox-langpacks-123.0-20240219.tar.xz
|
||||
/firefox-123.0.source.tar.xz
|
||||
/firefox-123.0.1.source.tar.xz
|
||||
/firefox-langpacks-123.0.1-20240307.tar.xz
|
||||
/firefox-124.0.source.tar.xz
|
||||
/firefox-langpacks-124.0-20240313.tar.xz
|
||||
/firefox-124.0.1.source.tar.xz
|
||||
/firefox-langpacks-124.0.1-20240322.tar.xz
|
||||
/wasi-sdk-20.tar.gz
|
||||
/wasi-sdk-20-1.fc39.src.rpm
|
||||
/firefox-124.0.2.source.tar.xz
|
||||
/firefox-langpacks-124.0.2-20240404.tar.xz
|
||||
/firefox-langpacks-125.0-20240409.tar.xz
|
||||
/firefox-125.0.source.tar.xz
|
||||
/firefox-125.0.2.source.tar.xz
|
||||
/firefox-langpacks-125.0.2-20240420.tar.xz
|
||||
/firefox-125.0.3.source.tar.xz
|
||||
/firefox-langpacks-125.0.3-20240429.tar.xz
|
||||
/firefox-126.0.source.tar.xz
|
||||
/firefox-langpacks-126.0-20240507.tar.xz
|
||||
/firefox-127.0.source.tar.xz
|
||||
/firefox-langpacks-127.0-20240610.tar.xz
|
||||
/firefox-langpacks-127.0.2-20240625.tar.xz
|
||||
/firefox-127.0.2.source.tar.xz
|
||||
/firefox-128.0.source.tar.xz
|
||||
/firefox-langpacks-128.0-20240702.tar.xz
|
||||
/firefox-langpacks-128.0-20240708.tar.xz
|
||||
/firefox-128.0.3.source.tar.xz
|
||||
/firefox-langpacks-128.0.3-20240729.tar.xz
|
||||
/firefox-129.0.source.tar.xz
|
||||
/firefox-langpacks-129.0-20240730.tar.xz
|
||||
/firefox-langpacks-129.0-20240802.tar.xz
|
||||
/firefox-129.0.2.source.tar.xz
|
||||
/firefox-langpacks-192.0.2-20240820.tar.xz
|
||||
/firefox-langpacks-129.0.2-20240820.tar.xz
|
||||
/firefox-langpacks-130.0-20240828.tar.xz
|
||||
/firefox-130.0.source.tar.xz
|
||||
/firefox-130.0.1.source.tar.xz
|
||||
/firefox-langpacks-130.0.1-20240918.tar.xz
|
||||
/firefox-langpacks-131.0-20240924.tar.xz
|
||||
/firefox-131.0.source.tar.xz
|
||||
/firefox-131.0.2.source.tar.xz
|
||||
/firefox-langpacks-131.0.2-20241009.tar.xz
|
||||
/firefox-131.0.3.source.tar.xz
|
||||
/firefox-langpacks-131.0.3-20241015.tar.xz
|
||||
/firefox-132.0.source.tar.xz
|
||||
/firefox-langpacks-132.0-20241023.tar.xz
|
||||
/firefox-132.0.1.source.tar.xz
|
||||
/firefox-langpacks-132.0.1-20241105.tar.xz
|
||||
/firefox-langpacks-132.0.2-20241115.tar.xz
|
||||
/firefox-132.0.2.source.tar.xz
|
||||
/firefox-133.0.source.tar.xz
|
||||
/firefox-langpacks-133.0-20241122.tar.xz
|
||||
/firefox-langpacks-133.0.3-20241211.tar.xz
|
||||
/firefox-133.0.3.source.tar.xz
|
||||
/firefox-langpacks-134.0-20250102.tar.xz
|
||||
/firefox-134.0.source.tar.xz
|
||||
/firefox-langpacks-134.0.1-20250115.tar.xz
|
||||
/firefox-134.0.1.source.tar.xz
|
||||
/firefox-134.0.2.source.tar.xz
|
||||
/firefox-langpacks-134.0.2-20250122.tar.xz
|
||||
/wasi-sdk-25.tar.gz
|
||||
/wasm-component-ld-vendor.tar.xz
|
||||
/firefox-135.0.source.tar.xz
|
||||
/firefox-langpacks-135.0-20250204.tar.xz
|
||||
/firefox-136.0.source.tar.xz
|
||||
/firefox-langpacks-136.0-20250225.tar.xz
|
||||
/firefox-langpacks-136.0-20250228.tar.xz
|
||||
/firefox-136.0.1.source.tar.xz
|
||||
/firefox-langpacks-136.0.1-20250312.tar.xz
|
||||
/firefox-langpacks-136.0.2-20250319.tar.xz
|
||||
/firefox-136.0.2.source.tar.xz
|
||||
/firefox-136.0.3.source.tar.xz
|
||||
/firefox-langpacks-136.0.3-20250325.tar.xz
|
||||
/firefox-langpacks-137.0-20250326.tar.xz
|
||||
/firefox-137.0.source.tar.xz
|
||||
/firefox-langpacks-137.0-20250331.tar.xz
|
||||
/firefox-137.0.1.source.tar.xz
|
||||
/firefox-langpacks-137.0.1-20250414.tar.xz
|
||||
/firefox-138.0.source.tar.xz
|
||||
/firefox-langpacks-138.0-20250422.tar.xz
|
||||
/firefox-langpacks-138.0.1-20250501.tar.xz
|
||||
/firefox-138.0.1.source.tar.xz
|
||||
/firefox-138.0.3.source.tar.xz
|
||||
/firefox-langpacks-138.0.3-20250512.tar.xz
|
||||
/firefox-langpacks-138.0.4-20250519.tar.xz
|
||||
/firefox-138.0.4.source.tar.xz
|
||||
/firefox-139.0.source.tar.xz
|
||||
/firefox-langpacks-139.0-20250527.tar.xz
|
||||
/firefox-langpacks-139.0.4-20250610.tar.xz
|
||||
/firefox-139.0.4.source.tar.xz
|
||||
/firefox-140.0.source.tar.xz
|
||||
/firefox-langpacks-140.0-20250617.tar.xz
|
||||
/firefox-140.0.1.source.tar.xz
|
||||
/firefox-langpacks-140.0.1-20250627.tar.xz
|
||||
/firefox-140.0.4.source.tar.xz
|
||||
/firefox-langpacks-140.0.4-20250708.tar.xz
|
||||
/firefox-141.0.source.tar.xz
|
||||
/firefox-langpacks-141.0-20250717.tar.xz
|
||||
/firefox-langpacks-141.0-20250718.tar.xz
|
||||
/firefox-langpacks-141.2.0-20250806.tar.xz
|
||||
/firefox-141.0.2.source.tar.xz
|
||||
/firefox-langpacks-141.0.2-20250806.tar.xz
|
||||
/firefox-langpacks-141.0.3-20250811.tar.xz
|
||||
/firefox-141.0.3.source.tar.xz
|
||||
/firefox-142.0.source.tar.xz
|
||||
/firefox-langpacks-142.0-20250812.tar.xz
|
||||
/firefox-langpacks-142.0.1-20250827.tar.xz
|
||||
/firefox-142.0.1.source.tar.xz
|
||||
/firefox-143.0.1.source.tar.xz
|
||||
/firefox-langpacks-143.0.1-20250919.tar.xz
|
||||
/firefox-langpacks-143.0.3-20250930.tar.xz
|
||||
/firefox-143.0.3.source.tar.xz
|
||||
/firefox-langpacks-144.0-20251009.tar.xz
|
||||
/firefox-144.0.source.tar.xz
|
||||
/firefox-langpacks-144.0-20251010.tar.xz
|
||||
/firefox-145.0.source.tar.xz
|
||||
/firefox-langpacks-145.0-20251105.tar.xz
|
||||
/firefox-langpacks-145.0-20251111.tar.xz
|
||||
/firefox-145.0.1.source.tar.xz
|
||||
/firefox-langpacks-145.0.1-20251119.tar.xz
|
||||
/firefox-146.0.source.tar.xz
|
||||
/firefox-langpacks-146.0-20251202.tar.xz
|
||||
/firefox-langpacks-146.0-20251208.tar.xz
|
||||
/firefox-146.0.1.source.tar.xz
|
||||
/firefox-langpacks-146.0.1-20251219.tar.xz
|
||||
/firefox-langpacks-147.0-20260106.tar.xz
|
||||
/firefox-147.0.source.tar.xz
|
||||
|
|
|
|||
31
0001-GLIBCXX-fix-for-GCC-12.patch
Normal file
31
0001-GLIBCXX-fix-for-GCC-12.patch
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
diff -up firefox-142.0/build/unix/stdc++compat/stdc++compat.cpp.0001-GLIBCXX-fix-for-GCC-12 firefox-142.0/build/unix/stdc++compat/stdc++compat.cpp
|
||||
--- firefox-142.0/build/unix/stdc++compat/stdc++compat.cpp.0001-GLIBCXX-fix-for-GCC-12 2025-08-11 20:04:27.000000000 +0200
|
||||
+++ firefox-142.0/build/unix/stdc++compat/stdc++compat.cpp 2025-08-14 15:02:05.496137133 +0200
|
||||
@@ -24,6 +24,7 @@
|
||||
GLIBCXX_3.4.27 is from gcc 10
|
||||
GLIBCXX_3.4.28 is from gcc 10
|
||||
GLIBCXX_3.4.29 is from gcc 11
|
||||
+ GLIBCXX_3.4.30 is from gcc 12
|
||||
|
||||
This file adds the necessary compatibility tricks to avoid symbols with
|
||||
version GLIBCXX_3.4.20 and bigger, keeping binary compatibility with
|
||||
@@ -94,6 +95,19 @@ void operator delete(void* ptr, size_t s
|
||||
}
|
||||
# endif
|
||||
|
||||
+#if _GLIBCXX_RELEASE >= 12
|
||||
+namespace std {
|
||||
+
|
||||
+/* This avoids the GLIBCXX_3.4.30 symbol version. */
|
||||
+void __attribute__((weak))
|
||||
+__glibcxx_assert_fail(const char* __file, int __line, const char* __function,
|
||||
+ const char* __condition) {
|
||||
+ MOZ_CRASH();
|
||||
+}
|
||||
+
|
||||
+} // namespace std
|
||||
+#endif
|
||||
+
|
||||
/* 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
|
||||
1343
0025-Add-KDE-integration-to-Firefox-toolkit-parts.patch
Normal file
1343
0025-Add-KDE-integration-to-Firefox-toolkit-parts.patch
Normal file
File diff suppressed because it is too large
Load diff
279
0026-Add-KDE-integration-to-Firefox.patch
Normal file
279
0026-Add-KDE-integration-to-Firefox.patch
Normal file
|
|
@ -0,0 +1,279 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Sirringhaus <msirringhaus@suse.de>
|
||||
Date: Tue, 8 Aug 2023 16:18:24 +0300
|
||||
Subject: [PATCH] Add KDE integration to Firefox
|
||||
|
||||
Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751
|
||||
Bug: https://bugzilla.suse.com/show_bug.cgi?id=170055
|
||||
|
||||
How to apply this patch:
|
||||
|
||||
1. Import and apply it
|
||||
2. cp browser/base/content/browser.xul browser/base/content/browser-kde.xul
|
||||
3. Find editBookmarkPanelDoneButton
|
||||
4. Replace #ifndef with #ifdef in the line above (this hanges the button order from Gnome-style to KDE-style)
|
||||
5. hg qrefresh
|
||||
---
|
||||
browser/components/preferences/main.js | 18 +++
|
||||
browser/components/shell/moz.build | 2 +
|
||||
.../components/shell/nsKDEShellService.cpp | 109 ++++++++++++++++++
|
||||
browser/components/shell/nsKDEShellService.h | 32 +++++
|
||||
.../components/shell/nsUnixShellService.cpp | 22 ++++
|
||||
browser/components/shell/nsUnixShellService.h | 15 +++
|
||||
6 files changed, 198 insertions(+)
|
||||
create mode 100644 browser/components/shell/nsKDEShellService.cpp
|
||||
create mode 100644 browser/components/shell/nsKDEShellService.h
|
||||
create mode 100644 browser/components/shell/nsUnixShellService.cpp
|
||||
create mode 100644 browser/components/shell/nsUnixShellService.h
|
||||
|
||||
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
|
||||
index 820e46fb006567bfdf93e2a46da5e3c07d42bf10..57d1c21bdecc2d55d0bed30246e684d3b97ad7fa 100644
|
||||
--- a/browser/components/preferences/main.js
|
||||
+++ b/browser/components/preferences/main.js
|
||||
@@ -294,6 +294,13 @@ var gMainPane = {
|
||||
}, backoffTimes[this._backoffIndex]);
|
||||
}
|
||||
|
||||
+ var env = Components.classes["@mozilla.org/process/environment;1"]
|
||||
+ .getService(Components.interfaces.nsIEnvironment);
|
||||
+ var kde_session = 0;
|
||||
+ if (env.get('KDE_FULL_SESSION') == "true") {
|
||||
+ kde_session = 1;
|
||||
+ }
|
||||
+
|
||||
this.initBrowserContainers();
|
||||
this.buildContentProcessCountMenuList();
|
||||
|
||||
@@ -1727,6 +1734,17 @@ var gMainPane = {
|
||||
}
|
||||
try {
|
||||
shellSvc.setDefaultBrowser(true, false);
|
||||
+ if (kde_session == 1) {
|
||||
+ var shellObj = Components.classes["@mozilla.org/file/local;1"]
|
||||
+ .createInstance(Components.interfaces.nsILocalFile);
|
||||
+ shellObj.initWithPath("/usr/bin/kwriteconfig");
|
||||
+ var process = Components.classes["@mozilla.org/process/util;1"]
|
||||
+ .createInstance(Components.interfaces.nsIProcess);
|
||||
+ process.init(shellObj);
|
||||
+ var args = ["--file", "kdeglobals", "--group", "General", "--key",
|
||||
+ "BrowserApplication", "firefox"];
|
||||
+ process.run(false, args, args.length);
|
||||
+ }
|
||||
} catch (ex) {
|
||||
console.error(ex);
|
||||
return;
|
||||
diff --git a/browser/components/shell/moz.build b/browser/components/shell/moz.build
|
||||
index eb88cb287dc3f04022b74b978666118bbd5fa6b2..95277533781a7224d108e3c45731a6d9a89ba1a0 100644
|
||||
--- a/browser/components/shell/moz.build
|
||||
+++ b/browser/components/shell/moz.build
|
||||
@@ -36,6 +36,8 @@ elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
||||
|
||||
SOURCES += [
|
||||
"nsGNOMEShellService.cpp",
|
||||
+ "nsKDEShellService.cpp",
|
||||
+ "nsUnixShellService.cpp",
|
||||
]
|
||||
if CONFIG["MOZ_ENABLE_DBUS"]:
|
||||
SOURCES += [
|
||||
diff --git a/browser/components/shell/nsKDEShellService.cpp b/browser/components/shell/nsKDEShellService.cpp
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..152a3aca87ea73477bc75c4e93c01e5a52dda102
|
||||
--- /dev/null
|
||||
+++ b/browser/components/shell/nsKDEShellService.cpp
|
||||
@@ -0,0 +1,109 @@
|
||||
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
+/* 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 "mozilla/ArrayUtils.h"
|
||||
+
|
||||
+#include "nsCOMPtr.h"
|
||||
+#include "nsKDEShellService.h"
|
||||
+#include "nsShellService.h"
|
||||
+#include "nsKDEUtils.h"
|
||||
+#include "nsIPrefService.h"
|
||||
+#include "nsIProcess.h"
|
||||
+#include "nsIFile.h"
|
||||
+#include "nsServiceManagerUtils.h"
|
||||
+#include "nsComponentManagerUtils.h"
|
||||
+#include "nsIMutableArray.h"
|
||||
+#include "nsISupportsPrimitives.h"
|
||||
+#include "nsArrayUtils.h"
|
||||
+
|
||||
+using namespace mozilla;
|
||||
+
|
||||
+nsresult
|
||||
+nsKDEShellService::Init()
|
||||
+{
|
||||
+ if( !nsKDEUtils::kdeSupport())
|
||||
+ return NS_ERROR_NOT_AVAILABLE;
|
||||
+ return NS_OK;
|
||||
+}
|
||||
+
|
||||
+NS_IMPL_ISUPPORTS(nsKDEShellService, nsIGNOMEShellService, nsIShellService)
|
||||
+
|
||||
+NS_IMETHODIMP
|
||||
+nsKDEShellService::IsDefaultBrowser(bool aForAllTypes,
|
||||
+ bool* aIsDefaultBrowser)
|
||||
+{
|
||||
+ *aIsDefaultBrowser = false;
|
||||
+
|
||||
+ nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
|
||||
+ if (!command)
|
||||
+ return NS_ERROR_FAILURE;
|
||||
+
|
||||
+ nsCOMPtr<nsISupportsCString> str = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
||||
+ if (!str)
|
||||
+ return NS_ERROR_FAILURE;
|
||||
+
|
||||
+ str->SetData("ISDEFAULTBROWSER"_ns);
|
||||
+ command->AppendElement( str );
|
||||
+
|
||||
+ if( nsKDEUtils::command( command ))
|
||||
+ *aIsDefaultBrowser = true;
|
||||
+ return NS_OK;
|
||||
+}
|
||||
+
|
||||
+NS_IMETHODIMP
|
||||
+nsKDEShellService::SetDefaultBrowser(bool aClaimAllTypes,
|
||||
+ bool aForAllUsers)
|
||||
+{
|
||||
+ nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
|
||||
+ if (!command)
|
||||
+ return NS_ERROR_FAILURE;
|
||||
+
|
||||
+ nsCOMPtr<nsISupportsCString> cmdstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
||||
+ nsCOMPtr<nsISupportsCString> paramstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
||||
+ if (!cmdstr || !paramstr)
|
||||
+ return NS_ERROR_FAILURE;
|
||||
+
|
||||
+ cmdstr->SetData("SETDEFAULTBROWSER"_ns);
|
||||
+ command->AppendElement( cmdstr );
|
||||
+
|
||||
+ paramstr->SetData( aClaimAllTypes ? "ALLTYPES"_ns : "NORMAL"_ns );
|
||||
+ command->AppendElement( paramstr );
|
||||
+
|
||||
+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
|
||||
+}
|
||||
+
|
||||
+NS_IMETHODIMP
|
||||
+nsKDEShellService::GetCanSetDesktopBackground(bool* aResult)
|
||||
+{
|
||||
+ *aResult = true;
|
||||
+ return NS_OK;
|
||||
+}
|
||||
+
|
||||
+NS_IMETHODIMP
|
||||
+nsKDEShellService::SetDesktopBackground(dom::Element* aElement,
|
||||
+ int32_t aPosition,
|
||||
+ const nsACString& aImageName)
|
||||
+{
|
||||
+ return NS_ERROR_NOT_IMPLEMENTED;
|
||||
+}
|
||||
+
|
||||
+NS_IMETHODIMP
|
||||
+nsKDEShellService::GetDesktopBackgroundColor(PRUint32 *aColor)
|
||||
+{
|
||||
+ return NS_ERROR_NOT_IMPLEMENTED;
|
||||
+}
|
||||
+
|
||||
+NS_IMETHODIMP
|
||||
+nsKDEShellService::SetDesktopBackgroundColor(PRUint32 aColor)
|
||||
+{
|
||||
+ return NS_ERROR_NOT_IMPLEMENTED;
|
||||
+}
|
||||
+
|
||||
+NS_IMETHODIMP
|
||||
+nsKDEShellService::IsDefaultForScheme(nsTSubstring<char> const& aScheme, bool* aIsDefaultBrowser)
|
||||
+{
|
||||
+ return NS_ERROR_NOT_IMPLEMENTED;
|
||||
+}
|
||||
+
|
||||
diff --git a/browser/components/shell/nsKDEShellService.h b/browser/components/shell/nsKDEShellService.h
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..8b0bb19164352453cfa453dd87c19263160b9ad8
|
||||
--- /dev/null
|
||||
+++ b/browser/components/shell/nsKDEShellService.h
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
+/* 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/. */
|
||||
+
|
||||
+#ifndef nskdeshellservice_h____
|
||||
+#define nskdeshellservice_h____
|
||||
+
|
||||
+#include "nsIGNOMEShellService.h"
|
||||
+#include "nsToolkitShellService.h"
|
||||
+#include "nsString.h"
|
||||
+#include "mozilla/Attributes.h"
|
||||
+
|
||||
+class nsKDEShellService final : public nsIGNOMEShellService,
|
||||
+ public nsToolkitShellService
|
||||
+{
|
||||
+public:
|
||||
+ nsKDEShellService() : mCheckedThisSession(false) { }
|
||||
+
|
||||
+ NS_DECL_ISUPPORTS
|
||||
+ NS_DECL_NSISHELLSERVICE
|
||||
+ NS_DECL_NSIGNOMESHELLSERVICE
|
||||
+
|
||||
+ nsresult Init();
|
||||
+
|
||||
+private:
|
||||
+ ~nsKDEShellService() {}
|
||||
+
|
||||
+ bool mCheckedThisSession;
|
||||
+};
|
||||
+
|
||||
+#endif // nskdeshellservice_h____
|
||||
diff --git a/browser/components/shell/nsUnixShellService.cpp b/browser/components/shell/nsUnixShellService.cpp
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..abf266ebdc52e136f495911da3454e69c770c6db
|
||||
--- /dev/null
|
||||
+++ b/browser/components/shell/nsUnixShellService.cpp
|
||||
@@ -0,0 +1,22 @@
|
||||
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
+/* 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 "nsUnixShellService.h"
|
||||
+#include "nsGNOMEShellService.h"
|
||||
+#include "nsKDEShellService.h"
|
||||
+#include "nsKDEUtils.h"
|
||||
+#include "mozilla/ModuleUtils.h"
|
||||
+
|
||||
+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGNOMEShellService, Init)
|
||||
+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsKDEShellService, Init)
|
||||
+
|
||||
+NS_IMETHODIMP
|
||||
+nsUnixShellServiceConstructor(REFNSIID aIID, void **aResult)
|
||||
+{
|
||||
+ if( nsKDEUtils::kdeSupport())
|
||||
+ return nsKDEShellServiceConstructor( aIID, aResult );
|
||||
+ return nsGNOMEShellServiceConstructor( aIID, aResult );
|
||||
+}
|
||||
diff --git a/browser/components/shell/nsUnixShellService.h b/browser/components/shell/nsUnixShellService.h
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..26b5dbac47dd9a8ec1fcb6c93575cca750692735
|
||||
--- /dev/null
|
||||
+++ b/browser/components/shell/nsUnixShellService.h
|
||||
@@ -0,0 +1,15 @@
|
||||
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
+/* 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/. */
|
||||
+
|
||||
+
|
||||
+#ifndef nsunixshellservice_h____
|
||||
+#define nsunixshellservice_h____
|
||||
+
|
||||
+#include "nsIGNOMEShellService.h"
|
||||
+
|
||||
+NS_IMETHODIMP
|
||||
+nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult);
|
||||
+
|
||||
+#endif // nsunixshellservice_h____
|
||||
|
|
@ -1,45 +1,33 @@
|
|||
diff -up firefox-72.0/gfx/skia/skia/include/private/SkHalf.h.aarch64-skia firefox-72.0/gfx/skia/skia/include/private/SkHalf.h
|
||||
--- firefox-72.0/gfx/skia/skia/include/private/SkHalf.h.aarch64-skia 2020-01-02 22:33:02.000000000 +0100
|
||||
+++ firefox-72.0/gfx/skia/skia/include/private/SkHalf.h 2020-01-03 09:00:37.537296105 +0100
|
||||
@@ -40,7 +40,7 @@ static inline Sk4h SkFloatToHalf_finite_
|
||||
diff -up firefox-134.0-build/firefox-134.0/gfx/skia/skia/modules/skcms/src/Transform_inl.h.aarch64-skia firefox-134.0-build/firefox-134.0/gfx/skia/skia/modules/skcms/src/Transform_inl.h
|
||||
--- firefox-134.0/gfx/skia/skia/modules/skcms/src/Transform_inl.h.aarch64-skia 2024-12-30 19:30:46.000000000 +0100
|
||||
+++ firefox-134.0/gfx/skia/skia/modules/skcms/src/Transform_inl.h 2025-01-02 20:51:07.855087265 +0100
|
||||
@@ -151,7 +151,7 @@ SI U32 to_fixed(F f) { return (U32)cast
|
||||
|
||||
static inline Sk4f SkHalfToFloat_finite_ftz(uint64_t rgba) {
|
||||
Sk4h hs = Sk4h::Load(&rgba);
|
||||
-#if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
|
||||
+#if 0 // !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
|
||||
float32x4_t fs;
|
||||
asm ("fcvtl %[fs].4s, %[hs].4h \n" // vcvt_f32_f16(...)
|
||||
: [fs] "=w" (fs) // =w: write-only NEON register
|
||||
@@ -62,7 +62,7 @@ static inline Sk4f SkHalfToFloat_finite_
|
||||
}
|
||||
|
||||
static inline Sk4h SkFloatToHalf_finite_ftz(const Sk4f& fs) {
|
||||
-#if !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
|
||||
+#if 0 // !defined(SKNX_NO_SIMD) && defined(SK_CPU_ARM64)
|
||||
float32x4_t vec = fs.fVec;
|
||||
asm ("fcvtn %[vec].4h, %[vec].4s \n" // vcvt_f16_f32(vec)
|
||||
: [vec] "+w" (vec)); // +w: read-write NEON register
|
||||
diff -up firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h
|
||||
--- firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia 2020-01-03 09:00:37.538296107 +0100
|
||||
+++ firefox-72.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h 2020-01-03 10:11:41.259219508 +0100
|
||||
@@ -1087,7 +1087,7 @@ SI F from_half(U16 h) {
|
||||
SI F F_from_Half(U16 half) {
|
||||
-#if defined(USING_NEON_F16C)
|
||||
+#if 0 // defined(USING_NEON_F16C)
|
||||
return vcvt_f32_f16((float16x4_t)half);
|
||||
#elif defined(USING_AVX512F)
|
||||
return (F)_mm512_cvtph_ps((__m256i)half);
|
||||
@@ -178,7 +178,7 @@ SI F F_from_Half(U16 half) {
|
||||
__attribute__((no_sanitize("unsigned-integer-overflow")))
|
||||
#endif
|
||||
SI U16 Half_from_F(F f) {
|
||||
-#if defined(USING_NEON_F16C)
|
||||
+#if 0 //defined(USING_NEON_F16C)
|
||||
return (U16)vcvt_f16_f32(f);
|
||||
#elif defined(USING_AVX512F)
|
||||
return (U16)_mm512_cvtps_ph((__m512 )f, _MM_FROUND_CUR_DIRECTION );
|
||||
diff -up firefox-134.0-build/firefox-134.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia firefox-134.0-build/firefox-134.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h
|
||||
--- firefox-134.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h.aarch64-skia 2025-01-02 20:51:07.856087299 +0100
|
||||
+++ firefox-134.0/gfx/skia/skia/src/opts/SkRasterPipeline_opts.h 2025-01-02 23:09:47.802283444 +0100
|
||||
@@ -1421,7 +1421,7 @@ SI F from_half(U16 h) {
|
||||
}
|
||||
|
||||
SI U16 to_half(F f) {
|
||||
-#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \
|
||||
+#if 0 //defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) \
|
||||
&& !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
|
||||
return vcvt_f16_f32(f);
|
||||
-#if defined(SKRP_CPU_NEON) && defined(SK_CPU_ARM64)
|
||||
+#if 0 // defined(SKRP_CPU_NEON) && defined(SK_CPU_ARM64)
|
||||
return (U16)vcvt_f16_f32(f);
|
||||
|
||||
diff -up firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.aarch64-skia firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h
|
||||
--- firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h.aarch64-skia 2020-01-03 09:00:37.538296107 +0100
|
||||
+++ firefox-72.0/gfx/skia/skia/third_party/skcms/src/Transform_inl.h 2020-01-03 10:11:53.513250979 +0100
|
||||
@@ -183,8 +183,6 @@ SI F F_from_Half(U16 half) {
|
||||
SI U16 Half_from_F(F f) {
|
||||
#if defined(USING_NEON_FP16)
|
||||
return bit_pun<U16>(f);
|
||||
-#elif defined(USING_NEON_F16C)
|
||||
- return (U16)vcvt_f16_f32(f);
|
||||
#elif defined(USING_AVX512F)
|
||||
return (U16)_mm512_cvtps_ph((__m512 )f, _MM_FROUND_CUR_DIRECTION );
|
||||
#elif defined(USING_AVX_F16C)
|
||||
#elif defined(SKRP_CPU_SKX)
|
||||
|
|
|
|||
|
|
@ -1,12 +0,0 @@
|
|||
diff -up firefox-73.0/media/libaom/moz.build.old firefox-73.0/media/libaom/moz.build
|
||||
--- firefox-73.0/media/libaom/moz.build.old 2020-02-07 23:13:28.000000000 +0200
|
||||
+++ firefox-73.0/media/libaom/moz.build 2020-02-17 10:30:08.509805092 +0200
|
||||
@@ -55,7 +55,7 @@ elif CONFIG['CPU_ARCH'] == 'arm':
|
||||
|
||||
for f in SOURCES:
|
||||
if f.endswith('neon.c'):
|
||||
- SOURCES[f].flags += CONFIG['VPX_ASFLAGS']
|
||||
+ SOURCES[f].flags += CONFIG['NEON_FLAGS']
|
||||
|
||||
if CONFIG['OS_TARGET'] == 'Android':
|
||||
# For cpu-features.h
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
diff -up firefox-72.0.2/js/src/wasm/WasmSignalHandlers.cpp.old firefox-72.0.2/js/src/wasm/WasmSignalHandlers.cpp
|
||||
--- firefox-72.0.2/js/src/wasm/WasmSignalHandlers.cpp.old 2020-01-17 23:34:41.000000000 +0200
|
||||
+++ firefox-72.0.2/js/src/wasm/WasmSignalHandlers.cpp 2020-02-02 08:07:54.670341986 +0200
|
||||
@@ -249,7 +249,16 @@ using mozilla::DebugOnly;
|
||||
#endif
|
||||
|
||||
#ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
|
||||
-# include <sys/user.h>
|
||||
+struct user_vfp {
|
||||
+ unsigned long long fpregs[32];
|
||||
+ unsigned long fpscr;
|
||||
+};
|
||||
+
|
||||
+struct user_vfp_exc {
|
||||
+ unsigned long fpexc;
|
||||
+ unsigned long fpinst;
|
||||
+ unsigned long fpinst2;
|
||||
+};
|
||||
#endif
|
||||
|
||||
#if defined(ANDROID)
|
||||
36
build-c11-threads-avail.patch
Normal file
36
build-c11-threads-avail.patch
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -1,13 +0,0 @@
|
|||
diff -up firefox-55.0.3/js/src/jit/ExecutableAllocator.h.wasm firefox-55.0.3/js/src/jit/ExecutableAllocator.h
|
||||
--- firefox-55.0.3/js/src/jit/ExecutableAllocator.h.wasm 2017-09-05 11:32:12.235909468 +0200
|
||||
+++ firefox-55.0.3/js/src/jit/ExecutableAllocator.h 2017-09-05 11:32:46.157916575 +0200
|
||||
@@ -219,7 +219,7 @@ class ExecutableAllocator
|
||||
|
||||
static void poisonCode(JSRuntime* rt, JitPoisonRangeVector& ranges);
|
||||
|
||||
-#if defined(JS_CODEGEN_X86) || defined(JS_CODEGEN_X64) || defined(JS_SIMULATOR_ARM64)
|
||||
+#if defined(JS_CODEGEN_X86) || defined(JS_CODEGEN_X64) || defined(JS_SIMULATOR_ARM64) || defined(JS_CODEGEN_NONE)
|
||||
static void cacheFlush(void*, size_t)
|
||||
{
|
||||
}
|
||||
diff -up firefox-55.0.3/js/src/jit-test/tests/wasm/bench/wasm_box2d.wasm firefox-55.0.3/js/src/jit-test/tests/wasm/bench/wasm_box2d
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,12 +0,0 @@
|
|||
diff -up firefox-65.0/toolkit/moz.configure.disable-elfhack firefox-65.0/toolkit/moz.configure
|
||||
--- firefox-65.0/toolkit/moz.configure.disable-elfhack 2019-01-28 14:16:48.530345132 +0100
|
||||
+++ firefox-65.0/toolkit/moz.configure 2019-01-28 14:18:03.231029682 +0100
|
||||
@@ -1036,7 +1036,7 @@ with only_when('--enable-compile-environ
|
||||
help='{Enable|Disable} elf hacks')
|
||||
|
||||
set_config('USE_ELF_HACK',
|
||||
- depends_if('--enable-elf-hack')(lambda _: True))
|
||||
+ depends_if('--enable-elf-hack')(lambda _: False))
|
||||
|
||||
|
||||
@depends(check_build_environment)
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
diff -up firefox-55.0/js/src/jit/MIR.h.old firefox-55.0/js/src/jit/MIR.h
|
||||
--- firefox-55.0/js/src/jit/MIR.h.old 2017-08-08 14:04:44.528460099 +0200
|
||||
+++ firefox-55.0/js/src/jit/MIR.h 2017-08-08 14:05:11.045364831 +0200
|
||||
@@ -12434,7 +12434,7 @@ class MNearbyInt
|
||||
TRIVIAL_NEW_WRAPPERS
|
||||
|
||||
static bool HasAssemblerSupport(RoundingMode mode) {
|
||||
- return Assembler::HasRoundInstruction(mode);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
RoundingMode roundingMode() const { return roundingMode_; }
|
||||
diff -up firefox-55.0/js/src/jit/ExecutableAllocator.h.old firefox-55.0/js/src/jit/ExecutableAllocator.h
|
||||
--- firefox-55.0/js/src/jit/ExecutableAllocator.h.old 2017-08-09 09:24:18.784983505 +0200
|
||||
+++ firefox-55.0/js/src/jit/ExecutableAllocator.h 2017-08-09 09:28:01.471100075 +0200
|
||||
@@ -307,6 +307,10 @@ class ExecutableAllocator
|
||||
{
|
||||
sync_instruction_memory((caddr_t)code, size);
|
||||
}
|
||||
+#else
|
||||
+ static void cacheFlush(void*, size_t)
|
||||
+ {
|
||||
+ }
|
||||
#endif
|
||||
|
||||
private:
|
||||
diff -up firefox-55.0/js/src/wasm/WasmBuiltins.cpp.old firefox-55.0/js/src/wasm/WasmBuiltins.cpp
|
||||
--- firefox-55.0/js/src/wasm/WasmBuiltins.cpp.old 2017-08-09 12:50:46.877450765 +0200
|
||||
+++ firefox-55.0/js/src/wasm/WasmBuiltins.cpp 2017-08-09 12:50:59.725406974 +0200
|
||||
@@ -881,7 +881,6 @@ wasm::EnsureBuiltinThunksInitialized()
|
||||
MOZ_ASSERT(!masm.numSymbolicAccesses());
|
||||
#endif
|
||||
|
||||
- ExecutableAllocator::cacheFlush(thunks->codeBase, thunks->codeSize);
|
||||
if (!ExecutableAllocator::makeExecutable(thunks->codeBase, thunks->codeSize))
|
||||
return false;
|
||||
|
||||
diff -up firefox-55.0/js/src/wasm/WasmCode.cpp.old firefox-55.0/js/src/wasm/WasmCode.cpp
|
||||
--- firefox-55.0/js/src/wasm/WasmCode.cpp.old 2017-08-09 12:50:37.205483731 +0200
|
||||
+++ firefox-55.0/js/src/wasm/WasmCode.cpp 2017-08-09 12:51:10.365370708 +0200
|
||||
@@ -287,8 +287,6 @@ CodeSegment::initialize(Tier tier,
|
||||
if (!StaticallyLink(*this, linkData))
|
||||
return false;
|
||||
|
||||
- ExecutableAllocator::cacheFlush(bytes_.get(), RoundupCodeLength(codeLength));
|
||||
-
|
||||
// Reprotect the whole region to avoid having separate RW and RX mappings.
|
||||
if (!ExecutableAllocator::makeExecutable(bytes_.get(), RoundupCodeLength(codeLength)))
|
||||
return false;
|
||||
diff -up firefox-55.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old firefox-55.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium
|
||||
diff -up firefox-55.0/media/webrtc/trunk/Makefile.old firefox-55.0/media/webrtc/trunk/Makefile
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
diff -up firefox-55.0/build/moz.configure/rust.configure.rust-ppc64le firefox-55.0/build/moz.configure/rust.configure
|
||||
--- firefox-55.0/build/moz.configure/rust.configure.rust-ppc64le 2017-07-31 18:20:49.000000000 +0200
|
||||
+++ firefox-55.0/build/moz.configure/rust.configure 2017-08-02 10:19:03.254220003 +0200
|
||||
@@ -151,6 +151,9 @@ def rust_triple_alias(host_or_target):
|
||||
('sparc64', 'Linux'): 'sparc64-unknown-linux-gnu',
|
||||
('x86', 'Linux'): 'i686-unknown-linux-gnu',
|
||||
('x86_64', 'Linux'): 'x86_64-unknown-linux-gnu',
|
||||
+ ('ppc64le', 'Linux'): 'powerpc64le-unknown-linux-gnu',
|
||||
+ ('ppc64', 'Linux'): 'powerpc64-unknown-linux-gnu',
|
||||
+ ('s390x', 'Linux'): 's390x-unknown-linux-gnu',
|
||||
# OS X
|
||||
('x86', 'OSX'): 'i686-apple-darwin',
|
||||
('x86_64', 'OSX'): 'x86_64-apple-darwin',
|
||||
@@ -174,8 +177,10 @@ def rust_triple_alias(host_or_target):
|
||||
('sparc64', 'SunOS'): 'sparcv9-sun-solaris',
|
||||
}.get((host_or_target.cpu, os_or_kernel), None)
|
||||
|
||||
+ if (rustc_target == 'powerpc64-unknown-linux-gnu' and host_or_target.endianness == 'little'):
|
||||
+ rustc_target = 'powerpc64le-unknown-linux-gnu'
|
||||
if rustc_target is None:
|
||||
- die("Don't know how to translate {} for rustc".format(host_or_target.alias))
|
||||
+ die("Don't know how to translate {} for rustc, cpu: {}, os: {}".format(target.alias, target.cpu, os_or_kernel))
|
||||
|
||||
# Check to see whether our rustc has a reasonably functional stdlib
|
||||
# for our chosen target.
|
||||
11
build-seccomp.patch
Normal file
11
build-seccomp.patch
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
diff -up thunderbird-145.0/security/sandbox/chromium/sandbox/linux/system_headers/linux_seccomp.h.seccomp thunderbird-145.0/security/sandbox/chromium/sandbox/linux/system_headers/linux_seccomp.h
|
||||
--- thunderbird-145.0/security/sandbox/chromium/sandbox/linux/system_headers/linux_seccomp.h.seccomp 2025-12-09 13:42:31.378958842 +0100
|
||||
+++ thunderbird-145.0/security/sandbox/chromium/sandbox/linux/system_headers/linux_seccomp.h 2025-12-09 13:42:37.886937626 +0100
|
||||
@@ -6,6 +6,7 @@
|
||||
#define SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SECCOMP_H_
|
||||
|
||||
#include <stdint.h>
|
||||
+#include <signal.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
#include "build/build_config.h"
|
||||
|
|
@ -1,32 +1,30 @@
|
|||
diff -up firefox-81.0/toolkit/modules/GMPInstallManager.jsm.old firefox-81.0/toolkit/modules/GMPInstallManager.jsm
|
||||
--- firefox-81.0/toolkit/modules/GMPInstallManager.jsm.old 2020-09-25 10:39:04.769458703 +0200
|
||||
+++ firefox-81.0/toolkit/modules/GMPInstallManager.jsm 2020-09-25 10:39:22.038504747 +0200
|
||||
@@ -54,10 +54,6 @@ function getScopedLogger(prefix) {
|
||||
|
||||
const LOCAL_GMP_SOURCES = [
|
||||
{
|
||||
- id: "gmp-gmpopenh264",
|
||||
- src: "chrome://global/content/gmp-sources/openh264.json",
|
||||
- },
|
||||
- {
|
||||
id: "gmp-widevinecdm",
|
||||
src: "chrome://global/content/gmp-sources/widevinecdm.json",
|
||||
},
|
||||
diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
|
||||
--- a/toolkit/content/jar.mn
|
||||
+++ b/toolkit/content/jar.mn
|
||||
@@ -108,7 +108,6 @@ toolkit.jar:
|
||||
diff -up firefox-121.0/toolkit/content/jar.mn.disable-openh264-download firefox-121.0/toolkit/content/jar.mn
|
||||
--- firefox-121.0/toolkit/content/jar.mn.disable-openh264-download 2023-12-18 20:15:04.352014249 +0100
|
||||
+++ firefox-121.0/toolkit/content/jar.mn 2023-12-18 20:19:26.857929200 +0100
|
||||
@@ -130,7 +130,6 @@ toolkit.jar:
|
||||
#ifdef XP_MACOSX
|
||||
content/global/macWindowMenu.js
|
||||
#endif
|
||||
- content/global/gmp-sources/openh264.json (gmp-sources/openh264.json)
|
||||
content/global/gmp-sources/widevinecdm.json (gmp-sources/widevinecdm.json)
|
||||
content/global/gmp-sources/widevinecdm_l1.json (gmp-sources/widevinecdm_l1.json)
|
||||
|
||||
# Third party files
|
||||
diff --git a/toolkit/modules/GMPInstallManager.jsm b/toolkit/modules/GMPInstallManager.jsm
|
||||
--- a/toolkit/modules/GMPInstallManager.jsm
|
||||
+++ b/toolkit/modules/GMPInstallManager.jsm
|
||||
@@ -238,6 +234,9 @@ GMPInstallManager.prototype = {
|
||||
diff -up firefox-121.0/toolkit/modules/GMPInstallManager.sys.mjs.disable-openh264-download firefox-121.0/toolkit/modules/GMPInstallManager.sys.mjs
|
||||
--- firefox-121.0/toolkit/modules/GMPInstallManager.sys.mjs.disable-openh264-download 2023-12-11 21:42:21.000000000 +0100
|
||||
+++ firefox-121.0/toolkit/modules/GMPInstallManager.sys.mjs 2023-12-18 20:18:52.665768579 +0100
|
||||
@@ -35,11 +35,6 @@ function getScopedLogger(prefix) {
|
||||
|
||||
const LOCAL_GMP_SOURCES = [
|
||||
{
|
||||
- id: "gmp-gmpopenh264",
|
||||
- src: "chrome://global/content/gmp-sources/openh264.json",
|
||||
- installByDefault: true,
|
||||
- },
|
||||
- {
|
||||
id: "gmp-widevinecdm",
|
||||
src: "chrome://global/content/gmp-sources/widevinecdm.json",
|
||||
installByDefault: true,
|
||||
@@ -421,6 +416,9 @@ GMPInstallManager.prototype = {
|
||||
* downloaderr, verifyerr or previouserrorencountered
|
||||
*/
|
||||
installAddon(gmpAddon) {
|
||||
|
|
@ -36,4 +34,3 @@ diff --git a/toolkit/modules/GMPInstallManager.jsm b/toolkit/modules/GMPInstallM
|
|||
if (this._deferred) {
|
||||
let log = getScopedLogger("GMPInstallManager.installAddon");
|
||||
log.error("previous error encountered");
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
[Global]
|
||||
id=fedora
|
||||
version=1.0
|
||||
about=Mozilla Firefox for Fedora
|
||||
|
||||
[Preferences]
|
||||
app.distributor=fedora
|
||||
app.distributor.channel=fedora
|
||||
app.partner.fedora=fedora
|
||||
9
distribution.ini.in
Normal file
9
distribution.ini.in
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
[Global]
|
||||
id=__ID__
|
||||
version=1.0
|
||||
about=Mozilla Firefox for __NAME__
|
||||
|
||||
[Preferences]
|
||||
app.distributor=__ID__
|
||||
app.distributor.channel=__ID__
|
||||
app.partner.fedora=__ID__
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
diff -up firefox-54.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old firefox-54.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium
|
||||
diff -up firefox-54.0/media/mtransport/third_party/nICEr/nicer.gyp.old firefox-54.0/media/mtransport/third_party/nICEr/nicer.gyp
|
||||
--- firefox-54.0/media/mtransport/third_party/nICEr/nicer.gyp.old 2017-06-08 14:59:08.786996664 +0200
|
||||
+++ firefox-54.0/media/mtransport/third_party/nICEr/nicer.gyp 2017-06-08 14:59:22.642946570 +0200
|
||||
@@ -211,7 +211,6 @@
|
||||
'-Wno-parentheses',
|
||||
'-Wno-strict-prototypes',
|
||||
'-Wmissing-prototypes',
|
||||
- '-Wno-format',
|
||||
],
|
||||
'defines' : [
|
||||
'LINUX',
|
||||
diff -up firefox-54.0/media/mtransport/third_party/nrappkit/nrappkit.gyp.build firefox-54.0/media/mtransport/third_party/nrappkit/nrappkit.gyp
|
||||
--- firefox-54.0/media/mtransport/third_party/nrappkit/nrappkit.gyp.build 2017-06-08 15:08:03.627063097 +0200
|
||||
+++ firefox-54.0/media/mtransport/third_party/nrappkit/nrappkit.gyp 2017-06-08 15:08:15.657019606 +0200
|
||||
@@ -206,7 +206,6 @@
|
||||
'-Wno-parentheses',
|
||||
'-Wno-strict-prototypes',
|
||||
'-Wmissing-prototypes',
|
||||
- '-Wno-format',
|
||||
],
|
||||
'defines' : [
|
||||
'LINUX',
|
||||
17
fedora-customization.patch
Normal file
17
fedora-customization.patch
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
diff -up firefox-124.0/toolkit/xre/nsAppRunner.cpp.fedora-customization firefox-124.0/toolkit/xre/nsAppRunner.cpp
|
||||
diff -up firefox-124.0/widget/gtk/nsWindow.cpp.fedora-customization firefox-124.0/widget/gtk/nsWindow.cpp
|
||||
--- firefox-124.0/widget/gtk/nsWindow.cpp.fedora-customization 2024-03-13 12:35:57.098591719 +0100
|
||||
+++ firefox-124.0/widget/gtk/nsWindow.cpp 2024-03-13 12:43:17.375928494 +0100
|
||||
@@ -3459,6 +3459,12 @@ nsresult nsWindow::SetTitle(const nsAStr
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
+ const char* appTitle = getenv("MOZ_APP_TITLE");
|
||||
+ if (appTitle) {
|
||||
+ gtk_window_set_title(GTK_WINDOW(mShell), appTitle);
|
||||
+ return NS_OK;
|
||||
+ }
|
||||
+
|
||||
// convert the string into utf8 and set the title.
|
||||
#define UTF8_FOLLOWBYTE(ch) (((ch) & 0xC0) == 0x80)
|
||||
NS_ConvertUTF16toUTF8 titleUTF8(aTitle);
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
diff -up firefox-73.0/build/unix/run-mozilla.sh.old firefox-73.0/build/unix/run-mozilla.sh
|
||||
--- firefox-73.0/build/unix/run-mozilla.sh.old 2020-02-12 09:58:00.150895904 +0100
|
||||
+++ firefox-73.0/build/unix/run-mozilla.sh 2020-02-12 09:58:06.505860696 +0100
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/bin/sh
|
||||
+#!/usr/bin/sh
|
||||
#
|
||||
# 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
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
diff -up firefox-81.0/dom/media/platforms/PDMFactory.cpp.firefox-disable-ffvpx-with-vapi firefox-81.0/dom/media/platforms/PDMFactory.cpp
|
||||
--- firefox-81.0/dom/media/platforms/PDMFactory.cpp.firefox-disable-ffvpx-with-vapi 2020-09-17 02:32:43.000000000 +0200
|
||||
+++ firefox-81.0/dom/media/platforms/PDMFactory.cpp 2020-09-21 10:30:29.393903183 +0200
|
||||
@@ -371,12 +371,6 @@ void PDMFactory::CreatePDMs() {
|
||||
StartupPDM(m);
|
||||
}
|
||||
#endif
|
||||
-#ifdef MOZ_FFVPX
|
||||
- if (StaticPrefs::media_ffvpx_enabled()) {
|
||||
- m = FFVPXRuntimeLinker::CreateDecoderModule();
|
||||
- StartupPDM(m);
|
||||
- }
|
||||
-#endif
|
||||
#ifdef MOZ_FFMPEG
|
||||
if (StaticPrefs::media_ffmpeg_enabled()) {
|
||||
m = FFmpegRuntimeLinker::CreateDecoderModule();
|
||||
@@ -385,6 +379,12 @@ void PDMFactory::CreatePDMs() {
|
||||
mFFmpegFailedToLoad = false;
|
||||
}
|
||||
#endif
|
||||
+#ifdef MOZ_FFVPX
|
||||
+ if (StaticPrefs::media_ffvpx_enabled()) {
|
||||
+ m = FFVPXRuntimeLinker::CreateDecoderModule();
|
||||
+ StartupPDM(m);
|
||||
+ }
|
||||
+#endif
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
if (StaticPrefs::media_android_media_codec_enabled()) {
|
||||
m = new AndroidDecoderModule();
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
diff -up firefox-55.0/browser/app/profile/firefox.js.addons firefox-55.0/browser/app/profile/firefox.js
|
||||
--- firefox-55.0/browser/app/profile/firefox.js.addons 2017-08-02 10:58:30.566363833 +0200
|
||||
+++ firefox-55.0/browser/app/profile/firefox.js 2017-08-02 10:59:15.377216959 +0200
|
||||
@@ -65,7 +65,8 @@ pref("extensions.systemAddon.update.url"
|
||||
diff -up firefox-125.0/browser/app/profile/firefox.js.addons firefox-125.0/browser/app/profile/firefox.js
|
||||
--- firefox-125.0/browser/app/profile/firefox.js.addons 2024-04-09 10:34:30.728405003 +0200
|
||||
+++ firefox-125.0/browser/app/profile/firefox.js 2024-04-09 10:36:01.444584632 +0200
|
||||
@@ -58,7 +58,8 @@ pref("extensions.systemAddon.update.enab
|
||||
|
||||
// Disable add-ons that are not installed by the user in all scopes by default.
|
||||
// See the SCOPE constants in AddonManager.jsm for values to use here.
|
||||
// See the SCOPE constants in AddonManager.sys.mjs for values to use here.
|
||||
-pref("extensions.autoDisableScopes", 15);
|
||||
+pref("extensions.autoDisableScopes", 0);
|
||||
+pref("extensions.showMismatchUI", false);
|
||||
|
|
|
|||
|
|
@ -1,19 +0,0 @@
|
|||
diff -up firefox-65.0/netwerk/protocol/http/nsHttpHandler.cpp.fedora-ua firefox-65.0/netwerk/protocol/http/nsHttpHandler.cpp
|
||||
--- firefox-65.0/netwerk/protocol/http/nsHttpHandler.cpp.fedora-ua 2019-01-28 14:28:35.806375063 +0100
|
||||
+++ firefox-65.0/netwerk/protocol/http/nsHttpHandler.cpp 2019-01-28 14:30:25.886917219 +0100
|
||||
@@ -873,6 +873,7 @@ void nsHttpHandler::BuildUserAgent() {
|
||||
mUserAgent.SetCapacity(mLegacyAppName.Length() + mLegacyAppVersion.Length() +
|
||||
#ifndef UA_SPARE_PLATFORM
|
||||
mPlatform.Length() +
|
||||
+ mPlatform.Length() + 8 +
|
||||
#endif
|
||||
mOscpu.Length() + mMisc.Length() + mProduct.Length() +
|
||||
mProductSub.Length() + mAppName.Length() +
|
||||
@@ -891,6 +892,7 @@ void nsHttpHandler::BuildUserAgent() {
|
||||
if (!mPlatform.IsEmpty()) {
|
||||
mUserAgent += mPlatform;
|
||||
mUserAgent.AppendLiteral("; ");
|
||||
+ mUserAgent.AppendLiteral("Fedora; ");
|
||||
}
|
||||
#endif
|
||||
if (!mCompatDevice.IsEmpty()) {
|
||||
24
firefox-gcc-13-build.patch
Normal file
24
firefox-gcc-13-build.patch
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
--- firefox-109.0.1/gfx/2d/Rect.h.old 2023-02-07 09:44:24.946279843 +0100
|
||||
+++ firefox-109.0.1/gfx/2d/Rect.h 2023-02-07 09:44:47.969032049 +0100
|
||||
@@ -324,8 +324,8 @@ IntRectTyped<Units> RoundedToInt(const R
|
||||
|
||||
template <class Units>
|
||||
bool RectIsInt32Safe(const RectTyped<Units>& aRect) {
|
||||
- float min = (float)std::numeric_limits<std::int32_t>::min();
|
||||
- float max = (float)std::numeric_limits<std::int32_t>::max();
|
||||
+ float min = (float)std::numeric_limits<int32_t>::min();
|
||||
+ float max = (float)std::numeric_limits<int32_t>::max();
|
||||
return aRect.x > min && aRect.y > min && aRect.width < max &&
|
||||
aRect.height < max && aRect.XMost() < max && aRect.YMost() < max;
|
||||
}
|
||||
diff -up firefox-109.0.1/toolkit/components/telemetry/pingsender/pingsender.cpp.old firefox-109.0.1/toolkit/components/telemetry/pingsender/pingsender.cpp
|
||||
--- firefox-109.0.1/toolkit/components/telemetry/pingsender/pingsender.cpp.old 2023-02-07 11:03:41.788720090 +0100
|
||||
+++ firefox-109.0.1/toolkit/components/telemetry/pingsender/pingsender.cpp 2023-02-07 11:04:29.195345659 +0100
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <iomanip>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
+#include <cstdint>
|
||||
|
||||
#include <zlib.h>
|
||||
|
||||
19
firefox-gcc-15.0-s390.patch
Normal file
19
firefox-gcc-15.0-s390.patch
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
diff -up firefox-137.0.2/toolkit/components/protobuf/src/google/protobuf/port_def.inc.s390 firefox-137.0.2/toolkit/components/protobuf/src/google/protobuf/port_def.inc
|
||||
--- firefox-137.0.2/toolkit/components/protobuf/src/google/protobuf/port_def.inc.s390 2025-04-22 11:42:00.650759505 +0200
|
||||
+++ firefox-137.0.2/toolkit/components/protobuf/src/google/protobuf/port_def.inc 2025-04-22 11:46:02.522031338 +0200
|
||||
@@ -257,12 +257,14 @@
|
||||
#if __has_cpp_attribute(clang::musttail) && !defined(__arm__) && \
|
||||
!defined(_ARCH_PPC) && !defined(__wasm__) && \
|
||||
!(defined(_MSC_VER) && defined(_M_IX86)) && \
|
||||
- !(defined(__NDK_MAJOR__) && __NDK_MAJOR <= 24)
|
||||
+ !(defined(__NDK_MAJOR__) && __NDK_MAJOR <= 24) && \
|
||||
+ !defined(__s390__)
|
||||
# ifndef PROTO2_OPENSOURCE
|
||||
// Compilation fails on ARM32: b/195943306
|
||||
// Compilation fails on powerpc64le: b/187985113
|
||||
// Compilation fails on X86 Windows:
|
||||
// https://github.com/llvm/llvm-project/issues/53271
|
||||
+// Compilation fails on S390 for calls with more than 4 arguments
|
||||
# endif
|
||||
#define PROTOBUF_MUSTTAIL [[clang::musttail]]
|
||||
#define PROTOBUF_TAILCALL true
|
||||
14
firefox-gcc-always-inline.patch
Normal file
14
firefox-gcc-always-inline.patch
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
diff -up firefox-114.0.2/gfx/wr/swgl/src/gl.cc.inline firefox-114.0.2/gfx/wr/swgl/src/gl.cc
|
||||
--- firefox-114.0.2/gfx/wr/swgl/src/gl.cc.inline 2023-06-22 11:08:53.294593327 +0200
|
||||
+++ firefox-114.0.2/gfx/wr/swgl/src/gl.cc 2023-06-22 11:12:43.663486734 +0200
|
||||
@@ -58,9 +58,7 @@ WINBASEAPI BOOL WINAPI QueryPerformanceF
|
||||
}
|
||||
|
||||
#else
|
||||
-// GCC is slower when dealing with always_inline, especially in debug builds.
|
||||
-// When using Clang, use always_inline more aggressively.
|
||||
-# if defined(__clang__) || defined(NDEBUG)
|
||||
+# if defined(__clang__) || defined (__GNUC__) || defined(NDEBUG)
|
||||
# define ALWAYS_INLINE __attribute__((always_inline)) inline
|
||||
# else
|
||||
# define ALWAYS_INLINE inline
|
||||
12
firefox-i686-build.patch
Normal file
12
firefox-i686-build.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
diff -up firefox-105.0/mozglue/misc/SIMD_avx2.cpp.old firefox-105.0/mozglue/misc/SIMD_avx2.cpp
|
||||
--- firefox-105.0/mozglue/misc/SIMD_avx2.cpp.old 2022-09-22 21:35:07.006221995 +0200
|
||||
+++ firefox-105.0/mozglue/misc/SIMD_avx2.cpp 2022-09-22 21:36:12.972480517 +0200
|
||||
@@ -55,7 +55,7 @@ __m256i CmpEq256(__m256i a, __m256i b) {
|
||||
return _mm256_cmpeq_epi64(a, b);
|
||||
}
|
||||
|
||||
-# if defined(__GNUC__) && !defined(__clang__)
|
||||
+# if 0
|
||||
|
||||
// See the comment in SIMD.cpp over Load32BitsIntoXMM. This is just adapted
|
||||
// from that workaround. Testing this, it also yields the correct instructions
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
diff -up firefox-75.0/intl/locale/LocaleService.cpp.locale-debug firefox-75.0/intl/locale/LocaleService.cpp
|
||||
--- firefox-75.0/intl/locale/LocaleService.cpp.locale-debug 2020-04-06 22:42:20.196799809 +0200
|
||||
+++ firefox-75.0/intl/locale/LocaleService.cpp 2020-04-06 22:43:02.522530317 +0200
|
||||
@@ -372,8 +372,6 @@ LocaleService::GetDefaultLocale(nsACStri
|
||||
// just use our hard-coded default below.
|
||||
GetGREFileContents("update.locale", &locale);
|
||||
locale.Trim(" \t\n\r");
|
||||
- // This should never be empty.
|
||||
- MOZ_ASSERT(!locale.IsEmpty());
|
||||
if (CanonicalizeLanguageId(locale)) {
|
||||
mDefaultLocale.Assign(locale);
|
||||
}
|
||||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
ac_add_options --with-system-zlib
|
||||
ac_add_options --disable-strip
|
||||
#ac_add_options --enable-libnotify
|
||||
ac_add_options --enable-necko-wifi
|
||||
ac_add_options --disable-updater
|
||||
ac_add_options --enable-chrome-format=omni
|
||||
|
|
@ -11,11 +10,11 @@ ac_add_options --enable-av1
|
|||
ac_add_options --without-system-icu
|
||||
ac_add_options --enable-release
|
||||
ac_add_options --update-channel=release
|
||||
# Workaround for mozbz#1341234
|
||||
ac_add_options BINDGEN_CFLAGS="$(pkg-config nspr pixman-1 --cflags)"
|
||||
ac_add_options --allow-addon-sideload
|
||||
ac_add_options --with-system-fdk-aac
|
||||
ac_add_options --enable-js-shell
|
||||
ac_add_options --with-unsigned-addon-scopes=app,system
|
||||
ac_add_options --disable-bootstrap
|
||||
|
||||
export BUILD_OFFICIAL=1
|
||||
export MOZILLA_OFFICIAL=1
|
||||
|
|
|
|||
19
firefox-nss-addon-hack.patch
Normal file
19
firefox-nss-addon-hack.patch
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
diff -up firefox-84.0.2/security/certverifier/NSSCertDBTrustDomain.cpp.nss-hack firefox-84.0.2/security/certverifier/NSSCertDBTrustDomain.cpp
|
||||
--- firefox-84.0.2/security/certverifier/NSSCertDBTrustDomain.cpp.nss-hack 2021-01-11 12:12:02.585514543 +0100
|
||||
+++ firefox-84.0.2/security/certverifier/NSSCertDBTrustDomain.cpp 2021-01-11 12:47:50.345984582 +0100
|
||||
@@ -1619,6 +1619,15 @@ SECStatus InitializeNSS(const nsACString
|
||||
return srv;
|
||||
}
|
||||
|
||||
+ /* Sets the NSS_USE_ALG_IN_ANY_SIGNATURE bit.
|
||||
+ * does not change NSS_USE_ALG_IN_CERT_SIGNATURE,
|
||||
+ * so policy will still disable use of sha1 in
|
||||
+ * certificate related signature processing. */
|
||||
+ srv = NSS_SetAlgorithmPolicy(SEC_OID_SHA1, NSS_USE_ALG_IN_ANY_SIGNATURE, 0);
|
||||
+ if (srv != SECSuccess) {
|
||||
+ NS_WARNING("Unable to use SHA1 for Add-ons, expect broken/disabled Add-ons. See https://bugzilla.redhat.com/show_bug.cgi?id=1908018 for details.");
|
||||
+ }
|
||||
+
|
||||
if (nssDbConfig == NSSDBConfig::ReadWrite) {
|
||||
UniquePK11SlotInfo slot(PK11_GetInternalKeySlot());
|
||||
if (!slot) {
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
diff -up firefox-78.0/toolkit/moz.configure.nss-version firefox-78.0/toolkit/moz.configure
|
||||
--- firefox-78.0/toolkit/moz.configure.nss-version 2020-06-30 08:47:09.657501414 +0200
|
||||
+++ firefox-78.0/toolkit/moz.configure 2020-06-30 08:47:12.652510169 +0200
|
||||
@@ -2089,7 +2089,7 @@ option('--with-system-nss', help='Use sy
|
||||
|
||||
imply_option('--with-system-nspr', True, when='--with-system-nss')
|
||||
|
||||
-nss_pkg = pkg_check_modules('NSS', 'nss >= 3.53.1', when='--with-system-nss', config=False)
|
||||
+nss_pkg = pkg_check_modules('NSS', 'nss >= 3.53.0', when='--with-system-nss', config=False)
|
||||
|
||||
set_config('MOZ_SYSTEM_NSS', True, when='--with-system-nss')
|
||||
|
||||
|
|
@ -2,13 +2,11 @@ pref("app.update.auto", false);
|
|||
pref("app.update.enabled", false);
|
||||
pref("app.update.autoInstallEnabled", false);
|
||||
pref("general.smoothScroll", true);
|
||||
pref("intl.locale.matchOS", true);
|
||||
pref("intl.locale.requested", "");
|
||||
pref("toolkit.storage.synchronous", 0);
|
||||
pref("toolkit.networkmanager.disable", false);
|
||||
pref("offline.autoDetect", true);
|
||||
pref("browser.backspace_action", 2);
|
||||
pref("browser.display.use_system_colors", true);
|
||||
pref("browser.download.folderList", 1);
|
||||
pref("browser.link.open_external", 3);
|
||||
pref("browser.shell.checkDefaultBrowser", false);
|
||||
|
|
@ -18,20 +16,18 @@ pref("ui.SpellCheckerUnderlineStyle", 1);
|
|||
pref("startup.homepage_override_url", "");
|
||||
pref("browser.startup.homepage", "data:text/plain,browser.startup.homepage=https://start.fedoraproject.org/");
|
||||
pref("browser.newtabpage.pinned", '[{"url":"https://start.fedoraproject.org/","title":"Fedora Project - Start Page"}]');
|
||||
pref("geo.wifi.uri", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%");
|
||||
pref("media.gmp-gmpopenh264.provider.enabled",false);
|
||||
pref("media.gmp-gmpopenh264.autoupdate",false);
|
||||
pref("media.gmp-gmpopenh264.enabled",false);
|
||||
pref("media.gmp.decoder.enabled", true);
|
||||
pref("plugins.notifyMissingFlash", false);
|
||||
/* See https://bugzilla.redhat.com/show_bug.cgi?id=1226489 */
|
||||
pref("browser.display.use_system_colors", false);
|
||||
pref("layers.use-image-offscreen-surfaces", false);
|
||||
/* Allow sending credetials to all https:// sites */
|
||||
pref("network.negotiate-auth.trusted-uris", "https://");
|
||||
pref("spellchecker.dictionary_path","/usr/share/myspell");
|
||||
pref("spellchecker.dictionary_path","/usr/share/hunspell");
|
||||
/* Disable DoH by default */
|
||||
pref("network.trr.mode", 5);
|
||||
/* Enable per-user policy dir, see mozbz#1583466 */
|
||||
pref("browser.policies.perUserDir", true);
|
||||
pref("browser.gnome-search-provider.enabled",true);
|
||||
pref("browser.gnome-search-provider.enabled",true);
|
||||
/* Enable ffvpx playback for WebRTC */
|
||||
pref("media.navigator.mediadatadecoder_vpx_enabled", true);
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
[Shell Search Provider]
|
||||
DesktopId=firefox.desktop
|
||||
BusName=org.mozilla.Firefox.SearchProvider
|
||||
ObjectPath=/org/mozilla/Firefox/SearchProvider
|
||||
Version=2
|
||||
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 2.2 KiB |
|
|
@ -1,60 +0,0 @@
|
|||
diff -up firefox-83.0/docshell/base/crashtests/crashtests.list.test firefox-83.0/docshell/base/crashtests/crashtests.list
|
||||
--- firefox-83.0/docshell/base/crashtests/crashtests.list.test 2020-11-12 19:04:36.000000000 +0100
|
||||
+++ firefox-83.0/docshell/base/crashtests/crashtests.list 2020-11-19 10:30:26.127468382 +0100
|
||||
@@ -13,7 +13,6 @@ load 614499-1.html
|
||||
load 678872-1.html
|
||||
skip-if(Android) pref(dom.disable_open_during_load,false) load 914521.html # Android bug 1584562
|
||||
pref(browser.send_pings,true) asserts(0-2) load 1257730-1.html # bug 566159
|
||||
-load 1331295.html
|
||||
load 1341657.html
|
||||
load 1584467.html
|
||||
load 1614211-1.html
|
||||
--- firefox-83.0/dom/media/tests/crashtests/crashtests.list.test 2020-11-19 10:42:04.960128784 +0100
|
||||
+++ firefox-83.0/dom/media/tests/crashtests/crashtests.list 2020-11-19 10:42:21.508182030 +0100
|
||||
@@ -24,7 +24,7 @@ asserts-if(Android,0-1) pref(browser.lin
|
||||
asserts-if(Android,0-1) pref(browser.link.open_newwindow,2) load 1429507_2.html # window.open() in tab doesn't work for crashtest in e10s, this opens a new window instead
|
||||
asserts-if(Android,0-2) load 1453030.html
|
||||
load 1468451.html
|
||||
-skip-if(Android) load 1490700.html # No screenshare on Android
|
||||
+#skip-if(Android) load 1490700.html # No screenshare on Android and Wayland
|
||||
load 1505957.html
|
||||
load 1509442.html
|
||||
load 1511130.html
|
||||
diff -up firefox-83.0/testing/marionette/harness/marionette_harness/tests/unit/test_marionette.py.old firefox-83.0/testing/marionette/harness/marionette_harness/tests/unit/test_marionette.py
|
||||
--- firefox-83.0/testing/marionette/harness/marionette_harness/tests/unit/test_marionette.py.old 2020-11-19 11:15:59.150990819 +0100
|
||||
+++ firefox-83.0/testing/marionette/harness/marionette_harness/tests/unit/test_marionette.py 2020-11-19 11:17:53.390337862 +0100
|
||||
@@ -62,16 +62,9 @@ class TestMarionette(MarionetteTestCase)
|
||||
|
||||
def test_application_update_disabled(self):
|
||||
# Updates of the application should always be disabled by default
|
||||
- with self.marionette.using_context("chrome"):
|
||||
- update_allowed = self.marionette.execute_script("""
|
||||
- let aus = Cc['@mozilla.org/updates/update-service;1']
|
||||
- .getService(Ci.nsIApplicationUpdateService);
|
||||
- return aus.canCheckForUpdates;
|
||||
- """)
|
||||
-
|
||||
+ update_allowed = False
|
||||
self.assertFalse(update_allowed)
|
||||
|
||||
-
|
||||
class TestContext(MarionetteTestCase):
|
||||
|
||||
def setUp(self):
|
||||
diff -up firefox-83.0/testing/web-platform/tests/tools/manifest/vcs.py.old firefox-83.0/testing/web-platform/tests/tools/manifest/vcs.py
|
||||
--- firefox-83.0/testing/web-platform/tests/tools/manifest/vcs.py.old 2020-11-19 11:37:03.591683420 +0100
|
||||
+++ firefox-83.0/testing/web-platform/tests/tools/manifest/vcs.py 2020-11-19 11:37:18.730715053 +0100
|
||||
@@ -9,11 +9,8 @@ from six.moves.collections_abc import Mu
|
||||
|
||||
from .utils import git
|
||||
|
||||
-try:
|
||||
- from ..gitignore import gitignore
|
||||
-except ValueError:
|
||||
- # relative import beyond toplevel throws *ValueError*!
|
||||
- from gitignore import gitignore # type: ignore
|
||||
+# relative import beyond toplevel throws *ValueError*!
|
||||
+from gitignore import gitignore # type: ignore
|
||||
|
||||
|
||||
MYPY = False
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
diff -up firefox-76.0.1/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp.old firefox-76.0.1/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp
|
||||
--- firefox-76.0.1/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp.old 2020-05-13 14:28:26.556800474 +0200
|
||||
+++ firefox-76.0.1/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp 2020-05-13 14:28:31.562768959 +0200
|
||||
@@ -43,7 +43,7 @@ typedef int VAStatus;
|
||||
#endif
|
||||
|
||||
// Use some extra HW frames for potential rendering lags.
|
||||
-#define EXTRA_HW_FRAMES 6
|
||||
+#define EXTRA_HW_FRAMES 20
|
||||
|
||||
typedef mozilla::layers::Image Image;
|
||||
typedef mozilla::layers::PlanarYCbCrImage PlanarYCbCrImage;
|
||||
40
firefox.1
40
firefox.1
|
|
@ -1,4 +1,4 @@
|
|||
.TH FIREFOX 1 "November 30, 2017" firefox "Linux User's Manual"
|
||||
.TH FIREFOX 1 "July 10, 2019" firefox "Linux User's Manual"
|
||||
.SH NAME
|
||||
firefox \- a Web browser for X11 derived from the Mozilla browser
|
||||
|
||||
|
|
@ -6,17 +6,10 @@ firefox \- a Web browser for X11 derived from the Mozilla browser
|
|||
.B firefox
|
||||
[\fIOPTIONS\fR ...] [\fIURL\fR]
|
||||
|
||||
.B firefox-bin
|
||||
[\fIOPTIONS\fR] [\fIURL\fR]
|
||||
|
||||
.SH DESCRIPTION
|
||||
\fBMozilla Firefox\fR is an open-source web browser, designed for
|
||||
standards compliance, performance and portability.
|
||||
|
||||
.SH USAGE
|
||||
\fBfirefox\fR is a simple shell script that will set up the
|
||||
environment for the actual executable, \fBfirefox-bin\fR.
|
||||
|
||||
.SH OPTIONS
|
||||
A summary of the options supported by \fBfirefox\fR is included below.
|
||||
|
||||
|
|
@ -33,10 +26,10 @@ Make all warnings fatal
|
|||
|
||||
.SS "Firefox options"
|
||||
.TP
|
||||
.B \-h, \-help
|
||||
.B \-h, \--help
|
||||
Show summary of options.
|
||||
.TP
|
||||
.B \-v, \-version
|
||||
.B \-v, \--version
|
||||
Print Firefox version.
|
||||
.TP
|
||||
\fB\-P\fR \fIprofile\fR
|
||||
|
|
@ -63,11 +56,22 @@ Start with \fIlocale\fR resources as UI Locale.
|
|||
\fB\-\-safe\-mode\fR
|
||||
Disables extensions and themes for this session.
|
||||
.TP
|
||||
\fB\--allow-downgrade\fR
|
||||
Allows downgrading a profile.
|
||||
.TP
|
||||
\fB\--MOZ_LOG\fR=\fImodules\fR
|
||||
Treated as \fBMOZ_LOG\fR=\fImodules\fR environment variable, overrides it.
|
||||
.TP
|
||||
\fB\--MOZ_LOG_FILE\fR=\fIfile\fR
|
||||
Treated as \fBMOZ_LOG_FILE\fR=\fIfile\fR environment variable, overrides it. If
|
||||
MOZ_LOG_FILE is not specified as an argument or as an environment variable,
|
||||
logging will be written to stdout.
|
||||
.TP
|
||||
\fB\-\-headless\fR
|
||||
Run without a GUI.
|
||||
.TP
|
||||
\fB\-\-marionette\fR
|
||||
Enable remote control server.
|
||||
\fB\-\-save-recordings\fR
|
||||
Save recordings for all content processes to a directory.
|
||||
.TP
|
||||
\fB\-\-browser\fR
|
||||
Open a browser window.
|
||||
|
|
@ -93,8 +97,9 @@ Width and optionally height of screenshot.
|
|||
\fB\-\-search\fR \fIterm\fR
|
||||
Search \fIterm\fR with your default search engine.
|
||||
.TP
|
||||
|
||||
|
||||
\fB\-\-setDefaultBrowser\fR
|
||||
Set this app as the default browser.
|
||||
.TP
|
||||
\fB\-\-jsconsole\fR
|
||||
Open the Browser Console.
|
||||
.TP
|
||||
|
|
@ -115,19 +120,16 @@ Record drawing for a given URL.
|
|||
.TP
|
||||
\fB\-\-recording-output\fR \fIfile\fR
|
||||
Specify destination file for a drawing recording.
|
||||
.TP
|
||||
\fB\-\-setDefaultBrowser\fR
|
||||
Set this app as the default browser.
|
||||
|
||||
.SH FILES
|
||||
\fI/usr/bin/firefox\fR - shell script wrapping
|
||||
\fBfirefox\fR
|
||||
.br
|
||||
\fI/usr/lib64/firefox/firefox-bin\fR - \fBfirefox\fR
|
||||
\fI/usr/lib64/firefox/firefox\fR - \fBfirefox\fR
|
||||
executable
|
||||
|
||||
.SH VERSION
|
||||
57.0
|
||||
68.0
|
||||
|
||||
.SH BUGS
|
||||
To report a bug, please visit \fIhttp://bugzilla.mozilla.org/\fR
|
||||
|
|
|
|||
859
firefox.desktop
859
firefox.desktop
|
|
@ -1,47 +1,520 @@
|
|||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Firefox
|
||||
GenericName=Web Browser
|
||||
GenericName[ca]=Navegador web
|
||||
GenericName[cs]=Webový prohlížeč
|
||||
GenericName[es]=Navegador web
|
||||
GenericName[fa]=مرورگر اینترنتی
|
||||
GenericName[fi]=WWW-selain
|
||||
GenericName[fr]=Navigateur Web
|
||||
GenericName[hu]=Webböngésző
|
||||
GenericName[it]=Browser Web
|
||||
GenericName[ja]=ウェブ・ブラウザ
|
||||
GenericName[ko]=웹 브라우저
|
||||
GenericName[nb]=Nettleser
|
||||
GenericName[nl]=Webbrowser
|
||||
GenericName[nn]=Nettlesar
|
||||
GenericName[no]=Nettleser
|
||||
GenericName[pl]=Przeglądarka WWW
|
||||
GenericName[pt]=Navegador Web
|
||||
GenericName[pt_BR]=Navegador Web
|
||||
GenericName[sk]=Internetový prehliadač
|
||||
GenericName[sv]=Webbläsare
|
||||
Comment=Browse the Web
|
||||
Comment[ca]=Navegueu per el web
|
||||
Name[ach]=Firefox
|
||||
Name[af]=Firefox
|
||||
Name[an]=Firefox
|
||||
Name[ar]=Firefox
|
||||
Name[ast]=Firefox
|
||||
Name[az]=Firefox
|
||||
Name[be]=Firefox
|
||||
Name[bg]=Firefox
|
||||
Name[bn]=Firefox
|
||||
Name[br]=Firefox
|
||||
Name[bs]=Firefox
|
||||
Name[ca]=Firefox
|
||||
Name[ca_valencia]=Firefox
|
||||
Name[cak]=Firefox
|
||||
Name[cs]=Firefox
|
||||
Name[cy]=Firefox
|
||||
Name[da]=Firefox
|
||||
Name[de]=Firefox
|
||||
Name[dsb]=Firefox
|
||||
Name[el]=Firefox
|
||||
Name[en_CA]=Firefox
|
||||
Name[en_GB]=Firefox
|
||||
Name[eo]=Firefox
|
||||
Name[es_AR]=Firefox
|
||||
Name[es_CL]=Firefox
|
||||
Name[es_ES]=Firefox
|
||||
Name[es_MX]=Firefox
|
||||
Name[et]=Firefox
|
||||
Name[eu]=Firefox
|
||||
Name[fa]=Firefox
|
||||
Name[ff]=Firefox
|
||||
Name[fi]=Firefox
|
||||
Name[fr]=Firefox
|
||||
Name[fur]=Firefox
|
||||
Name[fy_NL]=Firefox
|
||||
Name[ga_IE]=Firefox
|
||||
Name[gd]=Firefox
|
||||
Name[gl]=Firefox
|
||||
Name[gn]=Firefox
|
||||
Name[gu_IN]=Firefox
|
||||
Name[he]=Firefox
|
||||
Name[hi_IN]=Firefox
|
||||
Name[hr]=Firefox
|
||||
Name[hsb]=Firefox
|
||||
Name[hu]=Firefox
|
||||
Name[hy_AM]=Firefox
|
||||
Name[ia]=Firefox
|
||||
Name[id]=Firefox
|
||||
Name[is]=Firefox
|
||||
Name[it]=Firefox
|
||||
Name[ja]=Firefox
|
||||
Name[ka]=Firefox
|
||||
Name[kab]=Firefox
|
||||
Name[kk]=Firefox
|
||||
Name[km]=Firefox
|
||||
Name[kn]=Firefox
|
||||
Name[ko]=Firefox
|
||||
Name[lij]=Firefox
|
||||
Name[lt]=Firefox
|
||||
Name[lv]=Firefox
|
||||
Name[mk]=Firefox
|
||||
Name[mr]=Firefox
|
||||
Name[ms]=Firefox
|
||||
Name[my]=Firefox
|
||||
Name[nb_NO]=Firefox
|
||||
Name[ne_NP]=Firefox
|
||||
Name[nl]=Firefox
|
||||
Name[nn_NO]=Firefox
|
||||
Name[oc]=Firefox
|
||||
Name[pa_IN]=Firefox
|
||||
Name[pl]=Firefox
|
||||
Name[pt_BR]=Firefox
|
||||
Name[pt_PT]=Firefox
|
||||
Name[rm]=Firefox
|
||||
Name[ro]=Firefox
|
||||
Name[ru]=Firefox
|
||||
Name[sat]=Firefox
|
||||
Name[sc]=Firefox
|
||||
Name[sco]=Firefox
|
||||
Name[si]=Firefox
|
||||
Name[sk]=Firefox
|
||||
Name[skr]=Firefox
|
||||
Name[sl]=Firefox
|
||||
Name[son]=Firefox
|
||||
Name[sq]=Firefox
|
||||
Name[sr]=Firefox
|
||||
Name[sv_SE]=Firefox
|
||||
Name[szl]=Firefox
|
||||
Name[ta]=Firefox
|
||||
Name[te]=Firefox
|
||||
Name[tg]=Firefox
|
||||
Name[th]=Firefox
|
||||
Name[tl]=Firefox
|
||||
Name[tr]=Firefox
|
||||
Name[trs]=Firefox
|
||||
Name[uk]=Firefox
|
||||
Name[ur]=Firefox
|
||||
Name[uz]=Firefox
|
||||
Name[vi]=Firefox
|
||||
Name[xh]=Firefox
|
||||
Name[zh_CN]=Firefox
|
||||
Name[zh_TW]=Firefox
|
||||
Comment=Browse the World Wide Web
|
||||
Comment[ach]=Browse the World Wide Web
|
||||
Comment[af]=Browse the World Wide Web
|
||||
Comment[an]=Browse the World Wide Web
|
||||
Comment[ar]=تصفح شبكة الوِب العالمية
|
||||
Comment[ast]=Browse the World Wide Web
|
||||
Comment[az]=Browse the World Wide Web
|
||||
Comment[be]=Аглядайце Сеціва
|
||||
Comment[bg]=Разгледайте световната мрежа
|
||||
Comment[bn]=ওয়ার্ল্ড ওয়াইড ওয়েব ব্রাউজ করুন
|
||||
Comment[br]=Ergerzhout ar World Wide Web
|
||||
Comment[bs]=Pretražujte World Wide Web
|
||||
Comment[ca]=Navegeu pel Web
|
||||
Comment[ca_valencia]=Browse the World Wide Web
|
||||
Comment[cak]=Tok chupam Word Wide Web
|
||||
Comment[cs]=Prohlížení stránek World Wide Webu
|
||||
Comment[cy]=Pori'r We Fyd Eang
|
||||
Comment[da]=Brug internettet
|
||||
Comment[de]=Im Internet surfen
|
||||
Comment[es]=Navegue por la web
|
||||
Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
|
||||
Comment[fi]=Selaa Internetin WWW-sivuja
|
||||
Comment[fr]=Navigue sur Internet
|
||||
Comment[hu]=A világháló böngészése
|
||||
Comment[it]=Esplora il web
|
||||
Comment[ja]=ウェブを閲覧します
|
||||
Comment[ko]=웹을 돌아 다닙니다
|
||||
Comment[nb]=Surf på nettet
|
||||
Comment[nl]=Verken het internet
|
||||
Comment[nn]=Surf på nettet
|
||||
Comment[no]=Surf på nettet
|
||||
Comment[pl]=Przeglądanie stron WWW
|
||||
Comment[pt]=Navegue na Internet
|
||||
Comment[pt_BR]=Navegue na Internet
|
||||
Comment[sk]=Prehliadanie internetu
|
||||
Comment[sv]=Surfa på webben
|
||||
Comment[dsb]=Pśeglědajśo World Wide Web
|
||||
Comment[el]=Περιηγηθείτε στον παγκόσμιο ιστό
|
||||
Comment[en_CA]=Browse the World Wide Web
|
||||
Comment[en_GB]=Browse the World Wide Web
|
||||
Comment[eo]=Retumi en la reto
|
||||
Comment[es_AR]=Navegar la World Wide Web
|
||||
Comment[es_CL]=Navegar por la World Wide Web
|
||||
Comment[es_ES]=Navegar por la web
|
||||
Comment[es_MX]=Navegar por la web
|
||||
Comment[et]=Browse the World Wide Web
|
||||
Comment[eu]=Arakatu World Wide Web-a
|
||||
Comment[fa]=Browse the World Wide Web
|
||||
Comment[ff]=Browse the World Wide Web
|
||||
Comment[fi]=Selaa Internetiä
|
||||
Comment[fr]=Naviguer sur le Web
|
||||
Comment[fur]=Navighe sul Web
|
||||
Comment[fy_NL]=Navigearje op it wrâldwide web
|
||||
Comment[ga_IE]=Browse the World Wide Web
|
||||
Comment[gd]=Rùraich lìon na cruinne
|
||||
Comment[gl]=Navegar pola World Wide Web
|
||||
Comment[gn]=Eikundaha World Wide Web rupi
|
||||
Comment[gu_IN]=Browse the World Wide Web
|
||||
Comment[he]=גלישה באינטרנט
|
||||
Comment[hi_IN]=Browse the World Wide Web
|
||||
Comment[hr]=Pregledaj World Wide Web
|
||||
Comment[hsb]=Přehladajće World Wide Web
|
||||
Comment[hu]=Böngésszen a világhálón
|
||||
Comment[hy_AM]=Զննի՛ր համաշխարհային սարդոստայնը
|
||||
Comment[ia]=Navigar sur le Web
|
||||
Comment[id]=Jelajahi World Wide Web
|
||||
Comment[is]=Vafraðu um veraldarvefinn
|
||||
Comment[it]=Naviga sul Web
|
||||
Comment[ja]=World Wide Web をブラウジング
|
||||
Comment[ka]=მსოფლიო ქსელთან წვდომა
|
||||
Comment[kab]=Inig deg Web
|
||||
Comment[kk]=Ғаламторды шолу
|
||||
Comment[km]=Browse the World Wide Web
|
||||
Comment[kn]=Browse the World Wide Web
|
||||
Comment[ko]=월드 와이드 웹 탐색
|
||||
Comment[lij]=Browse the World Wide Web
|
||||
Comment[lt]=Browse the World Wide Web
|
||||
Comment[lv]=Pārlūkojiet globālo tīmekli
|
||||
Comment[mk]=Browse the World Wide Web
|
||||
Comment[mr]=Browse the World Wide Web
|
||||
Comment[ms]=Browse the World Wide Web
|
||||
Comment[my]=Browse the World Wide Web
|
||||
Comment[nb_NO]=Surf på nettet
|
||||
Comment[ne_NP]=वर्ल्ड वाइड वेब ब्राउज गर्नुहोस्
|
||||
Comment[nl]=Navigeren op het wereldwijde web
|
||||
Comment[nn_NO]=Surf på nettet
|
||||
Comment[oc]=Navegar pel Web
|
||||
Comment[pa_IN]=ਵਰਲਡ ਵਾਈਡ ਵੈੱਬ ਬਰਾਊਜ਼ਰ ਕਰੋ
|
||||
Comment[pl]=Przeglądaj Internet
|
||||
Comment[pt_BR]=Navegue na World Wide Web
|
||||
Comment[pt_PT]=Navegar na Internet
|
||||
Comment[rm]=Navigar en il web
|
||||
Comment[ro]=Browse the World Wide Web
|
||||
Comment[ru]=Доступ в Интернет
|
||||
Comment[sat]=World Wide Web ᱠᱷᱩᱞᱟᱹᱭ ᱢᱮ
|
||||
Comment[sc]=Nàviga su Web
|
||||
Comment[sco]=Browse the World Wide Web
|
||||
Comment[si]=ලෝක ව්යාප්ත වියමන පිරික්සන්න
|
||||
Comment[sk]=Prehľadávať web (www)
|
||||
Comment[skr]=ورلڈ وائیڈ ویب براؤز کرو
|
||||
Comment[sl]=Brskanje po svetovnem spletu
|
||||
Comment[son]=Browse the World Wide Web
|
||||
Comment[sq]=Shfletoni në World Wide Web
|
||||
Comment[sr]=Истражите интернет
|
||||
Comment[sv_SE]=Surfa på webben
|
||||
Comment[szl]=Browse the World Wide Web
|
||||
Comment[ta]=Browse the World Wide Web
|
||||
Comment[te]=ప్రపంచ వ్యాప్త జాలంలో విహరించండి
|
||||
Comment[tg]=Ба шабакаи ҷаҳонии Интернет дастрасӣ пайдо намоед
|
||||
Comment[th]=เรียกดูเวิลด์ไวด์เว็บ
|
||||
Comment[tl]=Browse the World Wide Web
|
||||
Comment[tr]=Web’de gezin
|
||||
Comment[trs]=Gāchē nu ngà World Wide Web
|
||||
Comment[uk]=Переглядайте всесвітню мережу
|
||||
Comment[ur]=Browse the World Wide Web
|
||||
Comment[uz]=Browse the World Wide Web
|
||||
Comment[vi]=Duyệt web trên toàn thế giới
|
||||
Comment[xh]=Browse the World Wide Web
|
||||
Comment[zh_CN]=浏览万维网
|
||||
Comment[zh_TW]=瀏覽全球資訊網
|
||||
GenericName=Web Browser
|
||||
GenericName[ach]=Web Browser
|
||||
GenericName[af]=Web Browser
|
||||
GenericName[an]=Web Browser
|
||||
GenericName[ar]=متصفح الإنترنت
|
||||
GenericName[ast]=Web Browser
|
||||
GenericName[az]=Web Browser
|
||||
GenericName[be]=Вэб-браўзер
|
||||
GenericName[bg]=Уеб браузър
|
||||
GenericName[bn]=ওয়েব ব্রাউজার
|
||||
GenericName[br]=Merdeer Web
|
||||
GenericName[bs]=Web pretraživač
|
||||
GenericName[ca]=Navegador web
|
||||
GenericName[ca_valencia]=Web Browser
|
||||
GenericName[cak]=Web Okik'amaya'l
|
||||
GenericName[cs]=Webový prohlížeč
|
||||
GenericName[cy]=Porwr Gwe
|
||||
GenericName[da]=Webbrowser
|
||||
GenericName[de]=Internet-Browser
|
||||
GenericName[dsb]=Webwobglědowak
|
||||
GenericName[el]=Πρόγραμμα περιήγησης
|
||||
GenericName[en_CA]=Web Browser
|
||||
GenericName[en_GB]=Web Browser
|
||||
GenericName[eo]=Retumilo
|
||||
GenericName[es_AR]=Navegador web
|
||||
GenericName[es_CL]=Navegador Web
|
||||
GenericName[es_ES]=Navegador web
|
||||
GenericName[es_MX]=Navegador Web
|
||||
GenericName[et]=Web Browser
|
||||
GenericName[eu]=Web nabigatzailea
|
||||
GenericName[fa]=Web Browser
|
||||
GenericName[ff]=Web Browser
|
||||
GenericName[fi]=Verkkoselain
|
||||
GenericName[fr]=Navigateur web
|
||||
GenericName[fur]=Navigadôr Web
|
||||
GenericName[fy_NL]=Webbrowser
|
||||
GenericName[ga_IE]=Web Browser
|
||||
GenericName[gd]=Brabhsair-lìn
|
||||
GenericName[gl]=Navegador web
|
||||
GenericName[gn]=Ñanduti Kundahára
|
||||
GenericName[gu_IN]=Web Browser
|
||||
GenericName[he]=דפדפן אינטרנט
|
||||
GenericName[hi_IN]=Web Browser
|
||||
GenericName[hr]=Web preglednik
|
||||
GenericName[hsb]=Webwobhladowak
|
||||
GenericName[hu]=Webböngésző
|
||||
GenericName[hy_AM]=Վեբ դիտարկիչ
|
||||
GenericName[ia]=Navigator web
|
||||
GenericName[id]=Peramban Web
|
||||
GenericName[is]=Vafri
|
||||
GenericName[it]=Browser web
|
||||
GenericName[ja]=ウェブブラウザー
|
||||
GenericName[ka]=ბრაუზერი
|
||||
GenericName[kab]=Iminig web
|
||||
GenericName[kk]=Веб-браузері
|
||||
GenericName[km]=Web Browser
|
||||
GenericName[kn]=Web Browser
|
||||
GenericName[ko]=웹 브라우저
|
||||
GenericName[lij]=Navegatô Web
|
||||
GenericName[lt]=Web Browser
|
||||
GenericName[lv]=Tīmekļa pārlūks
|
||||
GenericName[mk]=Web Browser
|
||||
GenericName[mr]=Web Browser
|
||||
GenericName[ms]=Web Browser
|
||||
GenericName[my]=Web Browser
|
||||
GenericName[nb_NO]=Nettleser
|
||||
GenericName[ne_NP]=वेब ब्राउजर
|
||||
GenericName[nl]=Webbrowser
|
||||
GenericName[nn_NO]=Nettlesar
|
||||
GenericName[oc]=Navegador Web
|
||||
GenericName[pa_IN]=ਵੈੱਬ ਬਰਾਊਜ਼ਰ
|
||||
GenericName[pl]=Przeglądarka internetowa
|
||||
GenericName[pt_BR]=Navegador web
|
||||
GenericName[pt_PT]=Navegador Web
|
||||
GenericName[rm]=Navigatur web
|
||||
GenericName[ro]=Web Browser
|
||||
GenericName[ru]=Веб-браузер
|
||||
GenericName[sat]=ᱣᱮᱵᱽ ᱵᱽᱨᱟᱣᱡᱚᱨ
|
||||
GenericName[sc]=Navigadore web
|
||||
GenericName[sco]=Web Browser
|
||||
GenericName[si]=වියමන අතිරික්සුව
|
||||
GenericName[sk]=Webový prehliadač
|
||||
GenericName[skr]=ویب براؤزر
|
||||
GenericName[sl]=Spletni brskalnik
|
||||
GenericName[son]=Web Browser
|
||||
GenericName[sq]=Shfletues
|
||||
GenericName[sr]=Веб прегледач
|
||||
GenericName[sv_SE]=Webbläsare
|
||||
GenericName[szl]=Web Browser
|
||||
GenericName[ta]=Web Browser
|
||||
GenericName[te]=జాల విహారిణి
|
||||
GenericName[tg]=Браузери веб
|
||||
GenericName[th]=เว็บเบราว์เซอร์
|
||||
GenericName[tl]=Web Browser
|
||||
GenericName[tr]=Web Tarayıcısı
|
||||
GenericName[trs]=Web riña gāchē nu’
|
||||
GenericName[uk]=Браузер
|
||||
GenericName[ur]=Web Browser
|
||||
GenericName[uz]=Web Browser
|
||||
GenericName[vi]=Trình duyệt web
|
||||
GenericName[xh]=Web Browser
|
||||
GenericName[zh_CN]=Web 浏览器
|
||||
GenericName[zh_TW]=網頁瀏覽器
|
||||
Keywords=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ach]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[af]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[an]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ar]=إنترنت;WWW;متصفح;ويب;مستكشف;
|
||||
Keywords[ast]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[az]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[be]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[bg]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[bn]=ইন্টারনেট;WWW;ব্রাউজার;ওয়েব;এক্সপ্লোরার;
|
||||
Keywords[br]=Internet;WWW;Merdeer;Web;Ergerzhout;
|
||||
Keywords[bs]=Internet;WWW;Pretraživač;Web;Istraživač;
|
||||
Keywords[ca]=Internet;WWW;Browser;Web;Explorador;Navegador;
|
||||
Keywords[ca_valencia]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[cak]=K'amaya'l;WWW;Okik'amaya'l;Kanob'äl;
|
||||
Keywords[cs]=internet;WWW;prohlížeč;web;
|
||||
Keywords[cy]=Rhyngrwyd;WWW;Porwr;Gwe;Archwiliwr;
|
||||
Keywords[da]=Internet;WWW;Browser;Nettet;Explorer;
|
||||
Keywords[de]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[dsb]=Internet;WWW;wobglědowak;Web;Explorer;
|
||||
Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Ιστός;Ίντερνετ;
|
||||
Keywords[en_CA]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[en_GB]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[eo]=Interreto;Retumilo;TTT;Teksaĵo;Reto;Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[es_AR]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[es_CL]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[es_ES]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[es_MX]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[et]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[eu]=Internet;WWW;Nabigatzailea;Web;Arakatzailea;
|
||||
Keywords[fa]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ff]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[fi]=Internet;WWW;Browser;Web;Explorer;netti;webbi;selain;
|
||||
Keywords[fr]=Internet;WWW;Navigateur;Web;Explorer;
|
||||
Keywords[fur]=Internet;WWW;Browser;Navigadôr;Web;Esploradôr;Explorer;
|
||||
Keywords[fy_NL]=Ynternet;WWW;Browser;Web;Ferkenner;
|
||||
Keywords[ga_IE]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[gd]=Internet;WWW;Browser;Web;Explorer;eadar-lìon;brabhsair;brobhsair;lìon;taisgealaiche;
|
||||
Keywords[gl]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[gn]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[gu_IN]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[he]=אינטרנט;WWW;דפדפן;רשת;סייר;מרשתת;
|
||||
Keywords[hi_IN]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[hr]=Internet;WWW;Preglednik;Web;Istraživač;
|
||||
Keywords[hsb]=Internet;WWW;wobhladowak;Web;Explorer;
|
||||
Keywords[hu]=Internet;WWW;Böngésző;Web;Világháló;
|
||||
Keywords[hy_AM]=Համացանց,WWW,Զննիչ,Վեբ,Ցանցախույզ:
|
||||
Keywords[ia]=Internet;WWW;Navigator;Web;Explorator;
|
||||
Keywords[id]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[is]=Internet;WWW; Vafri; Vefur; Explorer;
|
||||
Keywords[it]=Internet;WWW;Browser;Web;Explorer;Navigatore;
|
||||
Keywords[ja]=Internet;WWW;Browser;Web;Explorer;インターネット;ブラウザー;ウェブ;
|
||||
Keywords[ka]=ინტერნეტი;WWW;ბრაუზერი;ქსელი;ქსელთან წვდომა;
|
||||
Keywords[kab]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[kk]=Internet;WWW;Browser;Web;Explorer;Интернет;Ғаламтор;Браузер;Желі;Шолғыш;
|
||||
Keywords[km]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[kn]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ko]=인터넷;브라우저;웹;탐색기;Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[lij]=Internet;WWW;Browser;Web;Explorer;Navegatô;
|
||||
Keywords[lt]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[lv]=Internets;WWW;Pārlūkprogramma;Tīmeklis;
|
||||
Keywords[mk]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[mr]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ms]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[my]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[nb_NO]=Internett;WWW;Nettleser;Web;Utforsker;
|
||||
Keywords[ne_NP]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[nl]=Internet;WWW;Browser;Web;Verkenner;
|
||||
Keywords[nn_NO]=Internett;WWW;Nettlesar;Web;Utforskar;
|
||||
Keywords[oc]=Internet;WWW;Navegador;Navigador;Navegator;Navigator;Web;Explorer;
|
||||
Keywords[pa_IN]=ਇੰਟਰਨੈੱਟ;WWW;ਬਰਾਊਜ਼ਰ;ਵੈੱਬ;ਐਕਸਪਲਰੋਰ;ਵੈਬ;ਇੰਟਰਨੈਟ;
|
||||
Keywords[pl]=Internet;WWW;Przeglądarka;Browser;Wyszukiwarka;Web;Sieć;Explorer;Eksplorer;Strony;Witryny;internetowe;
|
||||
Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorer;Navegador;
|
||||
Keywords[pt_PT]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[rm]=Internet;WWW;Browser;Web;Explorer;navigatur;
|
||||
Keywords[ro]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ru]=Сеть;Интернет;Браузер;Доступ в Интернет;
|
||||
Keywords[sat]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[sc]=Internet;WWW;Navigadore;Web;Explorer;
|
||||
Keywords[sco]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[si]=අන්තර්ජාලය;අතිරික්සුව;පිරික්සන්න;ගවේශකය;Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[sk]=Internet;WWW;Prehliadač;Web;Prieskumník;
|
||||
Keywords[skr]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[sl]=internet;www;brskalnik;splet;
|
||||
Keywords[son]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[sq]=Internet;WWW;Shfletues;Web;Eksplorues;
|
||||
Keywords[sr]=Internet;WWW;Browser;Web;Explorer;интернет;прегледач;веб;мрежа;прегледач;
|
||||
Keywords[sv_SE]=Internet;WWW;Webbläsare;Webb;Utforskare;
|
||||
Keywords[szl]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ta]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[te]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[tg]=Интернет;WWW;Браузер;Сомона;Ҷустуҷӯгар;
|
||||
Keywords[th]=อินเทอร์เน็ต;เบราว์เซอร์;เว็บ;Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[tl]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[tr]=Internet;WWW;Browser;Web;Explorer;İnternet;Tarayıcı;
|
||||
Keywords[trs]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[uk]=Інтернет;WWW;Браузер;Веб;Переглядач;
|
||||
Keywords[ur]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[uz]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[vi]=Internet;WWW;Trình duyệt;Web;Duyệt web;
|
||||
Keywords[xh]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[zh_TW]=網際網路;網路;瀏覽器;網頁;上網;Internet;WWW;Browser;Web;Explorer;
|
||||
X-GNOME-FullName=Firefox Web Browser
|
||||
X-GNOME-FullName[ach]=Firefox Web Browser
|
||||
X-GNOME-FullName[af]=Firefox Web Browser
|
||||
X-GNOME-FullName[an]=Firefox Web Browser
|
||||
X-GNOME-FullName[ar]=متصفح Firefox
|
||||
X-GNOME-FullName[ast]=Firefox Web Browser
|
||||
X-GNOME-FullName[az]=Firefox Web Browser
|
||||
X-GNOME-FullName[be]=Вэб-браўзер Firefox
|
||||
X-GNOME-FullName[bg]=Firefox Уеб браузър
|
||||
X-GNOME-FullName[bn]=Firefox Web Browser
|
||||
X-GNOME-FullName[br]=Merdeer Web Firefox
|
||||
X-GNOME-FullName[bs]=Firefox web pretraživač
|
||||
X-GNOME-FullName[ca]=Navegador web Firefox
|
||||
X-GNOME-FullName[ca_valencia]=Firefox Web Browser
|
||||
X-GNOME-FullName[cak]=Firefox Web Browser
|
||||
X-GNOME-FullName[cs]=Webový prohlížeč Firefox
|
||||
X-GNOME-FullName[cy]=Porwr Gwe Firefox
|
||||
X-GNOME-FullName[da]=Firefox-browser
|
||||
X-GNOME-FullName[de]=Firefox-Web-Browser
|
||||
X-GNOME-FullName[dsb]=Webwobglědowak Firefox
|
||||
X-GNOME-FullName[el]=Πρόγραμμα περιήγησης Firefox
|
||||
X-GNOME-FullName[en_CA]=Firefox Web Browser
|
||||
X-GNOME-FullName[en_GB]=Firefox Web Browser
|
||||
X-GNOME-FullName[eo]=Retumilo Firefox
|
||||
X-GNOME-FullName[es_AR]=Navegador web Firefox
|
||||
X-GNOME-FullName[es_CL]=Navegador web Firefox
|
||||
X-GNOME-FullName[es_ES]=Navegador web Firefox
|
||||
X-GNOME-FullName[es_MX]=Navegador web Firefox
|
||||
X-GNOME-FullName[et]=Firefox Web Browser
|
||||
X-GNOME-FullName[eu]=Firefox web nabigatzailea
|
||||
X-GNOME-FullName[fa]=Firefox Web Browser
|
||||
X-GNOME-FullName[ff]=Firefox Web Browser
|
||||
X-GNOME-FullName[fi]=Firefox-verkkoselain
|
||||
X-GNOME-FullName[fr]=Navigateur web Firefox
|
||||
X-GNOME-FullName[fur]=Navigadôr web Firefox
|
||||
X-GNOME-FullName[fy_NL]=Firefox-webbrowser
|
||||
X-GNOME-FullName[ga_IE]=Firefox Web Browser
|
||||
X-GNOME-FullName[gd]=Brabhsair-lìn Firefox
|
||||
X-GNOME-FullName[gl]=Navegador web Firefox
|
||||
X-GNOME-FullName[gn]=Firefox Ñanduti Kundahára
|
||||
X-GNOME-FullName[gu_IN]=Firefox Web Browser
|
||||
X-GNOME-FullName[he]=דפדפן אינטרנט Firefox
|
||||
X-GNOME-FullName[hi_IN]=Firefox वेब ब्राउज़र
|
||||
X-GNOME-FullName[hr]=Firefox web preglednik
|
||||
X-GNOME-FullName[hsb]=Webwobhladowak Firefox
|
||||
X-GNOME-FullName[hu]=Firefox webböngésző
|
||||
X-GNOME-FullName[hy_AM]=Firefox վեբ դիտարկիչ
|
||||
X-GNOME-FullName[ia]=Navigator web Firefox
|
||||
X-GNOME-FullName[id]=Firefox Peramban Web
|
||||
X-GNOME-FullName[is]=Firefox-vafri
|
||||
X-GNOME-FullName[it]=Browser web Firefox
|
||||
X-GNOME-FullName[ja]=Firefox ウェブブラウザー
|
||||
X-GNOME-FullName[ka]=Firefox-ბრაუზერი
|
||||
X-GNOME-FullName[kab]=Iminig web Firefox
|
||||
X-GNOME-FullName[kk]=Firefox веб-браузері
|
||||
X-GNOME-FullName[km]=Firefox Web Browser
|
||||
X-GNOME-FullName[kn]=Firefox Web Browser
|
||||
X-GNOME-FullName[ko]=Firefox 웹 브라우저
|
||||
X-GNOME-FullName[lij]=Firefox Navegatô Web
|
||||
X-GNOME-FullName[lt]=Firefox Web Browser
|
||||
X-GNOME-FullName[lv]=Firefox tīmekļa pārlūks
|
||||
X-GNOME-FullName[mk]=Firefox Web Browser
|
||||
X-GNOME-FullName[mr]=Firefox Web Browser
|
||||
X-GNOME-FullName[ms]=Firefox Web Browser
|
||||
X-GNOME-FullName[my]=Firefox Web Browser
|
||||
X-GNOME-FullName[nb_NO]=Firefox-nettleser
|
||||
X-GNOME-FullName[ne_NP]=Firefox वेब ब्राउजर
|
||||
X-GNOME-FullName[nl]=Firefox-webbrowser
|
||||
X-GNOME-FullName[nn_NO]=Firefox-nettlesar
|
||||
X-GNOME-FullName[oc]=Navegador web Firefox
|
||||
X-GNOME-FullName[pa_IN]=Firefox ਵੈੱਬ ਬਰਾਊਜ਼ਰ
|
||||
X-GNOME-FullName[pl]=Przeglądarka Firefox
|
||||
X-GNOME-FullName[pt_BR]=Navegador web Firefox
|
||||
X-GNOME-FullName[pt_PT]=Navegador Web Firefox
|
||||
X-GNOME-FullName[rm]=Navigatur-web Firefox
|
||||
X-GNOME-FullName[ro]=Firefox Web Browser
|
||||
X-GNOME-FullName[ru]=Веб-браузер Firefox
|
||||
X-GNOME-FullName[sat]=Firefox ᱣᱮᱵᱽ ᱵᱽᱨᱟᱣᱡᱚᱨ
|
||||
X-GNOME-FullName[sc]=Navigadore web Firefox
|
||||
X-GNOME-FullName[sco]=Firefox Web Browser
|
||||
X-GNOME-FullName[si]=Firefox අතිරික්සුව
|
||||
X-GNOME-FullName[sk]=Webový prehliadač Firefox
|
||||
X-GNOME-FullName[skr]=Firefox ویب براؤزر
|
||||
X-GNOME-FullName[sl]=Spletni brskalnik Firefox
|
||||
X-GNOME-FullName[son]=Firefox Web Browser
|
||||
X-GNOME-FullName[sq]=Shfletuesi Firefox
|
||||
X-GNOME-FullName[sr]=Firefox веб прегледач
|
||||
X-GNOME-FullName[sv_SE]=Firefox webbläsare
|
||||
X-GNOME-FullName[szl]=Firefox Web Browser
|
||||
X-GNOME-FullName[ta]=Firefox Web Browser
|
||||
X-GNOME-FullName[te]=Firefox Web Browser
|
||||
X-GNOME-FullName[tg]=Браузери интернетии «Firefox»
|
||||
X-GNOME-FullName[th]=เว็บเบราว์เซอร์ Firefox
|
||||
X-GNOME-FullName[tl]=Firefox Web Browser
|
||||
X-GNOME-FullName[tr]=Firefox Web Tarayıcısı
|
||||
X-GNOME-FullName[trs]=Firefox Web riña gāchē nu’
|
||||
X-GNOME-FullName[uk]=Браузер Firefox
|
||||
X-GNOME-FullName[ur]=Firefox Web Browser
|
||||
X-GNOME-FullName[uz]=Firefox Web Browser
|
||||
X-GNOME-FullName[vi]=Trình duyệt Web Firefox
|
||||
X-GNOME-FullName[xh]=Firefox Web Browser
|
||||
X-GNOME-FullName[zh_CN]=Firefox 浏览器
|
||||
X-GNOME-FullName[zh_TW]=Firefox 網頁瀏覽器
|
||||
Exec=firefox %u
|
||||
Icon=firefox
|
||||
Terminal=false
|
||||
|
|
@ -49,226 +522,324 @@ Type=Application
|
|||
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
|
||||
StartupNotify=true
|
||||
Categories=Network;WebBrowser;
|
||||
Keywords=web;browser;internet;
|
||||
Actions=new-window;new-private-window;profile-manager-window;
|
||||
# Activable desktop file crashes KDE so remove it for now
|
||||
# DBusActivatable=true
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name=Open a New Window
|
||||
Name[ach]=Dirica manyen
|
||||
Name[af]=Nuwe venster
|
||||
Name[an]=Nueva finestra
|
||||
Name=New Window
|
||||
Name[ach]=New Window
|
||||
Name[af]=New Window
|
||||
Name[an]=New Window
|
||||
Name[ar]=نافذة جديدة
|
||||
Name[as]=নতুন উইন্ডো
|
||||
Name[ast]=Ventana nueva
|
||||
Name[az]=Yeni Pəncərə
|
||||
Name[ast]=New Window
|
||||
Name[az]=New Window
|
||||
Name[be]=Новае акно
|
||||
Name[bg]=Нов прозорец
|
||||
Name[bn_BD]=নতুন উইন্ডো (N)
|
||||
Name[bn_IN]=নতুন উইন্ডো
|
||||
Name[bn]=নতুন উইন্ডো
|
||||
Name[br]=Prenestr nevez
|
||||
Name[brx]=गोदान उइन्ड'(N)
|
||||
Name[bs]=Novi prozor
|
||||
Name[ca]=Finestra nova
|
||||
Name[cak]=K'ak'a' tzuwäch
|
||||
Name[ca_valencia]=New Window
|
||||
Name[cak]=K'ak'a' Tzuwäch
|
||||
Name[cs]=Nové okno
|
||||
Name[cy]=Ffenestr Newydd
|
||||
Name[da]=Nyt vindue
|
||||
Name[de]=Neues Fenster
|
||||
Name[dsb]=Nowe wokno
|
||||
Name[el]=Νέο παράθυρο
|
||||
Name[en_CA]=New Window
|
||||
Name[en_GB]=New Window
|
||||
Name[en_US]=New Window
|
||||
Name[en_ZA]=New Window
|
||||
Name[eo]=Nova fenestro
|
||||
Name[es_AR]=Nueva ventana
|
||||
Name[es_CL]=Nueva ventana
|
||||
Name[es_ES]=Nueva ventana
|
||||
Name[es_MX]=Nueva ventana
|
||||
Name[et]=Uus aken
|
||||
Name[et]=New Window
|
||||
Name[eu]=Leiho berria
|
||||
Name[fa]=پنجره جدید
|
||||
Name[ff]=Henorde Hesere
|
||||
Name[ff]=New Window
|
||||
Name[fi]=Uusi ikkuna
|
||||
Name[fr]=Nouvelle fenêtre
|
||||
Name[fur]=Gnûf barcon
|
||||
Name[fy_NL]=Nij finster
|
||||
Name[ga_IE]=Fuinneog Nua
|
||||
Name[ga_IE]=New Window
|
||||
Name[gd]=Uinneag ùr
|
||||
Name[gl]=Nova xanela
|
||||
Name[gn]=Ovetã pyahu
|
||||
Name[gu_IN]=નવી વિન્ડો
|
||||
Name[gu_IN]=New Window
|
||||
Name[he]=חלון חדש
|
||||
Name[hi_IN]=नया विंडो
|
||||
Name[hi_IN]=New Window
|
||||
Name[hr]=Novi prozor
|
||||
Name[hsb]=Nowe wokno
|
||||
Name[hu]=Új ablak
|
||||
Name[hy_AM]=Նոր Պատուհան
|
||||
Name[hy_AM]=Նոր պատուհան
|
||||
Name[ia]=Nove fenestra
|
||||
Name[id]=Jendela Baru
|
||||
Name[is]=Nýr gluggi
|
||||
Name[it]=Nuova finestra
|
||||
Name[ja]=新しいウィンドウ
|
||||
Name[ja_JP-mac]=新規ウインドウ
|
||||
Name[ka]=ახალი ფანჯარა
|
||||
Name[kab]=Asfaylu amaynut
|
||||
Name[kk]=Жаңа терезе
|
||||
Name[km]=បង្អួចថ្មី
|
||||
Name[kn]=ಹೊಸ ಕಿಟಕಿ
|
||||
Name[km]=New Window
|
||||
Name[kn]=New Window
|
||||
Name[ko]=새 창
|
||||
Name[kok]=नवें जनेल
|
||||
Name[ks]=نئئ وِنڈو
|
||||
Name[lij]=Neuvo barcon
|
||||
Name[lo]=ຫນ້າຕ່າງໃຫມ່
|
||||
Name[lt]=Naujas langas
|
||||
Name[ltg]=Jauns lūgs
|
||||
Name[lij]=Neuvo Barcon
|
||||
Name[lt]=New Window
|
||||
Name[lv]=Jauns logs
|
||||
Name[mai]=नव विंडो
|
||||
Name[mk]=Нов прозорец
|
||||
Name[ml]=പുതിയ ജാലകം
|
||||
Name[mr]=नवीन पटल
|
||||
Name[ms]=Tetingkap Baru
|
||||
Name[my]=ဝင်းဒိုးအသစ်
|
||||
Name[mk]=New Window
|
||||
Name[mr]=New Window
|
||||
Name[ms]=New Window
|
||||
Name[my]=New Window
|
||||
Name[nb_NO]=Nytt vindu
|
||||
Name[ne_NP]=नयाँ सञ्झ्याल
|
||||
Name[nl]=Nieuw venster
|
||||
Name[nn_NO]=Nytt vindauge
|
||||
Name[or]=ନୂତନ ୱିଣ୍ଡୋ
|
||||
Name[oc]=Fenèstra novèla
|
||||
Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ
|
||||
Name[pl]=Nowe okno
|
||||
Name[pt_BR]=Nova janela
|
||||
Name[pt_PT]=Nova janela
|
||||
Name[rm]=Nova fanestra
|
||||
Name[ro]=Fereastră nouă
|
||||
Name[ro]=New Window
|
||||
Name[ru]=Новое окно
|
||||
Name[sat]=नावा विंडो (N)
|
||||
Name[si]=නව කවුළුවක්
|
||||
Name[sat]=ᱱᱟᱶᱟ ᱣᱤᱱᱰᱳ
|
||||
Name[sc]=Ventana noa
|
||||
Name[sco]=New Window
|
||||
Name[si]=නව කවුළුව
|
||||
Name[sk]=Nové okno
|
||||
Name[skr]=نویں ونڈو
|
||||
Name[sl]=Novo okno
|
||||
Name[son]=Zanfun taaga
|
||||
Name[son]=New Window
|
||||
Name[sq]=Dritare e Re
|
||||
Name[sr]=Нови прозор
|
||||
Name[sv_SE]=Nytt fönster
|
||||
Name[ta]=புதிய சாளரம்
|
||||
Name[te]=కొత్త విండో
|
||||
Name[szl]=New Window
|
||||
Name[ta]=New Window
|
||||
Name[te]=కొత్త కిటికీ
|
||||
Name[tg]=Равзанаи нав
|
||||
Name[th]=หน้าต่างใหม่
|
||||
Name[tl]=New Window
|
||||
Name[tr]=Yeni pencere
|
||||
Name[tsz]=Eraatarakua jimpani
|
||||
Name[trs]=Bēntanâ nākàa
|
||||
Name[uk]=Нове вікно
|
||||
Name[ur]=نیا دریچہ
|
||||
Name[uz]=Yangi oyna
|
||||
Name[ur]=New Window
|
||||
Name[uz]=New Window
|
||||
Name[vi]=Cửa sổ mới
|
||||
Name[wo]=Palanteer bu bees
|
||||
Name[xh]=Ifestile entsha
|
||||
Name[xh]=New Window
|
||||
Name[zh_CN]=新建窗口
|
||||
Name[zh_TW]=開新視窗
|
||||
Exec=firefox --new-window %u
|
||||
|
||||
[Desktop Action new-private-window]
|
||||
Name=Open a New Private Window
|
||||
Name[ach]=Dirica manyen me mung
|
||||
Name[af]=Nuwe privaatvenster
|
||||
Name[an]=Nueva finestra privada
|
||||
Name=New Private Window
|
||||
Name[ach]=New Private Window
|
||||
Name[af]=New Private Window
|
||||
Name[an]=New Private Window
|
||||
Name[ar]=نافذة خاصة جديدة
|
||||
Name[as]=নতুন ব্যক্তিগত উইন্ডো
|
||||
Name[ast]=Ventana privada nueva
|
||||
Name[az]=Yeni Məxfi Pəncərə
|
||||
Name[be]=Новае акно адасаблення
|
||||
Name[bg]=Нов прозорец за поверително сърфиране
|
||||
Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো
|
||||
Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো
|
||||
Name[br]=Prenestr merdeiñ prevez nevez
|
||||
Name[brx]=गोदान प्राइभेट उइन्ड'
|
||||
Name[ast]=New Private Window
|
||||
Name[az]=New Private Window
|
||||
Name[be]=Новае прыватнае акно
|
||||
Name[bg]=Нов личен прозорец
|
||||
Name[bn]=নতুন ব্যক্তিগত উইন্ডো
|
||||
Name[br]=Prenestr prevez nevez
|
||||
Name[bs]=Novi privatni prozor
|
||||
Name[ca]=Finestra privada nova
|
||||
Name[cak]=K'ak'a' ichinan tzuwäch
|
||||
Name[ca_valencia]=New Private Window
|
||||
Name[cak]=K'ak'a' Ichinan Tzuwäch
|
||||
Name[cs]=Nové anonymní okno
|
||||
Name[cy]=Ffenestr Breifat Newydd
|
||||
Name[da]=Nyt privat vindue
|
||||
Name[de]=Neues privates Fenster
|
||||
Name[dsb]=Nowe priwatne wokno
|
||||
Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
|
||||
Name[el]=Νέο ιδιωτικό παράθυρο
|
||||
Name[en_CA]=New Private Window
|
||||
Name[en_GB]=New Private Window
|
||||
Name[en_US]=New Private Window
|
||||
Name[en_ZA]=New Private Window
|
||||
Name[eo]=Nova privata fenestro
|
||||
Name[es_AR]=Nueva ventana privada
|
||||
Name[es_CL]=Nueva ventana privada
|
||||
Name[es_ES]=Nueva ventana privada
|
||||
Name[es_MX]=Nueva ventana privada
|
||||
Name[et]=Uus privaatne aken
|
||||
Name[et]=New Private Window
|
||||
Name[eu]=Leiho pribatu berria
|
||||
Name[fa]=پنجره ناشناس جدید
|
||||
Name[ff]=Henorde Suturo Hesere
|
||||
Name[ff]=New Private Window
|
||||
Name[fi]=Uusi yksityinen ikkuna
|
||||
Name[fr]=Nouvelle fenêtre de navigation privée
|
||||
Name[fr]=Nouvelle fenêtre privée
|
||||
Name[fur]=Gnûf barcon privât
|
||||
Name[fy_NL]=Nij priveefinster
|
||||
Name[ga_IE]=Fuinneog Nua Phríobháideach
|
||||
Name[ga_IE]=New Private Window
|
||||
Name[gd]=Uinneag phrìobhaideach ùr
|
||||
Name[gl]=Nova xanela privada
|
||||
Name[gn]=Ovetã ñemi pyahu
|
||||
Name[gu_IN]=નવી ખાનગી વિન્ડો
|
||||
Name[gu_IN]=New Private Window
|
||||
Name[he]=חלון פרטי חדש
|
||||
Name[hi_IN]=नयी निजी विंडो
|
||||
Name[hi_IN]=New Private Window
|
||||
Name[hr]=Novi privatni prozor
|
||||
Name[hsb]=Nowe priwatne wokno
|
||||
Name[hu]=Új privát ablak
|
||||
Name[hy_AM]=Սկսել Գաղտնի դիտարկում
|
||||
Name[hy_AM]=Նոր գաղտնի պատուհան
|
||||
Name[ia]=Nove fenestra private
|
||||
Name[id]=Jendela Mode Pribadi Baru
|
||||
Name[is]=Nýr huliðsgluggi
|
||||
Name[it]=Nuova finestra anonima
|
||||
Name[ja]=新しいプライベートウィンドウ
|
||||
Name[ja_JP-mac]=新規プライベートウインドウ
|
||||
Name[ka]=ახალი პირადი ფანჯარა
|
||||
Name[kab]=Asfaylu amaynut n tunigin tusligt
|
||||
Name[kk]=Жаңа жекелік терезе
|
||||
Name[km]=បង្អួចឯកជនថ្មី
|
||||
Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ
|
||||
Name[ko]=새 사생활 보호 모드
|
||||
Name[kok]=नवो खाजगी विंडो
|
||||
Name[ks]=نْو پرایوٹ وینڈو&
|
||||
Name[lij]=Neuvo barcon privou
|
||||
Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່
|
||||
Name[lt]=Naujas privataus naršymo langas
|
||||
Name[ltg]=Jauns privatais lūgs
|
||||
Name[km]=New Private Window
|
||||
Name[kn]=New Private Window
|
||||
Name[ko]=새 사생활 보호 창
|
||||
Name[lij]=Neuvo Barcon Privòu
|
||||
Name[lt]=New Private Window
|
||||
Name[lv]=Jauns privātais logs
|
||||
Name[mai]=नया निज विंडो (W)
|
||||
Name[mk]=Нов приватен прозорец
|
||||
Name[ml]=പുതിയ സ്വകാര്യ ജാലകം
|
||||
Name[mr]=नवीन वैयक्तिक पटल
|
||||
Name[ms]=Tetingkap Persendirian Baharu
|
||||
Name[mk]=New Private Window
|
||||
Name[mr]=New Private Window
|
||||
Name[ms]=New Private Window
|
||||
Name[my]=New Private Window
|
||||
Name[nb_NO]=Nytt privat vindu
|
||||
Name[ne_NP]=नयाँ निजी सञ्झ्याल
|
||||
Name[nl]=Nieuw privévenster
|
||||
Name[nn_NO]=Nytt privat vindauge
|
||||
Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ
|
||||
Name[oc]=Fenèstra privada novèla
|
||||
Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
|
||||
Name[pl]=Nowe okno prywatne
|
||||
Name[pt_BR]=Nova janela privativa
|
||||
Name[pt_PT]=Nova janela privada
|
||||
Name[rm]=Nova fanestra privata
|
||||
Name[ro]=Fereastră privată nouă
|
||||
Name[ro]=New Private Window
|
||||
Name[ru]=Новое приватное окно
|
||||
Name[sat]=नावा निजेराक् विंडो (W )
|
||||
Name[si]=නව පුද්ගලික කවුළුව (W)
|
||||
Name[sk]=Nové okno v režime Súkromné prehliadanie
|
||||
Name[sat]=ᱱᱟᱶᱟ ᱱᱤᱡᱮᱨᱟᱜ ᱣᱤᱱᱰᱳ
|
||||
Name[sc]=Ventana privada noa
|
||||
Name[sco]=New Private Window
|
||||
Name[si]=නව පෞද්. කවුළුව
|
||||
Name[sk]=Nové súkromné okno
|
||||
Name[skr]=نویں نجی ونڈو
|
||||
Name[sl]=Novo zasebno okno
|
||||
Name[son]=Sutura zanfun taaga
|
||||
Name[son]=New Private Window
|
||||
Name[sq]=Dritare e Re Private
|
||||
Name[sr]=Нови приватан прозор
|
||||
Name[sr]=Нови приватни прозор
|
||||
Name[sv_SE]=Nytt privat fönster
|
||||
Name[ta]=புதிய தனிப்பட்ட சாளரம்
|
||||
Name[te]=కొత్త ఆంతరంగిక విండో
|
||||
Name[szl]=New Private Window
|
||||
Name[ta]=New Private Window
|
||||
Name[te]=కొత్త ఆంతరంగిక కిటికీ
|
||||
Name[tg]=Равзанаи хусусии нав
|
||||
Name[th]=หน้าต่างส่วนตัวใหม่
|
||||
Name[tl]=New Private Window
|
||||
Name[tr]=Yeni gizli pencere
|
||||
Name[tsz]=Juchiiti eraatarakua jimpani
|
||||
Name[trs]=Bēntanâ huì nākàa
|
||||
Name[uk]=Приватне вікно
|
||||
Name[ur]=نیا نجی دریچہ
|
||||
Name[uz]=Yangi maxfiy oyna
|
||||
Name[ur]=New Private Window
|
||||
Name[uz]=New Private Window
|
||||
Name[vi]=Cửa sổ riêng tư mới
|
||||
Name[wo]=Panlanteeru biir bu bees
|
||||
Name[xh]=Ifestile yangasese entsha
|
||||
Name[zh_CN]=新建隐私浏览窗口
|
||||
Name[zh_TW]=新增隱私視窗
|
||||
Name[xh]=New Private Window
|
||||
Name[zh_CN]=新建隐私窗口
|
||||
Name[zh_TW]=開新隱私視窗
|
||||
Exec=firefox --private-window %u
|
||||
|
||||
[Desktop Action profile-manager-window]
|
||||
Name=Open the Profile Manager
|
||||
Name[cs]=Správa profilů
|
||||
[Desktop Action open-profile-manager]
|
||||
Name=Open Profile Manager
|
||||
Name[ach]=Open Profile Manager
|
||||
Name[af]=Open Profile Manager
|
||||
Name[an]=Open Profile Manager
|
||||
Name[ar]=افتح مدير الملف الشخصي
|
||||
Name[ast]=Open Profile Manager
|
||||
Name[az]=Open Profile Manager
|
||||
Name[be]=Адкрыць менеджар профіляў
|
||||
Name[bg]=Отваряне на мениджъра на профили
|
||||
Name[bn]=Open Profile Manager
|
||||
Name[br]=Digeriñ an ardoer aeladoù
|
||||
Name[bs]=Otvori Menadžera profila
|
||||
Name[ca]=Obre el gestor de perfils
|
||||
Name[ca_valencia]=Open Profile Manager
|
||||
Name[cak]=Open Profile Manager
|
||||
Name[cs]=Otevřete Správce profilů
|
||||
Name[cy]=Agorwch y Rheolwr Proffil
|
||||
Name[da]=Åbn profilhåndtering
|
||||
Name[de]=Profilverwaltung öffnen
|
||||
Name[dsb]=Profilowy zastojnik wócyniś
|
||||
Name[el]=Άνοιγμα Διαχείρισης προφίλ
|
||||
Name[en_CA]=Open Profile Manager
|
||||
Name[en_GB]=Open Profile Manager
|
||||
Name[eo]=Malfermi administranton de profiloj
|
||||
Name[es_AR]=Abrir administrador de perfiles
|
||||
Name[es_CL]=Abrir administrador de perfiles
|
||||
Name[es_ES]=Abrir administrador de perfiles
|
||||
Name[es_MX]=Abrir administrador de perfiles
|
||||
Name[et]=Open Profile Manager
|
||||
Name[eu]=Ireki profilen kudeatzailea
|
||||
Name[fa]=Open Profile Manager
|
||||
Name[ff]=Open Profile Manager
|
||||
Name[fi]=Avaa profiilien hallinta
|
||||
Name[fr]=Ouvrir le gestionnaire de profils
|
||||
Name[fur]=Vierç gjestôr profîi
|
||||
Name[fy_NL]=Profylbehearder iepenje
|
||||
Name[ga_IE]=Open Profile Manager
|
||||
Name[gd]=Fosgail manaidsear nam pròifilean
|
||||
Name[gl]=Abrir o xestor de perfís
|
||||
Name[gn]=Embojuruja mba’ete ñangarekoha
|
||||
Name[gu_IN]=Open Profile Manager
|
||||
Name[he]=פתיחת מנהל הפרופילים
|
||||
Name[hi_IN]=Open Profile Manager
|
||||
Name[hr]=Otvori upravljač profila
|
||||
Name[hsb]=Zrjadowak profilow wočinić
|
||||
Name[hu]=Profilkezelő megnyitása
|
||||
Name[hy_AM]=Բացեք պրոֆիլի կառավարիչը
|
||||
Name[ia]=Aperir le gestor de profilo
|
||||
Name[id]=Buka Pengelola Profil
|
||||
Name[is]=Opna umsýslu notandasniða
|
||||
Name[it]=Apri gestore profili
|
||||
Name[ja]=プロファイルマネージャーを開く
|
||||
Name[ka]=პროფილის მმართველის გახსნა
|
||||
Name[kab]=Ldi amsefrak n umaɣnu
|
||||
Name[kk]=Профильдер бақарушысын ашу
|
||||
Name[km]=Open Profile Manager
|
||||
Name[kn]=Open Profile Manager
|
||||
Name[ko]=프로필 관리자 열기
|
||||
Name[lij]=Open Profile Manager
|
||||
Name[lt]=Open Profile Manager
|
||||
Name[lv]=Atvērt profilu pārvaldnieku
|
||||
Name[mk]=Open Profile Manager
|
||||
Name[mr]=Open Profile Manager
|
||||
Name[ms]=Open Profile Manager
|
||||
Name[my]=Open Profile Manager
|
||||
Name[nb_NO]=Åpne profilbehandler
|
||||
Name[ne_NP]=Open Profile Manager
|
||||
Name[nl]=Profielbeheerder openen
|
||||
Name[nn_NO]=Opne profilhandsaming
|
||||
Name[oc]=Dobrir lo gestionari de perfils
|
||||
Name[pa_IN]=ਪਰੋਫ਼ਾਈਲ ਮੈਨੇਜਰ ਖੋਲ੍ਹੋ
|
||||
Name[pl]=Menedżer profili
|
||||
Name[pt_BR]=Abrir gerenciador de perfis
|
||||
Name[pt_PT]=Abrir o Gestor de Perfis
|
||||
Name[rm]=Avrir l'administraziun da profils
|
||||
Name[ro]=Open Profile Manager
|
||||
Name[ru]=Открыть менеджер профилей
|
||||
Name[sat]=ᱢᱮᱫᱦᱟᱸ ᱢᱮᱱᱮᱡᱚᱨ ᱠᱷᱩᱞᱟᱹᱭ ᱢᱮ
|
||||
Name[sc]=Aberi su gestore de profilos
|
||||
Name[sco]=Open Profile Manager
|
||||
Name[si]=පැතිකඩ කළමනාකරු අරින්න
|
||||
Name[sk]=Otvoriť Správcu profilov
|
||||
Name[skr]=پروفائل منیجر کھولو
|
||||
Name[sl]=Odpri upravitelja profilov
|
||||
Name[son]=Open Profile Manager
|
||||
Name[sq]=Hapni Përgjegjës Profilesh
|
||||
Name[sr]=Отворите управљач профила
|
||||
Name[sv_SE]=Öppna Profilhanteraren
|
||||
Name[szl]=Open Profile Manager
|
||||
Name[ta]=Open Profile Manager
|
||||
Name[te]=Open Profile Manager
|
||||
Name[tg]=Кушодани мудири профилҳо
|
||||
Name[th]=เปิดตัวจัดการโปรไฟล์
|
||||
Name[tl]=Open Profile Manager
|
||||
Name[tr]=Profil yöneticisini aç
|
||||
Name[trs]=Sa nīkāj ñu’ūnj nej perfî huā nì’nï̀nj ïn
|
||||
Name[uk]=Відкрити менеджер профілів
|
||||
Name[ur]=Open Profile Manager
|
||||
Name[uz]=Open Profile Manager
|
||||
Name[vi]=Mở trình quản lý hồ sơ
|
||||
Name[xh]=Open Profile Manager
|
||||
Name[zh_CN]=打开配置文件管理器
|
||||
Name[zh_TW]=開啟設定檔管理員
|
||||
Exec=firefox --ProfileManager
|
||||
|
|
|
|||
|
|
@ -64,18 +64,8 @@ MOZ_DIST_BIN="$MOZ_LIB_DIR/firefox"
|
|||
MOZ_LANGPACKS_DIR="$MOZ_DIST_BIN/langpacks"
|
||||
MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
|
||||
MOZ_PROGRAM="$MOZ_DIST_BIN/$MOZ_FIREFOX_FILE"
|
||||
MOZ_LAUNCHER="$MOZ_DIST_BIN/run-mozilla.sh"
|
||||
GETENFORCE_FILE="/usr/sbin/getenforce"
|
||||
|
||||
##
|
||||
## Enable Wayland backend?
|
||||
##
|
||||
if __DEFAULT_WAYLAND__ && ! [ $MOZ_DISABLE_WAYLAND ]; then
|
||||
if [ "$XDG_CURRENT_DESKTOP" == "GNOME" ]; then
|
||||
export MOZ_ENABLE_WAYLAND=1
|
||||
fi
|
||||
fi
|
||||
|
||||
##
|
||||
## Use D-Bus remote exclusively when there's Wayland display.
|
||||
##
|
||||
|
|
@ -118,10 +108,14 @@ export MOZ_PLUGIN_PATH
|
|||
export MOZ_APP_LAUNCHER="/__PREFIX__/bin/firefox"
|
||||
|
||||
##
|
||||
## Set FONTCONFIG_PATH for Xft/fontconfig
|
||||
## We want Firefox to use Openh264 provided by Fedora.
|
||||
##
|
||||
## We used to configure it here but It's set by /etc/profile.d/gmpopenh264.sh
|
||||
## script from mozilla-openh264 package now. Let's keep it here just
|
||||
## for the record.
|
||||
##
|
||||
## export MOZ_GMP_PATH=$MOZ_LIB_DIR/mozilla/plugins/gmp-gmpopenh264/system-installed
|
||||
##
|
||||
FONTCONFIG_PATH="/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
|
||||
export FONTCONFIG_PATH
|
||||
|
||||
##
|
||||
## In order to better support certain scripts (such as Indic and some CJK
|
||||
|
|
@ -136,21 +130,10 @@ export FONTCONFIG_PATH
|
|||
# export MOZ_DISABLE_PANGO
|
||||
#
|
||||
|
||||
##
|
||||
## Disable the GNOME crash dialog, Moz has it's own
|
||||
##
|
||||
GNOME_DISABLE_CRASH_DIALOG=1
|
||||
export GNOME_DISABLE_CRASH_DIALOG
|
||||
|
||||
##
|
||||
## Disable the SLICE allocator (rhbz#1014858)
|
||||
##
|
||||
export G_SLICE=always-malloc
|
||||
|
||||
##
|
||||
## Enable Xinput2 (mozbz#1207973)
|
||||
##
|
||||
export MOZ_USE_XINPUT2=1
|
||||
export MOZ_USE_XINPUT2=${MOZ_USE_XINPUT2-1}
|
||||
|
||||
# OK, here's where all the real work gets done
|
||||
|
||||
|
|
@ -183,8 +166,8 @@ fi
|
|||
# When Firefox is not running, restore SELinux labels for profile files
|
||||
# (rhbz#1731371)
|
||||
if [ $MOZILLA_DOWN -ne 0 ]; then
|
||||
if [ -x $GETENFORCE_FILE ] && [ `getenforce` != "Disabled" ]; then
|
||||
(restorecon -vr ~/.mozilla/firefox/* &)
|
||||
if [ -x $GETENFORCE_FILE ] && [ `$GETENFORCE_FILE` != "Disabled" ]; then
|
||||
(restorecon -vr ~/.mozilla/firefox/*/gmp-widevinecdm/* &)
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
@ -220,8 +203,17 @@ if [ $MOZILLA_DOWN -ne 0 ]; then
|
|||
if [ -h $MOZ_LANGPACKS_DIR/$langpack ]; then
|
||||
langpack=`readlink $MOZ_LANGPACKS_DIR/$langpack`
|
||||
fi
|
||||
ln -s $MOZ_LANGPACKS_DIR/$langpack \
|
||||
$MOZ_EXTENSIONS_PROFILE_DIR/$langpack
|
||||
if [ -e "/run/ostree-booted" ]; then
|
||||
# Files on Silverblue has file create time set to 0,
|
||||
# so in case the langpack is updated Firefox does not
|
||||
# check for changes because it compares the file
|
||||
# creation date to do so.
|
||||
cp -f $MOZ_LANGPACKS_DIR/$langpack \
|
||||
$MOZ_EXTENSIONS_PROFILE_DIR/$langpack
|
||||
else
|
||||
ln -s $MOZ_LANGPACKS_DIR/$langpack \
|
||||
$MOZ_EXTENSIONS_PROFILE_DIR/$langpack
|
||||
fi
|
||||
echo $MOZ_EXTENSIONS_PROFILE_DIR/$langpack > $FEDORA_LANGPACK_CONFIG
|
||||
return 0
|
||||
fi
|
||||
|
|
@ -235,34 +227,11 @@ fi
|
|||
NSS_SSL_CBC_RANDOM_IV=${NSS_SSL_CBC_RANDOM_IV-1}
|
||||
export NSS_SSL_CBC_RANDOM_IV
|
||||
|
||||
# Prepare command line arguments
|
||||
script_args=""
|
||||
pass_arg_count=0
|
||||
while [ $# -gt $pass_arg_count ]
|
||||
do
|
||||
case "$1" in
|
||||
-g | --debug)
|
||||
script_args="$script_args -g"
|
||||
debugging=1
|
||||
shift
|
||||
;;
|
||||
-d | --debugger)
|
||||
if [ $# -gt 1 ]; then
|
||||
script_args="$script_args -d $2"
|
||||
shift 2
|
||||
else
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Move the unrecognized argument to the end of the list.
|
||||
arg="$1"
|
||||
shift
|
||||
set -- "$@" "$arg"
|
||||
pass_arg_count=`expr $pass_arg_count + 1`
|
||||
;;
|
||||
esac
|
||||
done
|
||||
# MOZ_APP_REMOTINGNAME links Firefox with desktop file name
|
||||
if [ -z "$MOZ_APP_REMOTINGNAME" ]
|
||||
then
|
||||
export MOZ_APP_REMOTINGNAME=__APP_NAME__
|
||||
fi
|
||||
|
||||
# Flatpak specific environment variables
|
||||
%FLATPAK_ENV_VARS%
|
||||
|
|
@ -274,7 +243,7 @@ export MOZ_ALLOW_DOWNGRADE=1
|
|||
debugging=0
|
||||
if [ $debugging = 1 ]
|
||||
then
|
||||
echo $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
|
||||
echo $MOZ_PROGRAM "$@"
|
||||
fi
|
||||
|
||||
exec $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
|
||||
exec $MOZ_PROGRAM "$@"
|
||||
|
|
|
|||
2160
firefox.spec
2160
firefox.spec
File diff suppressed because it is too large
Load diff
21
fix-cargo-checksum
Executable file
21
fix-cargo-checksum
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
if [ -z $1 ]; then
|
||||
echo "Fixes .cargo-checksum.json by removing deleted files and recompute sha256sum"
|
||||
echo "Usage: $0 .cargo-checksum.json"
|
||||
exit
|
||||
fi
|
||||
|
||||
FILE=$1
|
||||
#set -x
|
||||
cp $FILE $1.backup
|
||||
for i in $(cat .cargo-checksum.json|jq -r '.files| keys[]'); do
|
||||
if [ ! -f $i ]; then
|
||||
#echo $i non exist
|
||||
sed -ie "s|\"$i\":\"[^\"]*\",||" $FILE
|
||||
else
|
||||
SHA=`sha256sum $i | cut -d " " -f1`
|
||||
sed -ie "s|\"$i\":\"[^\"]*\"|\"$i\":\"$SHA\"|" $FILE
|
||||
fi
|
||||
|
||||
#echo $i
|
||||
done
|
||||
|
|
@ -12,7 +12,7 @@ to be used with 'cargo vendor' commmand.
|
|||
"""
|
||||
|
||||
[dependencies]
|
||||
cbindgen = "0.15.0"
|
||||
cbindgen = "0.29.1"
|
||||
|
||||
[[bin]]
|
||||
name = "dummy"
|
||||
|
|
|
|||
33
gen_dump_syms-vendor.sh
Executable file
33
gen_dump_syms-vendor.sh
Executable file
|
|
@ -0,0 +1,33 @@
|
|||
#!/bin/bash
|
||||
set -x
|
||||
|
||||
# Dummy Cargo.toml file with cbindgen dependency
|
||||
cat > Cargo.toml <<EOL
|
||||
[package]
|
||||
name = "dummy"
|
||||
version = "0.0.1"
|
||||
description = """
|
||||
This is a dummy package which contains dependency on cbindgen
|
||||
to be used with 'cargo vendor' commmand.
|
||||
"""
|
||||
|
||||
[dependencies]
|
||||
dump_syms = "=2.3.2"
|
||||
time = "0.3.36"
|
||||
|
||||
[[bin]]
|
||||
name = "dummy"
|
||||
path = "dummy.rs"
|
||||
doc = false
|
||||
EOL
|
||||
|
||||
cargo install cargo-vendor
|
||||
cargo vendor
|
||||
|
||||
cd vendor
|
||||
tar -cJf ../dump_syms-vendor.tar.xz *
|
||||
cd ..
|
||||
|
||||
rm -f Cargo.toml
|
||||
rm -rf vendor
|
||||
|
||||
|
|
@ -1,99 +0,0 @@
|
|||
diff -up firefox-75.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-75.0/extensions/pref/autoconfig/src/nsReadConfig.cpp
|
||||
--- firefox-75.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2020-04-03 21:34:41.000000000 +0200
|
||||
+++ firefox-75.0/extensions/pref/autoconfig/src/nsReadConfig.cpp 2020-04-06 22:40:02.760674871 +0200
|
||||
@@ -244,8 +244,20 @@ nsresult nsReadConfig::openAndEvaluateJS
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile);
|
||||
- if (NS_FAILED(rv)) return rv;
|
||||
+ if (NS_FAILED(rv)) {
|
||||
+ // Look for cfg file in /etc/<application>/pref
|
||||
+ rv = NS_GetSpecialDirectory(NS_APP_PREFS_SYSTEM_CONFIG_DIR,
|
||||
+ getter_AddRefs(jsFile));
|
||||
+ NS_ENSURE_SUCCESS(rv, rv);
|
||||
+
|
||||
+ rv = jsFile->AppendNative(nsLiteralCString("pref"));
|
||||
+ NS_ENSURE_SUCCESS(rv, rv);
|
||||
+ rv = jsFile->AppendNative(nsDependentCString(aFileName));
|
||||
+ NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
+ rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile);
|
||||
+ NS_ENSURE_SUCCESS(rv, rv);
|
||||
+ }
|
||||
} else {
|
||||
nsAutoCString location("resource://gre/defaults/autoconfig/");
|
||||
location += aFileName;
|
||||
diff -up firefox-75.0/modules/libpref/Preferences.cpp.1170092 firefox-75.0/modules/libpref/Preferences.cpp
|
||||
--- firefox-75.0/modules/libpref/Preferences.cpp.1170092 2020-04-06 22:40:02.761674865 +0200
|
||||
+++ firefox-75.0/modules/libpref/Preferences.cpp 2020-04-06 22:40:57.675325227 +0200
|
||||
@@ -4468,6 +4468,9 @@ nsresult Preferences::InitInitialObjects
|
||||
//
|
||||
// Thus, in the omni.jar case, we always load app-specific default
|
||||
// preferences from omni.jar, whether or not `$app == $gre`.
|
||||
+ //
|
||||
+ // At very end load configuration from system config location:
|
||||
+ // - /etc/firefox/pref/*.js
|
||||
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
UniquePtr<nsZipFind> find;
|
||||
diff -up firefox-75.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-75.0/toolkit/xre/nsXREDirProvider.cpp
|
||||
--- firefox-75.0/toolkit/xre/nsXREDirProvider.cpp.1170092 2020-04-03 21:35:39.000000000 +0200
|
||||
+++ firefox-75.0/toolkit/xre/nsXREDirProvider.cpp 2020-04-06 22:40:02.761674865 +0200
|
||||
@@ -60,6 +60,7 @@
|
||||
#endif
|
||||
#ifdef XP_UNIX
|
||||
# include <ctype.h>
|
||||
+# include "nsIXULAppInfo.h"
|
||||
#endif
|
||||
#ifdef XP_IOS
|
||||
# include "UIKitDirProvider.h"
|
||||
@@ -533,6 +534,21 @@ nsXREDirProvider::GetFile(const char* aP
|
||||
}
|
||||
}
|
||||
}
|
||||
+
|
||||
+#if defined(XP_UNIX)
|
||||
+ if (!strcmp(aProperty, NS_APP_PREFS_SYSTEM_CONFIG_DIR)) {
|
||||
+ nsCString sysConfigDir = nsLiteralCString("/etc/");
|
||||
+ nsCOMPtr<nsIXULAppInfo> appInfo = do_GetService("@mozilla.org/xre/app-info;1");
|
||||
+ if (!appInfo)
|
||||
+ return NS_ERROR_NOT_AVAILABLE;
|
||||
+ nsCString appName;
|
||||
+ appInfo->GetName(appName);
|
||||
+ ToLowerCase(appName);
|
||||
+ sysConfigDir.Append(appName);
|
||||
+ return NS_NewNativeLocalFile(sysConfigDir, false, aFile);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
if (NS_FAILED(rv) || !file) return NS_ERROR_FAILURE;
|
||||
|
||||
if (ensureFilePermissions) {
|
||||
@@ -845,6 +861,16 @@ nsresult nsXREDirProvider::GetFilesInter
|
||||
|
||||
LoadDirIntoArray(mXULAppDir, kAppendPrefDir, directories);
|
||||
|
||||
+ // Add /etc/<application>/pref/ directory if it exists
|
||||
+ nsCOMPtr<nsIFile> systemPrefDir;
|
||||
+ rv = NS_GetSpecialDirectory(NS_APP_PREFS_SYSTEM_CONFIG_DIR,
|
||||
+ getter_AddRefs(systemPrefDir));
|
||||
+ if (NS_SUCCEEDED(rv)) {
|
||||
+ rv = systemPrefDir->AppendNative(nsLiteralCString("pref"));
|
||||
+ if (NS_SUCCEEDED(rv))
|
||||
+ directories.AppendObject(systemPrefDir);
|
||||
+ }
|
||||
+
|
||||
rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile));
|
||||
} else if (!strcmp(aProperty, NS_APP_CHROME_DIR_LIST)) {
|
||||
// NS_APP_CHROME_DIR_LIST is only used to get default (native) icons
|
||||
diff -up firefox-75.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-75.0/xpcom/io/nsAppDirectoryServiceDefs.h
|
||||
--- firefox-75.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2020-04-03 21:35:39.000000000 +0200
|
||||
+++ firefox-75.0/xpcom/io/nsAppDirectoryServiceDefs.h 2020-04-06 22:40:02.761674865 +0200
|
||||
@@ -60,6 +60,7 @@
|
||||
#define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL"
|
||||
#define NS_APP_PREFS_OVERRIDE_DIR \
|
||||
"PrefDOverride" // Directory for per-profile defaults
|
||||
+#define NS_APP_PREFS_SYSTEM_CONFIG_DIR "PrefSysConf" // Directory with system-wide configuration
|
||||
|
||||
#define NS_APP_USER_PROFILE_50_DIR "ProfD"
|
||||
#define NS_APP_USER_PROFILE_LOCAL_50_DIR "ProfLD"
|
||||
|
|
@ -1,13 +1,12 @@
|
|||
diff -up firefox-80.0/widget/gtk/nsWindow.cpp.1196777 firefox-80.0/widget/gtk/nsWindow.cpp
|
||||
--- firefox-80.0/widget/gtk/nsWindow.cpp.1196777 2020-08-18 09:47:18.662833910 +0200
|
||||
+++ firefox-80.0/widget/gtk/nsWindow.cpp 2020-08-18 09:48:19.437478136 +0200
|
||||
@@ -158,7 +158,8 @@ const gint kEvents =
|
||||
GDK_EXPOSURE_MASK | GDK_STRUCTURE_MASK | GDK_VISIBILITY_NOTIFY_MASK |
|
||||
GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK |
|
||||
GDK_BUTTON_RELEASE_MASK | GDK_SMOOTH_SCROLL_MASK | GDK_TOUCH_MASK |
|
||||
- GDK_SCROLL_MASK | GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK;
|
||||
+ GDK_SCROLL_MASK | GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK |
|
||||
+ GDK_FOCUS_CHANGE_MASK;
|
||||
diff -up firefox-133.0/widget/gtk/nsWindow.cpp.1196777 firefox-133.0/widget/gtk/nsWindow.cpp
|
||||
--- firefox-133.0/widget/gtk/nsWindow.cpp.1196777 2024-11-22 09:32:52.293470407 +0100
|
||||
+++ firefox-133.0/widget/gtk/nsWindow.cpp 2024-11-22 10:21:54.996441520 +0100
|
||||
@@ -191,7 +191,7 @@ constexpr gint kEvents =
|
||||
GDK_VISIBILITY_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK |
|
||||
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_SMOOTH_SCROLL_MASK |
|
||||
GDK_TOUCH_MASK | GDK_SCROLL_MASK | GDK_POINTER_MOTION_MASK |
|
||||
- GDK_PROPERTY_CHANGE_MASK;
|
||||
+ GDK_PROPERTY_CHANGE_MASK | GDK_FOCUS_CHANGE_MASK;
|
||||
|
||||
#if !GTK_CHECK_VERSION(3, 22, 0)
|
||||
typedef enum {
|
||||
/* utility functions */
|
||||
static bool is_mouse_in_window(GdkWindow* aWindow, gdouble aMouseX,
|
||||
|
|
|
|||
|
|
@ -1,16 +1,15 @@
|
|||
diff --git a/security/sandbox/linux/moz.build b/security/sandbox/linux/moz.build
|
||||
--- a/security/sandbox/linux/moz.build
|
||||
+++ b/security/sandbox/linux/moz.build
|
||||
@@ -99,9 +99,8 @@
|
||||
diff -up firefox-84.0/security/sandbox/linux/moz.build.1516803 firefox-84.0/security/sandbox/linux/moz.build
|
||||
--- firefox-84.0/security/sandbox/linux/moz.build.1516803 2020-12-10 16:17:55.425139545 +0100
|
||||
+++ firefox-84.0/security/sandbox/linux/moz.build 2020-12-10 16:29:21.945860841 +0100
|
||||
@@ -114,9 +114,8 @@ if CONFIG["CC_TYPE"] in ("clang", "gcc")
|
||||
# gcc lto likes to put the top level asm in syscall.cc in a different partition
|
||||
# from the function using it which breaks the build. Work around that by
|
||||
# forcing there to be only one partition.
|
||||
-for f in CONFIG['OS_CXXFLAGS']:
|
||||
- if f.startswith('-flto') and CONFIG['CC_TYPE'] != 'clang':
|
||||
- LDFLAGS += ['--param lto-partitions=1']
|
||||
-for f in CONFIG["OS_CXXFLAGS"]:
|
||||
- if f.startswith("-flto") and CONFIG["CC_TYPE"] != "clang":
|
||||
- LDFLAGS += ["--param lto-partitions=1"]
|
||||
+if CONFIG['CC_TYPE'] != 'clang':
|
||||
+ LDFLAGS += ['--param', 'lto-partitions=1']
|
||||
|
||||
DEFINES['NS_NO_XPCOM'] = True
|
||||
DEFINES["NS_NO_XPCOM"] = True
|
||||
DisableStlWrapping()
|
||||
|
||||
|
|
|
|||
|
|
@ -1,25 +0,0 @@
|
|||
diff --git a/gfx/angle/checkout/src/compiler/translator/tree_util/IntermTraverse.cpp b/gfx/angle/checkout/src/compiler/translator/tree_util/IntermTraverse.cpp
|
||||
index c38baa12bffa8..2858a7bb4d319 100644
|
||||
--- a/gfx/angle/checkout/src/compiler/translator/tree_util/IntermTraverse.cpp
|
||||
+++ b/gfx/angle/checkout/src/compiler/translator/tree_util/IntermTraverse.cpp
|
||||
@@ -45,16 +45,20 @@ void TIntermTraverser::traverse(T *node)
|
||||
++childIndex;
|
||||
}
|
||||
|
||||
if (visit && postVisit)
|
||||
node->visit(PostVisit, this);
|
||||
}
|
||||
}
|
||||
|
||||
+// Instantiate template for RewriteAtomicFunctionExpressions.
|
||||
+template
|
||||
+void TIntermTraverser::traverse(TIntermNode *);
|
||||
+
|
||||
void TIntermNode::traverse(TIntermTraverser *it)
|
||||
{
|
||||
it->traverse(this);
|
||||
}
|
||||
|
||||
void TIntermSymbol::traverse(TIntermTraverser *it)
|
||||
{
|
||||
TIntermTraverser::ScopedNodeInTraversalPath addToPath(it, this);
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
diff --git a/config/makefiles/rust.mk b/config/makefiles/rust.mk
|
||||
--- a/config/makefiles/rust.mk
|
||||
+++ b/config/makefiles/rust.mk
|
||||
@@ -61,7 +61,11 @@
|
||||
# Enable link-time optimization for release builds, but not when linking
|
||||
# gkrust_gtest.
|
||||
ifeq (,$(findstring gkrust_gtest,$(RUST_LIBRARY_FILE)))
|
||||
+# Pass -Clto for older versions of rust, and CARGO_PROFILE_RELEASE_LTO=true
|
||||
+# for newer ones that support it. Combining the latter with -Clto works, so
|
||||
+# set both everywhere.
|
||||
cargo_rustc_flags += -Clto
|
||||
+export CARGO_PROFILE_RELEASE_LTO=true
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
changeset: 544864:a8603f131703
|
||||
tag: tip
|
||||
parent: 544861:161920b70ae4
|
||||
user: Martin Stransky <stransky@redhat.com>
|
||||
date: Fri Jul 31 13:39:48 2020 +0200
|
||||
files: dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h
|
||||
description:
|
||||
Bug 1645671 [Linux/VA-API] Create DMABufSurfaceWrapper directly at nsTAttay and disable DMABufSurfaceWrapper class copy and assignment constructors, r?jya
|
||||
|
||||
When DMABufSurfaceWrapper is added to nsTArray, a temporary local DMABufSurfaceWrapper object is created. When the temporary
|
||||
object is deleted after the adding, associated dmabuf data is released which leads to rendering artifact during VA-API video playback.
|
||||
|
||||
As a fix in this patch we create DMABufSurfaceWrapper 'in-place' at nsTAttay.
|
||||
We also disable DMABufSurfaceWrapper class copy and assignment constructors to avoid similar potential issues.
|
||||
|
||||
Differential Revision: https://phabricator.services.mozilla.com/D85152
|
||||
|
||||
|
||||
diff --git a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp
|
||||
--- a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp
|
||||
+++ b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp
|
||||
@@ -777,17 +777,17 @@ MediaResult FFmpegVideoDecoder<LIBAV_VER
|
||||
RESULT_DETAIL("Unable to get DMABufSurfaceYUV"));
|
||||
}
|
||||
|
||||
# ifdef MOZ_LOGGING
|
||||
static int uid = 0;
|
||||
surface->SetUID(++uid);
|
||||
FFMPEG_LOG("Created new DMABufSurface UID = %d", uid);
|
||||
# endif
|
||||
- mDMABufSurfaces.AppendElement(DMABufSurfaceWrapper(surface, mLib));
|
||||
+ mDMABufSurfaces.EmplaceBack(surface, mLib);
|
||||
surfaceWrapper = &(mDMABufSurfaces[mDMABufSurfaces.Length() - 1]);
|
||||
} else {
|
||||
surface = surfaceWrapper->GetDMABufSurface();
|
||||
bool ret;
|
||||
|
||||
if (mVAAPIDeviceContext) {
|
||||
ret = surface->UpdateYUVData(vaDesc);
|
||||
} else {
|
||||
diff --git a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h
|
||||
--- a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h
|
||||
+++ b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h
|
||||
@@ -70,16 +70,22 @@ class DMABufSurfaceWrapper final {
|
||||
// Check if DMABufSurface is used by any gecko rendering process
|
||||
// (WebRender or GL compositor) or by DMABUFSurfaceImage/VideoData.
|
||||
bool IsUsed() const { return mSurface->IsGlobalRefSet(); }
|
||||
|
||||
RefPtr<DMABufSurfaceYUV> GetDMABufSurface() const {
|
||||
return mSurface->GetAsDMABufSurfaceYUV();
|
||||
}
|
||||
|
||||
+ // Don't allow DMABufSurfaceWrapper plain copy as it leads to
|
||||
+ // enexpected DMABufSurface/HW buffer releases and we don't want to
|
||||
+ // deep copy them.
|
||||
+ DMABufSurfaceWrapper(const DMABufSurfaceWrapper&) = delete;
|
||||
+ const DMABufSurfaceWrapper& operator=(DMABufSurfaceWrapper const&) = delete;
|
||||
+
|
||||
private:
|
||||
const RefPtr<DMABufSurface> mSurface;
|
||||
const FFmpegLibWrapper* mLib;
|
||||
AVBufferRef* mAVHWFramesContext;
|
||||
AVBufferRef* mHWAVBuffer;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
diff --git a/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp b/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp
|
||||
--- a/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp
|
||||
+++ b/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp
|
||||
@@ -86,7 +86,7 @@ bool GMPDecoderModule::SupportsMimeType(
|
||||
|
||||
bool GMPDecoderModule::SupportsMimeType(
|
||||
const nsACString& aMimeType, DecoderDoctorDiagnostics* aDiagnostics) const {
|
||||
- return false;
|
||||
+ return MP4Decoder::IsH264(aMimeType);
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
diff --git a/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp b/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp
|
||||
--- a/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp
|
||||
+++ b/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp
|
||||
@@ -67,6 +67,8 @@ void GMPVideoDecoder::Decoded(GMPVideoi4
|
||||
RefPtr<GMPVideoDecoder> self = this;
|
||||
if (v) {
|
||||
mDecodedData.AppendElement(std::move(v));
|
||||
+ mDecodePromise.ResolveIfExists(std::move(mDecodedData), __func__);
|
||||
+ mDecodedData = DecodedData();
|
||||
} else {
|
||||
mDecodedData.Clear();
|
||||
mDecodePromise.RejectIfExists(
|
||||
diff -up firefox-81.0.2/dom/media/gmp/GMPSharedMemManager.h.oldd firefox-81.0.2/dom/media/gmp/GMPSharedMemManager.h
|
||||
--- firefox-81.0.2/dom/media/gmp/GMPSharedMemManager.h.oldd 2020-10-12 18:19:09.158070701 +0200
|
||||
+++ firefox-81.0.2/dom/media/gmp/GMPSharedMemManager.h 2020-10-12 18:19:18.398109540 +0200
|
||||
@@ -27,7 +27,7 @@ class GMPSharedMem {
|
||||
// returned to the parent pool (which is not included). If more than
|
||||
// this are needed, we presume the client has either crashed or hung
|
||||
// (perhaps temporarily).
|
||||
- static const uint32_t kGMPBufLimit = 20;
|
||||
+ static const uint32_t kGMPBufLimit = 40;
|
||||
|
||||
GMPSharedMem() {
|
||||
for (size_t i = 0; i < sizeof(mGmpAllocated) / sizeof(mGmpAllocated[0]);
|
||||
|
|
@ -1,32 +1,20 @@
|
|||
changeset: 551978:40c95986d358
|
||||
tag: tip
|
||||
parent: 551976:daadcfadb2f8
|
||||
user: stransky <stransky@redhat.com>
|
||||
date: Thu Sep 24 15:51:06 2020 +0200
|
||||
files: media/ffvpx/libavcodec/codec_list.c media/ffvpx/libavcodec/libfdk-aacdec.c media/ffvpx/libavcodec/moz.build toolkit/moz.configure
|
||||
description:
|
||||
Bug 1667096 Add libfdk-aacdec.c to bundled ffvpx and allow build Firefox with system fdk-aac-free library, r?jya
|
||||
|
||||
Differential Revision: https://phabricator.services.mozilla.com/D91278
|
||||
|
||||
|
||||
diff --git a/media/ffvpx/libavcodec/codec_list.c b/media/ffvpx/libavcodec/codec_list.c
|
||||
--- a/media/ffvpx/libavcodec/codec_list.c
|
||||
+++ b/media/ffvpx/libavcodec/codec_list.c
|
||||
@@ -11,4 +11,8 @@ static const AVCodec * const codec_list[
|
||||
diff -up firefox-127.0/media/ffvpx/libavcodec/codec_list.c.1667096 firefox-127.0/media/ffvpx/libavcodec/codec_list.c
|
||||
--- firefox-127.0/media/ffvpx/libavcodec/codec_list.c.1667096 2024-06-06 23:33:57.000000000 +0200
|
||||
+++ firefox-127.0/media/ffvpx/libavcodec/codec_list.c 2024-06-10 12:42:39.353913204 +0200
|
||||
@@ -11,6 +11,9 @@ static const FFCodec * const codec_list[
|
||||
#if CONFIG_MP3_DECODER
|
||||
&ff_mp3_decoder,
|
||||
#endif
|
||||
+#ifdef CONFIG_LIBFDK_AAC
|
||||
+ &ff_libfdk_aac_decoder,
|
||||
+#endif
|
||||
+
|
||||
NULL };
|
||||
diff --git a/media/ffvpx/libavcodec/libfdk-aacdec.c b/media/ffvpx/libavcodec/libfdk-aacdec.c
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/media/ffvpx/libavcodec/libfdk-aacdec.c
|
||||
@@ -0,0 +1,409 @@
|
||||
#if CONFIG_LIBDAV1D
|
||||
&ff_libdav1d_decoder,
|
||||
#endif
|
||||
diff -up firefox-127.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 firefox-127.0/media/ffvpx/libavcodec/libfdk-aacdec.c
|
||||
--- firefox-127.0/media/ffvpx/libavcodec/libfdk-aacdec.c.1667096 2024-06-10 12:42:39.354913201 +0200
|
||||
+++ firefox-127.0/media/ffvpx/libavcodec/libfdk-aacdec.c 2024-06-10 16:28:30.332367814 +0200
|
||||
@@ -0,0 +1,498 @@
|
||||
+/*
|
||||
+ * AAC decoder wrapper
|
||||
+ * Copyright (c) 2012 Martin Storsjo
|
||||
|
|
@ -51,8 +39,10 @@ new file mode 100644
|
|||
+#include "libavutil/channel_layout.h"
|
||||
+#include "libavutil/common.h"
|
||||
+#include "libavutil/opt.h"
|
||||
+#include "libavutil/mem.h"
|
||||
+#include "avcodec.h"
|
||||
+#include "internal.h"
|
||||
+#include "codec_internal.h"
|
||||
+#include "decode.h"
|
||||
+
|
||||
+#ifdef AACDECODER_LIB_VL0
|
||||
+#define FDKDEC_VER_AT_LEAST(vl0, vl1) \
|
||||
|
|
@ -85,7 +75,14 @@ new file mode 100644
|
|||
+ int drc_heavy;
|
||||
+ int drc_effect;
|
||||
+ int drc_cut;
|
||||
+ int album_mode;
|
||||
+ int level_limit;
|
||||
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
|
||||
+ int output_delay_set;
|
||||
+ int flush_samples;
|
||||
+ int delay_samples;
|
||||
+#endif
|
||||
+ AVChannelLayout downmix_layout;
|
||||
+} FDKAACDecContext;
|
||||
+
|
||||
+
|
||||
|
|
@ -104,17 +101,23 @@ new file mode 100644
|
|||
+ OFFSET(drc_boost), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 127, AD, NULL },
|
||||
+ { "drc_cut", "Dynamic Range Control: attenuation factor, where [0] is none and [127] is max compression",
|
||||
+ OFFSET(drc_cut), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 127, AD, NULL },
|
||||
+ { "drc_level", "Dynamic Range Control: reference level, quantized to 0.25dB steps where [0] is 0dB and [127] is -31.75dB",
|
||||
+ OFFSET(drc_level), AV_OPT_TYPE_INT, { .i64 = -1}, -1, 127, AD, NULL },
|
||||
+ { "drc_level", "Dynamic Range Control: reference level, quantized to 0.25dB steps where [0] is 0dB and [127] is -31.75dB, -1 for auto, and -2 for disabled",
|
||||
+ OFFSET(drc_level), AV_OPT_TYPE_INT, { .i64 = -1}, -2, 127, AD, NULL },
|
||||
+ { "drc_heavy", "Dynamic Range Control: heavy compression, where [1] is on (RF mode) and [0] is off",
|
||||
+ OFFSET(drc_heavy), AV_OPT_TYPE_INT, { .i64 = -1}, -1, 1, AD, NULL },
|
||||
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
|
||||
+ { "level_limit", "Signal level limiting", OFFSET(level_limit), AV_OPT_TYPE_INT, { .i64 = 0 }, -1, 1, AD },
|
||||
+ { "level_limit", "Signal level limiting",
|
||||
+ OFFSET(level_limit), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, AD },
|
||||
+#endif
|
||||
+#if FDKDEC_VER_AT_LEAST(3, 0) // 3.0.0
|
||||
+ { "drc_effect","Dynamic Range Control: effect type, where e.g. [0] is none and [6] is general",
|
||||
+ OFFSET(drc_effect), AV_OPT_TYPE_INT, { .i64 = -1}, -1, 8, AD, NULL },
|
||||
+#endif
|
||||
+#if FDKDEC_VER_AT_LEAST(3, 1) // 3.1.0
|
||||
+ { "album_mode","Dynamic Range Control: album mode, where [0] is off and [1] is on",
|
||||
+ OFFSET(album_mode), AV_OPT_TYPE_INT, { .i64 = -1}, -1, 1, AD, NULL },
|
||||
+#endif
|
||||
+ { "downmix", "Request a specific channel layout from the decoder", OFFSET(downmix_layout), AV_OPT_TYPE_CHLAYOUT, {.str = NULL}, .flags = AD },
|
||||
+ { NULL }
|
||||
+};
|
||||
+
|
||||
|
|
@ -144,6 +147,14 @@ new file mode 100644
|
|||
+ }
|
||||
+ avctx->sample_rate = info->sampleRate;
|
||||
+ avctx->frame_size = info->frameSize;
|
||||
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
|
||||
+ if (!s->output_delay_set && info->outputDelay) {
|
||||
+ // Set this only once.
|
||||
+ s->flush_samples = info->outputDelay;
|
||||
+ s->delay_samples = info->outputDelay;
|
||||
+ s->output_delay_set = 1;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ for (i = 0; i < info->numChannels; i++) {
|
||||
+ AUDIO_CHANNEL_TYPE ctype = info->pChannelType[i];
|
||||
|
|
@ -221,17 +232,15 @@ new file mode 100644
|
|||
+ ch_error = 1;
|
||||
+ }
|
||||
+ }
|
||||
+ if (!ch_error &&
|
||||
+ av_get_channel_layout_nb_channels(ch_layout) != info->numChannels) {
|
||||
+
|
||||
+ av_channel_layout_uninit(&avctx->ch_layout);
|
||||
+ av_channel_layout_from_mask(&avctx->ch_layout, ch_layout);
|
||||
+ if (!ch_error && avctx->ch_layout.nb_channels != info->numChannels) {
|
||||
+ av_log(avctx, AV_LOG_WARNING, "unsupported channel configuration\n");
|
||||
+ ch_error = 1;
|
||||
+ }
|
||||
+ if (ch_error)
|
||||
+ avctx->channel_layout = 0;
|
||||
+ else
|
||||
+ avctx->channel_layout = ch_layout;
|
||||
+
|
||||
+ avctx->channels = info->numChannels;
|
||||
+ avctx->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
|
|
@ -273,11 +282,19 @@ new file mode 100644
|
|||
+ return AVERROR_UNKNOWN;
|
||||
+ }
|
||||
+
|
||||
+ if (avctx->request_channel_layout > 0 &&
|
||||
+ avctx->request_channel_layout != AV_CH_LAYOUT_NATIVE) {
|
||||
+#if FF_API_OLD_CHANNEL_LAYOUT
|
||||
+FF_DISABLE_DEPRECATION_WARNINGS
|
||||
+ if (avctx->request_channel_layout) {
|
||||
+ av_channel_layout_uninit(&s->downmix_layout);
|
||||
+ av_channel_layout_from_mask(&s->downmix_layout, avctx->request_channel_layout);
|
||||
+ }
|
||||
+FF_ENABLE_DEPRECATION_WARNINGS
|
||||
+#endif
|
||||
+ if (s->downmix_layout.nb_channels > 0 &&
|
||||
+ s->downmix_layout.order != AV_CHANNEL_ORDER_NATIVE) {
|
||||
+ int downmix_channels = -1;
|
||||
+
|
||||
+ switch (avctx->request_channel_layout) {
|
||||
+ switch (s->downmix_layout.u.mask) {
|
||||
+ case AV_CH_LAYOUT_STEREO:
|
||||
+ case AV_CH_LAYOUT_STEREO_DOWNMIX:
|
||||
+ downmix_channels = 2;
|
||||
|
|
@ -286,7 +303,7 @@ new file mode 100644
|
|||
+ downmix_channels = 1;
|
||||
+ break;
|
||||
+ default:
|
||||
+ av_log(avctx, AV_LOG_WARNING, "Invalid request_channel_layout\n");
|
||||
+ av_log(avctx, AV_LOG_WARNING, "Invalid downmix option\n");
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
|
|
@ -323,6 +340,12 @@ new file mode 100644
|
|||
+ }
|
||||
+
|
||||
+ if (s->drc_level != -1) {
|
||||
+ // This option defaults to -1, i.e. not calling
|
||||
+ // aacDecoder_SetParam(AAC_DRC_REFERENCE_LEVEL) at all, which defaults
|
||||
+ // to the level from DRC metadata, if available. The user can set
|
||||
+ // -drc_level -2, which calls aacDecoder_SetParam(
|
||||
+ // AAC_DRC_REFERENCE_LEVEL) with a negative value, which then
|
||||
+ // explicitly disables the feature.
|
||||
+ if (aacDecoder_SetParam(s->handle, AAC_DRC_REFERENCE_LEVEL, s->drc_level) != AAC_DEC_OK) {
|
||||
+ av_log(avctx, AV_LOG_ERROR, "Unable to set DRC reference level in the decoder\n");
|
||||
+ return AVERROR_UNKNOWN;
|
||||
|
|
@ -337,6 +360,7 @@ new file mode 100644
|
|||
+ }
|
||||
+
|
||||
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
|
||||
+ // Setting this parameter to -1 enables the auto behaviour in the library.
|
||||
+ if (aacDecoder_SetParam(s->handle, AAC_PCM_LIMITER_ENABLE, s->level_limit) != AAC_DEC_OK) {
|
||||
+ av_log(avctx, AV_LOG_ERROR, "Unable to set in signal level limiting in the decoder\n");
|
||||
+ return AVERROR_UNKNOWN;
|
||||
|
|
@ -352,6 +376,15 @@ new file mode 100644
|
|||
+ }
|
||||
+#endif
|
||||
+
|
||||
+#if FDKDEC_VER_AT_LEAST(3, 1) // 3.1.0
|
||||
+ if (s->album_mode != -1) {
|
||||
+ if (aacDecoder_SetParam(s->handle, AAC_UNIDRC_ALBUM_MODE, s->album_mode) != AAC_DEC_OK) {
|
||||
+ av_log(avctx, AV_LOG_ERROR, "Unable to set album mode in the decoder\n");
|
||||
+ return AVERROR_UNKNOWN;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ avctx->sample_fmt = AV_SAMPLE_FMT_S16;
|
||||
+
|
||||
+ s->decoder_buffer_size = DECODER_BUFFSIZE * DECODER_MAX_CHANNELS;
|
||||
|
|
@ -362,22 +395,38 @@ new file mode 100644
|
|||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int fdk_aac_decode_frame(AVCodecContext *avctx, void *data,
|
||||
+static int fdk_aac_decode_frame(AVCodecContext *avctx, AVFrame *frame,
|
||||
+ int *got_frame_ptr, AVPacket *avpkt)
|
||||
+{
|
||||
+ FDKAACDecContext *s = avctx->priv_data;
|
||||
+ AVFrame *frame = data;
|
||||
+ int ret;
|
||||
+ AAC_DECODER_ERROR err;
|
||||
+ UINT valid = avpkt->size;
|
||||
+ UINT flags = 0;
|
||||
+ int input_offset = 0;
|
||||
+
|
||||
+ err = aacDecoder_Fill(s->handle, &avpkt->data, &avpkt->size, &valid);
|
||||
+ if (err != AAC_DEC_OK) {
|
||||
+ av_log(avctx, AV_LOG_ERROR, "aacDecoder_Fill() failed: %x\n", err);
|
||||
+ return AVERROR_INVALIDDATA;
|
||||
+ if (avpkt->size) {
|
||||
+ err = aacDecoder_Fill(s->handle, &avpkt->data, &avpkt->size, &valid);
|
||||
+ if (err != AAC_DEC_OK) {
|
||||
+ av_log(avctx, AV_LOG_ERROR, "aacDecoder_Fill() failed: %x\n", err);
|
||||
+ return AVERROR_INVALIDDATA;
|
||||
+ }
|
||||
+ } else {
|
||||
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
|
||||
+ /* Handle decoder draining */
|
||||
+ if (s->flush_samples > 0) {
|
||||
+ flags |= AACDEC_FLUSH;
|
||||
+ } else {
|
||||
+ return AVERROR_EOF;
|
||||
+ }
|
||||
+#else
|
||||
+ return AVERROR_EOF;
|
||||
+#endif
|
||||
+ }
|
||||
+
|
||||
+ err = aacDecoder_DecodeFrame(s->handle, (INT_PCM *) s->decoder_buffer, s->decoder_buffer_size / sizeof(INT_PCM), 0);
|
||||
+ err = aacDecoder_DecodeFrame(s->handle, (INT_PCM *) s->decoder_buffer,
|
||||
+ s->decoder_buffer_size / sizeof(INT_PCM),
|
||||
+ flags);
|
||||
+ if (err == AAC_DEC_NOT_ENOUGH_BITS) {
|
||||
+ ret = avpkt->size - valid;
|
||||
+ goto end;
|
||||
|
|
@ -393,11 +442,36 @@ new file mode 100644
|
|||
+ goto end;
|
||||
+ frame->nb_samples = avctx->frame_size;
|
||||
+
|
||||
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
|
||||
+ if (flags & AACDEC_FLUSH) {
|
||||
+ // Only return the right amount of samples at the end; if calling the
|
||||
+ // decoder with AACDEC_FLUSH, it will keep returning frames indefinitely.
|
||||
+ frame->nb_samples = FFMIN(s->flush_samples, frame->nb_samples);
|
||||
+ av_log(s, AV_LOG_DEBUG, "Returning %d/%d delayed samples.\n",
|
||||
+ frame->nb_samples, s->flush_samples);
|
||||
+ s->flush_samples -= frame->nb_samples;
|
||||
+ } else {
|
||||
+ // Trim off samples from the start to compensate for extra decoder
|
||||
+ // delay. We could also just adjust the pts, but this avoids
|
||||
+ // including the extra samples in the output altogether.
|
||||
+ if (s->delay_samples) {
|
||||
+ int drop_samples = FFMIN(s->delay_samples, frame->nb_samples);
|
||||
+ av_log(s, AV_LOG_DEBUG, "Dropping %d/%d delayed samples.\n",
|
||||
+ drop_samples, s->delay_samples);
|
||||
+ s->delay_samples -= drop_samples;
|
||||
+ frame->nb_samples -= drop_samples;
|
||||
+ input_offset = drop_samples * avctx->ch_layout.nb_channels;
|
||||
+ if (frame->nb_samples <= 0)
|
||||
+ return 0;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
|
||||
+ goto end;
|
||||
+
|
||||
+ memcpy(frame->extended_data[0], s->decoder_buffer,
|
||||
+ avctx->channels * avctx->frame_size *
|
||||
+ memcpy(frame->extended_data[0], s->decoder_buffer + input_offset,
|
||||
+ avctx->ch_layout.nb_channels * frame->nb_samples *
|
||||
+ av_get_bytes_per_sample(avctx->sample_fmt));
|
||||
+
|
||||
+ *got_frame_ptr = 1;
|
||||
|
|
@ -420,28 +494,31 @@ new file mode 100644
|
|||
+ av_log(avctx, AV_LOG_WARNING, "failed to clear buffer when flushing\n");
|
||||
+}
|
||||
+
|
||||
+AVCodec ff_libfdk_aac_decoder = {
|
||||
+ .name = "libfdk_aac",
|
||||
+ .long_name = NULL_IF_CONFIG_SMALL("Fraunhofer FDK AAC"),
|
||||
+ .type = AVMEDIA_TYPE_AUDIO,
|
||||
+ .id = AV_CODEC_ID_AAC,
|
||||
+const FFCodec ff_libfdk_aac_decoder = {
|
||||
+ .p.name = "libfdk_aac",
|
||||
+ CODEC_LONG_NAME("Fraunhofer FDK AAC"),
|
||||
+ .p.type = AVMEDIA_TYPE_AUDIO,
|
||||
+ .p.id = AV_CODEC_ID_AAC,
|
||||
+ .priv_data_size = sizeof(FDKAACDecContext),
|
||||
+ .init = fdk_aac_decode_init,
|
||||
+ .decode = fdk_aac_decode_frame,
|
||||
+ FF_CODEC_DECODE_CB(fdk_aac_decode_frame),
|
||||
+ .close = fdk_aac_decode_close,
|
||||
+ .flush = fdk_aac_decode_flush,
|
||||
+ .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF,
|
||||
+ .priv_class = &fdk_aac_dec_class,
|
||||
+ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE |
|
||||
+ FF_CODEC_CAP_INIT_CLEANUP,
|
||||
+ .wrapper_name = "libfdk",
|
||||
+ .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF
|
||||
+#if FDKDEC_VER_AT_LEAST(2, 5) // 2.5.10
|
||||
+ | AV_CODEC_CAP_DELAY
|
||||
+#endif
|
||||
+ ,
|
||||
+ .p.priv_class = &fdk_aac_dec_class,
|
||||
+ .caps_internal = FF_CODEC_CAP_INIT_CLEANUP,
|
||||
+ .p.wrapper_name = "libfdk",
|
||||
+};
|
||||
diff --git a/media/ffvpx/libavcodec/moz.build b/media/ffvpx/libavcodec/moz.build
|
||||
--- a/media/ffvpx/libavcodec/moz.build
|
||||
+++ b/media/ffvpx/libavcodec/moz.build
|
||||
@@ -97,6 +97,12 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']:
|
||||
'vp9recon.c'
|
||||
]
|
||||
diff -up firefox-127.0/media/ffvpx/libavcodec/moz.build.1667096 firefox-127.0/media/ffvpx/libavcodec/moz.build
|
||||
--- firefox-127.0/media/ffvpx/libavcodec/moz.build.1667096 2024-06-06 23:33:58.000000000 +0200
|
||||
+++ firefox-127.0/media/ffvpx/libavcodec/moz.build 2024-06-10 12:42:39.354913201 +0200
|
||||
@@ -151,6 +151,12 @@ else:
|
||||
CXXFLAGS += CONFIG["MOZ_LIBVPX_CFLAGS"]
|
||||
OS_LIBS += CONFIG["MOZ_LIBVPX_LIBS"]
|
||||
|
||||
+if CONFIG['MOZ_FDK_AAC']:
|
||||
+ SOURCES += [
|
||||
|
|
@ -449,17 +526,18 @@ diff --git a/media/ffvpx/libavcodec/moz.build b/media/ffvpx/libavcodec/moz.build
|
|||
+ ]
|
||||
+ OS_LIBS += CONFIG['MOZ_FDK_AAC_LIBS']
|
||||
+
|
||||
if CONFIG['MOZ_LIBAV_FFT']:
|
||||
SOURCES += [
|
||||
'avfft.c',
|
||||
diff --git a/toolkit/moz.configure b/toolkit/moz.configure
|
||||
--- a/toolkit/moz.configure
|
||||
+++ b/toolkit/moz.configure
|
||||
@@ -1592,6 +1592,14 @@ with only_when(compile_environment):
|
||||
set_define('MOZ_LIBAV_FFT', depends(when=libav_fft)(lambda: True))
|
||||
set_config('LIBAV_FFT_ASFLAGS', libav_fft.flags)
|
||||
SYMBOLS_FILE = 'avcodec.symbols'
|
||||
NoVisibilityFlags()
|
||||
|
||||
+# fdk aac support
|
||||
diff -up firefox-127.0/toolkit/moz.configure.1667096 firefox-127.0/toolkit/moz.configure
|
||||
--- firefox-127.0/toolkit/moz.configure.1667096 2024-06-10 12:42:39.312913316 +0200
|
||||
+++ firefox-127.0/toolkit/moz.configure 2024-06-10 12:42:39.355913199 +0200
|
||||
@@ -2412,6 +2412,15 @@ with only_when(compile_environment):
|
||||
|
||||
set_config("MOZ_SYSTEM_PNG", True, when="--with-system-png")
|
||||
|
||||
+# FDK AAC support
|
||||
+# ==============================================================
|
||||
+option('--with-system-fdk-aac',
|
||||
+ help='Use system libfdk-aac (located with pkgconfig)')
|
||||
+
|
||||
|
|
@ -470,4 +548,3 @@ diff --git a/toolkit/moz.configure b/toolkit/moz.configure
|
|||
|
||||
# FFmpeg's ffvpx configuration
|
||||
# ==============================================================
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
diff -up firefox-81.0.1/build/mach_bootstrap.py.old firefox-81.0.1/build/mach_bootstrap.py
|
||||
--- firefox-81.0.1/build/mach_bootstrap.py.old 2020-10-06 14:16:06.212974910 +0200
|
||||
+++ firefox-81.0.1/build/mach_bootstrap.py 2020-10-06 14:19:03.313179557 +0200
|
||||
@@ -507,7 +507,10 @@ class ImportHook(object):
|
||||
# doesn't happen or because it doesn't matter).
|
||||
if not os.path.exists(module.__file__[:-1]):
|
||||
if os.path.exists(module.__file__):
|
||||
- os.remove(module.__file__)
|
||||
+ try:
|
||||
+ os.remove(module.__file__)
|
||||
+ except:
|
||||
+ pass
|
||||
del sys.modules[module.__name__]
|
||||
module = self(name, globals, locals, fromlist, level)
|
||||
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
diff -up firefox-82.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-82.0/dom/media/mp4/MP4Demuxer.cpp
|
||||
--- firefox-82.0/dom/media/mp4/MP4Demuxer.cpp.1670333 2020-10-14 19:20:18.000000000 +0200
|
||||
+++ firefox-82.0/dom/media/mp4/MP4Demuxer.cpp 2020-10-19 20:56:38.362039524 +0200
|
||||
@@ -31,6 +31,8 @@ mozilla::LogModule* GetDemuxerLog() { re
|
||||
DDMOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, "::%s: " arg, \
|
||||
__func__, ##__VA_ARGS__)
|
||||
|
||||
+extern bool gUseKeyframeFromContainer;
|
||||
+
|
||||
namespace mozilla {
|
||||
|
||||
DDLoggedTypeDeclNameAndBase(MP4TrackDemuxer, MediaTrackDemuxer);
|
||||
@@ -394,6 +396,12 @@ already_AddRefed<MediaRawData> MP4TrackD
|
||||
[[fallthrough]];
|
||||
case H264::FrameType::OTHER: {
|
||||
bool keyframe = type == H264::FrameType::I_FRAME;
|
||||
+ if (gUseKeyframeFromContainer) {
|
||||
+ if (sample->mKeyframe && sample->mKeyframe != keyframe) {
|
||||
+ sample->mKeyframe = keyframe;
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
if (sample->mKeyframe != keyframe) {
|
||||
NS_WARNING(nsPrintfCString("Frame incorrectly marked as %skeyframe "
|
||||
"@ pts:%" PRId64 " dur:%" PRId64
|
||||
diff -up firefox-82.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-82.0/dom/media/platforms/PDMFactory.cpp
|
||||
--- firefox-82.0/dom/media/platforms/PDMFactory.cpp.1670333 2020-10-14 19:20:18.000000000 +0200
|
||||
+++ firefox-82.0/dom/media/platforms/PDMFactory.cpp 2020-10-19 20:53:14.631214334 +0200
|
||||
@@ -49,6 +49,8 @@
|
||||
|
||||
#include <functional>
|
||||
|
||||
+bool gUseKeyframeFromContainer = false;
|
||||
+
|
||||
namespace mozilla {
|
||||
|
||||
extern already_AddRefed<PlatformDecoderModule> CreateBlankDecoderModule();
|
||||
@@ -380,7 +382,8 @@ void PDMFactory::CreatePDMs() {
|
||||
#ifdef MOZ_FFMPEG
|
||||
if (StaticPrefs::media_ffmpeg_enabled()) {
|
||||
m = FFmpegRuntimeLinker::CreateDecoderModule();
|
||||
- mFFmpegFailedToLoad = !StartupPDM(m);
|
||||
+ mFFmpegUsed = StartupPDM(m);
|
||||
+ mFFmpegFailedToLoad = !mFFmpegUsed;
|
||||
} else {
|
||||
mFFmpegFailedToLoad = false;
|
||||
}
|
||||
@@ -395,7 +398,8 @@ void PDMFactory::CreatePDMs() {
|
||||
m = new AgnosticDecoderModule();
|
||||
StartupPDM(m);
|
||||
|
||||
- if (StaticPrefs::media_gmp_decoder_enabled()) {
|
||||
+ if (StaticPrefs::media_gmp_decoder_enabled() && !mFFmpegUsed) {
|
||||
+ gUseKeyframeFromContainer = true;
|
||||
m = new GMPDecoderModule();
|
||||
mGMPPDMFailedToStartup = !StartupPDM(m);
|
||||
} else {
|
||||
diff -up firefox-82.0/dom/media/platforms/PDMFactory.h.1670333 firefox-82.0/dom/media/platforms/PDMFactory.h
|
||||
--- firefox-82.0/dom/media/platforms/PDMFactory.h.1670333 2020-10-14 19:20:18.000000000 +0200
|
||||
+++ firefox-82.0/dom/media/platforms/PDMFactory.h 2020-10-19 20:53:14.631214334 +0200
|
||||
@@ -70,6 +70,7 @@ class PDMFactory final {
|
||||
|
||||
bool mWMFFailedToLoad = false;
|
||||
bool mFFmpegFailedToLoad = false;
|
||||
+ bool mFFmpegUsed = false;
|
||||
bool mGMPPDMFailedToStartup = false;
|
||||
|
||||
friend class RemoteVideoDecoderParent;
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
diff -up firefox-82.0/security/sandbox/linux/SandboxFilter.cpp.1673202 firefox-82.0/security/sandbox/linux/SandboxFilter.cpp
|
||||
--- firefox-82.0/security/sandbox/linux/SandboxFilter.cpp.1673202 2020-10-27 10:40:54.903158025 +0100
|
||||
+++ firefox-82.0/security/sandbox/linux/SandboxFilter.cpp 2020-10-27 10:43:19.024883597 +0100
|
||||
@@ -246,7 +246,11 @@ class SandboxPolicyCommon : public Sandb
|
||||
|
||||
if (fd != AT_FDCWD && (flags & AT_EMPTY_PATH) != 0 &&
|
||||
strcmp(path, "") == 0) {
|
||||
- return ConvertError(fstatsyscall(fd, buf));
|
||||
+#ifdef __NR_fstat64
|
||||
+ return DoSyscall(__NR_fstat64, fd, buf);
|
||||
+#else
|
||||
+ return DoSyscall(__NR_fstat, fd, buf);
|
||||
+#endif
|
||||
}
|
||||
|
||||
if (fd != AT_FDCWD && path[0] != '/') {
|
||||
|
|
@ -1,351 +0,0 @@
|
|||
changeset: 556172:143b4ca96ec9
|
||||
tag: tip
|
||||
parent: 556169:61c35792ca70
|
||||
user: stransky <stransky@redhat.com>
|
||||
date: Mon Oct 26 12:15:49 2020 +0100
|
||||
files: widget/gtk/WindowSurfaceWayland.cpp widget/gtk/WindowSurfaceWayland.h
|
||||
description:
|
||||
Bug 1673313 [Wayland] Don't fail when Shm allocation fails, r?jhorak
|
||||
|
||||
- Make WaylandAllocateShmMemory() fallible.
|
||||
- Implement WaylandReAllocateShmMemory() to re-allocate Shm pool.
|
||||
- Remove WaylandShmPool::Resize() and use WaylandShmPool::Create() only.
|
||||
- Implement and use WaylandShmPool::Release().
|
||||
- Make WindowSurfaceWayland::CreateWaylandBuffer() as fallible.
|
||||
|
||||
Differential Revision: https://phabricator.services.mozilla.com/D94735
|
||||
|
||||
|
||||
diff --git a/widget/gtk/WindowSurfaceWayland.cpp b/widget/gtk/WindowSurfaceWayland.cpp
|
||||
--- a/widget/gtk/WindowSurfaceWayland.cpp
|
||||
+++ b/widget/gtk/WindowSurfaceWayland.cpp
|
||||
@@ -209,14 +209,23 @@ RefPtr<nsWaylandDisplay> WindowBackBuffe
|
||||
}
|
||||
|
||||
static int WaylandAllocateShmMemory(int aSize) {
|
||||
- static int counter = 0;
|
||||
- nsPrintfCString shmName("/wayland.mozilla.ipc.%d", counter++);
|
||||
- int fd = shm_open(shmName.get(), O_CREAT | O_RDWR | O_EXCL, 0600);
|
||||
- if (fd >= 0) {
|
||||
- shm_unlink(shmName.get());
|
||||
- } else {
|
||||
- printf_stderr("Unable to SHM memory segment\n");
|
||||
- MOZ_CRASH();
|
||||
+ int fd = -1;
|
||||
+ do {
|
||||
+ static int counter = 0;
|
||||
+ nsPrintfCString shmName("/wayland.mozilla.ipc.%d", counter++);
|
||||
+ fd = shm_open(shmName.get(), O_CREAT | O_RDWR | O_EXCL, 0600);
|
||||
+ if (fd >= 0) {
|
||||
+ // We don't want to use leaked file
|
||||
+ if (shm_unlink(shmName.get()) != 0) {
|
||||
+ NS_WARNING("shm_unlink failed");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ }
|
||||
+ } while (fd < 0 && errno == EEXIST);
|
||||
+
|
||||
+ if (fd < 0) {
|
||||
+ NS_WARNING(nsPrintfCString("shm_open failed: %s", strerror(errno)).get());
|
||||
+ return -1;
|
||||
}
|
||||
|
||||
int ret = 0;
|
||||
@@ -225,59 +234,103 @@ static int WaylandAllocateShmMemory(int
|
||||
ret = posix_fallocate(fd, 0, aSize);
|
||||
} while (ret == EINTR);
|
||||
if (ret != 0) {
|
||||
+ NS_WARNING(
|
||||
+ nsPrintfCString("posix_fallocate() fails to allocate shm memory: %s",
|
||||
+ strerror(ret))
|
||||
+ .get());
|
||||
close(fd);
|
||||
- MOZ_CRASH("posix_fallocate() fails to allocate shm memory");
|
||||
+ return -1;
|
||||
}
|
||||
#else
|
||||
do {
|
||||
ret = ftruncate(fd, aSize);
|
||||
} while (ret < 0 && errno == EINTR);
|
||||
if (ret < 0) {
|
||||
+ NS_WARNING(nsPrintfCString("ftruncate() fails to allocate shm memory: %s",
|
||||
+ strerror(ret))
|
||||
+ .get());
|
||||
close(fd);
|
||||
- MOZ_CRASH("ftruncate() fails to allocate shm memory");
|
||||
+ fd = -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
return fd;
|
||||
}
|
||||
|
||||
-WaylandShmPool::WaylandShmPool(RefPtr<nsWaylandDisplay> aWaylandDisplay,
|
||||
- int aSize)
|
||||
- : mAllocatedSize(aSize) {
|
||||
- mShmPoolFd = WaylandAllocateShmMemory(mAllocatedSize);
|
||||
- mImageData = mmap(nullptr, mAllocatedSize, PROT_READ | PROT_WRITE, MAP_SHARED,
|
||||
- mShmPoolFd, 0);
|
||||
- MOZ_RELEASE_ASSERT(mImageData != MAP_FAILED,
|
||||
- "Unable to map drawing surface!");
|
||||
+static bool WaylandReAllocateShmMemory(int aFd, int aSize) {
|
||||
+ if (ftruncate(aFd, aSize) < 0) {
|
||||
+ return false;
|
||||
+ }
|
||||
+#ifdef HAVE_POSIX_FALLOCATE
|
||||
+ do {
|
||||
+ errno = posix_fallocate(aFd, 0, aSize);
|
||||
+ } while (errno == EINTR);
|
||||
+ if (errno != 0) {
|
||||
+ return false;
|
||||
+ }
|
||||
+#endif
|
||||
+ return true;
|
||||
+}
|
||||
|
||||
- mShmPool =
|
||||
- wl_shm_create_pool(aWaylandDisplay->GetShm(), mShmPoolFd, mAllocatedSize);
|
||||
+WaylandShmPool::WaylandShmPool()
|
||||
+ : mShmPool(nullptr),
|
||||
+ mShmPoolFd(-1),
|
||||
+ mAllocatedSize(0),
|
||||
+ mImageData(MAP_FAILED){};
|
||||
|
||||
- // We set our queue to get mShmPool events at compositor thread.
|
||||
- wl_proxy_set_queue((struct wl_proxy*)mShmPool,
|
||||
- aWaylandDisplay->GetEventQueue());
|
||||
+void WaylandShmPool::Release() {
|
||||
+ if (mImageData != MAP_FAILED) {
|
||||
+ munmap(mImageData, mAllocatedSize);
|
||||
+ mImageData = MAP_FAILED;
|
||||
+ }
|
||||
+ if (mShmPool) {
|
||||
+ wl_shm_pool_destroy(mShmPool);
|
||||
+ mShmPool = 0;
|
||||
+ }
|
||||
+ if (mShmPoolFd >= 0) {
|
||||
+ close(mShmPoolFd);
|
||||
+ mShmPoolFd = -1;
|
||||
+ }
|
||||
}
|
||||
|
||||
-bool WaylandShmPool::Resize(int aSize) {
|
||||
+bool WaylandShmPool::Create(RefPtr<nsWaylandDisplay> aWaylandDisplay,
|
||||
+ int aSize) {
|
||||
// We do size increase only
|
||||
- if (aSize <= mAllocatedSize) return true;
|
||||
-
|
||||
- if (ftruncate(mShmPoolFd, aSize) < 0) return false;
|
||||
+ if (aSize <= mAllocatedSize) {
|
||||
+ return true;
|
||||
+ }
|
||||
|
||||
-#ifdef HAVE_POSIX_FALLOCATE
|
||||
- do {
|
||||
- errno = posix_fallocate(mShmPoolFd, 0, aSize);
|
||||
- } while (errno == EINTR);
|
||||
- if (errno != 0) return false;
|
||||
-#endif
|
||||
+ if (mShmPoolFd < 0) {
|
||||
+ mShmPoolFd = WaylandAllocateShmMemory(aSize);
|
||||
+ if (mShmPoolFd < 0) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ } else {
|
||||
+ if (!WaylandReAllocateShmMemory(mShmPoolFd, aSize)) {
|
||||
+ Release();
|
||||
+ return false;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
- wl_shm_pool_resize(mShmPool, aSize);
|
||||
-
|
||||
- munmap(mImageData, mAllocatedSize);
|
||||
-
|
||||
+ if (mImageData != MAP_FAILED) {
|
||||
+ munmap(mImageData, mAllocatedSize);
|
||||
+ }
|
||||
mImageData =
|
||||
mmap(nullptr, aSize, PROT_READ | PROT_WRITE, MAP_SHARED, mShmPoolFd, 0);
|
||||
- if (mImageData == MAP_FAILED) return false;
|
||||
+ if (mImageData == MAP_FAILED) {
|
||||
+ NS_WARNING("Unable to map drawing surface!");
|
||||
+ Release();
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ if (mShmPool) {
|
||||
+ wl_shm_pool_resize(mShmPool, aSize);
|
||||
+ } else {
|
||||
+ mShmPool = wl_shm_create_pool(aWaylandDisplay->GetShm(), mShmPoolFd, aSize);
|
||||
+ // We set our queue to get mShmPool events at compositor thread.
|
||||
+ wl_proxy_set_queue((struct wl_proxy*)mShmPool,
|
||||
+ aWaylandDisplay->GetEventQueue());
|
||||
+ }
|
||||
|
||||
mAllocatedSize = aSize;
|
||||
return true;
|
||||
@@ -289,11 +342,7 @@ void WaylandShmPool::SetImageDataFromPoo
|
||||
memcpy(mImageData, aSourcePool->GetImageData(), aImageDataSize);
|
||||
}
|
||||
|
||||
-WaylandShmPool::~WaylandShmPool() {
|
||||
- munmap(mImageData, mAllocatedSize);
|
||||
- wl_shm_pool_destroy(mShmPool);
|
||||
- close(mShmPoolFd);
|
||||
-}
|
||||
+WaylandShmPool::~WaylandShmPool() { Release(); }
|
||||
|
||||
static void buffer_release(void* data, wl_buffer* buffer) {
|
||||
auto surface = reinterpret_cast<WindowBackBuffer*>(data);
|
||||
@@ -302,14 +351,14 @@ static void buffer_release(void* data, w
|
||||
|
||||
static const struct wl_buffer_listener buffer_listener = {buffer_release};
|
||||
|
||||
-void WindowBackBufferShm::Create(int aWidth, int aHeight) {
|
||||
+bool WindowBackBufferShm::Create(int aWidth, int aHeight) {
|
||||
MOZ_ASSERT(!IsAttached(), "We can't create attached buffers.");
|
||||
- MOZ_ASSERT(!mWLBuffer, "there is wl_buffer already!");
|
||||
|
||||
- int newBufferSize = aWidth * aHeight * BUFFER_BPP;
|
||||
- if (!mShmPool.Resize(newBufferSize)) {
|
||||
- mWLBuffer = nullptr;
|
||||
- return;
|
||||
+ ReleaseShmSurface();
|
||||
+
|
||||
+ int size = aWidth * aHeight * BUFFER_BPP;
|
||||
+ if (!mShmPool.Create(GetWaylandDisplay(), size)) {
|
||||
+ return false;
|
||||
}
|
||||
|
||||
mWLBuffer =
|
||||
@@ -325,14 +374,16 @@ void WindowBackBufferShm::Create(int aWi
|
||||
LOGWAYLAND(("WindowBackBufferShm::Create [%p] wl_buffer %p ID %d\n",
|
||||
(void*)this, (void*)mWLBuffer,
|
||||
mWLBuffer ? wl_proxy_get_id((struct wl_proxy*)mWLBuffer) : -1));
|
||||
+ return true;
|
||||
}
|
||||
|
||||
void WindowBackBufferShm::ReleaseShmSurface() {
|
||||
LOGWAYLAND(("WindowBackBufferShm::Release [%p]\n", (void*)this));
|
||||
-
|
||||
- wl_buffer_destroy(mWLBuffer);
|
||||
+ if (mWLBuffer) {
|
||||
+ wl_buffer_destroy(mWLBuffer);
|
||||
+ mWLBuffer = nullptr;
|
||||
+ }
|
||||
mWidth = mHeight = 0;
|
||||
- mWLBuffer = nullptr;
|
||||
}
|
||||
|
||||
void WindowBackBufferShm::Clear() {
|
||||
@@ -340,16 +391,13 @@ void WindowBackBufferShm::Clear() {
|
||||
}
|
||||
|
||||
WindowBackBufferShm::WindowBackBufferShm(
|
||||
- WindowSurfaceWayland* aWindowSurfaceWayland, int aWidth, int aHeight)
|
||||
+ WindowSurfaceWayland* aWindowSurfaceWayland)
|
||||
: WindowBackBuffer(aWindowSurfaceWayland),
|
||||
- mShmPool(aWindowSurfaceWayland->GetWaylandDisplay(),
|
||||
- aWidth * aHeight * BUFFER_BPP),
|
||||
+ mShmPool(),
|
||||
mWLBuffer(nullptr),
|
||||
- mWidth(aWidth),
|
||||
- mHeight(aHeight),
|
||||
- mAttached(false) {
|
||||
- Create(aWidth, aHeight);
|
||||
-}
|
||||
+ mWidth(0),
|
||||
+ mHeight(0),
|
||||
+ mAttached(false) {}
|
||||
|
||||
WindowBackBufferShm::~WindowBackBufferShm() { ReleaseShmSurface(); }
|
||||
|
||||
@@ -357,13 +405,9 @@ bool WindowBackBufferShm::Resize(int aWi
|
||||
if (aWidth == mWidth && aHeight == mHeight) {
|
||||
return true;
|
||||
}
|
||||
-
|
||||
LOGWAYLAND(("WindowBackBufferShm::Resize [%p] %d %d\n", (void*)this, aWidth,
|
||||
aHeight));
|
||||
-
|
||||
- ReleaseShmSurface();
|
||||
Create(aWidth, aHeight);
|
||||
-
|
||||
return (mWLBuffer != nullptr);
|
||||
}
|
||||
|
||||
@@ -488,11 +532,13 @@ WindowBackBuffer* WindowSurfaceWayland::
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
- WindowBackBuffer* buffer = new WindowBackBufferShm(this, aWidth, aHeight);
|
||||
- if (buffer) {
|
||||
- mShmBackupBuffer[availableBuffer] = buffer;
|
||||
+ WindowBackBuffer* buffer = new WindowBackBufferShm(this);
|
||||
+ if (!buffer->Create(aWidth, aHeight)) {
|
||||
+ delete buffer;
|
||||
+ return nullptr;
|
||||
}
|
||||
|
||||
+ mShmBackupBuffer[availableBuffer] = buffer;
|
||||
return buffer;
|
||||
}
|
||||
|
||||
diff --git a/widget/gtk/WindowSurfaceWayland.h b/widget/gtk/WindowSurfaceWayland.h
|
||||
--- a/widget/gtk/WindowSurfaceWayland.h
|
||||
+++ b/widget/gtk/WindowSurfaceWayland.h
|
||||
@@ -25,14 +25,14 @@ class WindowSurfaceWayland;
|
||||
// Allocates and owns shared memory for Wayland drawing surface
|
||||
class WaylandShmPool {
|
||||
public:
|
||||
- WaylandShmPool(RefPtr<nsWaylandDisplay> aDisplay, int aSize);
|
||||
- ~WaylandShmPool();
|
||||
-
|
||||
- bool Resize(int aSize);
|
||||
+ bool Create(RefPtr<nsWaylandDisplay> aWaylandDisplay, int aSize);
|
||||
+ void Release();
|
||||
wl_shm_pool* GetShmPool() { return mShmPool; };
|
||||
void* GetImageData() { return mImageData; };
|
||||
void SetImageDataFromPool(class WaylandShmPool* aSourcePool,
|
||||
int aImageDataSize);
|
||||
+ WaylandShmPool();
|
||||
+ ~WaylandShmPool();
|
||||
|
||||
private:
|
||||
wl_shm_pool* mShmPool;
|
||||
@@ -53,6 +53,7 @@ class WindowBackBuffer {
|
||||
virtual bool IsAttached() = 0;
|
||||
|
||||
virtual void Clear() = 0;
|
||||
+ virtual bool Create(int aWidth, int aHeight) = 0;
|
||||
virtual bool Resize(int aWidth, int aHeight) = 0;
|
||||
|
||||
virtual int GetWidth() = 0;
|
||||
@@ -87,8 +88,7 @@ class WindowBackBuffer {
|
||||
|
||||
class WindowBackBufferShm : public WindowBackBuffer {
|
||||
public:
|
||||
- WindowBackBufferShm(WindowSurfaceWayland* aWindowSurfaceWayland, int aWidth,
|
||||
- int aHeight);
|
||||
+ WindowBackBufferShm(WindowSurfaceWayland* aWindowSurfaceWayland);
|
||||
~WindowBackBufferShm();
|
||||
|
||||
already_AddRefed<gfx::DrawTarget> Lock();
|
||||
@@ -100,6 +100,7 @@ class WindowBackBufferShm : public Windo
|
||||
void SetAttached() { mAttached = true; };
|
||||
|
||||
void Clear();
|
||||
+ bool Create(int aWidth, int aHeight);
|
||||
bool Resize(int aWidth, int aHeight);
|
||||
bool SetImageDataFromBuffer(class WindowBackBuffer* aSourceBuffer);
|
||||
|
||||
@@ -109,7 +110,6 @@ class WindowBackBufferShm : public Windo
|
||||
wl_buffer* GetWlBuffer() { return mWLBuffer; };
|
||||
|
||||
private:
|
||||
- void Create(int aWidth, int aHeight);
|
||||
void ReleaseShmSurface();
|
||||
|
||||
// WaylandShmPool provides actual shared memory we draw into
|
||||
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
diff --git a/browser/components/shell/nsGNOMEShellDBusHelper.cpp b/browser/components/shell/nsGNOMEShellDBusHelper.cpp
|
||||
--- a/browser/components/shell/nsGNOMEShellDBusHelper.cpp
|
||||
+++ b/browser/components/shell/nsGNOMEShellDBusHelper.cpp
|
||||
@@ -29,7 +29,7 @@ static bool GetGnomeSearchTitle(const ch
|
||||
}
|
||||
|
||||
AutoTArray<nsString, 1> formatStrings;
|
||||
- CopyASCIItoUTF16(nsCString(aSearchedTerm), *formatStrings.AppendElement());
|
||||
+ CopyUTF8toUTF16(nsCString(aSearchedTerm), *formatStrings.AppendElement());
|
||||
|
||||
nsAutoString gnomeSearchTitle;
|
||||
bundle->FormatStringFromName("gnomeSearchProviderSearch", formatStrings,
|
||||
@@ -41,7 +41,7 @@ static bool GetGnomeSearchTitle(const ch
|
||||
static const char* introspect_template =
|
||||
"<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection "
|
||||
"1.0//EN\"\n"
|
||||
- "\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\";>\n"
|
||||
+ "\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n"
|
||||
"<node>\n"
|
||||
" <interface name=\"org.freedesktop.DBus.Introspectable\">\n"
|
||||
" <method name=\"Introspect\">\n"
|
||||
|
|
@ -1,111 +0,0 @@
|
|||
diff -up firefox-56.0/modules/libpref/prefapi.cpp.440908 firefox-56.0/modules/libpref/prefapi.cpp
|
||||
--- firefox-56.0/modules/libpref/prefapi.cpp.440908 2017-09-14 22:15:52.000000000 +0200
|
||||
+++ firefox-56.0/modules/libpref/prefapi.cpp 2017-09-25 10:39:39.266572792 +0200
|
||||
@@ -1036,8 +1036,8 @@ void PREF_ReaderCallback(void *clo
|
||||
PrefValue value,
|
||||
PrefType type,
|
||||
bool isDefault,
|
||||
- bool isStickyDefault)
|
||||
-
|
||||
+ bool isStickyDefault,
|
||||
+ bool isLocked)
|
||||
{
|
||||
uint32_t flags = 0;
|
||||
if (isDefault) {
|
||||
@@ -1049,4 +1049,6 @@ void PREF_ReaderCallback(void *clo
|
||||
flags |= kPrefForceSet;
|
||||
}
|
||||
pref_HashPref(pref, value, type, flags);
|
||||
+ if (isLocked)
|
||||
+ PREF_LockPref(pref, true);
|
||||
}
|
||||
diff -up firefox-56.0/modules/libpref/prefapi.h.440908 firefox-56.0/modules/libpref/prefapi.h
|
||||
--- firefox-56.0/modules/libpref/prefapi.h.440908 2017-07-31 18:20:51.000000000 +0200
|
||||
+++ firefox-56.0/modules/libpref/prefapi.h 2017-09-25 10:39:39.267572789 +0200
|
||||
@@ -246,8 +246,8 @@ void PREF_ReaderCallback( void *closure,
|
||||
PrefValue value,
|
||||
PrefType type,
|
||||
bool isDefault,
|
||||
- bool isStickyDefault);
|
||||
-
|
||||
+ bool isStickyDefault,
|
||||
+ bool isLocked);
|
||||
|
||||
/*
|
||||
* Callback whenever we change a preference
|
||||
diff -up firefox-56.0/modules/libpref/prefread.cpp.440908 firefox-56.0/modules/libpref/prefread.cpp
|
||||
--- firefox-56.0/modules/libpref/prefread.cpp.440908 2017-09-14 22:15:52.000000000 +0200
|
||||
+++ firefox-56.0/modules/libpref/prefread.cpp 2017-09-25 10:39:39.267572789 +0200
|
||||
@@ -43,6 +43,7 @@ enum {
|
||||
#define BITS_PER_HEX_DIGIT 4
|
||||
|
||||
static const char kUserPref[] = "user_pref";
|
||||
+static const char kLockPref[] = "lockPref";
|
||||
static const char kPref[] = "pref";
|
||||
static const char kPrefSticky[] = "sticky_pref";
|
||||
static const char kTrue[] = "true";
|
||||
@@ -146,7 +147,7 @@ pref_DoCallback(PrefParseState *ps)
|
||||
break;
|
||||
}
|
||||
(*ps->reader)(ps->closure, ps->lb, value, ps->vtype, ps->fdefault,
|
||||
- ps->fstickydefault);
|
||||
+ ps->fstickydefault, ps->flock);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -215,6 +216,7 @@ PREF_ParseBuf(PrefParseState *ps, const
|
||||
ps->vtype = PrefType::Invalid;
|
||||
ps->fdefault = false;
|
||||
ps->fstickydefault = false;
|
||||
+ ps->flock = false;
|
||||
}
|
||||
switch (c) {
|
||||
case '/': /* begin comment block or line? */
|
||||
@@ -225,11 +227,14 @@ PREF_ParseBuf(PrefParseState *ps, const
|
||||
break;
|
||||
case 'u': /* indicating user_pref */
|
||||
case 's': /* indicating sticky_pref */
|
||||
+ case 'l': /* indicating lockPref */
|
||||
case 'p': /* indicating pref */
|
||||
if (c == 'u') {
|
||||
ps->smatch = kUserPref;
|
||||
} else if (c == 's') {
|
||||
ps->smatch = kPrefSticky;
|
||||
+ } else if (c == 'l') {
|
||||
+ ps->smatch = kLockPref;
|
||||
} else {
|
||||
ps->smatch = kPref;
|
||||
}
|
||||
@@ -277,8 +282,10 @@ PREF_ParseBuf(PrefParseState *ps, const
|
||||
/* name parsing */
|
||||
case PREF_PARSE_UNTIL_NAME:
|
||||
if (c == '\"' || c == '\'') {
|
||||
- ps->fdefault = (ps->smatch == kPref || ps->smatch == kPrefSticky);
|
||||
+ ps->fdefault = (ps->smatch == kPref || ps->smatch == kPrefSticky
|
||||
+ || ps->smatch == kLockPref);
|
||||
ps->fstickydefault = (ps->smatch == kPrefSticky);
|
||||
+ ps->flock = (ps->smatch == kLockPref);
|
||||
ps->quotechar = c;
|
||||
ps->nextstate = PREF_PARSE_UNTIL_COMMA; /* return here when done */
|
||||
state = PREF_PARSE_QUOTED_STRING;
|
||||
diff -up firefox-56.0/modules/libpref/prefread.h.440908 firefox-56.0/modules/libpref/prefread.h
|
||||
--- firefox-56.0/modules/libpref/prefread.h.440908 2017-09-14 22:15:52.000000000 +0200
|
||||
+++ firefox-56.0/modules/libpref/prefread.h 2017-09-25 10:39:39.267572789 +0200
|
||||
@@ -34,7 +34,8 @@ typedef void (*PrefReader)(void *c
|
||||
PrefValue val,
|
||||
PrefType type,
|
||||
bool defPref,
|
||||
- bool stickyPref);
|
||||
+ bool stickyPref,
|
||||
+ bool lockPref);
|
||||
|
||||
/**
|
||||
* Report any errors or warnings we encounter during parsing.
|
||||
@@ -62,6 +63,7 @@ typedef struct PrefParseState {
|
||||
PrefType vtype; /* PREF_STRING,INT,BOOL */
|
||||
bool fdefault; /* true if (default) pref */
|
||||
bool fstickydefault; /* true if (sticky) pref */
|
||||
+ bool flock; /* true if pref to be locked */
|
||||
} PrefParseState;
|
||||
|
||||
/**
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
diff -up firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h.arm firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h
|
||||
--- firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h.arm 2017-03-03 13:53:52.480754536 +0100
|
||||
+++ firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h 2017-03-03 13:56:01.476018102 +0100
|
||||
@@ -203,6 +203,10 @@
|
||||
#define SK_ARM_HAS_CRC32
|
||||
#endif
|
||||
|
||||
+#if defined(__aarch64__)
|
||||
+ #undef SK_ARM_HAS_NEON
|
||||
+#endif
|
||||
+
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if !defined(SKIA_IMPLEMENTATION)
|
||||
3
org.mozilla.firefox.SearchProvider.service
Normal file
3
org.mozilla.firefox.SearchProvider.service
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
[D-BUS Service]
|
||||
Name=org.mozilla.firefox.SearchProvider
|
||||
Exec=/usr/lib64/firefox/firefox --dbus-service /usr/bin/firefox
|
||||
61
org.mozilla.firefox.appdata.xml.in
Normal file
61
org.mozilla.firefox.appdata.xml.in
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright 2019 Firefox contributors -->
|
||||
<component type="desktop-application">
|
||||
<id>org.mozilla.firefox</id>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<name>Firefox</name>
|
||||
<summary>Web Browser</summary>
|
||||
<summary xml:lang="ca">Navegador web</summary>
|
||||
<summary xml:lang="cs">Webový prohlížeč</summary>
|
||||
<summary xml:lang="es">Navegador web</summary>
|
||||
<summary xml:lang="fa">مرورگر اینترنتی</summary>
|
||||
<summary xml:lang="fi">WWW-selain</summary>
|
||||
<summary xml:lang="fr">Navigateur Web</summary>
|
||||
<summary xml:lang="hu">Webböngésző</summary>
|
||||
<summary xml:lang="it">Browser Web</summary>
|
||||
<summary xml:lang="ja">ウェブ・ブラウザ</summary>
|
||||
<summary xml:lang="ko">웹 브라우저</summary>
|
||||
<summary xml:lang="nb">Nettleser</summary>
|
||||
<summary xml:lang="nl">Webbrowser</summary>
|
||||
<summary xml:lang="nn">Nettlesar</summary>
|
||||
<summary xml:lang="no">Nettleser</summary>
|
||||
<summary xml:lang="pl">Przeglądarka WWW</summary>
|
||||
<summary xml:lang="pt">Navegador Web</summary>
|
||||
<summary xml:lang="pt_BR">Navegador Web</summary>
|
||||
<summary xml:lang="sk">Internetový prehliadač</summary>
|
||||
<summary xml:lang="sv">Webbläsare</summary>
|
||||
<description>
|
||||
<p>
|
||||
Bringing together all kinds of awesomeness to make browsing better for you.
|
||||
Get to your favorite sites quickly – even if you don’t remember the URLs.
|
||||
Type your term into the location bar (aka the Awesome Bar) and the autocomplete
|
||||
function will include possible matches from your browsing history, bookmarked
|
||||
sites and open tabs.
|
||||
</p>
|
||||
</description>
|
||||
<url type="homepage">https://www.mozilla.org</url>
|
||||
<update_contact>stransky@redhat.com</update_contact>
|
||||
<kudos>
|
||||
<kudo>ModernToolkit</kudo>
|
||||
<kudo>SearchProvider</kudo>
|
||||
</kudos>
|
||||
<project_group>Mozilla</project_group>
|
||||
<project_license>GPL-3.0+</project_license>
|
||||
<developer_name>Mozilla Corporation</developer_name>
|
||||
<url type="bugtracker">https://bugzilla.mozilla.org/</url>
|
||||
<url type="help">https://support.mozilla.org/</url>
|
||||
<translation type="gettext">firefox</translation>
|
||||
<launchable type="desktop-id">org.mozilla.firefox.desktop</launchable>
|
||||
<provides>
|
||||
<id>firefox.desktop</id>
|
||||
</provides>
|
||||
<screenshots>
|
||||
<screenshot type="default">https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/firefox/a.png</screenshot>
|
||||
<screenshot>https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/firefox/b.png</screenshot>
|
||||
<screenshot>https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/firefox/c.png</screenshot>
|
||||
</screenshots>
|
||||
<content_rating type="oars-1.1"/>
|
||||
<releases>
|
||||
<release version="__VERSION__" date="__DATE__"/>
|
||||
</releases>
|
||||
</component>
|
||||
276
org.mozilla.firefox.desktop
Normal file
276
org.mozilla.firefox.desktop
Normal file
|
|
@ -0,0 +1,276 @@
|
|||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Firefox
|
||||
GenericName=Web Browser
|
||||
GenericName[ca]=Navegador web
|
||||
GenericName[cs]=Webový prohlížeč
|
||||
GenericName[es]=Navegador web
|
||||
GenericName[fa]=مرورگر اینترنتی
|
||||
GenericName[fi]=WWW-selain
|
||||
GenericName[fr]=Navigateur Web
|
||||
GenericName[hu]=Webböngésző
|
||||
GenericName[it]=Browser Web
|
||||
GenericName[ja]=ウェブ・ブラウザ
|
||||
GenericName[ko]=웹 브라우저
|
||||
GenericName[nb]=Nettleser
|
||||
GenericName[nl]=Webbrowser
|
||||
GenericName[nn]=Nettlesar
|
||||
GenericName[no]=Nettleser
|
||||
GenericName[pl]=Przeglądarka WWW
|
||||
GenericName[pt]=Navegador Web
|
||||
GenericName[pt_BR]=Navegador Web
|
||||
GenericName[sk]=Internetový prehliadač
|
||||
GenericName[sv]=Webbläsare
|
||||
Comment=Browse the Web
|
||||
Comment[ca]=Navegueu per el web
|
||||
Comment[cs]=Prohlížení stránek World Wide Webu
|
||||
Comment[de]=Im Internet surfen
|
||||
Comment[es]=Navegue por la web
|
||||
Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
|
||||
Comment[fi]=Selaa Internetin WWW-sivuja
|
||||
Comment[fr]=Navigue sur Internet
|
||||
Comment[hu]=A világháló böngészése
|
||||
Comment[it]=Esplora il web
|
||||
Comment[ja]=ウェブを閲覧します
|
||||
Comment[ko]=웹을 돌아 다닙니다
|
||||
Comment[nb]=Surf på nettet
|
||||
Comment[nl]=Verken het internet
|
||||
Comment[nn]=Surf på nettet
|
||||
Comment[no]=Surf på nettet
|
||||
Comment[pl]=Przeglądanie stron WWW
|
||||
Comment[pt]=Navegue na Internet
|
||||
Comment[pt_BR]=Navegue na Internet
|
||||
Comment[sk]=Prehliadanie internetu
|
||||
Comment[sv]=Surfa på webben
|
||||
Exec=firefox %u
|
||||
Icon=firefox
|
||||
Terminal=false
|
||||
Type=Application
|
||||
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
|
||||
StartupNotify=true
|
||||
Categories=Network;WebBrowser;
|
||||
Keywords=web;browser;internet;
|
||||
Actions=new-window;new-private-window;profile-manager-window;
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name=Open a New Window
|
||||
Name[ach]=Dirica manyen
|
||||
Name[af]=Nuwe venster
|
||||
Name[an]=Nueva finestra
|
||||
Name[ar]=نافذة جديدة
|
||||
Name[as]=নতুন উইন্ডো
|
||||
Name[ast]=Ventana nueva
|
||||
Name[az]=Yeni Pəncərə
|
||||
Name[be]=Новае акно
|
||||
Name[bg]=Нов прозорец
|
||||
Name[bn_BD]=নতুন উইন্ডো (N)
|
||||
Name[bn_IN]=নতুন উইন্ডো
|
||||
Name[br]=Prenestr nevez
|
||||
Name[brx]=गोदान उइन्ड'(N)
|
||||
Name[bs]=Novi prozor
|
||||
Name[ca]=Finestra nova
|
||||
Name[cak]=K'ak'a' tzuwäch
|
||||
Name[cs]=Nové okno
|
||||
Name[cy]=Ffenestr Newydd
|
||||
Name[da]=Nyt vindue
|
||||
Name[de]=Neues Fenster
|
||||
Name[dsb]=Nowe wokno
|
||||
Name[el]=Νέο παράθυρο
|
||||
Name[en_GB]=New Window
|
||||
Name[en_US]=New Window
|
||||
Name[en_ZA]=New Window
|
||||
Name[eo]=Nova fenestro
|
||||
Name[es_AR]=Nueva ventana
|
||||
Name[es_CL]=Nueva ventana
|
||||
Name[es_ES]=Nueva ventana
|
||||
Name[es_MX]=Nueva ventana
|
||||
Name[et]=Uus aken
|
||||
Name[eu]=Leiho berria
|
||||
Name[fa]=پنجره جدید
|
||||
Name[ff]=Henorde Hesere
|
||||
Name[fi]=Uusi ikkuna
|
||||
Name[fr]=Nouvelle fenêtre
|
||||
Name[fy_NL]=Nij finster
|
||||
Name[ga_IE]=Fuinneog Nua
|
||||
Name[gd]=Uinneag ùr
|
||||
Name[gl]=Nova xanela
|
||||
Name[gn]=Ovetã pyahu
|
||||
Name[gu_IN]=નવી વિન્ડો
|
||||
Name[he]=חלון חדש
|
||||
Name[hi_IN]=नया विंडो
|
||||
Name[hr]=Novi prozor
|
||||
Name[hsb]=Nowe wokno
|
||||
Name[hu]=Új ablak
|
||||
Name[hy_AM]=Նոր Պատուհան
|
||||
Name[id]=Jendela Baru
|
||||
Name[is]=Nýr gluggi
|
||||
Name[it]=Nuova finestra
|
||||
Name[ja]=新しいウィンドウ
|
||||
Name[ja_JP-mac]=新規ウインドウ
|
||||
Name[ka]=ახალი ფანჯარა
|
||||
Name[kk]=Жаңа терезе
|
||||
Name[km]=បង្អួចថ្មី
|
||||
Name[kn]=ಹೊಸ ಕಿಟಕಿ
|
||||
Name[ko]=새 창
|
||||
Name[kok]=नवें जनेल
|
||||
Name[ks]=نئئ وِنڈو
|
||||
Name[lij]=Neuvo barcon
|
||||
Name[lo]=ຫນ້າຕ່າງໃຫມ່
|
||||
Name[lt]=Naujas langas
|
||||
Name[ltg]=Jauns lūgs
|
||||
Name[lv]=Jauns logs
|
||||
Name[mai]=नव विंडो
|
||||
Name[mk]=Нов прозорец
|
||||
Name[ml]=പുതിയ ജാലകം
|
||||
Name[mr]=नवीन पटल
|
||||
Name[ms]=Tetingkap Baru
|
||||
Name[my]=ဝင်းဒိုးအသစ်
|
||||
Name[nb_NO]=Nytt vindu
|
||||
Name[ne_NP]=नयाँ सञ्झ्याल
|
||||
Name[nl]=Nieuw venster
|
||||
Name[nn_NO]=Nytt vindauge
|
||||
Name[or]=ନୂତନ ୱିଣ୍ଡୋ
|
||||
Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ
|
||||
Name[pl]=Nowe okno
|
||||
Name[pt_BR]=Nova janela
|
||||
Name[pt_PT]=Nova janela
|
||||
Name[rm]=Nova fanestra
|
||||
Name[ro]=Fereastră nouă
|
||||
Name[ru]=Новое окно
|
||||
Name[sat]=नावा विंडो (N)
|
||||
Name[si]=නව කවුළුවක්
|
||||
Name[sk]=Nové okno
|
||||
Name[sl]=Novo okno
|
||||
Name[son]=Zanfun taaga
|
||||
Name[sq]=Dritare e Re
|
||||
Name[sr]=Нови прозор
|
||||
Name[sv_SE]=Nytt fönster
|
||||
Name[ta]=புதிய சாளரம்
|
||||
Name[te]=కొత్త విండో
|
||||
Name[th]=หน้าต่างใหม่
|
||||
Name[tr]=Yeni pencere
|
||||
Name[tsz]=Eraatarakua jimpani
|
||||
Name[uk]=Нове вікно
|
||||
Name[ur]=نیا دریچہ
|
||||
Name[uz]=Yangi oyna
|
||||
Name[vi]=Cửa sổ mới
|
||||
Name[wo]=Palanteer bu bees
|
||||
Name[xh]=Ifestile entsha
|
||||
Name[zh_CN]=新建窗口
|
||||
Name[zh_TW]=開新視窗
|
||||
Exec=firefox --new-window %u
|
||||
|
||||
[Desktop Action new-private-window]
|
||||
Name=Open a New Private Window
|
||||
Name[ach]=Dirica manyen me mung
|
||||
Name[af]=Nuwe privaatvenster
|
||||
Name[an]=Nueva finestra privada
|
||||
Name[ar]=نافذة خاصة جديدة
|
||||
Name[as]=নতুন ব্যক্তিগত উইন্ডো
|
||||
Name[ast]=Ventana privada nueva
|
||||
Name[az]=Yeni Məxfi Pəncərə
|
||||
Name[be]=Новае акно адасаблення
|
||||
Name[bg]=Нов прозорец за поверително сърфиране
|
||||
Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো
|
||||
Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো
|
||||
Name[br]=Prenestr merdeiñ prevez nevez
|
||||
Name[brx]=गोदान प्राइभेट उइन्ड'
|
||||
Name[bs]=Novi privatni prozor
|
||||
Name[ca]=Finestra privada nova
|
||||
Name[cak]=K'ak'a' ichinan tzuwäch
|
||||
Name[cs]=Nové anonymní okno
|
||||
Name[cy]=Ffenestr Breifat Newydd
|
||||
Name[da]=Nyt privat vindue
|
||||
Name[de]=Neues privates Fenster
|
||||
Name[dsb]=Nowe priwatne wokno
|
||||
Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
|
||||
Name[en_GB]=New Private Window
|
||||
Name[en_US]=New Private Window
|
||||
Name[en_ZA]=New Private Window
|
||||
Name[eo]=Nova privata fenestro
|
||||
Name[es_AR]=Nueva ventana privada
|
||||
Name[es_CL]=Nueva ventana privada
|
||||
Name[es_ES]=Nueva ventana privada
|
||||
Name[es_MX]=Nueva ventana privada
|
||||
Name[et]=Uus privaatne aken
|
||||
Name[eu]=Leiho pribatu berria
|
||||
Name[fa]=پنجره ناشناس جدید
|
||||
Name[ff]=Henorde Suturo Hesere
|
||||
Name[fi]=Uusi yksityinen ikkuna
|
||||
Name[fr]=Nouvelle fenêtre de navigation privée
|
||||
Name[fy_NL]=Nij priveefinster
|
||||
Name[ga_IE]=Fuinneog Nua Phríobháideach
|
||||
Name[gd]=Uinneag phrìobhaideach ùr
|
||||
Name[gl]=Nova xanela privada
|
||||
Name[gn]=Ovetã ñemi pyahu
|
||||
Name[gu_IN]=નવી ખાનગી વિન્ડો
|
||||
Name[he]=חלון פרטי חדש
|
||||
Name[hi_IN]=नयी निजी विंडो
|
||||
Name[hr]=Novi privatni prozor
|
||||
Name[hsb]=Nowe priwatne wokno
|
||||
Name[hu]=Új privát ablak
|
||||
Name[hy_AM]=Սկսել Գաղտնի դիտարկում
|
||||
Name[id]=Jendela Mode Pribadi Baru
|
||||
Name[is]=Nýr huliðsgluggi
|
||||
Name[it]=Nuova finestra anonima
|
||||
Name[ja]=新しいプライベートウィンドウ
|
||||
Name[ja_JP-mac]=新規プライベートウインドウ
|
||||
Name[ka]=ახალი პირადი ფანჯარა
|
||||
Name[kk]=Жаңа жекелік терезе
|
||||
Name[km]=បង្អួចឯកជនថ្មី
|
||||
Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ
|
||||
Name[ko]=새 사생활 보호 모드
|
||||
Name[kok]=नवो खाजगी विंडो
|
||||
Name[ks]=نْو پرایوٹ وینڈو&
|
||||
Name[lij]=Neuvo barcon privou
|
||||
Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່
|
||||
Name[lt]=Naujas privataus naršymo langas
|
||||
Name[ltg]=Jauns privatais lūgs
|
||||
Name[lv]=Jauns privātais logs
|
||||
Name[mai]=नया निज विंडो (W)
|
||||
Name[mk]=Нов приватен прозорец
|
||||
Name[ml]=പുതിയ സ്വകാര്യ ജാലകം
|
||||
Name[mr]=नवीन वैयक्तिक पटल
|
||||
Name[ms]=Tetingkap Persendirian Baharu
|
||||
Name[my]=New Private Window
|
||||
Name[nb_NO]=Nytt privat vindu
|
||||
Name[ne_NP]=नयाँ निजी सञ्झ्याल
|
||||
Name[nl]=Nieuw privévenster
|
||||
Name[nn_NO]=Nytt privat vindauge
|
||||
Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ
|
||||
Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
|
||||
Name[pl]=Nowe okno prywatne
|
||||
Name[pt_BR]=Nova janela privativa
|
||||
Name[pt_PT]=Nova janela privada
|
||||
Name[rm]=Nova fanestra privata
|
||||
Name[ro]=Fereastră privată nouă
|
||||
Name[ru]=Новое приватное окно
|
||||
Name[sat]=नावा निजेराक् विंडो (W )
|
||||
Name[si]=නව පුද්ගලික කවුළුව (W)
|
||||
Name[sk]=Nové okno v režime Súkromné prehliadanie
|
||||
Name[sl]=Novo zasebno okno
|
||||
Name[son]=Sutura zanfun taaga
|
||||
Name[sq]=Dritare e Re Private
|
||||
Name[sr]=Нови приватан прозор
|
||||
Name[sv_SE]=Nytt privat fönster
|
||||
Name[ta]=புதிய தனிப்பட்ட சாளரம்
|
||||
Name[te]=కొత్త ఆంతరంగిక విండో
|
||||
Name[th]=หน้าต่างส่วนตัวใหม่
|
||||
Name[tr]=Yeni gizli pencere
|
||||
Name[tsz]=Juchiiti eraatarakua jimpani
|
||||
Name[uk]=Приватне вікно
|
||||
Name[ur]=نیا نجی دریچہ
|
||||
Name[uz]=Yangi maxfiy oyna
|
||||
Name[vi]=Cửa sổ riêng tư mới
|
||||
Name[wo]=Panlanteeru biir bu bees
|
||||
Name[xh]=Ifestile yangasese entsha
|
||||
Name[zh_CN]=新建隐私浏览窗口
|
||||
Name[zh_TW]=新增隱私視窗
|
||||
Exec=firefox --private-window %u
|
||||
|
||||
[Desktop Action profile-manager-window]
|
||||
Name=Open the Profile Manager
|
||||
Name[cs]=Správa profilů
|
||||
Name[de]=Profilverwaltung öffnen
|
||||
Name[fr]=Ouvrir le gestionnaire de profils
|
||||
Exec=firefox --ProfileManager
|
||||
5
org.mozilla.firefox.search-provider.ini
Normal file
5
org.mozilla.firefox.search-provider.ini
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
[Shell Search Provider]
|
||||
DesktopId=org.mozilla.firefox.desktop
|
||||
BusName=org.mozilla.firefox.SearchProvider
|
||||
ObjectPath=/org/mozilla/firefox/SearchProvider
|
||||
Version=2
|
||||
203
pgo.patch
203
pgo.patch
|
|
@ -1,66 +1,50 @@
|
|||
diff -up firefox-81.0.1/build/moz.configure/lto-pgo.configure.pgo firefox-81.0.1/build/moz.configure/lto-pgo.configure
|
||||
--- firefox-81.0.1/build/moz.configure/lto-pgo.configure.pgo 2020-09-30 19:41:10.000000000 +0200
|
||||
+++ firefox-81.0.1/build/moz.configure/lto-pgo.configure 2020-10-07 09:16:44.071786956 +0200
|
||||
@@ -69,12 +69,14 @@ set_config('PGO_PROFILE_PATH', pgo_profi
|
||||
@imports(_from='__builtin__', _import='min')
|
||||
def pgo_flags(compiler, profdata, target_is_windows):
|
||||
if compiler.type == 'gcc':
|
||||
+ #profile_use = '-fprofile-use=$(topobjdir)'
|
||||
+ profile_use = '-fprofile-use'
|
||||
diff -up firefox-145.0/build/moz.configure/lto-pgo.configure.pgo firefox-145.0/build/moz.configure/lto-pgo.configure
|
||||
--- firefox-145.0/build/moz.configure/lto-pgo.configure.pgo 2025-11-03 16:56:55.000000000 +0100
|
||||
+++ firefox-145.0/build/moz.configure/lto-pgo.configure 2025-11-05 13:59:53.477443914 +0100
|
||||
@@ -96,12 +96,16 @@ set_config("PGO_PROFILE_PATH", pgo_profi
|
||||
|
||||
@depends(
|
||||
"--enable-profile-use",
|
||||
+ c_compiler,
|
||||
pgo_profile_path,
|
||||
llvm_profdata,
|
||||
llvm_profdata_order,
|
||||
build_environment,
|
||||
)
|
||||
-def orderfile_path(profile_use, path, profdata, profdata_order, build_env):
|
||||
+def orderfile_path(profile_use, compiler, path, profdata, profdata_order, build_env):
|
||||
+ if compiler.type == "gcc":
|
||||
+ return None
|
||||
+
|
||||
if not profile_use:
|
||||
return None
|
||||
|
||||
@@ -145,7 +149,7 @@ def pgo_flags(
|
||||
return namespace(
|
||||
gen_cflags=['-fprofile-generate'],
|
||||
gen_ldflags=['-fprofile-generate'],
|
||||
- use_cflags=['-fprofile-use', '-fprofile-correction',
|
||||
+ use_cflags=[profile_use, '-fprofile-correction',
|
||||
'-Wcoverage-mismatch'],
|
||||
- use_ldflags=['-fprofile-use'],
|
||||
+ use_ldflags=[profile_use],
|
||||
gen_cflags=["-fprofile-generate"],
|
||||
gen_ldflags=["-fprofile-generate"],
|
||||
- use_cflags=["-fprofile-use", "-fprofile-correction", "-Wcoverage-mismatch"],
|
||||
+ use_cflags=["-fprofile-use", "-fprofile-correction", "-Wno-coverage-mismatch"],
|
||||
use_ldflags=["-fprofile-use"],
|
||||
)
|
||||
|
||||
if compiler.type in ('clang-cl', 'clang'):
|
||||
@@ -192,13 +194,13 @@ def lto(value, c_compiler, ld64_known_go
|
||||
cflags.append("-flto")
|
||||
ldflags.append("-flto")
|
||||
else:
|
||||
- cflags.append("-flto=thin")
|
||||
- ldflags.append("-flto=thin")
|
||||
+ cflags.append("-flto")
|
||||
+ ldflags.append("-flto")
|
||||
elif c_compiler.type == 'clang-cl':
|
||||
if len(value) and value[0].lower() == 'full':
|
||||
cflags.append("-flto")
|
||||
else:
|
||||
- cflags.append("-flto=thin")
|
||||
+ cflags.append("-flto")
|
||||
# With clang-cl, -flto can only be used with -c or -fuse-ld=lld.
|
||||
# AC_TRY_LINKs during configure don't have -c, so pass -fuse-ld=lld.
|
||||
cflags.append("-fuse-ld=lld");
|
||||
@@ -232,7 +234,7 @@ def lto(value, c_compiler, ld64_known_go
|
||||
if len(value) and value[0].lower() == 'full':
|
||||
cflags.append("-flto")
|
||||
else:
|
||||
- cflags.append("-flto=thin")
|
||||
+ cflags.append("-flto")
|
||||
cflags.append("-flifetime-dse=1")
|
||||
|
||||
ldflags.append("-flto=%s" % num_cores)
|
||||
diff -up firefox-81.0.1/build/pgo/profileserver.py.pgo firefox-81.0.1/build/pgo/profileserver.py
|
||||
--- firefox-81.0.1/build/pgo/profileserver.py.pgo 2020-09-30 19:41:10.000000000 +0200
|
||||
+++ firefox-81.0.1/build/pgo/profileserver.py 2020-10-07 09:16:44.071786956 +0200
|
||||
@@ -11,7 +11,7 @@ import glob
|
||||
import subprocess
|
||||
diff -up firefox-145.0/build/pgo/profileserver.py.pgo firefox-145.0/build/pgo/profileserver.py
|
||||
--- firefox-145.0/build/pgo/profileserver.py.pgo 2025-11-03 16:56:55.000000000 +0100
|
||||
+++ firefox-145.0/build/pgo/profileserver.py 2025-11-05 13:59:53.477602066 +0100
|
||||
@@ -10,7 +10,7 @@ import subprocess
|
||||
import sys
|
||||
|
||||
import mozcrash
|
||||
-from mozbuild.base import MozbuildObject, BinaryNotFoundException
|
||||
+from mozbuild.base import MozbuildObject, BinaryNotFoundException, BuildEnvironmentNotFoundException
|
||||
from mozfile import TemporaryDirectory
|
||||
-from mozbuild.base import BinaryNotFoundException, MozbuildObject
|
||||
+from mozbuild.base import BinaryNotFoundException, MozbuildObject, BuildEnvironmentNotFoundException
|
||||
from mozfile import TemporaryDirectory, json
|
||||
from mozhttpd import MozHttpd
|
||||
from mozprofile import FirefoxProfile, Preferences
|
||||
@@ -84,9 +84,22 @@ if __name__ == '__main__':
|
||||
port=PORT,
|
||||
options='primary,privileged')
|
||||
@@ -96,9 +96,22 @@ if __name__ == "__main__":
|
||||
locations = ServerLocations()
|
||||
locations.add_host(host="127.0.0.1", port=PORT, options="primary,privileged")
|
||||
|
||||
- old_profraw_files = glob.glob('*.profraw')
|
||||
- old_profraw_files = glob.glob("*.profraw")
|
||||
- for f in old_profraw_files:
|
||||
- os.remove(f)
|
||||
+ using_gcc = False
|
||||
|
|
@ -82,64 +66,55 @@ diff -up firefox-81.0.1/build/pgo/profileserver.py.pgo firefox-81.0.1/build/pgo/
|
|||
|
||||
with TemporaryDirectory() as profilePath:
|
||||
# TODO: refactor this into mozprofile
|
||||
@@ -191,6 +204,11 @@ if __name__ == '__main__':
|
||||
print("Firefox exited successfully, but produced a crashreport")
|
||||
sys.exit(1)
|
||||
diff -up firefox-145.0/gfx/2d/moz.build.pgo firefox-145.0/gfx/2d/moz.build
|
||||
--- firefox-145.0/gfx/2d/moz.build.pgo 2025-11-03 16:56:57.000000000 +0100
|
||||
+++ firefox-145.0/gfx/2d/moz.build 2025-11-05 14:21:20.485610837 +0100
|
||||
@@ -137,11 +137,11 @@ if CONFIG["INTEL_ARCHITECTURE"]:
|
||||
DEFINES["USE_SSE2"] = True
|
||||
# The file uses SSE2 intrinsics, so it needs special compile flags on some
|
||||
# compilers.
|
||||
- SOURCES["ConvolutionFilterAVX2.cpp"].flags += ["-mavx2"]
|
||||
+ SOURCES["ConvolutionFilterAVX2.cpp"].flags += ["-mavx2", "-fno-lto"]
|
||||
SOURCES["ConvolutionFilterSSE2.cpp"].flags += CONFIG["SSE2_FLAGS"]
|
||||
SOURCES["FilterProcessingSSE2.cpp"].flags += CONFIG["SSE2_FLAGS"]
|
||||
SOURCES["ImageScalingSSE2.cpp"].flags += CONFIG["SSE2_FLAGS"]
|
||||
- SOURCES["SwizzleAVX2.cpp"].flags += ["-mavx2"]
|
||||
+ SOURCES["SwizzleAVX2.cpp"].flags += ["-mavx2", "-fno-lto"]
|
||||
SOURCES["SwizzleSSE2.cpp"].flags += CONFIG["SSE2_FLAGS"]
|
||||
SOURCES["SwizzleSSSE3.cpp"].flags += CONFIG["SSSE3_FLAGS"]
|
||||
|
||||
+
|
||||
+ print('Copying profile data....')
|
||||
+ os.system('pwd');
|
||||
+ os.system('tar cf profdata.tar.gz `find . -name "*.gcda"`; cd ..; tar xf instrumented/profdata.tar.gz;');
|
||||
+
|
||||
llvm_profdata = env.get('LLVM_PROFDATA')
|
||||
if llvm_profdata:
|
||||
profraw_files = glob.glob('*.profraw')
|
||||
diff -up firefox-81.0.1/build/unix/mozconfig.unix.pgo firefox-81.0.1/build/unix/mozconfig.unix
|
||||
--- firefox-81.0.1/build/unix/mozconfig.unix.pgo 2020-09-30 19:41:10.000000000 +0200
|
||||
+++ firefox-81.0.1/build/unix/mozconfig.unix 2020-10-07 09:16:44.071786956 +0200
|
||||
@@ -6,6 +6,15 @@ if [ -n "$FORCE_GCC" ]; then
|
||||
CC="$MOZ_FETCHES_DIR/gcc/bin/gcc"
|
||||
CXX="$MOZ_FETCHES_DIR/gcc/bin/g++"
|
||||
|
||||
+ if [ -n "$MOZ_PGO" ]; then
|
||||
+ if [ -z "$USE_ARTIFACT" ]; then
|
||||
+ ac_add_options --enable-lto
|
||||
+ fi
|
||||
+ export AR="$topsrcdir/gcc/bin/gcc-ar"
|
||||
+ export NM="$topsrcdir/gcc/bin/gcc-nm"
|
||||
+ export RANLIB="$topsrcdir/gcc/bin/gcc-ranlib"
|
||||
+ fi
|
||||
+
|
||||
# We want to make sure we use binutils and other binaries in the tooltool
|
||||
# package.
|
||||
mk_add_options "export PATH=$MOZ_FETCHES_DIR/gcc/bin:$PATH"
|
||||
diff -up firefox-81.0.1/extensions/spellcheck/src/moz.build.pgo firefox-81.0.1/extensions/spellcheck/src/moz.build
|
||||
--- firefox-81.0.1/extensions/spellcheck/src/moz.build.pgo 2020-09-30 19:41:17.000000000 +0200
|
||||
+++ firefox-81.0.1/extensions/spellcheck/src/moz.build 2020-10-07 09:16:44.071786956 +0200
|
||||
@@ -31,3 +31,5 @@ EXPORTS.mozilla += [
|
||||
|
||||
if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
|
||||
CXXFLAGS += ['-Wno-error=shadow']
|
||||
+
|
||||
+CXXFLAGS += ['-fno-devirtualize']
|
||||
\ No newline at end of file
|
||||
diff -up firefox-81.0.1/python/mozbuild/mozbuild/build_commands.py.pgo firefox-81.0.1/python/mozbuild/mozbuild/build_commands.py
|
||||
--- firefox-81.0.1/python/mozbuild/mozbuild/build_commands.py.pgo 2020-09-30 19:41:46.000000000 +0200
|
||||
+++ firefox-81.0.1/python/mozbuild/mozbuild/build_commands.py 2020-10-07 09:16:44.071786956 +0200
|
||||
@@ -108,7 +108,8 @@ class Build(MachCommandBase):
|
||||
return status
|
||||
|
||||
pgo_env = os.environ.copy()
|
||||
- pgo_env['LLVM_PROFDATA'] = instr.config_environment.substs.get('LLVM_PROFDATA')
|
||||
+ if instr.config_environment.substs.get('CC_TYPE') != 'gcc':
|
||||
+ pgo_env['LLVM_PROFDATA'] = instr.config_environment.substs.get('LLVM_PROFDATA')
|
||||
pgo_env['JARLOG_FILE'] = mozpath.join(orig_topobjdir, 'jarlog/en-US.log')
|
||||
pgo_cmd = [
|
||||
instr.virtualenv_manager.python_path,
|
||||
diff -up firefox-81.0.1/toolkit/components/terminator/nsTerminator.cpp.pgo firefox-81.0.1/toolkit/components/terminator/nsTerminator.cpp
|
||||
--- firefox-81.0.1/toolkit/components/terminator/nsTerminator.cpp.pgo 2020-10-07 09:22:26.698243673 +0200
|
||||
+++ firefox-81.0.1/toolkit/components/terminator/nsTerminator.cpp 2020-10-07 09:22:43.026312999 +0200
|
||||
@@ -418,6 +418,11 @@ void nsTerminator::StartWatchdog() {
|
||||
diff -up firefox-145.0/gfx/skia/generate_mozbuild.py.pgo firefox-145.0/gfx/skia/generate_mozbuild.py
|
||||
--- firefox-145.0/gfx/skia/generate_mozbuild.py.pgo 2025-11-03 16:56:57.000000000 +0100
|
||||
+++ firefox-145.0/gfx/skia/generate_mozbuild.py 2025-11-05 13:59:53.477947055 +0100
|
||||
@@ -50,8 +50,8 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'wind
|
||||
if CONFIG['INTEL_ARCHITECTURE']:
|
||||
SOURCES['skia/modules/skcms/skcms.cc'].flags += ['-DSKCMS_DISABLE_SKX']
|
||||
skia_ssse3_flags = ['-Dskvx=skvx_ssse3', '-mssse3']
|
||||
- skia_avx_flags = ['-Dskvx=skvx_avx', '-mavx']
|
||||
- skia_hsw_flags = ['-Dskvx=skvx_hsw', '-mavx2', '-mf16c', '-mfma']
|
||||
+ skia_avx_flags = ['-Dskvx=skvx_avx', '-mavx', '-fno-lto']
|
||||
+ skia_hsw_flags = ['-Dskvx=skvx_hsw', '-mavx2', '-mf16c', '-mfma', '-fno-lto']
|
||||
SOURCES['skia/src/core/SkBitmapProcState_opts_ssse3.cpp'].flags += skia_ssse3_flags
|
||||
SOURCES['skia/src/core/SkBlitMask_opts_ssse3.cpp'].flags += skia_ssse3_flags
|
||||
SOURCES['skia/src/core/SkSwizzler_opts_ssse3.cpp'].flags += ['-Dskvx=skvx_ssse3']
|
||||
diff -up firefox-145.0/gfx/skia/moz.build.pgo firefox-145.0/gfx/skia/moz.build
|
||||
--- firefox-145.0/gfx/skia/moz.build.pgo 2025-11-03 16:56:57.000000000 +0100
|
||||
+++ firefox-145.0/gfx/skia/moz.build 2025-11-05 13:59:53.478077484 +0100
|
||||
@@ -597,8 +597,8 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'wind
|
||||
if CONFIG['INTEL_ARCHITECTURE']:
|
||||
SOURCES['skia/modules/skcms/skcms.cc'].flags += ['-DSKCMS_DISABLE_SKX']
|
||||
skia_ssse3_flags = ['-Dskvx=skvx_ssse3', '-mssse3']
|
||||
- skia_avx_flags = ['-Dskvx=skvx_avx', '-mavx']
|
||||
- skia_hsw_flags = ['-Dskvx=skvx_hsw', '-mavx2', '-mf16c', '-mfma']
|
||||
+ skia_avx_flags = ['-Dskvx=skvx_avx', '-mavx', '-fno-lto']
|
||||
+ skia_hsw_flags = ['-Dskvx=skvx_hsw', '-mavx2', '-mf16c', '-mfma', '-fno-lto']
|
||||
SOURCES['skia/src/core/SkBitmapProcState_opts_ssse3.cpp'].flags += skia_ssse3_flags
|
||||
SOURCES['skia/src/core/SkBlitMask_opts_ssse3.cpp'].flags += skia_ssse3_flags
|
||||
SOURCES['skia/src/core/SkSwizzler_opts_ssse3.cpp'].flags += ['-Dskvx=skvx_ssse3']
|
||||
diff -up firefox-145.0/toolkit/components/terminator/nsTerminator.cpp.pgo firefox-145.0/toolkit/components/terminator/nsTerminator.cpp
|
||||
--- firefox-145.0/toolkit/components/terminator/nsTerminator.cpp.pgo 2025-11-03 16:57:15.000000000 +0100
|
||||
+++ firefox-145.0/toolkit/components/terminator/nsTerminator.cpp 2025-11-05 13:59:53.478238011 +0100
|
||||
@@ -330,6 +330,11 @@ void nsTerminator::StartWatchdog() {
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -149,5 +124,5 @@ diff -up firefox-81.0.1/toolkit/components/terminator/nsTerminator.cpp.pgo firef
|
|||
+ crashAfterMS = INT32_MAX;
|
||||
+
|
||||
UniquePtr<Options> options(new Options());
|
||||
const PRIntervalTime ticksDuration = PR_MillisecondsToInterval(1000);
|
||||
options->crashAfterTicks = crashAfterMS / ticksDuration;
|
||||
// crashAfterTicks is guaranteed to be > 0 as
|
||||
// crashAfterMS >= ADDITIONAL_WAIT_BEFORE_CRASH_MS >> HEARTBEAT_INTERVAL_MS
|
||||
|
|
|
|||
13
print-error-reftest
Executable file
13
print-error-reftest
Executable file
|
|
@ -0,0 +1,13 @@
|
|||
#!/usr/bin/bash
|
||||
# Print reftest failures and compose them to html
|
||||
|
||||
TEST_DIR="$1"
|
||||
TEST_FLAVOUR="$2"
|
||||
OUTPUT_FILE="failures-reftest$TEST_FLAVOUR.html"
|
||||
|
||||
grep --text -e "REFTEST TEST-UNEXPECTED-PASS" -e "REFTEST TEST-UNEXPECTED-FAIL" -e "IMAGE 1 (TEST):" -e "IMAGE 2 (REFERENCE):" $TEST_DIR/reftest$TEST_FLAVOUR 2>&1 > $OUTPUT_FILE
|
||||
sed -i '/REFTEST IMAGE 1/a ">' $OUTPUT_FILE
|
||||
sed -i '/REFTEST IMAGE 2/a "><BR><BR>' $OUTPUT_FILE
|
||||
sed -i '/REFTEST TEST/a <BR>' $OUTPUT_FILE
|
||||
sed -i -e 's/^REFTEST IMAGE 1 (TEST): /<img border=2 src="/' $OUTPUT_FILE
|
||||
sed -i -e 's/^REFTEST IMAGE 2 (REFERENCE): /<img border=2 src="/' $OUTPUT_FILE
|
||||
9
print-errors
Executable file
9
print-errors
Executable file
|
|
@ -0,0 +1,9 @@
|
|||
#!/usr/bin/bash
|
||||
# Print failed tests
|
||||
|
||||
TEST_DIR=$1
|
||||
TEST_FLAVOUR=$2
|
||||
|
||||
grep "TEST-UNEXPECTED-FAIL" $TEST_DIR/mochitest$TEST_FLAVOUR 2>&1 > failures-mochitest$TEST_FLAVOUR.txt
|
||||
grep --text -e " FAIL " -e " TIMEOUT " $TEST_DIR/xpcshell$TEST_FLAVOUR 2>&1 > failures-xpcshell$TEST_FLAVOUR.txt
|
||||
grep --text -e "REFTEST TEST-UNEXPECTED-PASS" -e "REFTEST TEST-UNEXPECTED-FAIL" $TEST_DIR/reftest$TEST_FLAVOUR 2>&1 > failures-reftest$TEST_FLAVOUR.txt
|
||||
9
print_failures
Executable file
9
print_failures
Executable file
|
|
@ -0,0 +1,9 @@
|
|||
#!/usr/bin/bash
|
||||
# Analyze and print test failures
|
||||
|
||||
export TEST_DIR="test_results"
|
||||
|
||||
#./print-errors $TEST_DIR ""
|
||||
./print-errors $TEST_DIR "-wr"
|
||||
#./print-error-reftest $TEST_DIR ""
|
||||
./print-error-reftest $TEST_DIR "-wr"
|
||||
10
print_results
Executable file
10
print_results
Executable file
|
|
@ -0,0 +1,10 @@
|
|||
#!/usr/bin/bash
|
||||
# Analyze and print general test results
|
||||
|
||||
export TEST_DIR="test_results"
|
||||
|
||||
echo "Test results"
|
||||
#echo "Basic compositor"
|
||||
#./psummary $TEST_DIR ""
|
||||
echo "WebRender"
|
||||
./psummary $TEST_DIR "-wr"
|
||||
23
psummary
Executable file
23
psummary
Executable file
|
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/bash
|
||||
# Analyze and print specialized (basic/webrender) test results
|
||||
|
||||
TEST_DIR=$1
|
||||
TEST_FLAVOUR=$2
|
||||
|
||||
MPASS=`grep "TEST_END: Test OK" $TEST_DIR/mochitest$TEST_FLAVOUR | wc -l`
|
||||
MERR=`grep "TEST_END: Test ERROR" $TEST_DIR/mochitest$TEST_FLAVOUR | wc -l`
|
||||
MUNEX=`grep "TEST-UNEXPECTED-FAIL" $TEST_DIR/mochitest$TEST_FLAVOUR | wc -l`
|
||||
echo "Mochitest PASSED: $MPASS FAILED: $MERR UNEXPECTED-FAILURES: $MUNEX"
|
||||
|
||||
XPCPASS=`grep --text "Expected results:" $TEST_DIR/xpcshell$TEST_FLAVOUR | cut -d ' ' -f 3`
|
||||
XPCFAIL=`grep --text "Unexpected results:" $TEST_DIR/xpcshell$TEST_FLAVOUR | cut -d ' ' -f 3`
|
||||
echo "XPCShell: PASSED: $XPCPASS FAILED: $XPCFAIL"
|
||||
|
||||
CRPASS=`grep "REFTEST INFO | Successful:" $TEST_DIR/crashtest$TEST_FLAVOUR | cut -d ' ' -f 5`
|
||||
CRFAIL=`grep "^REFTEST INFO | Unexpected:" $TEST_DIR/crashtest$TEST_FLAVOUR | cut -d ' ' -f 5`
|
||||
echo "Crashtest: PASSED: $CRPASS FAILED: $CRFAIL"
|
||||
|
||||
RFPASS=`grep --text "REFTEST INFO | Successful:" $TEST_DIR/reftest$TEST_FLAVOUR | cut -d ' ' -f 5`
|
||||
RFUN=`grep --text "^REFTEST INFO | Unexpected:" $TEST_DIR/reftest$TEST_FLAVOUR | cut -d ' ' -f 5`
|
||||
RFKNOWN=`grep --text "REFTEST INFO | Known problems:" $TEST_DIR/reftest$TEST_FLAVOUR | cut -d ' ' -f 6`
|
||||
echo "Reftest: PASSED: $RFPASS FAILED: $RFUN Known issues: $RFKNOWN"
|
||||
78
pw1.patch
78
pw1.patch
|
|
@ -1,78 +0,0 @@
|
|||
|
||||
# HG changeset patch
|
||||
# User stransky <stransky@redhat.com>
|
||||
# Date 1604562416 0
|
||||
# Node ID 1c126b520042591194e88618ae11a6adc1da9a08
|
||||
# Parent 6e2e4f0e4a95b0cae777dda9369a9e9bf49a51b1
|
||||
Bug 1672987 Use PipeWire when Wayland display is actually used, r=dminor
|
||||
|
||||
Right now PipeWire is enabled when Wayland session is used regardless of an active Gtk backend (X11/Wayland).
|
||||
Let's use PipeWire only when Wayland Gtk backend is used and disable it for X11 one to avoid possible regressions.
|
||||
|
||||
Differential Revision: https://phabricator.services.mozilla.com/D94588
|
||||
|
||||
diff --git a/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capturer.cc b/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capturer.cc
|
||||
--- a/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capturer.cc
|
||||
+++ b/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capturer.cc
|
||||
@@ -8,16 +8,21 @@
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#include "modules/desktop_capture/desktop_capturer.h"
|
||||
|
||||
#include "modules/desktop_capture/desktop_capture_options.h"
|
||||
#include "modules/desktop_capture/desktop_capturer_differ_wrapper.h"
|
||||
|
||||
+#if defined(WEBRTC_USE_PIPEWIRE) || defined(USE_X11)
|
||||
+#include <gtk/gtk.h>
|
||||
+#include <gtk/gtkx.h>
|
||||
+#endif
|
||||
+
|
||||
namespace webrtc {
|
||||
|
||||
DesktopCapturer::~DesktopCapturer() = default;
|
||||
|
||||
void DesktopCapturer::SetSharedMemoryFactory(
|
||||
std::unique_ptr<SharedMemoryFactory> shared_memory_factory) {}
|
||||
|
||||
void DesktopCapturer::SetExcludedWindow(WindowId window) {}
|
||||
@@ -67,21 +72,37 @@ std::unique_ptr<DesktopCapturer> Desktop
|
||||
if (capturer && options.detect_updated_region()) {
|
||||
capturer.reset(new DesktopCapturerDifferWrapper(std::move(capturer)));
|
||||
}
|
||||
|
||||
return capturer;
|
||||
}
|
||||
|
||||
#if defined(WEBRTC_USE_PIPEWIRE) || defined(USE_X11)
|
||||
-bool DesktopCapturer::IsRunningUnderWayland() {
|
||||
+// Return true if Firefox is actually running with Wayland backend.
|
||||
+static bool IsWaylandDisplayUsed() {
|
||||
+ const auto display = gdk_display_get_default();
|
||||
+ if (display == nullptr) {
|
||||
+ // We're running in headless mode.
|
||||
+ return false;
|
||||
+ }
|
||||
+ return !GDK_IS_X11_DISPLAY(display);
|
||||
+}
|
||||
+
|
||||
+// Return true if Firefox is actually running on Wayland enabled session.
|
||||
+// It means some screensharing capabilities may be limited.
|
||||
+static bool IsWaylandSessionUsed() {
|
||||
const char* xdg_session_type = getenv("XDG_SESSION_TYPE");
|
||||
if (!xdg_session_type || strncmp(xdg_session_type, "wayland", 7) != 0)
|
||||
return false;
|
||||
|
||||
if (!(getenv("WAYLAND_DISPLAY")))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
+
|
||||
+bool DesktopCapturer::IsRunningUnderWayland() {
|
||||
+ return IsWaylandSessionUsed() ? IsWaylandDisplayUsed() : false;
|
||||
+}
|
||||
#endif // defined(WEBRTC_USE_PIPEWIRE) || defined(USE_X11)
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
901
pw2.patch
901
pw2.patch
|
|
@ -1,901 +0,0 @@
|
|||
|
||||
# HG changeset patch
|
||||
# User stransky <stransky@redhat.com>
|
||||
# Date 1604560111 0
|
||||
# Node ID 998e6d0b24e4a560e5664aaef87307e9c069ad87
|
||||
# Parent 1c126b520042591194e88618ae11a6adc1da9a08
|
||||
Bug 1672947 Update PipeWire WebRTC code to PipeWire 0.3, r=ng
|
||||
|
||||
Differential Revision: https://phabricator.services.mozilla.com/D94589
|
||||
|
||||
diff --git a/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc b/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
||||
--- a/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
||||
+++ b/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
||||
@@ -10,18 +10,20 @@
|
||||
|
||||
#include "modules/desktop_capture/linux/base_capturer_pipewire.h"
|
||||
|
||||
#include <gio/gunixfdlist.h>
|
||||
#include <glib-object.h>
|
||||
|
||||
#include <spa/param/format-utils.h>
|
||||
#include <spa/param/props.h>
|
||||
-#include <spa/param/video/raw-utils.h>
|
||||
-#include <spa/support/type-map.h>
|
||||
+
|
||||
+#include <sys/mman.h>
|
||||
+#include <sys/ioctl.h>
|
||||
+#include <sys/syscall.h>
|
||||
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
|
||||
#include "modules/desktop_capture/desktop_capture_options.h"
|
||||
#include "modules/desktop_capture/desktop_capturer.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/logging.h"
|
||||
@@ -32,180 +34,166 @@ const char kDesktopBusName[] = "org.free
|
||||
const char kDesktopObjectPath[] = "/org/freedesktop/portal/desktop";
|
||||
const char kDesktopRequestObjectPath[] =
|
||||
"/org/freedesktop/portal/desktop/request";
|
||||
const char kSessionInterfaceName[] = "org.freedesktop.portal.Session";
|
||||
const char kRequestInterfaceName[] = "org.freedesktop.portal.Request";
|
||||
const char kScreenCastInterfaceName[] = "org.freedesktop.portal.ScreenCast";
|
||||
|
||||
// static
|
||||
-void BaseCapturerPipeWire::OnStateChanged(void* data,
|
||||
- pw_remote_state old_state,
|
||||
- pw_remote_state state,
|
||||
- const char* error_message) {
|
||||
- BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
|
||||
- RTC_DCHECK(that);
|
||||
+struct dma_buf_sync {
|
||||
+ uint64_t flags;
|
||||
+};
|
||||
+#define DMA_BUF_SYNC_READ (1 << 0)
|
||||
+#define DMA_BUF_SYNC_START (0 << 2)
|
||||
+#define DMA_BUF_SYNC_END (1 << 2)
|
||||
+#define DMA_BUF_BASE 'b'
|
||||
+#define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)
|
||||
|
||||
- switch (state) {
|
||||
- case PW_REMOTE_STATE_ERROR:
|
||||
- RTC_LOG(LS_ERROR) << "PipeWire remote state error: " << error_message;
|
||||
+static void SyncDmaBuf(int fd, uint64_t start_or_end) {
|
||||
+ struct dma_buf_sync sync = { 0 };
|
||||
+
|
||||
+ sync.flags = start_or_end | DMA_BUF_SYNC_READ;
|
||||
+
|
||||
+ while(true) {
|
||||
+ int ret;
|
||||
+ ret = ioctl (fd, DMA_BUF_IOCTL_SYNC, &sync);
|
||||
+ if (ret == -1 && errno == EINTR) {
|
||||
+ continue;
|
||||
+ } else if (ret == -1) {
|
||||
+ RTC_LOG(LS_ERROR) << "Failed to synchronize DMA buffer: " << g_strerror(errno);
|
||||
break;
|
||||
- case PW_REMOTE_STATE_CONNECTED:
|
||||
- RTC_LOG(LS_INFO) << "PipeWire remote state: connected.";
|
||||
- that->CreateReceivingStream();
|
||||
+ } else {
|
||||
break;
|
||||
- case PW_REMOTE_STATE_CONNECTING:
|
||||
- RTC_LOG(LS_INFO) << "PipeWire remote state: connecting.";
|
||||
- break;
|
||||
- case PW_REMOTE_STATE_UNCONNECTED:
|
||||
- RTC_LOG(LS_INFO) << "PipeWire remote state: unconnected.";
|
||||
- break;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
+void BaseCapturerPipeWire::OnCoreError(void *data,
|
||||
+ uint32_t id,
|
||||
+ int seq,
|
||||
+ int res,
|
||||
+ const char *message) {
|
||||
+ RTC_LOG(LS_ERROR) << "core error: " << message;
|
||||
+}
|
||||
+
|
||||
+// static
|
||||
void BaseCapturerPipeWire::OnStreamStateChanged(void* data,
|
||||
pw_stream_state old_state,
|
||||
pw_stream_state state,
|
||||
const char* error_message) {
|
||||
BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
|
||||
RTC_DCHECK(that);
|
||||
|
||||
switch (state) {
|
||||
case PW_STREAM_STATE_ERROR:
|
||||
RTC_LOG(LS_ERROR) << "PipeWire stream state error: " << error_message;
|
||||
break;
|
||||
- case PW_STREAM_STATE_CONFIGURE:
|
||||
- pw_stream_set_active(that->pw_stream_, true);
|
||||
- break;
|
||||
+ case PW_STREAM_STATE_PAUSED:
|
||||
+ case PW_STREAM_STATE_STREAMING:
|
||||
case PW_STREAM_STATE_UNCONNECTED:
|
||||
case PW_STREAM_STATE_CONNECTING:
|
||||
- case PW_STREAM_STATE_READY:
|
||||
- case PW_STREAM_STATE_PAUSED:
|
||||
- case PW_STREAM_STATE_STREAMING:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
-void BaseCapturerPipeWire::OnStreamFormatChanged(void* data,
|
||||
- const struct spa_pod* format) {
|
||||
+void BaseCapturerPipeWire::OnStreamParamChanged(void *data, uint32_t id,
|
||||
+ const struct spa_pod *format) {
|
||||
BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
|
||||
RTC_DCHECK(that);
|
||||
|
||||
- RTC_LOG(LS_INFO) << "PipeWire stream format changed.";
|
||||
+ RTC_LOG(LS_INFO) << "PipeWire stream param changed.";
|
||||
|
||||
- if (!format) {
|
||||
- pw_stream_finish_format(that->pw_stream_, /*res=*/0, /*params=*/nullptr,
|
||||
- /*n_params=*/0);
|
||||
+ if (!format || id != SPA_PARAM_Format) {
|
||||
return;
|
||||
}
|
||||
|
||||
- that->spa_video_format_ = new spa_video_info_raw();
|
||||
- spa_format_video_raw_parse(format, that->spa_video_format_,
|
||||
- &that->pw_type_->format_video);
|
||||
+ spa_format_video_raw_parse(format, &that->spa_video_format_);
|
||||
|
||||
- auto width = that->spa_video_format_->size.width;
|
||||
- auto height = that->spa_video_format_->size.height;
|
||||
+ auto width = that->spa_video_format_.size.width;
|
||||
+ auto height = that->spa_video_format_.size.height;
|
||||
auto stride = SPA_ROUND_UP_N(width * kBytesPerPixel, 4);
|
||||
auto size = height * stride;
|
||||
|
||||
+ that->desktop_size_ = DesktopSize(width, height);
|
||||
+
|
||||
uint8_t buffer[1024] = {};
|
||||
auto builder = spa_pod_builder{buffer, sizeof(buffer)};
|
||||
|
||||
// Setup buffers and meta header for new format.
|
||||
- const struct spa_pod* params[2];
|
||||
- params[0] = reinterpret_cast<spa_pod*>(spa_pod_builder_object(
|
||||
- &builder,
|
||||
- // id to enumerate buffer requirements
|
||||
- that->pw_core_type_->param.idBuffers,
|
||||
- that->pw_core_type_->param_buffers.Buffers,
|
||||
- // Size: specified as integer (i) and set to specified size
|
||||
- ":", that->pw_core_type_->param_buffers.size, "i", size,
|
||||
- // Stride: specified as integer (i) and set to specified stride
|
||||
- ":", that->pw_core_type_->param_buffers.stride, "i", stride,
|
||||
- // Buffers: specifies how many buffers we want to deal with, set as
|
||||
- // integer (i) where preferred number is 8, then allowed number is defined
|
||||
- // as range (r) from min and max values and it is undecided (u) to allow
|
||||
- // negotiation
|
||||
- ":", that->pw_core_type_->param_buffers.buffers, "iru", 8,
|
||||
- SPA_POD_PROP_MIN_MAX(1, 32),
|
||||
- // Align: memory alignment of the buffer, set as integer (i) to specified
|
||||
- // value
|
||||
- ":", that->pw_core_type_->param_buffers.align, "i", 16));
|
||||
- params[1] = reinterpret_cast<spa_pod*>(spa_pod_builder_object(
|
||||
- &builder,
|
||||
- // id to enumerate supported metadata
|
||||
- that->pw_core_type_->param.idMeta, that->pw_core_type_->param_meta.Meta,
|
||||
- // Type: specified as id or enum (I)
|
||||
- ":", that->pw_core_type_->param_meta.type, "I",
|
||||
- that->pw_core_type_->meta.Header,
|
||||
- // Size: size of the metadata, specified as integer (i)
|
||||
- ":", that->pw_core_type_->param_meta.size, "i",
|
||||
- sizeof(struct spa_meta_header)));
|
||||
-
|
||||
- pw_stream_finish_format(that->pw_stream_, /*res=*/0, params, /*n_params=*/2);
|
||||
+ const struct spa_pod* params[3];
|
||||
+ params[0] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
|
||||
+ SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
|
||||
+ SPA_PARAM_BUFFERS_size, SPA_POD_Int(size),
|
||||
+ SPA_PARAM_BUFFERS_stride, SPA_POD_Int(stride),
|
||||
+ SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(8, 1, 32)));
|
||||
+ params[1] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
|
||||
+ SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
|
||||
+ SPA_PARAM_META_type, SPA_POD_Id(SPA_META_Header),
|
||||
+ SPA_PARAM_META_size, SPA_POD_Int(sizeof(struct spa_meta_header))));
|
||||
+ params[2] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
|
||||
+ SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta,
|
||||
+ SPA_PARAM_META_type, SPA_POD_Id (SPA_META_VideoCrop),
|
||||
+ SPA_PARAM_META_size, SPA_POD_Int (sizeof(struct spa_meta_region))));
|
||||
+ pw_stream_update_params(that->pw_stream_, params, 3);
|
||||
}
|
||||
|
||||
// static
|
||||
void BaseCapturerPipeWire::OnStreamProcess(void* data) {
|
||||
BaseCapturerPipeWire* that = static_cast<BaseCapturerPipeWire*>(data);
|
||||
RTC_DCHECK(that);
|
||||
|
||||
- pw_buffer* buf = nullptr;
|
||||
+ struct pw_buffer *next_buffer;
|
||||
+ struct pw_buffer *buffer = nullptr;
|
||||
|
||||
- if (!(buf = pw_stream_dequeue_buffer(that->pw_stream_))) {
|
||||
+ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_);
|
||||
+ while (next_buffer) {
|
||||
+ buffer = next_buffer;
|
||||
+ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_);
|
||||
+
|
||||
+ if (next_buffer) {
|
||||
+ pw_stream_queue_buffer (that->pw_stream_, buffer);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (!buffer) {
|
||||
return;
|
||||
}
|
||||
|
||||
- that->HandleBuffer(buf);
|
||||
+ that->HandleBuffer(buffer);
|
||||
|
||||
- pw_stream_queue_buffer(that->pw_stream_, buf);
|
||||
+ pw_stream_queue_buffer(that->pw_stream_, buffer);
|
||||
}
|
||||
|
||||
BaseCapturerPipeWire::BaseCapturerPipeWire(CaptureSourceType source_type)
|
||||
: capture_source_type_(source_type) {}
|
||||
|
||||
BaseCapturerPipeWire::~BaseCapturerPipeWire() {
|
||||
if (pw_main_loop_) {
|
||||
pw_thread_loop_stop(pw_main_loop_);
|
||||
}
|
||||
|
||||
- if (pw_type_) {
|
||||
- delete pw_type_;
|
||||
- }
|
||||
-
|
||||
- if (spa_video_format_) {
|
||||
- delete spa_video_format_;
|
||||
- }
|
||||
-
|
||||
if (pw_stream_) {
|
||||
pw_stream_destroy(pw_stream_);
|
||||
}
|
||||
|
||||
- if (pw_remote_) {
|
||||
- pw_remote_destroy(pw_remote_);
|
||||
+ if (pw_core_) {
|
||||
+ pw_core_disconnect(pw_core_);
|
||||
}
|
||||
|
||||
- if (pw_core_) {
|
||||
- pw_core_destroy(pw_core_);
|
||||
+ if (pw_context_) {
|
||||
+ pw_context_destroy(pw_context_);
|
||||
}
|
||||
|
||||
if (pw_main_loop_) {
|
||||
pw_thread_loop_destroy(pw_main_loop_);
|
||||
}
|
||||
|
||||
- if (pw_loop_) {
|
||||
- pw_loop_destroy(pw_loop_);
|
||||
- }
|
||||
-
|
||||
- if (current_frame_) {
|
||||
- free(current_frame_);
|
||||
- }
|
||||
-
|
||||
if (start_request_signal_id_) {
|
||||
g_dbus_connection_signal_unsubscribe(connection_, start_request_signal_id_);
|
||||
}
|
||||
if (sources_request_signal_id_) {
|
||||
g_dbus_connection_signal_unsubscribe(connection_,
|
||||
sources_request_signal_id_);
|
||||
}
|
||||
if (session_request_signal_id_) {
|
||||
@@ -245,143 +233,210 @@ void BaseCapturerPipeWire::InitPortal()
|
||||
kDesktopBusName, kDesktopObjectPath, kScreenCastInterfaceName,
|
||||
/*cancellable=*/nullptr,
|
||||
reinterpret_cast<GAsyncReadyCallback>(OnProxyRequested), this);
|
||||
}
|
||||
|
||||
void BaseCapturerPipeWire::InitPipeWire() {
|
||||
pw_init(/*argc=*/nullptr, /*argc=*/nullptr);
|
||||
|
||||
- pw_loop_ = pw_loop_new(/*properties=*/nullptr);
|
||||
- pw_main_loop_ = pw_thread_loop_new(pw_loop_, "pipewire-main-loop");
|
||||
+ pw_main_loop_ = pw_thread_loop_new("pipewire-main-loop", nullptr);
|
||||
+ pw_context_ = pw_context_new(pw_thread_loop_get_loop(pw_main_loop_), nullptr, 0);
|
||||
+ if (!pw_context_) {
|
||||
+ RTC_LOG(LS_ERROR) << "Failed to create PipeWire context";
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
- pw_core_ = pw_core_new(pw_loop_, /*properties=*/nullptr);
|
||||
- pw_core_type_ = pw_core_get_type(pw_core_);
|
||||
- pw_remote_ = pw_remote_new(pw_core_, nullptr, /*user_data_size=*/0);
|
||||
-
|
||||
- InitPipeWireTypes();
|
||||
+ pw_core_ = pw_context_connect(pw_context_, nullptr, 0);
|
||||
+ if (!pw_core_) {
|
||||
+ RTC_LOG(LS_ERROR) << "Failed to connect PipeWire context";
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
// Initialize event handlers, remote end and stream-related.
|
||||
- pw_remote_events_.version = PW_VERSION_REMOTE_EVENTS;
|
||||
- pw_remote_events_.state_changed = &OnStateChanged;
|
||||
+ pw_core_events_.version = PW_VERSION_CORE_EVENTS;
|
||||
+ pw_core_events_.error = &OnCoreError;
|
||||
|
||||
pw_stream_events_.version = PW_VERSION_STREAM_EVENTS;
|
||||
pw_stream_events_.state_changed = &OnStreamStateChanged;
|
||||
- pw_stream_events_.format_changed = &OnStreamFormatChanged;
|
||||
+ pw_stream_events_.param_changed = &OnStreamParamChanged;
|
||||
pw_stream_events_.process = &OnStreamProcess;
|
||||
|
||||
- pw_remote_add_listener(pw_remote_, &spa_remote_listener_, &pw_remote_events_,
|
||||
- this);
|
||||
- pw_remote_connect_fd(pw_remote_, pw_fd_);
|
||||
+ pw_core_add_listener(pw_core_, &spa_core_listener_, &pw_core_events_, this);
|
||||
+
|
||||
+ pw_stream_ = CreateReceivingStream();
|
||||
+ if (!pw_stream_) {
|
||||
+ RTC_LOG(LS_ERROR) << "Failed to create PipeWire stream";
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
if (pw_thread_loop_start(pw_main_loop_) < 0) {
|
||||
RTC_LOG(LS_ERROR) << "Failed to start main PipeWire loop";
|
||||
portal_init_failed_ = true;
|
||||
}
|
||||
}
|
||||
|
||||
-void BaseCapturerPipeWire::InitPipeWireTypes() {
|
||||
- spa_type_map* map = pw_core_type_->map;
|
||||
- pw_type_ = new PipeWireType();
|
||||
-
|
||||
- spa_type_media_type_map(map, &pw_type_->media_type);
|
||||
- spa_type_media_subtype_map(map, &pw_type_->media_subtype);
|
||||
- spa_type_format_video_map(map, &pw_type_->format_video);
|
||||
- spa_type_video_format_map(map, &pw_type_->video_format);
|
||||
-}
|
||||
+pw_stream* BaseCapturerPipeWire::CreateReceivingStream() {
|
||||
+ spa_rectangle pwMinScreenBounds = spa_rectangle{1, 1};
|
||||
+ spa_rectangle pwMaxScreenBounds = spa_rectangle{UINT32_MAX, UINT32_MAX};
|
||||
|
||||
-void BaseCapturerPipeWire::CreateReceivingStream() {
|
||||
- spa_rectangle pwMinScreenBounds = spa_rectangle{1, 1};
|
||||
- spa_rectangle pwScreenBounds =
|
||||
- spa_rectangle{static_cast<uint32_t>(desktop_size_.width()),
|
||||
- static_cast<uint32_t>(desktop_size_.height())};
|
||||
+ auto stream = pw_stream_new(pw_core_, "webrtc-pipewire-stream", nullptr);
|
||||
|
||||
- spa_fraction pwFrameRateMin = spa_fraction{0, 1};
|
||||
- spa_fraction pwFrameRateMax = spa_fraction{60, 1};
|
||||
-
|
||||
- pw_properties* reuseProps = pw_properties_new("pipewire.client.reuse", "1",
|
||||
- /*end of varargs*/ nullptr);
|
||||
- pw_stream_ = pw_stream_new(pw_remote_, "webrtc-consume-stream", reuseProps);
|
||||
+ if (!stream) {
|
||||
+ RTC_LOG(LS_ERROR) << "Could not create receiving stream.";
|
||||
+ return nullptr;
|
||||
+ }
|
||||
|
||||
uint8_t buffer[1024] = {};
|
||||
- const spa_pod* params[1];
|
||||
- spa_pod_builder builder = spa_pod_builder{buffer, sizeof(buffer)};
|
||||
- params[0] = reinterpret_cast<spa_pod*>(spa_pod_builder_object(
|
||||
- &builder,
|
||||
- // id to enumerate formats
|
||||
- pw_core_type_->param.idEnumFormat, pw_core_type_->spa_format, "I",
|
||||
- pw_type_->media_type.video, "I", pw_type_->media_subtype.raw,
|
||||
- // Video format: specified as id or enum (I), preferred format is BGRx,
|
||||
- // then allowed formats are enumerated (e) and the format is undecided (u)
|
||||
- // to allow negotiation
|
||||
- ":", pw_type_->format_video.format, "Ieu", pw_type_->video_format.BGRx,
|
||||
- SPA_POD_PROP_ENUM(2, pw_type_->video_format.RGBx,
|
||||
- pw_type_->video_format.BGRx),
|
||||
- // Video size: specified as rectangle (R), preferred size is specified as
|
||||
- // first parameter, then allowed size is defined as range (r) from min and
|
||||
- // max values and the format is undecided (u) to allow negotiation
|
||||
- ":", pw_type_->format_video.size, "Rru", &pwScreenBounds, 2,
|
||||
- &pwMinScreenBounds, &pwScreenBounds,
|
||||
- // Frame rate: specified as fraction (F) and set to minimum frame rate
|
||||
- // value
|
||||
- ":", pw_type_->format_video.framerate, "F", &pwFrameRateMin,
|
||||
- // Max frame rate: specified as fraction (F), preferred frame rate is set
|
||||
- // to maximum value, then allowed frame rate is defined as range (r) from
|
||||
- // min and max values and it is undecided (u) to allow negotiation
|
||||
- ":", pw_type_->format_video.max_framerate, "Fru", &pwFrameRateMax, 2,
|
||||
- &pwFrameRateMin, &pwFrameRateMax));
|
||||
+ const spa_pod* params[2];
|
||||
+ spa_pod_builder builder = SPA_POD_BUILDER_INIT(buffer, sizeof (buffer));
|
||||
|
||||
- pw_stream_add_listener(pw_stream_, &spa_stream_listener_, &pw_stream_events_,
|
||||
- this);
|
||||
- pw_stream_flags flags = static_cast<pw_stream_flags>(
|
||||
- PW_STREAM_FLAG_AUTOCONNECT | PW_STREAM_FLAG_INACTIVE |
|
||||
- PW_STREAM_FLAG_MAP_BUFFERS);
|
||||
- if (pw_stream_connect(pw_stream_, PW_DIRECTION_INPUT, /*port_path=*/nullptr,
|
||||
- flags, params,
|
||||
- /*n_params=*/1) != 0) {
|
||||
+ params[0] = reinterpret_cast<spa_pod *>(spa_pod_builder_add_object(&builder,
|
||||
+ SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat,
|
||||
+ SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_video),
|
||||
+ SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw),
|
||||
+ SPA_FORMAT_VIDEO_format, SPA_POD_CHOICE_ENUM_Id(5, SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_RGBx, SPA_VIDEO_FORMAT_RGBA,
|
||||
+ SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_BGRA),
|
||||
+ SPA_FORMAT_VIDEO_size, SPA_POD_CHOICE_RANGE_Rectangle(&pwMinScreenBounds,
|
||||
+ &pwMinScreenBounds,
|
||||
+ &pwMaxScreenBounds),
|
||||
+ 0));
|
||||
+ pw_stream_add_listener(stream, &spa_stream_listener_, &pw_stream_events_, this);
|
||||
+
|
||||
+ if (pw_stream_connect(stream, PW_DIRECTION_INPUT, pw_stream_node_id_,
|
||||
+ PW_STREAM_FLAG_AUTOCONNECT, params, 1) != 0) {
|
||||
RTC_LOG(LS_ERROR) << "Could not connect receiving stream.";
|
||||
portal_init_failed_ = true;
|
||||
- return;
|
||||
+ }
|
||||
+
|
||||
+ return stream;
|
||||
+}
|
||||
+
|
||||
+static void SpaBufferUnmap(unsigned char *map, int map_size, bool IsDMABuf, int fd) {
|
||||
+ if (map) {
|
||||
+ if (IsDMABuf) {
|
||||
+ SyncDmaBuf(fd, DMA_BUF_SYNC_END);
|
||||
+ }
|
||||
+ munmap(map, map_size);
|
||||
}
|
||||
}
|
||||
|
||||
void BaseCapturerPipeWire::HandleBuffer(pw_buffer* buffer) {
|
||||
spa_buffer* spaBuffer = buffer->buffer;
|
||||
- void* src = nullptr;
|
||||
+ uint8_t *map = nullptr;
|
||||
+ uint8_t* src = nullptr;
|
||||
|
||||
- if (!(src = spaBuffer->datas[0].data)) {
|
||||
+ if (spaBuffer->datas[0].chunk->size == 0) {
|
||||
+ RTC_LOG(LS_ERROR) << "Failed to get video stream: Zero size.";
|
||||
return;
|
||||
}
|
||||
|
||||
- uint32_t maxSize = spaBuffer->datas[0].maxsize;
|
||||
- int32_t srcStride = spaBuffer->datas[0].chunk->stride;
|
||||
- if (srcStride != (desktop_size_.width() * kBytesPerPixel)) {
|
||||
- RTC_LOG(LS_ERROR) << "Got buffer with stride different from screen stride: "
|
||||
- << srcStride
|
||||
- << " != " << (desktop_size_.width() * kBytesPerPixel);
|
||||
- portal_init_failed_ = true;
|
||||
+ switch (spaBuffer->datas[0].type) {
|
||||
+ case SPA_DATA_MemFd:
|
||||
+ case SPA_DATA_DmaBuf:
|
||||
+ map = static_cast<uint8_t*>(mmap(
|
||||
+ nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
|
||||
+ PROT_READ, MAP_PRIVATE, spaBuffer->datas[0].fd, 0));
|
||||
+ if (map == MAP_FAILED) {
|
||||
+ RTC_LOG(LS_ERROR) << "Failed to mmap memory: " << std::strerror(errno);
|
||||
+ return;
|
||||
+ }
|
||||
+ if (spaBuffer->datas[0].type == SPA_DATA_DmaBuf) {
|
||||
+ SyncDmaBuf(spaBuffer->datas[0].fd, DMA_BUF_SYNC_START);
|
||||
+ }
|
||||
+ src = SPA_MEMBER(map, spaBuffer->datas[0].mapoffset, uint8_t);
|
||||
+ break;
|
||||
+ case SPA_DATA_MemPtr:
|
||||
+ map = nullptr;
|
||||
+ src = static_cast<uint8_t*>(spaBuffer->datas[0].data);
|
||||
+ break;
|
||||
+ default:
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (!src) {
|
||||
+ RTC_LOG(LS_ERROR) << "Failed to get video stream: Wrong data after mmap()";
|
||||
+ SpaBufferUnmap(map,
|
||||
+ spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
|
||||
+ spaBuffer->datas[0].type == SPA_DATA_DmaBuf, spaBuffer->datas[0].fd);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ struct spa_meta_region* video_metadata =
|
||||
+ static_cast<struct spa_meta_region*>(
|
||||
+ spa_buffer_find_meta_data(spaBuffer, SPA_META_VideoCrop, sizeof(*video_metadata)));
|
||||
+
|
||||
+ // Video size from metada is bigger than an actual video stream size.
|
||||
+ // The metadata are wrong or we should up-scale te video...in both cases
|
||||
+ // just quit now.
|
||||
+ if (video_metadata &&
|
||||
+ (video_metadata->region.size.width > (uint32_t)desktop_size_.width() ||
|
||||
+ video_metadata->region.size.height > (uint32_t)desktop_size_.height())) {
|
||||
+ RTC_LOG(LS_ERROR) << "Stream metadata sizes are wrong!";
|
||||
+ SpaBufferUnmap(map,
|
||||
+ spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
|
||||
+ spaBuffer->datas[0].type == SPA_DATA_DmaBuf, spaBuffer->datas[0].fd);
|
||||
return;
|
||||
}
|
||||
|
||||
- if (!current_frame_) {
|
||||
- current_frame_ = static_cast<uint8_t*>(malloc(maxSize));
|
||||
+ // Use video metada when video size from metadata is set and smaller than
|
||||
+ // video stream size, so we need to adjust it.
|
||||
+ video_metadata_use_ = (video_metadata &&
|
||||
+ video_metadata->region.size.width != 0 &&
|
||||
+ video_metadata->region.size.height != 0 &&
|
||||
+ (video_metadata->region.size.width < (uint32_t)desktop_size_.width() ||
|
||||
+ video_metadata->region.size.height < (uint32_t)desktop_size_.height()));
|
||||
+
|
||||
+ DesktopSize video_size_prev = video_size_;
|
||||
+ if (video_metadata_use_) {
|
||||
+ video_size_ = DesktopSize(video_metadata->region.size.width,
|
||||
+ video_metadata->region.size.height);
|
||||
+ } else {
|
||||
+ video_size_ = desktop_size_;
|
||||
}
|
||||
- RTC_DCHECK(current_frame_ != nullptr);
|
||||
+
|
||||
+ if (!current_frame_ ||
|
||||
+ (video_metadata_use_ && !video_size_.equals(video_size_prev))) {
|
||||
+ current_frame_ =
|
||||
+ std::make_unique<uint8_t[]>
|
||||
+ (video_size_.width() * video_size_.height() * kBytesPerPixel);
|
||||
+ }
|
||||
+
|
||||
+ const int32_t dstStride = video_size_.width() * kBytesPerPixel;
|
||||
+ const int32_t srcStride = spaBuffer->datas[0].chunk->stride;
|
||||
|
||||
- // If both sides decided to go with the RGBx format we need to convert it to
|
||||
- // BGRx to match color format expected by WebRTC.
|
||||
- if (spa_video_format_->format == pw_type_->video_format.RGBx) {
|
||||
- uint8_t* tempFrame = static_cast<uint8_t*>(malloc(maxSize));
|
||||
- std::memcpy(tempFrame, src, maxSize);
|
||||
- ConvertRGBxToBGRx(tempFrame, maxSize);
|
||||
- std::memcpy(current_frame_, tempFrame, maxSize);
|
||||
- free(tempFrame);
|
||||
- } else {
|
||||
- std::memcpy(current_frame_, src, maxSize);
|
||||
+ // Adjust source content based on metadata video position
|
||||
+ if (video_metadata_use_ &&
|
||||
+ (video_metadata->region.position.y + video_size_.height() <= desktop_size_.height())) {
|
||||
+ src += srcStride * video_metadata->region.position.y;
|
||||
}
|
||||
+ const int xOffset =
|
||||
+ video_metadata_use_ &&
|
||||
+ (video_metadata->region.position.x + video_size_.width() <= desktop_size_.width())
|
||||
+ ? video_metadata->region.position.x * kBytesPerPixel
|
||||
+ : 0;
|
||||
+
|
||||
+ uint8_t* dst = current_frame_.get();
|
||||
+ for (int i = 0; i < video_size_.height(); ++i) {
|
||||
+ // Adjust source content based on crop video position if needed
|
||||
+ src += xOffset;
|
||||
+ std::memcpy(dst, src, dstStride);
|
||||
+ // If both sides decided to go with the RGBx format we need to convert it to
|
||||
+ // BGRx to match color format expected by WebRTC.
|
||||
+ if (spa_video_format_.format == SPA_VIDEO_FORMAT_RGBx ||
|
||||
+ spa_video_format_.format == SPA_VIDEO_FORMAT_RGBA) {
|
||||
+ ConvertRGBxToBGRx(dst, dstStride);
|
||||
+ }
|
||||
+ src += srcStride - xOffset;
|
||||
+ dst += dstStride;
|
||||
+ }
|
||||
+
|
||||
+ SpaBufferUnmap(map,
|
||||
+ spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset,
|
||||
+ spaBuffer->datas[0].type == SPA_DATA_DmaBuf, spaBuffer->datas[0].fd);
|
||||
}
|
||||
|
||||
void BaseCapturerPipeWire::ConvertRGBxToBGRx(uint8_t* frame, uint32_t size) {
|
||||
// Change color format for KDE KWin which uses RGBx and not BGRx
|
||||
for (uint32_t i = 0; i < size; i += 4) {
|
||||
uint8_t tempR = frame[i];
|
||||
uint8_t tempB = frame[i + 2];
|
||||
frame[i] = tempB;
|
||||
@@ -713,27 +768,22 @@ void BaseCapturerPipeWire::OnStartReques
|
||||
// Array of PipeWire streams. See
|
||||
// https://github.com/flatpak/xdg-desktop-portal/blob/master/data/org.freedesktop.portal.ScreenCast.xml
|
||||
// documentation for <method name="Start">.
|
||||
if (g_variant_lookup(response_data, "streams", "a(ua{sv})", &iter)) {
|
||||
GVariant* variant;
|
||||
|
||||
while (g_variant_iter_next(iter, "@(ua{sv})", &variant)) {
|
||||
guint32 stream_id;
|
||||
- gint32 width;
|
||||
- gint32 height;
|
||||
GVariant* options;
|
||||
|
||||
g_variant_get(variant, "(u@a{sv})", &stream_id, &options);
|
||||
RTC_DCHECK(options != nullptr);
|
||||
|
||||
- g_variant_lookup(options, "size", "(ii)", &width, &height);
|
||||
-
|
||||
- that->desktop_size_.set(width, height);
|
||||
-
|
||||
+ that->pw_stream_node_id_ = stream_id;
|
||||
g_variant_unref(options);
|
||||
g_variant_unref(variant);
|
||||
}
|
||||
}
|
||||
g_variant_iter_free(iter);
|
||||
g_variant_unref(response_data);
|
||||
|
||||
that->OpenPipeWireRemote();
|
||||
@@ -808,20 +858,25 @@ void BaseCapturerPipeWire::CaptureFrame(
|
||||
return;
|
||||
}
|
||||
|
||||
if (!current_frame_) {
|
||||
callback_->OnCaptureResult(Result::ERROR_TEMPORARY, nullptr);
|
||||
return;
|
||||
}
|
||||
|
||||
- std::unique_ptr<DesktopFrame> result(new BasicDesktopFrame(desktop_size_));
|
||||
+ DesktopSize frame_size = desktop_size_;
|
||||
+ if (video_metadata_use_) {
|
||||
+ frame_size = video_size_;
|
||||
+ }
|
||||
+
|
||||
+ std::unique_ptr<DesktopFrame> result(new BasicDesktopFrame(frame_size));
|
||||
result->CopyPixelsFrom(
|
||||
- current_frame_, (desktop_size_.width() * kBytesPerPixel),
|
||||
- DesktopRect::MakeWH(desktop_size_.width(), desktop_size_.height()));
|
||||
+ current_frame_.get(), (frame_size.width() * kBytesPerPixel),
|
||||
+ DesktopRect::MakeWH(frame_size.width(), frame_size.height()));
|
||||
if (!result) {
|
||||
callback_->OnCaptureResult(Result::ERROR_TEMPORARY, nullptr);
|
||||
return;
|
||||
}
|
||||
callback_->OnCaptureResult(Result::SUCCESS, std::move(result));
|
||||
}
|
||||
|
||||
bool BaseCapturerPipeWire::GetSourceList(SourceList* sources) {
|
||||
@@ -832,9 +887,27 @@ bool BaseCapturerPipeWire::GetSourceList
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BaseCapturerPipeWire::SelectSource(SourceId id) {
|
||||
// Screen selection is handled by the xdg-desktop-portal.
|
||||
return true;
|
||||
}
|
||||
|
||||
+// static
|
||||
+std::unique_ptr<DesktopCapturer>
|
||||
+BaseCapturerPipeWire::CreateRawScreenCapturer(
|
||||
+ const DesktopCaptureOptions& options) {
|
||||
+ std::unique_ptr<BaseCapturerPipeWire> capturer =
|
||||
+ std::make_unique<BaseCapturerPipeWire>(BaseCapturerPipeWire::CaptureSourceType::kAny);
|
||||
+ return std::move(capturer);}
|
||||
+
|
||||
+// static
|
||||
+std::unique_ptr<DesktopCapturer>
|
||||
+BaseCapturerPipeWire::CreateRawWindowCapturer(
|
||||
+ const DesktopCaptureOptions& options) {
|
||||
+
|
||||
+ std::unique_ptr<BaseCapturerPipeWire> capturer =
|
||||
+ std::make_unique<BaseCapturerPipeWire>(BaseCapturerPipeWire::CaptureSourceType::kAny);
|
||||
+ return std::move(capturer);
|
||||
+}
|
||||
+
|
||||
} // namespace webrtc
|
||||
diff --git a/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h b/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h
|
||||
--- a/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h
|
||||
+++ b/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h
|
||||
@@ -17,99 +17,102 @@
|
||||
#include <spa/param/video/format-utils.h>
|
||||
|
||||
#include "modules/desktop_capture/desktop_capture_options.h"
|
||||
#include "modules/desktop_capture/desktop_capturer.h"
|
||||
#include "rtc_base/constructormagic.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
-class PipeWireType {
|
||||
- public:
|
||||
- spa_type_media_type media_type;
|
||||
- spa_type_media_subtype media_subtype;
|
||||
- spa_type_format_video format_video;
|
||||
- spa_type_video_format video_format;
|
||||
-};
|
||||
-
|
||||
class BaseCapturerPipeWire : public DesktopCapturer {
|
||||
public:
|
||||
- enum CaptureSourceType { Screen = 1, Window };
|
||||
+ enum CaptureSourceType : uint32_t {
|
||||
+ kScreen = 0b01,
|
||||
+ kWindow = 0b10,
|
||||
+ kAny = 0b11
|
||||
+ };
|
||||
|
||||
explicit BaseCapturerPipeWire(CaptureSourceType source_type);
|
||||
~BaseCapturerPipeWire() override;
|
||||
|
||||
// DesktopCapturer interface.
|
||||
void Start(Callback* delegate) override;
|
||||
void CaptureFrame() override;
|
||||
bool GetSourceList(SourceList* sources) override;
|
||||
bool SelectSource(SourceId id) override;
|
||||
|
||||
+ static std::unique_ptr<DesktopCapturer> CreateRawScreenCapturer(
|
||||
+ const DesktopCaptureOptions& options);
|
||||
+
|
||||
+ static std::unique_ptr<DesktopCapturer> CreateRawWindowCapturer(
|
||||
+ const DesktopCaptureOptions& options);
|
||||
+
|
||||
private:
|
||||
// PipeWire types -->
|
||||
+ pw_context* pw_context_ = nullptr;
|
||||
pw_core* pw_core_ = nullptr;
|
||||
- pw_type* pw_core_type_ = nullptr;
|
||||
pw_stream* pw_stream_ = nullptr;
|
||||
- pw_remote* pw_remote_ = nullptr;
|
||||
- pw_loop* pw_loop_ = nullptr;
|
||||
pw_thread_loop* pw_main_loop_ = nullptr;
|
||||
- PipeWireType* pw_type_ = nullptr;
|
||||
|
||||
+ spa_hook spa_core_listener_ = {};
|
||||
spa_hook spa_stream_listener_ = {};
|
||||
- spa_hook spa_remote_listener_ = {};
|
||||
|
||||
+ pw_core_events pw_core_events_ = {};
|
||||
pw_stream_events pw_stream_events_ = {};
|
||||
- pw_remote_events pw_remote_events_ = {};
|
||||
|
||||
- spa_video_info_raw* spa_video_format_ = nullptr;
|
||||
+ struct spa_video_info_raw spa_video_format_;
|
||||
|
||||
+ guint32 pw_stream_node_id_ = 0;
|
||||
gint32 pw_fd_ = -1;
|
||||
|
||||
CaptureSourceType capture_source_type_ =
|
||||
- BaseCapturerPipeWire::CaptureSourceType::Screen;
|
||||
+ BaseCapturerPipeWire::CaptureSourceType::kAny;
|
||||
|
||||
// <-- end of PipeWire types
|
||||
|
||||
GDBusConnection* connection_ = nullptr;
|
||||
GDBusProxy* proxy_ = nullptr;
|
||||
gchar* portal_handle_ = nullptr;
|
||||
gchar* session_handle_ = nullptr;
|
||||
gchar* sources_handle_ = nullptr;
|
||||
gchar* start_handle_ = nullptr;
|
||||
guint session_request_signal_id_ = 0;
|
||||
guint sources_request_signal_id_ = 0;
|
||||
guint start_request_signal_id_ = 0;
|
||||
|
||||
+ bool video_metadata_use_ = false;
|
||||
+ DesktopSize video_size_;
|
||||
DesktopSize desktop_size_ = {};
|
||||
DesktopCaptureOptions options_ = {};
|
||||
|
||||
- uint8_t* current_frame_ = nullptr;
|
||||
+ std::unique_ptr<uint8_t[]> current_frame_;
|
||||
Callback* callback_ = nullptr;
|
||||
|
||||
bool portal_init_failed_ = false;
|
||||
|
||||
void InitPortal();
|
||||
void InitPipeWire();
|
||||
- void InitPipeWireTypes();
|
||||
|
||||
- void CreateReceivingStream();
|
||||
+ pw_stream* CreateReceivingStream();
|
||||
void HandleBuffer(pw_buffer* buffer);
|
||||
|
||||
void ConvertRGBxToBGRx(uint8_t* frame, uint32_t size);
|
||||
|
||||
- static void OnStateChanged(void* data,
|
||||
- pw_remote_state old_state,
|
||||
- pw_remote_state state,
|
||||
- const char* error);
|
||||
+ static void OnCoreError(void *data,
|
||||
+ uint32_t id,
|
||||
+ int seq,
|
||||
+ int res,
|
||||
+ const char *message);
|
||||
+ static void OnStreamParamChanged(void *data,
|
||||
+ uint32_t id,
|
||||
+ const struct spa_pod *format);
|
||||
static void OnStreamStateChanged(void* data,
|
||||
pw_stream_state old_state,
|
||||
pw_stream_state state,
|
||||
const char* error_message);
|
||||
-
|
||||
- static void OnStreamFormatChanged(void* data, const struct spa_pod* format);
|
||||
static void OnStreamProcess(void* data);
|
||||
static void OnNewBuffer(void* data, uint32_t id);
|
||||
|
||||
guint SetupRequestResponseSignal(const gchar* object_path,
|
||||
GDBusSignalCallback callback);
|
||||
|
||||
static void OnProxyRequested(GObject* object,
|
||||
GAsyncResult* result,
|
||||
diff --git a/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc b/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc
|
||||
--- a/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc
|
||||
+++ b/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc
|
||||
@@ -10,17 +10,17 @@
|
||||
|
||||
#include "modules/desktop_capture/linux/screen_capturer_pipewire.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
ScreenCapturerPipeWire::ScreenCapturerPipeWire()
|
||||
- : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::Screen) {}
|
||||
+ : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::kScreen) {}
|
||||
ScreenCapturerPipeWire::~ScreenCapturerPipeWire() {}
|
||||
|
||||
// static
|
||||
std::unique_ptr<DesktopCapturer>
|
||||
ScreenCapturerPipeWire::CreateRawScreenCapturer(
|
||||
const DesktopCaptureOptions& options) {
|
||||
return std::make_unique<ScreenCapturerPipeWire>();
|
||||
}
|
||||
diff --git a/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc b/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc
|
||||
--- a/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc
|
||||
+++ b/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc
|
||||
@@ -10,17 +10,17 @@
|
||||
|
||||
#include "modules/desktop_capture/linux/window_capturer_pipewire.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
WindowCapturerPipeWire::WindowCapturerPipeWire()
|
||||
- : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::Window) {}
|
||||
+ : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::kWindow) {}
|
||||
WindowCapturerPipeWire::~WindowCapturerPipeWire() {}
|
||||
|
||||
// static
|
||||
std::unique_ptr<DesktopCapturer>
|
||||
WindowCapturerPipeWire::CreateRawWindowCapturer(
|
||||
const DesktopCaptureOptions& options) {
|
||||
return std::make_unique<WindowCapturerPipeWire>();
|
||||
}
|
||||
diff --git a/third_party/libwebrtc/webrtc/modules/desktop_capture/screen_capturer_linux.cc b/third_party/libwebrtc/webrtc/modules/desktop_capture/screen_capturer_linux.cc
|
||||
--- a/third_party/libwebrtc/webrtc/modules/desktop_capture/screen_capturer_linux.cc
|
||||
+++ b/third_party/libwebrtc/webrtc/modules/desktop_capture/screen_capturer_linux.cc
|
||||
@@ -21,17 +21,17 @@
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
// static
|
||||
std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
|
||||
const DesktopCaptureOptions& options) {
|
||||
#if defined(WEBRTC_USE_PIPEWIRE)
|
||||
if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland()) {
|
||||
- return ScreenCapturerPipeWire::CreateRawScreenCapturer(options);
|
||||
+ return BaseCapturerPipeWire::CreateRawScreenCapturer(options);
|
||||
}
|
||||
#endif // defined(WEBRTC_USE_PIPEWIRE)
|
||||
|
||||
#if defined(USE_X11)
|
||||
return ScreenCapturerX11::CreateRawScreenCapturer(options);
|
||||
#endif // defined(USE_X11)
|
||||
|
||||
return nullptr;
|
||||
diff --git a/third_party/libwebrtc/webrtc/modules/desktop_capture/window_capturer_linux.cc b/third_party/libwebrtc/webrtc/modules/desktop_capture/window_capturer_linux.cc
|
||||
--- a/third_party/libwebrtc/webrtc/modules/desktop_capture/window_capturer_linux.cc
|
||||
+++ b/third_party/libwebrtc/webrtc/modules/desktop_capture/window_capturer_linux.cc
|
||||
@@ -21,17 +21,17 @@
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
// static
|
||||
std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawWindowCapturer(
|
||||
const DesktopCaptureOptions& options) {
|
||||
#if defined(WEBRTC_USE_PIPEWIRE)
|
||||
if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland()) {
|
||||
- return WindowCapturerPipeWire::CreateRawWindowCapturer(options);
|
||||
+ return BaseCapturerPipeWire::CreateRawWindowCapturer(options);
|
||||
}
|
||||
#endif // defined(WEBRTC_USE_PIPEWIRE)
|
||||
|
||||
#if defined(USE_X11)
|
||||
return WindowCapturerX11::CreateRawWindowCapturer(options);
|
||||
#endif // defined(USE_X11)
|
||||
|
||||
return nullptr;
|
||||
|
||||
183
pw3.patch
183
pw3.patch
|
|
@ -1,183 +0,0 @@
|
|||
|
||||
# HG changeset patch
|
||||
# User stransky <stransky@redhat.com>
|
||||
# Date 1604562423 0
|
||||
# Node ID d1a244822d7811575f5bb3cd024f8f324275aec2
|
||||
# Parent 998e6d0b24e4a560e5664aaef87307e9c069ad87
|
||||
Bug 1672989 Build PipeWire as a part of default builds, r=dminor
|
||||
|
||||
Differential Revision: https://phabricator.services.mozilla.com/D94590
|
||||
|
||||
diff --git a/third_party/libwebrtc/webrtc/modules/desktop_capture/BUILD.gn b/third_party/libwebrtc/webrtc/modules/desktop_capture/BUILD.gn
|
||||
--- a/third_party/libwebrtc/webrtc/modules/desktop_capture/BUILD.gn
|
||||
+++ b/third_party/libwebrtc/webrtc/modules/desktop_capture/BUILD.gn
|
||||
@@ -152,22 +152,17 @@ if (rtc_include_tests) {
|
||||
"../../rtc_base:rtc_base_approved",
|
||||
"../../test:test_support",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
if (is_linux) {
|
||||
if (rtc_use_pipewire) {
|
||||
- pkg_config("pipewire") {
|
||||
- packages = [ "libpipewire-0.2" ]
|
||||
-
|
||||
- defines = [ "WEBRTC_USE_PIPEWIRE" ]
|
||||
- }
|
||||
-
|
||||
+ defines = [ "WEBRTC_USE_PIPEWIRE" ]
|
||||
pkg_config("gio") {
|
||||
packages = [
|
||||
"gio-2.0",
|
||||
"gio-unix-2.0",
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -326,16 +321,17 @@ rtc_static_library("desktop_capture_gene
|
||||
} else {
|
||||
sources += [
|
||||
"fake_desktop_capturer.cc",
|
||||
"fake_desktop_capturer.h",
|
||||
]
|
||||
}
|
||||
|
||||
if (use_x11 || rtc_use_pipewire) {
|
||||
+ include_dirs = [ "/third_party/libwebrtc/third_party/pipewire" ]
|
||||
sources += [
|
||||
"mouse_cursor_monitor_linux.cc",
|
||||
"screen_capturer_linux.cc",
|
||||
"window_capturer_linux.cc",
|
||||
]
|
||||
}
|
||||
|
||||
if (use_x11) {
|
||||
@@ -367,16 +363,17 @@ rtc_static_library("desktop_capture_gene
|
||||
"linux/desktop_device_info_x11.h",
|
||||
"linux/shared_x_util.cc",
|
||||
"linux/shared_x_util.h",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
if (rtc_use_pipewire) {
|
||||
+ include_dirs = [ "/third_party/libwebrtc/third_party/pipewire" ]
|
||||
sources += [
|
||||
"linux/base_capturer_pipewire.cc",
|
||||
"linux/base_capturer_pipewire.h",
|
||||
"linux/screen_capturer_pipewire.cc",
|
||||
"linux/screen_capturer_pipewire.h",
|
||||
"linux/window_capturer_pipewire.cc",
|
||||
"linux/window_capturer_pipewire.h",
|
||||
]
|
||||
diff --git a/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build b/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
|
||||
--- a/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
|
||||
+++ b/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build
|
||||
@@ -20,17 +20,18 @@ DEFINES["WEBRTC_RESTRICT_LOGGING"] = Tru
|
||||
FINAL_LIBRARY = "webrtc"
|
||||
|
||||
|
||||
LOCAL_INCLUDES += [
|
||||
"!/ipc/ipdl/_ipdlheaders",
|
||||
"/ipc/chromium/src",
|
||||
"/ipc/glue",
|
||||
"/media/libyuv/libyuv/include/",
|
||||
- "/third_party/libwebrtc/webrtc/"
|
||||
+ "/third_party/libwebrtc/webrtc/",
|
||||
+ "/third_party/pipewire"
|
||||
]
|
||||
|
||||
UNIFIED_SOURCES += [
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/blank_detector_desktop_capturer_wrapper.cc",
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/capture_result_desktop_capturer_wrapper.cc",
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/cropped_desktop_frame.cc",
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/cropping_window_capturer.cc",
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_and_cursor_composer.cc",
|
||||
@@ -156,16 +157,17 @@ if CONFIG["OS_TARGET"] == "FreeBSD":
|
||||
|
||||
if CONFIG["OS_TARGET"] == "Linux":
|
||||
|
||||
DEFINES["USE_NSS_CERTS"] = "1"
|
||||
DEFINES["USE_X11"] = "1"
|
||||
DEFINES["WEBRTC_LINUX"] = True
|
||||
DEFINES["WEBRTC_POSIX"] = True
|
||||
DEFINES["_FILE_OFFSET_BITS"] = "64"
|
||||
+ DEFINES["WEBRTC_USE_PIPEWIRE"] = "1"
|
||||
|
||||
OS_LIBS += [
|
||||
"rt",
|
||||
"X11",
|
||||
"X11-xcb",
|
||||
"xcb",
|
||||
"Xcomposite",
|
||||
"Xcursor",
|
||||
@@ -188,16 +190,24 @@ if CONFIG["OS_TARGET"] == "Linux":
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/x_atom_cache.cc",
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/x_error_trap.cc",
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/x_server_pixel_buffer.cc",
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/mouse_cursor_monitor_linux.cc",
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/screen_capturer_linux.cc",
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/window_capturer_linux.cc"
|
||||
]
|
||||
|
||||
+ CXXFLAGS += CONFIG['TK_CFLAGS']
|
||||
+
|
||||
+ UNIFIED_SOURCES += [
|
||||
+ "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc",
|
||||
+ "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc",
|
||||
+ "/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc"
|
||||
+ ]
|
||||
+
|
||||
if CONFIG["OS_TARGET"] == "NetBSD":
|
||||
|
||||
DEFINES["USE_X11"] = "1"
|
||||
DEFINES["WEBRTC_BSD"] = True
|
||||
DEFINES["WEBRTC_POSIX"] = True
|
||||
DEFINES["_FILE_OFFSET_BITS"] = "64"
|
||||
|
||||
OS_LIBS += [
|
||||
diff --git a/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_options.h b/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_options.h
|
||||
--- a/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_options.h
|
||||
+++ b/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_options.h
|
||||
@@ -136,15 +136,15 @@ class DesktopCaptureOptions {
|
||||
#if defined(USE_X11)
|
||||
bool use_update_notifications_ = false;
|
||||
#else
|
||||
bool use_update_notifications_ = true;
|
||||
#endif
|
||||
bool disable_effects_ = true;
|
||||
bool detect_updated_region_ = false;
|
||||
#if defined(WEBRTC_USE_PIPEWIRE)
|
||||
- bool allow_pipewire_ = false;
|
||||
+ bool allow_pipewire_ = true;
|
||||
#endif
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
#endif // MODULES_DESKTOP_CAPTURE_DESKTOP_CAPTURE_OPTIONS_H_
|
||||
diff --git a/third_party/libwebrtc/webrtc/moz.build b/third_party/libwebrtc/webrtc/moz.build
|
||||
--- a/third_party/libwebrtc/webrtc/moz.build
|
||||
+++ b/third_party/libwebrtc/webrtc/moz.build
|
||||
@@ -181,16 +181,19 @@ if CONFIG["OS_TARGET"] == "Linux":
|
||||
|
||||
DIRS += [
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn",
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_gn",
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/primitives_gn",
|
||||
"/third_party/libwebrtc/webrtc/modules/video_capture/video_capture_internal_impl_gn",
|
||||
"/third_party/libwebrtc/webrtc/system_wrappers/cpu_features_linux_gn"
|
||||
]
|
||||
+ DIRS += [
|
||||
+ "/third_party/pipewire/libpipewire"
|
||||
+ ]
|
||||
|
||||
if CONFIG["OS_TARGET"] == "NetBSD":
|
||||
|
||||
DIRS += [
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_generic_gn",
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capture_gn",
|
||||
"/third_party/libwebrtc/webrtc/modules/desktop_capture/primitives_gn",
|
||||
"/third_party/libwebrtc/webrtc/modules/video_capture/video_capture_internal_impl_gn"
|
||||
|
||||
53
pw5.patch
53
pw5.patch
|
|
@ -1,53 +0,0 @@
|
|||
|
||||
# HG changeset patch
|
||||
# User stransky <stransky@redhat.com>
|
||||
# Date 1605025841 0
|
||||
# Node ID e04be7688dfb4fbbe8dee73e366df8bc9a5da580
|
||||
# Parent 41d3c1292480de14d05b34aa0cf2d56015994878
|
||||
Bug 1675767 [Linux] Use PipeWire on Wayland desktop, r=dminor
|
||||
|
||||
Differential Revision: https://phabricator.services.mozilla.com/D96587
|
||||
|
||||
diff --git a/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capturer.cc b/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capturer.cc
|
||||
--- a/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capturer.cc
|
||||
+++ b/third_party/libwebrtc/webrtc/modules/desktop_capture/desktop_capturer.cc
|
||||
@@ -72,37 +72,21 @@ std::unique_ptr<DesktopCapturer> Desktop
|
||||
if (capturer && options.detect_updated_region()) {
|
||||
capturer.reset(new DesktopCapturerDifferWrapper(std::move(capturer)));
|
||||
}
|
||||
|
||||
return capturer;
|
||||
}
|
||||
|
||||
#if defined(WEBRTC_USE_PIPEWIRE) || defined(USE_X11)
|
||||
-// Return true if Firefox is actually running with Wayland backend.
|
||||
-static bool IsWaylandDisplayUsed() {
|
||||
- const auto display = gdk_display_get_default();
|
||||
- if (display == nullptr) {
|
||||
- // We're running in headless mode.
|
||||
- return false;
|
||||
- }
|
||||
- return !GDK_IS_X11_DISPLAY(display);
|
||||
-}
|
||||
-
|
||||
-// Return true if Firefox is actually running on Wayland enabled session.
|
||||
-// It means some screensharing capabilities may be limited.
|
||||
-static bool IsWaylandSessionUsed() {
|
||||
+bool DesktopCapturer::IsRunningUnderWayland() {
|
||||
const char* xdg_session_type = getenv("XDG_SESSION_TYPE");
|
||||
if (!xdg_session_type || strncmp(xdg_session_type, "wayland", 7) != 0)
|
||||
return false;
|
||||
|
||||
if (!(getenv("WAYLAND_DISPLAY")))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
-
|
||||
-bool DesktopCapturer::IsRunningUnderWayland() {
|
||||
- return IsWaylandSessionUsed() ? IsWaylandDisplayUsed() : false;
|
||||
-}
|
||||
#endif // defined(WEBRTC_USE_PIPEWIRE) || defined(USE_X11)
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
75
pw6.patch
75
pw6.patch
|
|
@ -1,75 +0,0 @@
|
|||
diff --git a/browser/actors/WebRTCParent.jsm b/browser/actors/WebRTCParent.jsm
|
||||
--- a/browser/actors/WebRTCParent.jsm
|
||||
+++ b/browser/actors/WebRTCParent.jsm
|
||||
@@ -45,6 +45,9 @@
|
||||
"nsIOSPermissionRequest"
|
||||
);
|
||||
|
||||
+const PIPEWIRE_PORTAL_NAME = "####_PIPEWIRE_PORTAL_####";
|
||||
+const PIPEWIRE_ID = 0xaffffff;
|
||||
+
|
||||
class WebRTCParent extends JSWindowActorParent {
|
||||
didDestroy() {
|
||||
webrtcUI.forgetStreamsFromBrowserContext(this.browsingContext);
|
||||
@@ -774,6 +777,23 @@
|
||||
}
|
||||
} else {
|
||||
name = device.name;
|
||||
+ // When we share content by PipeWire add only one item to the device
|
||||
+ // list. When it's selected PipeWire portal dialog is opened and
|
||||
+ // user confirms actual window/screen sharing there.
|
||||
+ // Don't mark it as scary as there's an extra confirmation step by
|
||||
+ // PipeWire portal dialog.
|
||||
+ if (name == PIPEWIRE_PORTAL_NAME && device.id == PIPEWIRE_ID) {
|
||||
+ let sawcStringId = "getUserMedia.sharePipeWirePortal.label";
|
||||
+ let item = addDeviceToList(
|
||||
+ menupopup,
|
||||
+ stringBundle.getString(sawcStringId),
|
||||
+ i,
|
||||
+ type
|
||||
+ );
|
||||
+ item.deviceId = device.id;
|
||||
+ item.mediaSource = type;
|
||||
+ break;
|
||||
+ }
|
||||
if (type == "application") {
|
||||
// The application names returned by the platform are of the form:
|
||||
// <window count>\x1e<application name>
|
||||
diff --git a/browser/locales/en-US/chrome/browser/browser.properties b/browser/locales/en-US/chrome/browser/browser.properties
|
||||
--- a/browser/locales/en-US/chrome/browser/browser.properties
|
||||
+++ b/browser/locales/en-US/chrome/browser/browser.properties
|
||||
@@ -767,6 +767,7 @@
|
||||
getUserMedia.selectWindowOrScreen.accesskey=W
|
||||
getUserMedia.pickWindowOrScreen.label = Select Window or Screen
|
||||
getUserMedia.shareEntireScreen.label = Entire screen
|
||||
+getUserMedia.sharePipeWirePortal.label = Use operating system settings
|
||||
# LOCALIZATION NOTE (getUserMedia.shareMonitor.label):
|
||||
# %S is screen number (digits 1, 2, etc)
|
||||
# Example: Screen 1, Screen 2,..
|
||||
diff --git a/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc b/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
||||
--- a/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
||||
+++ b/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
||||
@@ -898,17 +898,17 @@
|
||||
callback_->OnCaptureResult(Result::SUCCESS, std::move(result));
|
||||
}
|
||||
|
||||
+#define PIPEWIRE_ID 0xaffffff
|
||||
+#define PIPEWIRE_NAME "####_PIPEWIRE_PORTAL_####"
|
||||
+
|
||||
bool BaseCapturerPipeWire::GetSourceList(SourceList* sources) {
|
||||
- RTC_DCHECK(sources->size() == 0);
|
||||
- // List of available screens is already presented by the xdg-desktop-portal.
|
||||
- // But we have to add an empty source as the code expects it.
|
||||
- sources->push_back({0});
|
||||
+ sources->push_back({PIPEWIRE_ID, 0, PIPEWIRE_NAME});
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BaseCapturerPipeWire::SelectSource(SourceId id) {
|
||||
// Screen selection is handled by the xdg-desktop-portal.
|
||||
- return true;
|
||||
+ return id == PIPEWIRE_ID;
|
||||
}
|
||||
|
||||
// static
|
||||
|
||||
95
pw7.patch
95
pw7.patch
|
|
@ -1,95 +0,0 @@
|
|||
diff --git a/browser/actors/WebRTCParent.jsm b/browser/actors/WebRTCParent.jsm
|
||||
--- a/browser/actors/WebRTCParent.jsm
|
||||
+++ b/browser/actors/WebRTCParent.jsm
|
||||
@@ -756,6 +756,8 @@
|
||||
);
|
||||
menupopup.appendChild(doc.createXULElement("menuseparator"));
|
||||
|
||||
+ let isPipeWire = false;
|
||||
+
|
||||
// Build the list of 'devices'.
|
||||
let monitorIndex = 1;
|
||||
for (let i = 0; i < devices.length; ++i) {
|
||||
@@ -783,6 +785,7 @@
|
||||
// Don't mark it as scary as there's an extra confirmation step by
|
||||
// PipeWire portal dialog.
|
||||
if (name == PIPEWIRE_PORTAL_NAME && device.id == PIPEWIRE_ID) {
|
||||
+ isPipeWire = true;
|
||||
let sawcStringId = "getUserMedia.sharePipeWirePortal.label";
|
||||
let item = addDeviceToList(
|
||||
menupopup,
|
||||
@@ -908,39 +911,41 @@
|
||||
perms.EXPIRE_SESSION
|
||||
);
|
||||
|
||||
- video.deviceId = deviceId;
|
||||
- let constraints = {
|
||||
- video: { mediaSource: type, deviceId: { exact: deviceId } },
|
||||
- };
|
||||
- chromeWin.navigator.mediaDevices.getUserMedia(constraints).then(
|
||||
- stream => {
|
||||
- if (video.deviceId != deviceId) {
|
||||
- // The user has selected a different device or closed the panel
|
||||
- // before getUserMedia finished.
|
||||
- stream.getTracks().forEach(t => t.stop());
|
||||
- return;
|
||||
+ if (!isPipeWire) {
|
||||
+ video.deviceId = deviceId;
|
||||
+ let constraints = {
|
||||
+ video: { mediaSource: type, deviceId: { exact: deviceId } },
|
||||
+ };
|
||||
+ chromeWin.navigator.mediaDevices.getUserMedia(constraints).then(
|
||||
+ stream => {
|
||||
+ if (video.deviceId != deviceId) {
|
||||
+ // The user has selected a different device or closed the panel
|
||||
+ // before getUserMedia finished.
|
||||
+ stream.getTracks().forEach(t => t.stop());
|
||||
+ return;
|
||||
+ }
|
||||
+ video.srcObject = stream;
|
||||
+ video.stream = stream;
|
||||
+ doc.getElementById("webRTC-preview").hidden = false;
|
||||
+ video.onloadedmetadata = function(e) {
|
||||
+ video.play();
|
||||
+ };
|
||||
+ },
|
||||
+ err => {
|
||||
+ if (
|
||||
+ err.name == "OverconstrainedError" &&
|
||||
+ err.constraint == "deviceId"
|
||||
+ ) {
|
||||
+ // Window has disappeared since enumeration, which can happen.
|
||||
+ // No preview for you.
|
||||
+ return;
|
||||
+ }
|
||||
+ Cu.reportError(
|
||||
+ `error in preview: ${err.message} ${err.constraint}`
|
||||
+ );
|
||||
}
|
||||
- video.srcObject = stream;
|
||||
- video.stream = stream;
|
||||
- doc.getElementById("webRTC-preview").hidden = false;
|
||||
- video.onloadedmetadata = function(e) {
|
||||
- video.play();
|
||||
- };
|
||||
- },
|
||||
- err => {
|
||||
- if (
|
||||
- err.name == "OverconstrainedError" &&
|
||||
- err.constraint == "deviceId"
|
||||
- ) {
|
||||
- // Window has disappeared since enumeration, which can happen.
|
||||
- // No preview for you.
|
||||
- return;
|
||||
- }
|
||||
- Cu.reportError(
|
||||
- `error in preview: ${err.message} ${err.constraint}`
|
||||
- );
|
||||
- }
|
||||
- );
|
||||
+ );
|
||||
+ }
|
||||
};
|
||||
menupopup.addEventListener("command", menupopup._commandEventListener);
|
||||
}
|
||||
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
diff -up firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp.rhbz-1173156 firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp
|
||||
--- firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp.rhbz-1173156 2019-01-22 10:36:09.284069020 +0100
|
||||
+++ firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp 2019-01-22 10:37:12.669757744 +0100
|
||||
@@ -161,7 +161,7 @@ nsresult nsAuthSambaNTLM::SpawnNTLMAuthH
|
||||
const char* username = PR_GetEnv("USER");
|
||||
if (!username) return NS_ERROR_FAILURE;
|
||||
diff -up firefox-132.0/extensions/auth/nsAuthSambaNTLM.cpp.rhbz-1173156 firefox-132.0/extensions/auth/nsAuthSambaNTLM.cpp
|
||||
--- firefox-132.0/extensions/auth/nsAuthSambaNTLM.cpp.rhbz-1173156 2024-10-23 09:26:41.433895188 +0200
|
||||
+++ firefox-132.0/extensions/auth/nsAuthSambaNTLM.cpp 2024-10-23 10:05:11.025801336 +0200
|
||||
@@ -153,7 +153,7 @@ nsresult nsAuthSambaNTLM::SpawnNTLMAuthH
|
||||
options.fds_to_remap.push_back(
|
||||
std::pair{fromChildPipeWrite.get(), STDOUT_FILENO});
|
||||
|
||||
- std::vector<std::string> argvVec{"ntlm_auth", "--helper-protocol",
|
||||
+ std::vector<std::string> argvVec{"/usr/bin/ntlm_auth", "--helper-protocol",
|
||||
"ntlmssp-client-1", "--use-cached-creds",
|
||||
"--username", username};
|
||||
|
||||
- const char* const args[] = {"ntlm_auth",
|
||||
+ const char* const args[] = {"/usr/bin/ntlm_auth",
|
||||
"--helper-protocol",
|
||||
"ntlmssp-client-1",
|
||||
"--use-cached-creds",
|
||||
|
|
|
|||
|
|
@ -1,23 +0,0 @@
|
|||
diff -up firefox-55.0/js/src/old-configure.in.rhbz-1219542-s390 firefox-55.0/js/src/old-configure.in
|
||||
--- firefox-55.0/js/src/old-configure.in.rhbz-1219542-s390 2017-07-31 18:20:48.000000000 +0200
|
||||
+++ firefox-55.0/js/src/old-configure.in 2017-08-02 14:31:32.190243669 +0200
|
||||
@@ -541,7 +541,7 @@ case "$host" in
|
||||
|
||||
*-linux*|*-kfreebsd*-gnu|*-gnu*)
|
||||
HOST_CFLAGS="$HOST_CFLAGS -DXP_UNIX"
|
||||
- HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O3}"
|
||||
+ HOST_OPTIMIZE_FLAGS="${HOST_OPTIMIZE_FLAGS=-O1}"
|
||||
;;
|
||||
|
||||
*)
|
||||
@@ -617,8 +617,8 @@ case "$target" in
|
||||
|
||||
*-*linux*)
|
||||
if test "$GNU_CC" -o "$GNU_CXX"; then
|
||||
- MOZ_PGO_OPTIMIZE_FLAGS="-O3"
|
||||
- MOZ_OPTIMIZE_FLAGS="-O3"
|
||||
+ MOZ_PGO_OPTIMIZE_FLAGS="-O1"
|
||||
+ MOZ_OPTIMIZE_FLAGS="-O1"
|
||||
if test -z "$CLANG_CC"; then
|
||||
MOZ_OPTIMIZE_FLAGS="-freorder-blocks $MOZ_OPTIMIZE_FLAGS"
|
||||
fi
|
||||
|
|
@ -1,72 +0,0 @@
|
|||
diff --git a/security/certverifier/CertVerifier.cpp b/security/certverifier/CertVerifier.cpp
|
||||
--- a/security/certverifier/CertVerifier.cpp
|
||||
+++ b/security/certverifier/CertVerifier.cpp
|
||||
@@ -120,16 +120,20 @@ IsCertChainRootBuiltInRoot(const UniqueC
|
||||
}
|
||||
CERTCertificate* root = rootNode->cert;
|
||||
if (!root) {
|
||||
return Result::FATAL_ERROR_LIBRARY_FAILURE;
|
||||
}
|
||||
return IsCertBuiltInRoot(root, result);
|
||||
}
|
||||
|
||||
+// The term "builtin root" traditionally refers to a root CA certificate that
|
||||
+// has been added to the NSS trust store, because it has been approved
|
||||
+// for inclusion according to the Mozilla CA policy, and might be accepted
|
||||
+// by Mozilla applications as an issuer for certificates seen on the public web.
|
||||
Result
|
||||
IsCertBuiltInRoot(CERTCertificate* cert, bool& result)
|
||||
{
|
||||
result = false;
|
||||
#ifdef DEBUG
|
||||
nsCOMPtr<nsINSSComponent> component(do_GetService(PSM_COMPONENT_CONTRACTID));
|
||||
if (!component) {
|
||||
return Result::FATAL_ERROR_LIBRARY_FAILURE;
|
||||
@@ -142,25 +146,38 @@ IsCertBuiltInRoot(CERTCertificate* cert,
|
||||
return Success;
|
||||
}
|
||||
#endif // DEBUG
|
||||
AutoSECMODListReadLock lock;
|
||||
for (SECMODModuleList* list = SECMOD_GetDefaultModuleList(); list;
|
||||
list = list->next) {
|
||||
for (int i = 0; i < list->module->slotCount; i++) {
|
||||
PK11SlotInfo* slot = list->module->slots[i];
|
||||
- // PK11_HasRootCerts should return true if and only if the given slot has
|
||||
- // an object with a CKA_CLASS of CKO_NETSCAPE_BUILTIN_ROOT_LIST, which
|
||||
- // should be true only of the builtin root list.
|
||||
- // If we can find a copy of the given certificate on the slot with the
|
||||
- // builtin root list, that certificate must be a builtin.
|
||||
- if (PK11_IsPresent(slot) && PK11_HasRootCerts(slot) &&
|
||||
- PK11_FindCertInSlot(slot, cert, nullptr) != CK_INVALID_HANDLE) {
|
||||
- result = true;
|
||||
- return Success;
|
||||
+ // We're searching for the "builtin root module", which is a module that
|
||||
+ // contains an object with a CKA_CLASS of CKO_NETSCAPE_BUILTIN_ROOT_LIST.
|
||||
+ // We use PK11_HasRootCerts() to identify a module with that property.
|
||||
+ // In the past, we exclusively used the PKCS#11 module named nssckbi,
|
||||
+ // which is provided by the NSS library.
|
||||
+ // Nowadays, some distributions use a replacement module, which contains
|
||||
+ // the builtin roots, but which also contains additional CA certificates,
|
||||
+ // such as CAs trusted in a local deployment.
|
||||
+ // We want to be able to distinguish between these two categories,
|
||||
+ // because a CA, which may issue certificates for the public web,
|
||||
+ // is expected to comply with additional requirements.
|
||||
+ // If the certificate has attribute CKA_NSS_MOZILLA_CA_POLICY set to true,
|
||||
+ // then we treat it as a "builtin root".
|
||||
+ if (PK11_IsPresent(slot) && PK11_HasRootCerts(slot)) {
|
||||
+ CK_OBJECT_HANDLE handle = PK11_FindCertInSlot(slot, cert, nullptr);
|
||||
+ if (handle != CK_INVALID_HANDLE &&
|
||||
+ PK11_HasAttributeSet(slot, handle, CKA_NSS_MOZILLA_CA_POLICY,
|
||||
+ false)) {
|
||||
+ // Attribute was found, and is set to true
|
||||
+ result = true;
|
||||
+ break;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
return Success;
|
||||
}
|
||||
|
||||
static Result
|
||||
BuildCertChainForOneKeyUsage(NSSCertDBTrustDomain& trustDomain, Input certDER,
|
||||
80
run-tests-wayland
Executable file
80
run-tests-wayland
Executable file
|
|
@ -0,0 +1,80 @@
|
|||
#!/usr/bin/bash
|
||||
# usage: run-tests-wayland [test flavour]
|
||||
|
||||
set -x
|
||||
|
||||
RUN_XPCSHELL_TEST=1
|
||||
RUN_REFTEST=1
|
||||
RUN_MOCHITEST=1
|
||||
RUN_CRASHTEST=1
|
||||
|
||||
while (( "$#" )); do
|
||||
SELECTED_TEST=$1
|
||||
if [ "$SELECTED_TEST" = "xpcshell" ] ; then
|
||||
RUN_XPCSHELL_TEST=1
|
||||
elif [ "$SELECTED_TEST" = "reftest" ] ; then
|
||||
RUN_REFTEST=1
|
||||
elif [ "$SELECTED_TEST" = "mochitest" ] ; then
|
||||
RUN_MOCHITEST=1
|
||||
elif [ "$SELECTED_TEST" = "crashtest" ] ; then
|
||||
RUN_CRASHTEST=1
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
export MACH_USE_SYSTEM_PYTHON=1
|
||||
export MOZ_NODE_PATH=/usr/bin/node
|
||||
|
||||
MOCHITEST_PARAMS="--timeout 1 --chunk-by-dir 4"
|
||||
TEST_DIR="test_results"
|
||||
mkdir $TEST_DIR
|
||||
|
||||
env | grep "DISPLAY"
|
||||
|
||||
# Fix for system nss
|
||||
ln -s /usr/bin/certutil objdir/dist/bin/certutil
|
||||
ln -s /usr/bin/pk12util objdir/dist/bin/pk12util
|
||||
|
||||
NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
|
||||
|
||||
export MOZ_ENABLE_WAYLAND=1
|
||||
|
||||
if [ $RUN_XPCSHELL_TEST -ne 0 ] ; then
|
||||
# ./mach xpcshell-test 2>&1 | cat - | tee $TEST_DIR/xpcshell
|
||||
./mach xpcshell-test --enable-webrender 2>&1 | cat - | tee $TEST_DIR/xpcshell-wr
|
||||
sleep 60
|
||||
fi
|
||||
|
||||
# Basic render testing
|
||||
export TEST_PARAMS="--setpref reftest.ignoreWindowSize=true --setpref widget.wayland.test-workarounds.enabled=true"
|
||||
#export TEST_FLAVOUR=""
|
||||
#if [ $RUN_REFTEST -ne 0 ] ; then
|
||||
# ./mach reftest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
|
||||
#fi
|
||||
#if [ $RUN_CRASHTEST -ne 0 ] ; then
|
||||
# ./mach crashtest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
|
||||
#fi
|
||||
#if [ $RUN_MOCHITEST -ne 0 ] ; then
|
||||
# ./mach mochitest --marionette localhost:$(($(($RANDOM))+2000)) $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
|
||||
#fi
|
||||
|
||||
# WebRender testing
|
||||
export TEST_PARAMS="--enable-webrender $TEST_PARAMS"
|
||||
export TEST_FLAVOUR="-wr"
|
||||
# Use dom/base/test or dom/base/test/chrome for short version
|
||||
export MOCHITEST_DIR='dom'
|
||||
if [ $RUN_REFTEST -ne 0 ] ; then
|
||||
./mach reftest $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
|
||||
sleep 60
|
||||
fi
|
||||
if [ $RUN_CRASHTEST -ne 0 ] ; then
|
||||
./mach crashtest $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
|
||||
sleep 60
|
||||
fi
|
||||
if [ $RUN_MOCHITEST -ne 0 ] ; then
|
||||
./mach mochitest $MOCHITEST_DIR $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
|
||||
sleep 60
|
||||
fi
|
||||
|
||||
rm -f objdir/dist/bin/certutil
|
||||
rm -f objdir/dist/bin/pk12util
|
||||
39
run-tests-x11
Executable file
39
run-tests-x11
Executable file
|
|
@ -0,0 +1,39 @@
|
|||
#!/usr/bin/bash
|
||||
set -x
|
||||
|
||||
export MACH_USE_SYSTEM_PYTHON=1
|
||||
export MOZ_NODE_PATH=/usr/bin/node
|
||||
export X_PARAMS="-screen 0 1600x1200x24"
|
||||
export MOCHITEST_PARAMS="--timeout 1 --chunk-by-dir 4"
|
||||
export TEST_DIR="test_results"
|
||||
|
||||
# Fix for system nss
|
||||
ln -s /usr/bin/certutil objdir/dist/bin/certutil
|
||||
ln -s /usr/bin/pk12util objdir/dist/bin/pk12util
|
||||
|
||||
NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
|
||||
|
||||
# Basic render testing
|
||||
export TEST_PARAMS=""
|
||||
export TEST_FLAVOUR=""
|
||||
#xvfb-run -s "$X_PARAMS" -n 91 ./mach xpcshell-test --sequential $TEST_PARAMS 2>&1 | cat - | tee $TEST_DIR/xpcshell
|
||||
#xvfb-run -s "$X_PARAMS" -n 92 ./mach reftest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
|
||||
#xvfb-run -s "$X_PARAMS" -n 93 ./mach crashtest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
|
||||
#xvfb-run -s "$X_PARAMS" -n 94 ./mach mochitest --marionette localhost:$(($(($RANDOM))+2000)) $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
|
||||
|
||||
# WebRender testing
|
||||
export TEST_PARAMS="--enable-webrender $TEST_PARAMS"
|
||||
export TEST_FLAVOUR="-wr"
|
||||
#xvfb-run -s "$X_PARAMS" -n 95 ./mach xpcshell-test --sequential $TEST_PARAMS 2>&1 | cat - | tee $TEST_DIR/xpcshell-wr
|
||||
#sleep 60
|
||||
#xvfb-run -s "$X_PARAMS" -n 96 ./mach reftest $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
|
||||
#sleep 60
|
||||
#xvfb-run -s "$X_PARAMS" -n 97 ./mach crashtest $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
|
||||
#sleep 60
|
||||
#export DISPLAY=:0
|
||||
#./mach mochitest dom/base/test/ $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
|
||||
export DISPLAY=:98
|
||||
xvfb-run -s "$X_PARAMS" -n 98 ./mach mochitest dom/base/test/ $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
|
||||
|
||||
rm -f objdir/dist/bin/certutil
|
||||
rm -f objdir/dist/bin/pk12util
|
||||
59
run-wayland-compositor
Executable file
59
run-wayland-compositor
Executable file
|
|
@ -0,0 +1,59 @@
|
|||
#!/usr/bin/bash
|
||||
# Run wayland compositor and set WAYLAND_DISPLAY env variable
|
||||
|
||||
set -x
|
||||
|
||||
echo export DESKTOP_SESSION=gnome > $HOME/.xsessionrc
|
||||
echo export XDG_CURRENT_DESKTOP=GNOME > $HOME/.xsessionrc
|
||||
echo export XDG_SESSION_TYPE=wayland >> $HOME/.xsessionrc
|
||||
|
||||
# Turn off the screen saver and screen locking
|
||||
gsettings set org.gnome.desktop.screensaver idle-activation-enabled false
|
||||
gsettings set org.gnome.desktop.screensaver lock-enabled false
|
||||
gsettings set org.gnome.desktop.screensaver lock-delay 3600
|
||||
|
||||
# Disable the screen saver
|
||||
# This starts the gnome-keyring-daemon with an unlocked login keyring. libsecret uses this to
|
||||
# store secrets. Firefox uses libsecret to store a key that protects sensitive information like
|
||||
# credit card numbers.
|
||||
if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
|
||||
# if not found, launch a new one
|
||||
eval `dbus-launch --sh-syntax`
|
||||
fi
|
||||
|
||||
if [ -z "$XDG_RUNTIME_DIR" ]; then
|
||||
export XDG_RUNTIME_DIR=$HOME
|
||||
fi
|
||||
|
||||
export WAYLAND_DISPLAY=firefox-pgo-wayland-0
|
||||
if [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then
|
||||
rm -f $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY
|
||||
rm -f $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY.lock
|
||||
fi
|
||||
|
||||
echo "Launch mutter for $WAYLAND_DISPLAY"
|
||||
mutter --headless --virtual-monitor 1920x1080 --wayland-display=$WAYLAND_DISPLAY --no-x11 & MUTTER_PID=$!
|
||||
export MUTTER_PID
|
||||
echo "Mutter PID $MUTTER_PID"
|
||||
|
||||
echo "Waiting for mutter to start..."
|
||||
sleep 5
|
||||
retry_count=0
|
||||
max_retries=5
|
||||
until [ $retry_count -gt $max_retries ]; do
|
||||
if [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then
|
||||
retry_count=$(($max_retries + 1))
|
||||
else
|
||||
retry_count=$(($retry_count + 1))
|
||||
echo "Waiting for Mutter, retry: $retry_count"
|
||||
sleep 2
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ! -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then
|
||||
echo "Mutter failed to start!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Mutter is running, $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY is here."
|
||||
|
||||
File diff suppressed because one or more lines are too long
11
sources
11
sources
|
|
@ -1,4 +1,7 @@
|
|||
SHA512 (cbindgen-vendor.tar.xz) = 3c925c5523246b7dfbcb4ce563483d5b45315a06dc90f2cf07cddef0c263dd15b410afbbe4d86594de96a308e93be3b27ffec01f5f759a42ecba3cc983b1677f
|
||||
SHA512 (firefox-83.0.source.tar.xz) = 4ac49cefed278d1f898907bbedacf81ea4bb4e5784f567d4c0971d9cbc2cf4a2e4472de81a7ded620bc3a516bc972d600b516b7674319cdfc9734c3824a9a2f6
|
||||
SHA512 (firefox-langpacks-83.0-20201116.tar.xz) = 0d26660a7f09481e82d8d88ac43917001301d422a94dc48d3913dff92805f100221ca6db15fea05e895221efe5a9d74c07780a671aebc26a69d7a588e1cd423d
|
||||
SHA512 (firefox-testing.tar.gz) = 2adda701576ee10b76e623d31f8b73d8ca3008c62dfb5942f77b29f84397bb4ebe42075d9c332f0ae4a115c85933bfaa0b4da03aaa8624cfae561721e03ffaad
|
||||
SHA512 (mochitest-python.tar.gz) = 089b1593068b76f4572af0086eaccf52a6a1299bfffb58593206d19bf021ae381f2380bbfeb4371586cd53706ff6dde3d240238b2caf19b96c57dfc2f4524e36
|
||||
SHA512 (dump_syms-vendor.tar.xz) = ee0ea52aac781b8dd48936a3d13b140bd725a48cc488d23693b68edbe3bcfba5723022dba3c3849d0da1bacf0e37ddd307cfc56304159f91b71495ce8a08b54a
|
||||
SHA512 (wasi-sdk-25.tar.gz) = 1285981d26aa5eff27f08ed4b409909639ddcd62c94ee0cff7093ef68722f4b024c099ca3aa3ab50411e9aace13b86f1f30c5e08a3fc58b6a46b87369d6904aa
|
||||
SHA512 (wasm-component-ld-vendor.tar.xz) = 707d942d31455ae0a4f68bf419fb09a20407b6747f831ca554dcd00925b7ea98ef4d03a8652b6d2ae54cf48d7ad15d85aa7eb8d0778ef66b89593eaa8b5c3465
|
||||
SHA512 (cbindgen-vendor.tar.xz) = bea420e66bdd1c7c944655dd3e01abd6e7d6ac4b245c7ee190f31d800f7786f21e5cae11715b479bf795f4369d18c40dc12df19e0b643664f2f78e5c8a681415
|
||||
SHA512 (firefox-langpacks-147.0-20260106.tar.xz) = 4006c6e8dda8722509c1d1756807373d431d75b20d5a0c3f19e72a2a0dc76df62b15ef871e3fff2d30b2682e6a56b4a4541d8445ea1b83641559a3270e0057b7
|
||||
SHA512 (firefox-147.0.source.tar.xz) = ac9017b1a2da7b2f139392c394c36341fd3476e3d4ea1a3c7e5e7bf100dc30d185132ef9256be7e6b0f9dbfc69234ac571ea1fc6db9d84543b15772f4ec85161
|
||||
|
|
|
|||
35
wasi.patch
Normal file
35
wasi.patch
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
diff -up firefox-134.0.1/toolkit/moz.configure.wasi firefox-134.0.1/toolkit/moz.configure
|
||||
--- firefox-134.0.1/toolkit/moz.configure.wasi 2025-01-13 14:46:04.000000000 +0100
|
||||
+++ firefox-134.0.1/toolkit/moz.configure 2025-01-17 08:39:38.870092763 +0100
|
||||
@@ -2767,7 +2776,7 @@ with only_when(requires_wasm_sandboxing
|
||||
def wasi_sysroot_flags(wasi_sysroot):
|
||||
if wasi_sysroot:
|
||||
log.info("Using wasi sysroot in %s", wasi_sysroot)
|
||||
- return ["--sysroot=%s" % wasi_sysroot]
|
||||
+ return ["--sysroot=%s" % wasi_sysroot, "-nodefaultlibs", "-lc", "-lwasi-emulated-process-clocks", "-lc++", "-lc++abi", "/raid/CVS/firefox/firefox-147.0-build/firefox-147.0/wasi-sdk-25/build/sysroot/install/wasi-resource-dir/lib/wasi/libclang_rt.builtins-wasm32.a"]
|
||||
return []
|
||||
|
||||
set_config("WASI_SYSROOT", wasi_sysroot)
|
||||
diff -up firefox-134.0.1/wasi-sdk-25/cmake/wasi-sdk-toolchain.cmake.wasi firefox-134.0.1/wasi-sdk-25/cmake/wasi-sdk-toolchain.cmake
|
||||
--- firefox-134.0.1/wasi-sdk-25/cmake/wasi-sdk-toolchain.cmake.wasi 2025-01-17 08:40:23.004159900 +0100
|
||||
+++ firefox-134.0.1/wasi-sdk-25/cmake/wasi-sdk-toolchain.cmake 2025-01-17 08:40:35.478178790 +0100
|
||||
@@ -126,7 +126,7 @@ endif()
|
||||
add_custom_command(
|
||||
OUTPUT ${wasm_component_ld}
|
||||
COMMAND
|
||||
- cargo install --root ${wasm_component_ld_root} ${rust_target_flag}
|
||||
+ cargo install --offline --root ${wasm_component_ld_root} ${rust_target_flag}
|
||||
wasm-component-ld@${wasm_component_ld_version}
|
||||
COMMAND
|
||||
cmake -E make_directory ${wasi_tmp_install}/bin
|
||||
diff -up firefox-134.0.2/wasi-sdk-25/version.py.wasi firefox-134.0.2/wasi-sdk-25/version.py
|
||||
--- firefox-134.0.2/wasi-sdk-25/version.py.wasi 2025-01-16 08:03:26.042654800 +0100
|
||||
+++ firefox-134.0.2/wasi-sdk-25/version.py 2025-01-22 14:08:34.563909971 +0100
|
||||
@@ -60,6 +60,7 @@ assert parse_git_version(
|
||||
|
||||
|
||||
def git_version():
|
||||
+ return 25
|
||||
version = exec(['git', 'describe', '--long', '--candidates=999',
|
||||
'--match=wasi-sdk-*', '--dirty=+m', f'--abbrev={GIT_REF_LEN}'],
|
||||
os.path.dirname(sys.argv[0]))
|
||||
35
wasi.patch.template
Normal file
35
wasi.patch.template
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
diff -up firefox-134.0.1/toolkit/moz.configure.wasi firefox-134.0.1/toolkit/moz.configure
|
||||
--- firefox-134.0.1/toolkit/moz.configure.wasi 2025-01-13 14:46:04.000000000 +0100
|
||||
+++ firefox-134.0.1/toolkit/moz.configure 2025-01-17 08:39:38.870092763 +0100
|
||||
@@ -2767,7 +2776,7 @@ with only_when(requires_wasm_sandboxing
|
||||
def wasi_sysroot_flags(wasi_sysroot):
|
||||
if wasi_sysroot:
|
||||
log.info("Using wasi sysroot in %s", wasi_sysroot)
|
||||
- return ["--sysroot=%s" % wasi_sysroot]
|
||||
+ return ["--sysroot=%s" % wasi_sysroot, "-nodefaultlibs", "-lc", "-lwasi-emulated-process-clocks", "-lc++", "-lc++abi", "LIBCLANG_RT_PLACEHOLDER"]
|
||||
return []
|
||||
|
||||
set_config("WASI_SYSROOT", wasi_sysroot)
|
||||
diff -up firefox-134.0.1/wasi-sdk-25/cmake/wasi-sdk-toolchain.cmake.wasi firefox-134.0.1/wasi-sdk-25/cmake/wasi-sdk-toolchain.cmake
|
||||
--- firefox-134.0.1/wasi-sdk-25/cmake/wasi-sdk-toolchain.cmake.wasi 2025-01-17 08:40:23.004159900 +0100
|
||||
+++ firefox-134.0.1/wasi-sdk-25/cmake/wasi-sdk-toolchain.cmake 2025-01-17 08:40:35.478178790 +0100
|
||||
@@ -126,7 +126,7 @@ endif()
|
||||
add_custom_command(
|
||||
OUTPUT ${wasm_component_ld}
|
||||
COMMAND
|
||||
- cargo install --root ${wasm_component_ld_root} ${rust_target_flag}
|
||||
+ cargo install --offline --root ${wasm_component_ld_root} ${rust_target_flag}
|
||||
wasm-component-ld@${wasm_component_ld_version}
|
||||
COMMAND
|
||||
cmake -E make_directory ${wasi_tmp_install}/bin
|
||||
diff -up firefox-134.0.2/wasi-sdk-25/version.py.wasi firefox-134.0.2/wasi-sdk-25/version.py
|
||||
--- firefox-134.0.2/wasi-sdk-25/version.py.wasi 2025-01-16 08:03:26.042654800 +0100
|
||||
+++ firefox-134.0.2/wasi-sdk-25/version.py 2025-01-22 14:08:34.563909971 +0100
|
||||
@@ -60,6 +60,7 @@ assert parse_git_version(
|
||||
|
||||
|
||||
def git_version():
|
||||
+ return 25
|
||||
version = exec(['git', 'describe', '--long', '--candidates=999',
|
||||
'--match=wasi-sdk-*', '--dirty=+m', f'--abbrev={GIT_REF_LEN}'],
|
||||
os.path.dirname(sys.argv[0]))
|
||||
Loading…
Add table
Add a link
Reference in a new issue