MFH: r468751 r468754 r468985 r469332

www/firefox: update to 60.0

- Add U2F support, required by Web Authentication [1]
- Drop libv4l support to reduce maintenance

Changes:	https://www.mozilla.org/firefox/60.0/releasenotes/
PR:		226476
Tested by:	tobik, jrm, D. Ebdrup, lwhsu
Submitted by:	Greg V [1]
Security:	5aefc41e-d304-4ec8-8c82-824f84f08244
Approved by:	ports-secteam blanket
Differential Revision:	https://reviews.freebsd.org/D15186
This commit is contained in:
Jan Beich 2018-05-07 20:33:22 +00:00
parent 80869ac870
commit b218d110e2
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/branches/2018Q2/; revision=469334
26 changed files with 34301 additions and 1136 deletions

View File

@ -37,12 +37,12 @@ RUN_DEPENDS+= libxul>=45:www/libxul
.elif ${gecko_ARGS:Mfirefox}
_GECKO_DEFAULT_VERSION= 52
_GECKO_VERSIONS= 52 59
_GECKO_VERSIONS= 52 60
_GECKO_TYPE= firefox
# Dependence lines for different Firefox versions
52_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox-esr
59_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox
60_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox
.if exists(${LOCALBASE}/bin/firefox)
_GECKO_INSTALLED_VER!= ${LOCALBASE}/bin/firefox --version 2>/dev/null

View File

@ -379,7 +379,7 @@ post-patch-SNDIO-on:
.endif
.if ${PORT_OPTIONS:MRUST} || ${MOZILLA_VER:R:R} >= 54
BUILD_DEPENDS+= ${RUST_PORT:T}>=1.22.1:${RUST_PORT}
BUILD_DEPENDS+= ${RUST_PORT:T}>=1.24:${RUST_PORT}
RUST_PORT?= lang/rust
. if ${MOZILLA_VER:R:R} < 54
MOZ_OPTIONS+= --enable-rust

View File

@ -2,10 +2,11 @@
# $FreeBSD$
PORTNAME= firefox-i18n
PORTVERSION= 59.0.3
PORTVERSION= 60.0
PORTREVISION= 1
CATEGORIES= www
MASTER_SITES= MOZILLA/${PORTNAME:S|-i18n||}/releases/${DISTVERSION}/linux-i686/xpi \
MOZILLA/${PORTNAME:S|-i18n||}/candidates/${DISTVERSION}-candidates/build1/linux-i686/xpi
MOZILLA/${PORTNAME:S|-i18n||}/candidates/${DISTVERSION}-candidates/build2/linux-i686/xpi
PKGNAMEPREFIX=
DISTFILES= ${FIREFOX_I18N_:S/$/.xpi/}
DIST_SUBDIR= xpi/${DISTNAME}
@ -15,7 +16,7 @@ COMMENT= Localized interface for Firefox
EXTRACT_DEPENDS= zip:archivers/zip
USES= zip:infozip gecko:firefox,59,build
USES= zip:infozip gecko:firefox,60,build
USE_XPI= firefox
NO_ARCH= yes

View File

@ -6,7 +6,7 @@ FIREFOX_I18N_ALL_= ach af an ar as ast az be bg bn-BD bn-IN br bs ca cak \
es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gn \
gu-IN he hi-IN hr hsb hu hy-AM ia id is it ja ka kab \
kk km kn ko lij lt lv mai mk ml mr ms my nb-NO ne-NP nl \
nn-NO or pa-IN pl pt-BR pt-PT rm ro ru si sk sl son \
nn-NO oc or pa-IN pl pt-BR pt-PT rm ro ru si sk sl son \
sq sr sv-SE ta te th tr uk ur uz vi xh zh-CN zh-TW
.if defined(FIREFOX_I18N_ALL) || defined(PACKAGE_BUILDING) || target(package)
@ -225,6 +225,9 @@ FIREFOX_I18N+= nl
.if ${PORT_OPTIONS:MLANG_NN}
FIREFOX_I18N+= nn-NO
.endif
.if ${PORT_OPTIONS:MLANG_OC}
FIREFOX_I18N+= oc
.endif
.if ${PORT_OPTIONS:MLANG_OR}
FIREFOX_I18N+= or
.endif

View File

@ -73,6 +73,7 @@ OPTIONS_DEFINE= LANG_ACH \
LANG_NE \
LANG_NL \
LANG_NN \
LANG_OC \
LANG_OR \
LANG_PA \
LANG_PL \
@ -122,6 +123,7 @@ LANG_LIJ_DESC?= Ligurian (Genoa) language support
LANG_MS_DESC?= Malay language support
LANG_MY_DESC?= Burmese language support
LANG_NE_DESC?= Nepali language support
LANG_OC_DESC?= Occitan (lengadocian) language support
LANG_SW_DESC?= Swahili language support
LANG_UR_DESC?= Urdu (Pakistan) language support
LANG_UZ_DESC?= Uzbek language support

View File

@ -1,195 +1,197 @@
TIMESTAMP = 1523300563
SHA256 (xpi/firefox-i18n-59.0.3/ach.xpi) = 06dd753f88bf6be664f5a5dc4de06a8df27848c054477655c33a9fe2dd280353
SIZE (xpi/firefox-i18n-59.0.3/ach.xpi) = 439227
SHA256 (xpi/firefox-i18n-59.0.3/af.xpi) = 68a33f07bb31865fa37240eea364b483e9810055263bdb8e042e601f1dca81dd
SIZE (xpi/firefox-i18n-59.0.3/af.xpi) = 436731
SHA256 (xpi/firefox-i18n-59.0.3/an.xpi) = f83f8613fd4d1de4a2e43781f26319b875a25c453d92fc7c45ab9f8ac5dd334e
SIZE (xpi/firefox-i18n-59.0.3/an.xpi) = 463405
SHA256 (xpi/firefox-i18n-59.0.3/ar.xpi) = a52c055d47e2b9a82f839afb92d3e08999ac7b1dd0811c685ded4ec1f9cdf8b9
SIZE (xpi/firefox-i18n-59.0.3/ar.xpi) = 486633
SHA256 (xpi/firefox-i18n-59.0.3/as.xpi) = 257b2ae2d7e184e1a32bc50f329b723281513c8bbefb0ff377cec9d1384e6e55
SIZE (xpi/firefox-i18n-59.0.3/as.xpi) = 483301
SHA256 (xpi/firefox-i18n-59.0.3/ast.xpi) = c4d019603fd3ce9f54e6be434b6899956f4638e7421eb871cae40581e2a2b0f5
SIZE (xpi/firefox-i18n-59.0.3/ast.xpi) = 454343
SHA256 (xpi/firefox-i18n-59.0.3/az.xpi) = 8ad6d99cc19af9aa30edcc8f82d0d3996c2eef084174f273c5b4aecc231fe676
SIZE (xpi/firefox-i18n-59.0.3/az.xpi) = 464270
SHA256 (xpi/firefox-i18n-59.0.3/be.xpi) = 6cbc8c62d376f9aa19481ef9c2e910ade525f0a9e4e49e129be26561b980627d
SIZE (xpi/firefox-i18n-59.0.3/be.xpi) = 517059
SHA256 (xpi/firefox-i18n-59.0.3/bg.xpi) = 63d4200f9c90a00aaa8bdf8f9344e89aade1c7fbf2a896a5f0bc886f1de488a9
SIZE (xpi/firefox-i18n-59.0.3/bg.xpi) = 508613
SHA256 (xpi/firefox-i18n-59.0.3/bn-BD.xpi) = 64106dc208f0c6101c8674f3745f950a18c6e9cbf0a558b871bbcef56bea931f
SIZE (xpi/firefox-i18n-59.0.3/bn-BD.xpi) = 526352
SHA256 (xpi/firefox-i18n-59.0.3/bn-IN.xpi) = 644eea832e118992cf7f1d80534222840056693bc76c181a825bbb3d2afc642b
SIZE (xpi/firefox-i18n-59.0.3/bn-IN.xpi) = 510797
SHA256 (xpi/firefox-i18n-59.0.3/br.xpi) = 013a5fcbc73528684b740d57b6da6960f6c340f74f6d942cdcef0b9f3d719562
SIZE (xpi/firefox-i18n-59.0.3/br.xpi) = 451719
SHA256 (xpi/firefox-i18n-59.0.3/bs.xpi) = bd7ea4447a8f58954fc560390085ae5ef706b97c9fbb8d502664322173adde7c
SIZE (xpi/firefox-i18n-59.0.3/bs.xpi) = 457859
SHA256 (xpi/firefox-i18n-59.0.3/ca.xpi) = e75450e9d595cc4bbccd42e9b667f11f52b3e2a68f3a1640d29bec22c34eee02
SIZE (xpi/firefox-i18n-59.0.3/ca.xpi) = 464912
SHA256 (xpi/firefox-i18n-59.0.3/cak.xpi) = d46b1c72a8e235649ba7c084fff07f647912220aa39e2294e1bda8062b38b2fc
SIZE (xpi/firefox-i18n-59.0.3/cak.xpi) = 475234
SHA256 (xpi/firefox-i18n-59.0.3/cs.xpi) = 8d3f598dd3202ac83e248f57d698d9984b4505c7dc8626416557999519ac28ca
SIZE (xpi/firefox-i18n-59.0.3/cs.xpi) = 471575
SHA256 (xpi/firefox-i18n-59.0.3/cy.xpi) = d4428b881f7065f7620857e8bdd5ac7939b655d725db33b2d5130b116595d650
SIZE (xpi/firefox-i18n-59.0.3/cy.xpi) = 454433
SHA256 (xpi/firefox-i18n-59.0.3/da.xpi) = 6ab8ffc013234f75a9ee3e07a8637c167ba270d899e943ee2a11b732353da72c
SIZE (xpi/firefox-i18n-59.0.3/da.xpi) = 446949
SHA256 (xpi/firefox-i18n-59.0.3/de.xpi) = db7755056efbdba6389e21b27a5d073773a21d5bccc2a84a2cad2a69304548bf
SIZE (xpi/firefox-i18n-59.0.3/de.xpi) = 466273
SHA256 (xpi/firefox-i18n-59.0.3/dsb.xpi) = 6b1beb2d308760c144db97907b6aa82520cbf57c6758724237fb667672ae202f
SIZE (xpi/firefox-i18n-59.0.3/dsb.xpi) = 478975
SHA256 (xpi/firefox-i18n-59.0.3/el.xpi) = a5924bcc22cab458fadf536d3b3e98722e334258b2dabfad361e5cfdd3841efa
SIZE (xpi/firefox-i18n-59.0.3/el.xpi) = 531408
SHA256 (xpi/firefox-i18n-59.0.3/en-GB.xpi) = 6e158b8913687702e5dd5c2c5eeed87fddb05bfecc5532abdae746d0f5ca7cfd
SIZE (xpi/firefox-i18n-59.0.3/en-GB.xpi) = 434300
SHA256 (xpi/firefox-i18n-59.0.3/en-US.xpi) = 6689da05ad8576f85451123cd830d417259fab9d95900b10da196264df94fec3
SIZE (xpi/firefox-i18n-59.0.3/en-US.xpi) = 432750
SHA256 (xpi/firefox-i18n-59.0.3/en-ZA.xpi) = ff13ae647fd1008a4b75417186c11c4f745786c943523cd5033453f172e3795e
SIZE (xpi/firefox-i18n-59.0.3/en-ZA.xpi) = 427366
SHA256 (xpi/firefox-i18n-59.0.3/eo.xpi) = e653e6a9da80065bc14141e7b0aa222d08024ace9569a4dcdefd6f40fe0af01c
SIZE (xpi/firefox-i18n-59.0.3/eo.xpi) = 453366
SHA256 (xpi/firefox-i18n-59.0.3/es-AR.xpi) = a2f3f188a13f48cee71f07da1c293cc8a0d8afdfdccce5278333eb41cb84b0a2
SIZE (xpi/firefox-i18n-59.0.3/es-AR.xpi) = 461799
SHA256 (xpi/firefox-i18n-59.0.3/es-CL.xpi) = e392ef67e5b186f04e8b35578a3025df37ed6862b175356cbd549117fee542f8
SIZE (xpi/firefox-i18n-59.0.3/es-CL.xpi) = 464655
SHA256 (xpi/firefox-i18n-59.0.3/es-ES.xpi) = 76daa3775e21047d2dea9374e595b76ba5b4e385035852ae23e8b6a5b6c50b96
SIZE (xpi/firefox-i18n-59.0.3/es-ES.xpi) = 348464
SHA256 (xpi/firefox-i18n-59.0.3/es-MX.xpi) = 38740927f69592fc9b4d3dbc02e7a3a55a2854781a429ff3579bdc9c088ae15d
SIZE (xpi/firefox-i18n-59.0.3/es-MX.xpi) = 466313
SHA256 (xpi/firefox-i18n-59.0.3/et.xpi) = d0e661fbeb119eecbca79faf0049c64a80a5ddd0d2348029b458248a85012831
SIZE (xpi/firefox-i18n-59.0.3/et.xpi) = 445395
SHA256 (xpi/firefox-i18n-59.0.3/eu.xpi) = 6d577aa1cd4144e041d3b4c1ff3f89373d9f17a36f64d62f07abf3b65e980062
SIZE (xpi/firefox-i18n-59.0.3/eu.xpi) = 455237
SHA256 (xpi/firefox-i18n-59.0.3/fa.xpi) = 781d14437c3c35ab61bf6c13634c9fa72ad7b61875961b15c35d79d71383627d
SIZE (xpi/firefox-i18n-59.0.3/fa.xpi) = 508099
SHA256 (xpi/firefox-i18n-59.0.3/ff.xpi) = 72cffb096c9efd8c3f4a19238e79dc1dcd785cbaaa01f801cb4696a6a15c9b18
SIZE (xpi/firefox-i18n-59.0.3/ff.xpi) = 455026
SHA256 (xpi/firefox-i18n-59.0.3/fi.xpi) = cf31fb8bea5f461ca4d1a7c36d6179aa9325aa67814868286039795fbcf105c8
SIZE (xpi/firefox-i18n-59.0.3/fi.xpi) = 445183
SHA256 (xpi/firefox-i18n-59.0.3/fr.xpi) = c7a0f75967675295cff14826efc9cc92a813ade46d6e2a10f417d6ce9255556e
SIZE (xpi/firefox-i18n-59.0.3/fr.xpi) = 473593
SHA256 (xpi/firefox-i18n-59.0.3/fy-NL.xpi) = 6946e20c0e87847fd53fb5413df656412b0736d1efe42ef22e930533cf7de8f5
SIZE (xpi/firefox-i18n-59.0.3/fy-NL.xpi) = 462919
SHA256 (xpi/firefox-i18n-59.0.3/ga-IE.xpi) = 084d26f17b9cbdb87d7e69bb0ea3d1d839de7a89627cbd9b5cded45d1b8fb97b
SIZE (xpi/firefox-i18n-59.0.3/ga-IE.xpi) = 471909
SHA256 (xpi/firefox-i18n-59.0.3/gd.xpi) = 4f70d89eef94f99c12b8cc9d6cfa95ba6cdb19d0e9ec34378b613a8c8334398b
SIZE (xpi/firefox-i18n-59.0.3/gd.xpi) = 461298
SHA256 (xpi/firefox-i18n-59.0.3/gl.xpi) = c0d7da2c88c05bcda0945c586957ed1c16114270c53bcdc7c9c757519a0b377a
SIZE (xpi/firefox-i18n-59.0.3/gl.xpi) = 441615
SHA256 (xpi/firefox-i18n-59.0.3/gn.xpi) = df391c9810555bbdbb90567d339301c0ad74adb88ea32525d97f450562bde577
SIZE (xpi/firefox-i18n-59.0.3/gn.xpi) = 469398
SHA256 (xpi/firefox-i18n-59.0.3/gu-IN.xpi) = 2f12ae01fa832a36de3d38c7f3889044e792300dd7eed24c82ad7cd78ca7dfc0
SIZE (xpi/firefox-i18n-59.0.3/gu-IN.xpi) = 521805
SHA256 (xpi/firefox-i18n-59.0.3/he.xpi) = 317ffd3182c7648e69040f5a3f376311853effe9fab1bc2b5ae358b96d02f88d
SIZE (xpi/firefox-i18n-59.0.3/he.xpi) = 472771
SHA256 (xpi/firefox-i18n-59.0.3/hi-IN.xpi) = c7e790e3b4a68dd5f1b728effd78fccb7c620f304176e819f439bc832cb6f18a
SIZE (xpi/firefox-i18n-59.0.3/hi-IN.xpi) = 524280
SHA256 (xpi/firefox-i18n-59.0.3/hr.xpi) = af04dc06275e503bb67e1a9055c46499bd6bc36a8152e8d55e8725ebbba8cdd6
SIZE (xpi/firefox-i18n-59.0.3/hr.xpi) = 459978
SHA256 (xpi/firefox-i18n-59.0.3/hsb.xpi) = 69e05c75c04e18d5f0c80a2d4e8294d9e57ffefec73e2320d40ab0636fa55943
SIZE (xpi/firefox-i18n-59.0.3/hsb.xpi) = 475941
SHA256 (xpi/firefox-i18n-59.0.3/hu.xpi) = 3ce07eb573c5c3deaa84dc769390303a5560752ceade43cb393b59800008eea7
SIZE (xpi/firefox-i18n-59.0.3/hu.xpi) = 476897
SHA256 (xpi/firefox-i18n-59.0.3/hy-AM.xpi) = 472fc9816562ec89a73ddab93639a7230e7896ed9be668d8aab403aa32497d37
SIZE (xpi/firefox-i18n-59.0.3/hy-AM.xpi) = 508168
SHA256 (xpi/firefox-i18n-59.0.3/ia.xpi) = 1df302fd1f242f6afe09a374d5f5849f0f6f68fbb5324deae27d88d5b991f694
SIZE (xpi/firefox-i18n-59.0.3/ia.xpi) = 448830
SHA256 (xpi/firefox-i18n-59.0.3/id.xpi) = 621affe22e7de3305dcf92c48ff6ff6ea00ace40027b576cbee07d3f24064b39
SIZE (xpi/firefox-i18n-59.0.3/id.xpi) = 441953
SHA256 (xpi/firefox-i18n-59.0.3/is.xpi) = ee4eec709f3628c74723c0f2dc36d129494bdeec650408f53ab713fe4852e675
SIZE (xpi/firefox-i18n-59.0.3/is.xpi) = 451373
SHA256 (xpi/firefox-i18n-59.0.3/it.xpi) = 62b0fab1268410250fdaa3efbb224af67562b4fd06cf5398a4b2f83a9bf8fae8
SIZE (xpi/firefox-i18n-59.0.3/it.xpi) = 342524
SHA256 (xpi/firefox-i18n-59.0.3/ja.xpi) = 2690d105dcfe2f336b0b2e6eed421b6724920860f18b6cbab5cfd6a3233bd7c8
SIZE (xpi/firefox-i18n-59.0.3/ja.xpi) = 508147
SHA256 (xpi/firefox-i18n-59.0.3/ka.xpi) = 35493638aebddca2525c484c0fee3019363a678539539a3c7622838d229ddf5c
SIZE (xpi/firefox-i18n-59.0.3/ka.xpi) = 492569
SHA256 (xpi/firefox-i18n-59.0.3/kab.xpi) = 6a6f00374b8467238d6ab6a859bf08e6b94d82e89abe8d0044f3c43bd3b3f3c2
SIZE (xpi/firefox-i18n-59.0.3/kab.xpi) = 461840
SHA256 (xpi/firefox-i18n-59.0.3/kk.xpi) = 3ba09badbdbcabe972f5fa9663b0c6026911755f1865d357612362547670e58f
SIZE (xpi/firefox-i18n-59.0.3/kk.xpi) = 517585
SHA256 (xpi/firefox-i18n-59.0.3/km.xpi) = ff01a1481e27d3b30d5fb4989d5343e3a5d68598a7dff9b3ba53a797ea50eefe
SIZE (xpi/firefox-i18n-59.0.3/km.xpi) = 526359
SHA256 (xpi/firefox-i18n-59.0.3/kn.xpi) = adb9e3ccc561ee6251f998224438e287a059002693c32dd5f10d67abd365c75e
SIZE (xpi/firefox-i18n-59.0.3/kn.xpi) = 527879
SHA256 (xpi/firefox-i18n-59.0.3/ko.xpi) = 5c64386aa45b42da7440c97ecf2dc54e90fccabd48b4370e545a92bd33951d3e
SIZE (xpi/firefox-i18n-59.0.3/ko.xpi) = 487661
SHA256 (xpi/firefox-i18n-59.0.3/lij.xpi) = 0ee0b05d4938b8a30b22bfbfe2252bffe66a4dd7413160e0c96a687362b83ebf
SIZE (xpi/firefox-i18n-59.0.3/lij.xpi) = 446606
SHA256 (xpi/firefox-i18n-59.0.3/lt.xpi) = 628562e4eba12a848729991d397816fcaa5212e386a092e73573d5f4b26f3ef2
SIZE (xpi/firefox-i18n-59.0.3/lt.xpi) = 475143
SHA256 (xpi/firefox-i18n-59.0.3/lv.xpi) = 2ac502baba7b61fae56c1238c88bc0fed9e1ad946016c4e5abac7b26d0c5e8ef
SIZE (xpi/firefox-i18n-59.0.3/lv.xpi) = 463655
SHA256 (xpi/firefox-i18n-59.0.3/mai.xpi) = 8bbcd4a2ee41e02f57bc71de7ef95cf8cca38f1f762b5f67467bfc48f38f198b
SIZE (xpi/firefox-i18n-59.0.3/mai.xpi) = 499910
SHA256 (xpi/firefox-i18n-59.0.3/mk.xpi) = 3d1c93031fb4ee9b017305f33d7990a6cae03371260375c9b92bea608e4134e9
SIZE (xpi/firefox-i18n-59.0.3/mk.xpi) = 484076
SHA256 (xpi/firefox-i18n-59.0.3/ml.xpi) = 826338ba6e1793c8712a52026bde36a1545e96d297f2672cb263c5b3e895e819
SIZE (xpi/firefox-i18n-59.0.3/ml.xpi) = 539736
SHA256 (xpi/firefox-i18n-59.0.3/mr.xpi) = 19f22284997f83f3898513d28ff77248564bcad5f251663be305e9794a83df85
SIZE (xpi/firefox-i18n-59.0.3/mr.xpi) = 517961
SHA256 (xpi/firefox-i18n-59.0.3/ms.xpi) = 198d6644796e1b0d2202541aca0bdd3ac8571575b061142b424d40a698f5a6a3
SIZE (xpi/firefox-i18n-59.0.3/ms.xpi) = 450076
SHA256 (xpi/firefox-i18n-59.0.3/my.xpi) = c74d46816b58fda85c297d9fad7daaf0f7f5d09167c5439c805081065b260732
SIZE (xpi/firefox-i18n-59.0.3/my.xpi) = 511894
SHA256 (xpi/firefox-i18n-59.0.3/nb-NO.xpi) = a54871fbb9632c1f086537a60a9a5eee04a6c74928e7b8905c8b7dd3a0141438
SIZE (xpi/firefox-i18n-59.0.3/nb-NO.xpi) = 450276
SHA256 (xpi/firefox-i18n-59.0.3/ne-NP.xpi) = f9ac85b3bb0e3ad2e1ed69722e33670989bd21ff7c729c5580b420a8d90096bc
SIZE (xpi/firefox-i18n-59.0.3/ne-NP.xpi) = 509177
SHA256 (xpi/firefox-i18n-59.0.3/nl.xpi) = c6eb222bd0f876ad03517388dc91f48e1e31b2374e047368af756e5ab18c2f7b
SIZE (xpi/firefox-i18n-59.0.3/nl.xpi) = 458129
SHA256 (xpi/firefox-i18n-59.0.3/nn-NO.xpi) = 623def8c8b87cb6283de5cc1e7453eae31eca83c1c1b30f8ea71d9bd8c6d71ed
SIZE (xpi/firefox-i18n-59.0.3/nn-NO.xpi) = 451471
SHA256 (xpi/firefox-i18n-59.0.3/or.xpi) = f30b95af5fd94ac73986643f349140dc4adc1a652b10a3cd6effa05d4f75e724
SIZE (xpi/firefox-i18n-59.0.3/or.xpi) = 493181
SHA256 (xpi/firefox-i18n-59.0.3/pa-IN.xpi) = 05f0fd798185c7dcbf1fd90b046a57f07fc768b307cfc6d647da52b1109c95dc
SIZE (xpi/firefox-i18n-59.0.3/pa-IN.xpi) = 492420
SHA256 (xpi/firefox-i18n-59.0.3/pl.xpi) = 483be94d1dadcde125440abfaea67569207a288a1e3b389500fcf5365c56b463
SIZE (xpi/firefox-i18n-59.0.3/pl.xpi) = 358511
SHA256 (xpi/firefox-i18n-59.0.3/pt-BR.xpi) = 71b725304ff312cef9792c0163970288dea1739669ea275836f5c10685fc827c
SIZE (xpi/firefox-i18n-59.0.3/pt-BR.xpi) = 455916
SHA256 (xpi/firefox-i18n-59.0.3/pt-PT.xpi) = 929fb40a32904905f8cce947dcf5824128706e8edf257cb9b4655042dd9e7f91
SIZE (xpi/firefox-i18n-59.0.3/pt-PT.xpi) = 459332
SHA256 (xpi/firefox-i18n-59.0.3/rm.xpi) = 6d1d9e6725aa0c9fecf6a1f110b74c384bdd99517ecaf9070983d8b4ab620aa7
SIZE (xpi/firefox-i18n-59.0.3/rm.xpi) = 449757
SHA256 (xpi/firefox-i18n-59.0.3/ro.xpi) = 9a5c32830bd2d96a1203a97c0129526f55f76adf7d6c671af861ef3dee76f776
SIZE (xpi/firefox-i18n-59.0.3/ro.xpi) = 453403
SHA256 (xpi/firefox-i18n-59.0.3/ru.xpi) = 7f2935b9d0ad57e718adc56bc15f76063b12ca75de633439ed318006ba903f7b
SIZE (xpi/firefox-i18n-59.0.3/ru.xpi) = 526523
SHA256 (xpi/firefox-i18n-59.0.3/si.xpi) = 0c7c34a39a10e3937b1ba88eaa1806a378bd60bb4409c1223e946d2ae60454b1
SIZE (xpi/firefox-i18n-59.0.3/si.xpi) = 492588
SHA256 (xpi/firefox-i18n-59.0.3/sk.xpi) = 2f437d36423bcbe759414275707d56cc966f653bb908e5a9d27642a4c9e2774c
SIZE (xpi/firefox-i18n-59.0.3/sk.xpi) = 480814
SHA256 (xpi/firefox-i18n-59.0.3/sl.xpi) = d7d37ff69c626984d2afa6598a51d0c7c7b0d97a986ee043522e00447734916e
SIZE (xpi/firefox-i18n-59.0.3/sl.xpi) = 458825
SHA256 (xpi/firefox-i18n-59.0.3/son.xpi) = c2f95dfeff2b70e5037ddd21fcce03fa149a9d88e578aa6ed1105d2407c1f134
SIZE (xpi/firefox-i18n-59.0.3/son.xpi) = 446400
SHA256 (xpi/firefox-i18n-59.0.3/sq.xpi) = 10ecd6c1e5cba90243792f25cf095d560b04599c25ef4949e8e388cbe27194cb
SIZE (xpi/firefox-i18n-59.0.3/sq.xpi) = 464463
SHA256 (xpi/firefox-i18n-59.0.3/sr.xpi) = 922eccb1b2494fbbb21a6fe167c7c662f1a02a97ea0f65e717439de5105d1254
SIZE (xpi/firefox-i18n-59.0.3/sr.xpi) = 486178
SHA256 (xpi/firefox-i18n-59.0.3/sv-SE.xpi) = 2868e85661001cdeb5614cb0614cf3f57633c5b209de25985807931ce9852b72
SIZE (xpi/firefox-i18n-59.0.3/sv-SE.xpi) = 458660
SHA256 (xpi/firefox-i18n-59.0.3/ta.xpi) = e3a4daaec520c6e77847d08ad55e8aa8621fe42b56c2718a9dc45bae87804f15
SIZE (xpi/firefox-i18n-59.0.3/ta.xpi) = 512843
SHA256 (xpi/firefox-i18n-59.0.3/te.xpi) = 56b6d302449c85b303731345800b47fc1de35d3cfeb6dccb378c48bc069fbc64
SIZE (xpi/firefox-i18n-59.0.3/te.xpi) = 527083
SHA256 (xpi/firefox-i18n-59.0.3/th.xpi) = abd934377157ba71fecfa920b2883fde7ba7168575af768bdcb19356ea5f1174
SIZE (xpi/firefox-i18n-59.0.3/th.xpi) = 498544
SHA256 (xpi/firefox-i18n-59.0.3/tr.xpi) = 285ef8a6d8669ac9d5b6f2e2ae55b36bb2bb21d8230df405f0489714539fe391
SIZE (xpi/firefox-i18n-59.0.3/tr.xpi) = 463594
SHA256 (xpi/firefox-i18n-59.0.3/uk.xpi) = ab3add6611225fd7b65e0e1481e15cae1f5ae98bf058587f64f7f5db40b42d8d
SIZE (xpi/firefox-i18n-59.0.3/uk.xpi) = 516926
SHA256 (xpi/firefox-i18n-59.0.3/ur.xpi) = 2ca831b51bfefcd70ed32b9c0490ac4e0c20e590e3d56bf0d466f9ca0773dae3
SIZE (xpi/firefox-i18n-59.0.3/ur.xpi) = 507380
SHA256 (xpi/firefox-i18n-59.0.3/uz.xpi) = aa8862d2b3bec4e9d0382e683b109b14f927093ad053133ba0b2ea6d7ee9236e
SIZE (xpi/firefox-i18n-59.0.3/uz.xpi) = 456924
SHA256 (xpi/firefox-i18n-59.0.3/vi.xpi) = 3e25ecc2252c6c747bd339d4ddf55ba45660792126e1f99f0ff393aeec89b70a
SIZE (xpi/firefox-i18n-59.0.3/vi.xpi) = 470070
SHA256 (xpi/firefox-i18n-59.0.3/xh.xpi) = ab168a5ff1b17c16a675710d8d69ac7213f1e36aa83ea36bd4aae437110c1242
SIZE (xpi/firefox-i18n-59.0.3/xh.xpi) = 460772
SHA256 (xpi/firefox-i18n-59.0.3/zh-CN.xpi) = b718831aa3a6fe3457b2afb6c7da092eec5c377b9a08a8061373f488bb0168a1
SIZE (xpi/firefox-i18n-59.0.3/zh-CN.xpi) = 483449
SHA256 (xpi/firefox-i18n-59.0.3/zh-TW.xpi) = eaabaa366bbe19fbd48a81c67c69ec949004a065ae217aea284dffefe92ad4ef
SIZE (xpi/firefox-i18n-59.0.3/zh-TW.xpi) = 477089
TIMESTAMP = 1525366747
SHA256 (xpi/firefox-i18n-60.0/ach.xpi) = 53d7cc8122d01405ff1e81cd59b99c534416c1a1e1740dd0536bbb608699bd48
SIZE (xpi/firefox-i18n-60.0/ach.xpi) = 496060
SHA256 (xpi/firefox-i18n-60.0/af.xpi) = 3c78e0128289c2a3ecefddbbb5488cb6324828606ef46ce083d3f9a39b9ad10e
SIZE (xpi/firefox-i18n-60.0/af.xpi) = 486533
SHA256 (xpi/firefox-i18n-60.0/an.xpi) = 6ccafad26ff3dcb004eaa409d74b4edfe1a25d9802c7e195990ee23f2af780a4
SIZE (xpi/firefox-i18n-60.0/an.xpi) = 519732
SHA256 (xpi/firefox-i18n-60.0/ar.xpi) = 00349c780c191d8155af51dc725ea85a6288bc8a873d1d868e26a59c7491673f
SIZE (xpi/firefox-i18n-60.0/ar.xpi) = 546957
SHA256 (xpi/firefox-i18n-60.0/as.xpi) = c54a2447f53163d087e7b30f4fd602efcbb77c3ef91a4102539f5df9cae4fcc8
SIZE (xpi/firefox-i18n-60.0/as.xpi) = 529947
SHA256 (xpi/firefox-i18n-60.0/ast.xpi) = 88d92a5714da612d52ff0b27165f285ba46ce384ddbdb835c0f6bf3bf939dd96
SIZE (xpi/firefox-i18n-60.0/ast.xpi) = 507866
SHA256 (xpi/firefox-i18n-60.0/az.xpi) = 4112937fafee628dc80007aba16b1173bc57d9a01155a5efe1fb0fadc7db79d7
SIZE (xpi/firefox-i18n-60.0/az.xpi) = 523975
SHA256 (xpi/firefox-i18n-60.0/be.xpi) = 746627277957930f0a8053c2efc742390fae80d8f087d47b213f188dd2264e09
SIZE (xpi/firefox-i18n-60.0/be.xpi) = 579944
SHA256 (xpi/firefox-i18n-60.0/bg.xpi) = b415ea936d517c061d0ebcf42e000ed13943c78ae188c20dc5d65c297670b7cd
SIZE (xpi/firefox-i18n-60.0/bg.xpi) = 573075
SHA256 (xpi/firefox-i18n-60.0/bn-BD.xpi) = 179a1e8909f34bce3907d11140b467743e2c69a33374a7ef4f9db8dd36979520
SIZE (xpi/firefox-i18n-60.0/bn-BD.xpi) = 589638
SHA256 (xpi/firefox-i18n-60.0/bn-IN.xpi) = acea49db1052b5342929bb9f36131315820c1e94f9f9e0a4051644796d215bd9
SIZE (xpi/firefox-i18n-60.0/bn-IN.xpi) = 570084
SHA256 (xpi/firefox-i18n-60.0/br.xpi) = c5e18d9645a9f665a736c43ac4faa828728a145f3353b92b23949998d4fc2576
SIZE (xpi/firefox-i18n-60.0/br.xpi) = 511252
SHA256 (xpi/firefox-i18n-60.0/bs.xpi) = 67a2a2f68c8e9a6291750e0732c9532c314f8281777432372016b0d0fc3a90bd
SIZE (xpi/firefox-i18n-60.0/bs.xpi) = 513930
SHA256 (xpi/firefox-i18n-60.0/ca.xpi) = bef4db01eb89d19a9e39a878d63c40346ce1eca72d4b4d47494ded1218842a3b
SIZE (xpi/firefox-i18n-60.0/ca.xpi) = 524485
SHA256 (xpi/firefox-i18n-60.0/cak.xpi) = 8cd1a8564d4198c5827e04da24cdb684501818e62a610adfcb9001aa345934c6
SIZE (xpi/firefox-i18n-60.0/cak.xpi) = 535507
SHA256 (xpi/firefox-i18n-60.0/cs.xpi) = 356b5cf598d3cd435f891d1c734ff69477bb1a1260f6875b7127b55186c4cc0a
SIZE (xpi/firefox-i18n-60.0/cs.xpi) = 531020
SHA256 (xpi/firefox-i18n-60.0/cy.xpi) = c4c9fc4017deb822cec90d20f214d6266e535e8f2e176dde95adb9e5541e2e50
SIZE (xpi/firefox-i18n-60.0/cy.xpi) = 515865
SHA256 (xpi/firefox-i18n-60.0/da.xpi) = be63221fc0247b234b13ae5f6d56ceab4bda666fc51d45ecca7f56a5827387b3
SIZE (xpi/firefox-i18n-60.0/da.xpi) = 509983
SHA256 (xpi/firefox-i18n-60.0/de.xpi) = 9ce175158ab0bcf2595d23558806e1ebe2e61d7e5794fa86c2e8e55b6fce0d59
SIZE (xpi/firefox-i18n-60.0/de.xpi) = 525692
SHA256 (xpi/firefox-i18n-60.0/dsb.xpi) = b9a8979417bafa03b161840e85b28f320fe2bc05d9a39243c67fcabc9588390e
SIZE (xpi/firefox-i18n-60.0/dsb.xpi) = 538745
SHA256 (xpi/firefox-i18n-60.0/el.xpi) = b91bf759b261a3ae93f1fa12b46e429297b59e77975b1a0e023336540efbde51
SIZE (xpi/firefox-i18n-60.0/el.xpi) = 592911
SHA256 (xpi/firefox-i18n-60.0/en-GB.xpi) = 0e95284c878250498a1655136e39b5080aa0860b2784b2e9062222cda4922607
SIZE (xpi/firefox-i18n-60.0/en-GB.xpi) = 490907
SHA256 (xpi/firefox-i18n-60.0/en-US.xpi) = 303cb12f5dd7f14381050082d4408ee8354dd17c85ede7c8ecb9d86302230f8b
SIZE (xpi/firefox-i18n-60.0/en-US.xpi) = 472383
SHA256 (xpi/firefox-i18n-60.0/en-ZA.xpi) = f04e1036bb18a910fb6eb82235c55919975405982829af81bf55a28b80a3a3d7
SIZE (xpi/firefox-i18n-60.0/en-ZA.xpi) = 473893
SHA256 (xpi/firefox-i18n-60.0/eo.xpi) = 2186dc82ada5a005af9f32c3804d27f430120f90c85aa81ab1fff62ef2f5ee19
SIZE (xpi/firefox-i18n-60.0/eo.xpi) = 510486
SHA256 (xpi/firefox-i18n-60.0/es-AR.xpi) = f8937590a4970febf434643f88b0c3b8dde9c8b487537e22be36fac85b82bfb9
SIZE (xpi/firefox-i18n-60.0/es-AR.xpi) = 523825
SHA256 (xpi/firefox-i18n-60.0/es-CL.xpi) = 72c7ff06f70d9c91e674ff4c5d5d5516d6bf94e6f537251360eae95b6031288d
SIZE (xpi/firefox-i18n-60.0/es-CL.xpi) = 526509
SHA256 (xpi/firefox-i18n-60.0/es-ES.xpi) = 773edf9dd30c54aa7c635a061aecf4293397ee0bfe4a4ccd5456a7e848e11b2d
SIZE (xpi/firefox-i18n-60.0/es-ES.xpi) = 459145
SHA256 (xpi/firefox-i18n-60.0/es-MX.xpi) = 15979a5de10cd774f9f0a3f2bd75120fcba0ddcdcee0e6a16827c4951b3de7c9
SIZE (xpi/firefox-i18n-60.0/es-MX.xpi) = 527837
SHA256 (xpi/firefox-i18n-60.0/et.xpi) = 486f6e09edf17a28592cca6cc1023ab6df0851a3579ad269158de9ea1736f798
SIZE (xpi/firefox-i18n-60.0/et.xpi) = 504177
SHA256 (xpi/firefox-i18n-60.0/eu.xpi) = aaa5de02e9f28d90638cf777986f240252d5573a4823630eb53b7f98e50b1520
SIZE (xpi/firefox-i18n-60.0/eu.xpi) = 510932
SHA256 (xpi/firefox-i18n-60.0/fa.xpi) = f1755e375399918d1ae5f96615ec35acf3e724706885f94807d1091072f98d94
SIZE (xpi/firefox-i18n-60.0/fa.xpi) = 565492
SHA256 (xpi/firefox-i18n-60.0/ff.xpi) = a948f479a0d09c6b8cd2315f4ce96a8e9039aae5d560eaf6e23a547426796867
SIZE (xpi/firefox-i18n-60.0/ff.xpi) = 511431
SHA256 (xpi/firefox-i18n-60.0/fi.xpi) = 341c660264866ee2dfd9f51e702aaf47752345747dd886b827c1fdb4dac88731
SIZE (xpi/firefox-i18n-60.0/fi.xpi) = 505404
SHA256 (xpi/firefox-i18n-60.0/fr.xpi) = 6a10513550ca1a215db66180b8de1901d12a9294d123c49ed3dffb671642f8a6
SIZE (xpi/firefox-i18n-60.0/fr.xpi) = 535240
SHA256 (xpi/firefox-i18n-60.0/fy-NL.xpi) = f5d1819926c65bef009d9f733bedc59fd611637b57625fb36d5578980d311a07
SIZE (xpi/firefox-i18n-60.0/fy-NL.xpi) = 523737
SHA256 (xpi/firefox-i18n-60.0/ga-IE.xpi) = d48d35bae701f7751da67f62c06e66fe7fb88e50f9a53058f1dacdeb93243f41
SIZE (xpi/firefox-i18n-60.0/ga-IE.xpi) = 526201
SHA256 (xpi/firefox-i18n-60.0/gd.xpi) = cf0e1ad45addf7385ae8b06588774b97c24f13c19bd6ab8a0ac092ad446eebed
SIZE (xpi/firefox-i18n-60.0/gd.xpi) = 520094
SHA256 (xpi/firefox-i18n-60.0/gl.xpi) = b3d5f733d8b0054117c6699b869af92364c0635894ccceb1fd10a56bf88dec76
SIZE (xpi/firefox-i18n-60.0/gl.xpi) = 496596
SHA256 (xpi/firefox-i18n-60.0/gn.xpi) = 79049bd1ad1352d4821b56a21f8c938dc3f949a247f22ebd0be6238dedac8d16
SIZE (xpi/firefox-i18n-60.0/gn.xpi) = 532445
SHA256 (xpi/firefox-i18n-60.0/gu-IN.xpi) = d8867ddf68b99170e91bfc2a5d95822f72dd628227304d197e9c8b5594510c9f
SIZE (xpi/firefox-i18n-60.0/gu-IN.xpi) = 589477
SHA256 (xpi/firefox-i18n-60.0/he.xpi) = efe697d5cc2489773084126fd9a09a1a326045c4d0bfb6dab879bf3f440bbb03
SIZE (xpi/firefox-i18n-60.0/he.xpi) = 535208
SHA256 (xpi/firefox-i18n-60.0/hi-IN.xpi) = cdde1b852744e0584b66aacf193c09b49891093147daa459ded7c586a9ae9216
SIZE (xpi/firefox-i18n-60.0/hi-IN.xpi) = 590081
SHA256 (xpi/firefox-i18n-60.0/hr.xpi) = e58a06aef947fef842813be2ad931ef02c57348e7f3fd405d73ebd05ac0ec4c7
SIZE (xpi/firefox-i18n-60.0/hr.xpi) = 515190
SHA256 (xpi/firefox-i18n-60.0/hsb.xpi) = 35efa8fe9d6a89a6fcc3178154c7912aa7b2b2be02cd9b926008c04f9e1b40fa
SIZE (xpi/firefox-i18n-60.0/hsb.xpi) = 536278
SHA256 (xpi/firefox-i18n-60.0/hu.xpi) = 95e0ed5ea210dae542ebfdc9387d9bae4fde53c38f1be1d052e81bcd1afb043b
SIZE (xpi/firefox-i18n-60.0/hu.xpi) = 537586
SHA256 (xpi/firefox-i18n-60.0/hy-AM.xpi) = 8e7b6ae85cb24a5a116d79b62282affaa9caad20284d2c784b7c0bf9ff54c257
SIZE (xpi/firefox-i18n-60.0/hy-AM.xpi) = 568631
SHA256 (xpi/firefox-i18n-60.0/ia.xpi) = 1268720677549267ea5d19b5632de38973922e4c72cf90910dd4234b3a514ffb
SIZE (xpi/firefox-i18n-60.0/ia.xpi) = 509952
SHA256 (xpi/firefox-i18n-60.0/id.xpi) = 9ca9220d62f26530af4c5bdca44d0a5691130f77a6cefb3f8c5cb8ffce8f07c6
SIZE (xpi/firefox-i18n-60.0/id.xpi) = 501456
SHA256 (xpi/firefox-i18n-60.0/is.xpi) = 7ecdab2c648c439e93dacbe5aa37b25a4d42122dd62ff1784323c2a56edce473
SIZE (xpi/firefox-i18n-60.0/is.xpi) = 512502
SHA256 (xpi/firefox-i18n-60.0/it.xpi) = 4bdf67ee507fcf3c1e8cd16a22b7cf7c8bd2c7b9ab169b881588ccf7ebcd381b
SIZE (xpi/firefox-i18n-60.0/it.xpi) = 398258
SHA256 (xpi/firefox-i18n-60.0/ja.xpi) = cea38dd41f439d52aebbb7133c83c655e5a7cda7b9244ca697605f5fb6e75bfd
SIZE (xpi/firefox-i18n-60.0/ja.xpi) = 571236
SHA256 (xpi/firefox-i18n-60.0/ka.xpi) = d2d92cf67836a2d42cad40e08ec8093882085112f8e8c21f74241448bedf4155
SIZE (xpi/firefox-i18n-60.0/ka.xpi) = 556067
SHA256 (xpi/firefox-i18n-60.0/kab.xpi) = bbfb9a2a5b9375df9d82509a5b064c499013d1f02ea464dddb3b553bb776ec5a
SIZE (xpi/firefox-i18n-60.0/kab.xpi) = 519620
SHA256 (xpi/firefox-i18n-60.0/kk.xpi) = c5c54c15910c2254180d72c10fa8ff1429c43625cbaaca0ab42e266ec850acbe
SIZE (xpi/firefox-i18n-60.0/kk.xpi) = 582208
SHA256 (xpi/firefox-i18n-60.0/km.xpi) = 3506f2c645ad501fa133df2ca8af5e84458e641860e490ab297f3d3d2335b312
SIZE (xpi/firefox-i18n-60.0/km.xpi) = 582334
SHA256 (xpi/firefox-i18n-60.0/kn.xpi) = 0b084c1ad201d15851d8a6acc40b9bac020119175ec1edc390d39a7535abab13
SIZE (xpi/firefox-i18n-60.0/kn.xpi) = 585100
SHA256 (xpi/firefox-i18n-60.0/ko.xpi) = d450910b7e256a8599e4432ac49f758d7dd7b7b7ab74a1b0e1cd0c9717d79d1f
SIZE (xpi/firefox-i18n-60.0/ko.xpi) = 547048
SHA256 (xpi/firefox-i18n-60.0/lij.xpi) = 7d47c90c77289f09f8356b5f42746f75dbd7a52efbacb056f832f980b7331083
SIZE (xpi/firefox-i18n-60.0/lij.xpi) = 512398
SHA256 (xpi/firefox-i18n-60.0/lt.xpi) = d614b06a18a7e59683733a21781a851879c31e46b0d345ec6efd49b774210a7d
SIZE (xpi/firefox-i18n-60.0/lt.xpi) = 535634
SHA256 (xpi/firefox-i18n-60.0/lv.xpi) = 8f68a8ac9d8f7f7d1edcf1d59c8da5254efd1074ddb1e2038424bddb5a413e5d
SIZE (xpi/firefox-i18n-60.0/lv.xpi) = 525636
SHA256 (xpi/firefox-i18n-60.0/mai.xpi) = 8331bda59001d53abeaf86dfbe649799077963ab4955a66b5caef11fb75894d5
SIZE (xpi/firefox-i18n-60.0/mai.xpi) = 548470
SHA256 (xpi/firefox-i18n-60.0/mk.xpi) = 81db9c67e886c57cc2d807bf977686ef4d03cabd4ac8e57eadbe7c68c683434b
SIZE (xpi/firefox-i18n-60.0/mk.xpi) = 513024
SHA256 (xpi/firefox-i18n-60.0/ml.xpi) = 1a570596e6d9eebfd1b8e03d3d59ef300e977ac204fe707e333b0e389d3ba9cc
SIZE (xpi/firefox-i18n-60.0/ml.xpi) = 598200
SHA256 (xpi/firefox-i18n-60.0/mr.xpi) = a1d26997a43b90384c97315f86aa8f1ef4af5c126fe6ba02310a21aa399fcfcc
SIZE (xpi/firefox-i18n-60.0/mr.xpi) = 578337
SHA256 (xpi/firefox-i18n-60.0/ms.xpi) = 522bd4cf7016c2fe181f2a04a5661fd174152973e12a29447bb5d29054a76e16
SIZE (xpi/firefox-i18n-60.0/ms.xpi) = 508782
SHA256 (xpi/firefox-i18n-60.0/my.xpi) = 6e61fcd5a98e827db607622d185642ca34e81f84aa83c31508931681899d09a8
SIZE (xpi/firefox-i18n-60.0/my.xpi) = 569576
SHA256 (xpi/firefox-i18n-60.0/nb-NO.xpi) = 1f66db8430715fc22690ca5f002f5c60878725dc716131e9ab31bc2e90db0109
SIZE (xpi/firefox-i18n-60.0/nb-NO.xpi) = 509096
SHA256 (xpi/firefox-i18n-60.0/ne-NP.xpi) = 9b2827ca22212a947db237c11c94a69b207b4ca3786944f4fdefeaddd1741acb
SIZE (xpi/firefox-i18n-60.0/ne-NP.xpi) = 554576
SHA256 (xpi/firefox-i18n-60.0/nl.xpi) = 3e7b4623d9390f6bac75368750561adc2599cf19c6a904c764947997bd161f53
SIZE (xpi/firefox-i18n-60.0/nl.xpi) = 516657
SHA256 (xpi/firefox-i18n-60.0/nn-NO.xpi) = 06fb56a442e7e1b0907e28617e98401ff88112d6af204a2af779e784ea81f079
SIZE (xpi/firefox-i18n-60.0/nn-NO.xpi) = 510618
SHA256 (xpi/firefox-i18n-60.0/oc.xpi) = ad506d782a522c982dfd200057c5adadf9fb28c39c133657713b6e5513454156
SIZE (xpi/firefox-i18n-60.0/oc.xpi) = 526210
SHA256 (xpi/firefox-i18n-60.0/or.xpi) = 8537d758630c17f66a3af3d4959e15a864eb34bf9988da6f2f0ffc8526712966
SIZE (xpi/firefox-i18n-60.0/or.xpi) = 540093
SHA256 (xpi/firefox-i18n-60.0/pa-IN.xpi) = 246cf5f518f27404e0eb71e4956c098ffd8f5c7cb0797d0be0510a4cda32f69a
SIZE (xpi/firefox-i18n-60.0/pa-IN.xpi) = 557089
SHA256 (xpi/firefox-i18n-60.0/pl.xpi) = 5b191c59e194d40b2ff9e373fee2031d117c05e5ea95b5f3bb113b7bf971edc1
SIZE (xpi/firefox-i18n-60.0/pl.xpi) = 418188
SHA256 (xpi/firefox-i18n-60.0/pt-BR.xpi) = cd8bdb0b980942000164e9a5fc6a8774ce0976621f04e4500522789292b4186c
SIZE (xpi/firefox-i18n-60.0/pt-BR.xpi) = 513937
SHA256 (xpi/firefox-i18n-60.0/pt-PT.xpi) = 3795f1b2f5507f2509a2039ab826cc0c8e96218be5a31ef4017b11f2a9fbed22
SIZE (xpi/firefox-i18n-60.0/pt-PT.xpi) = 518541
SHA256 (xpi/firefox-i18n-60.0/rm.xpi) = 6a2dfac8512656a10ad4cad870a8ec54f6c3edcb5812cb421498ca06155bd8ab
SIZE (xpi/firefox-i18n-60.0/rm.xpi) = 505265
SHA256 (xpi/firefox-i18n-60.0/ro.xpi) = 30164759886d12cac01539ee433272d217b4e227cab16a3466d6ef47ba6f2418
SIZE (xpi/firefox-i18n-60.0/ro.xpi) = 513282
SHA256 (xpi/firefox-i18n-60.0/ru.xpi) = b91ea5ab5bc12b81c366f5b797ce922753d956e75488f8ae071b3a19fa0006fb
SIZE (xpi/firefox-i18n-60.0/ru.xpi) = 590510
SHA256 (xpi/firefox-i18n-60.0/si.xpi) = 5c3dc73d7f3d10f039208ad3e5e480c28b0d6e168b4467771d06c024310b53c0
SIZE (xpi/firefox-i18n-60.0/si.xpi) = 544796
SHA256 (xpi/firefox-i18n-60.0/sk.xpi) = 170e764c2d7842ace3ea10a37a28403ab30092cd010b673053c1366b9d566e2b
SIZE (xpi/firefox-i18n-60.0/sk.xpi) = 540922
SHA256 (xpi/firefox-i18n-60.0/sl.xpi) = fb819360b31a983242564c49e0398f13f7faecb0f037a8c643e46912b7cfce63
SIZE (xpi/firefox-i18n-60.0/sl.xpi) = 518574
SHA256 (xpi/firefox-i18n-60.0/son.xpi) = f7c55f44f07c88e3cde1fed96144185f81554f430632e730d45527ab602c6c51
SIZE (xpi/firefox-i18n-60.0/son.xpi) = 496914
SHA256 (xpi/firefox-i18n-60.0/sq.xpi) = 73a47afd344801f2b1af6db49ffe10a99576914416d30e2f69ef4c84345f6224
SIZE (xpi/firefox-i18n-60.0/sq.xpi) = 520493
SHA256 (xpi/firefox-i18n-60.0/sr.xpi) = cb3ccfd9a3a8c8256fec8a91dbcca334e2e64b6b36d1c49b3d76ee9133af8bd8
SIZE (xpi/firefox-i18n-60.0/sr.xpi) = 547995
SHA256 (xpi/firefox-i18n-60.0/sv-SE.xpi) = 2e5f2209f4263b4defb52edf93c81c45b142dc4f85d4eef5ef7a5df0dfb4a81c
SIZE (xpi/firefox-i18n-60.0/sv-SE.xpi) = 517847
SHA256 (xpi/firefox-i18n-60.0/ta.xpi) = 6acdcf05d2a55fd7803fb5674b5abada51f89811192d66af1b24bd006d195241
SIZE (xpi/firefox-i18n-60.0/ta.xpi) = 577139
SHA256 (xpi/firefox-i18n-60.0/te.xpi) = 8dcc7ed11b9c096904810797153115d507395a8ef01025bc3fb2c53098f02fc4
SIZE (xpi/firefox-i18n-60.0/te.xpi) = 590183
SHA256 (xpi/firefox-i18n-60.0/th.xpi) = 3edcbbc2364ecaa1eff5fecee810a201d86bf3dbd81d0916b7b8a94e31aeaa3e
SIZE (xpi/firefox-i18n-60.0/th.xpi) = 562036
SHA256 (xpi/firefox-i18n-60.0/tr.xpi) = 1cdb5564ec294ffd7d85a8eeb50b749f9d6bce19a585cfb29098cf8e091d5247
SIZE (xpi/firefox-i18n-60.0/tr.xpi) = 525033
SHA256 (xpi/firefox-i18n-60.0/uk.xpi) = 2318e5a4bc46540633aa7ea71e3c4da7e0d006fafa8292adaf1ac0baa3927129
SIZE (xpi/firefox-i18n-60.0/uk.xpi) = 580145
SHA256 (xpi/firefox-i18n-60.0/ur.xpi) = e0c4f2d2c0a3f478295d0beaaf129e7df286f503601f4530df7ce3194b26763a
SIZE (xpi/firefox-i18n-60.0/ur.xpi) = 562602
SHA256 (xpi/firefox-i18n-60.0/uz.xpi) = fa358c25b4ee8036d1a10916349b4608d669323d3973fed93e93f2ccc5eae344
SIZE (xpi/firefox-i18n-60.0/uz.xpi) = 512909
SHA256 (xpi/firefox-i18n-60.0/vi.xpi) = f34a3c5924999c54e7f79b8237346b6482a745141d9fd2c2d07325c156c8fb34
SIZE (xpi/firefox-i18n-60.0/vi.xpi) = 527412
SHA256 (xpi/firefox-i18n-60.0/xh.xpi) = d9cc10826a4bc1e554d81813bdefb7d19ea67d0ba8ce1cccceadae0ea12f4a6c
SIZE (xpi/firefox-i18n-60.0/xh.xpi) = 511081
SHA256 (xpi/firefox-i18n-60.0/zh-CN.xpi) = c3fff9c7562cd4e76526a2546cbe1ffc75404ff1ab5f8bfb8f871b4bf6118dc2
SIZE (xpi/firefox-i18n-60.0/zh-CN.xpi) = 542804
SHA256 (xpi/firefox-i18n-60.0/zh-TW.xpi) = fc807d2d6d2db96229d34f5c0594cd97e948508448ea205f6afc1a1f9b615f23
SIZE (xpi/firefox-i18n-60.0/zh-TW.xpi) = 541119

View File

@ -2,28 +2,27 @@
# $FreeBSD$
PORTNAME= firefox
DISTVERSION= 59.0.3
DISTVERSION= 60.0
PORTREVISION= 2
PORTEPOCH= 1
CATEGORIES= www ipv6
MASTER_SITES= https://hg.mozilla.org/releases/mozilla-release/archive/
MASTER_SITES+= LOCAL/${DIST_SUBDIR}/jbeich
DISTNAME= ${MASTER_SITES:M*hg*:S,/archive/,,:T}-6b51784853e47e091d213d421a19cb623af718f0
DISTFILES= ${DISTNAME:C/.*-//}${EXTRACT_SUFX}
DIST_SUBDIR= firefox
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build2/source
DISTFILES= ${DISTNAME}.source${EXTRACT_SUFX}
MAINTAINER= gecko@FreeBSD.org
COMMENT= Web browser based on the browser portion of Mozilla
BUILD_DEPENDS= nspr>=4.18:devel/nspr \
nss>=3.35:security/nss \
BUILD_DEPENDS= nspr>=4.19:devel/nspr \
nss>=3.36.1:security/nss \
icu>=59.1,1:devel/icu \
libevent>=2.1.8:devel/libevent \
harfbuzz>=1.7.4:print/harfbuzz \
graphite2>=1.3.10:graphics/graphite2 \
harfbuzz>=1.7.6:print/harfbuzz \
graphite2>=1.3.11:graphics/graphite2 \
png>=1.6.34:graphics/png \
libvorbis>=1.3.5,3:audio/libvorbis \
libvorbis>=1.3.6,3:audio/libvorbis \
libvpx>=1.5.0:multimedia/libvpx \
sqlite3>=3.21.0:databases/sqlite3 \
sqlite3>=3.22.0:databases/sqlite3 \
${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \
v4l_compat>0:multimedia/v4l_compat \
autoconf-2.13:devel/autoconf213 \
@ -31,15 +30,13 @@ BUILD_DEPENDS= nspr>=4.18:devel/nspr \
zip:archivers/zip
# soundtouch>=1.9.0:audio/soundtouch \
LIB_DEPENDS= libv4l2.so:multimedia/libv4l
USE_GECKO= gecko
CONFLICTS_INSTALL= firefox-esr
MOZ_PKGCONFIG_FILES= # empty
USE_MOZILLA= -cairo -soundtouch
USE_GL= gl
USES= tar:bz2
USES= tar:xz
FIREFOX_ICON= ${MOZILLA}.png
FIREFOX_ICON_SRC= ${PREFIX}/lib/${MOZILLA}/browser/chrome/icons/default/default48.png

View File

@ -1,3 +1,3 @@
TIMESTAMP = 1523300563
SHA256 (firefox/6b51784853e47e091d213d421a19cb623af718f0.tar.bz2) = 9f607fd192a30dab38fa63bd1be174a3e72e3a8f8e7d354c5a4b6d285c23942b
SIZE (firefox/6b51784853e47e091d213d421a19cb623af718f0.tar.bz2) = 304955566
TIMESTAMP = 1525366747
SHA256 (firefox-60.0.source.tar.xz) = 4bc4fd997e6239f53e16a70b04f197791e5c5d09367e2916bcfe4a427999f842
SIZE (firefox-60.0.source.tar.xz) = 266717500

View File

@ -1,150 +1,28 @@
diff --git build/moz.configure/old.configure build/moz.configure/old.configure
index cd6c37cf4c7c..e98dc7973a6a 100644
--- build/moz.configure/old.configure
+++ build/moz.configure/old.configure
@@ -275,6 +275,7 @@ def old_configure_options(*options):
'--with-nspr-prefix',
'--with-nss-exec-prefix',
'--with-nss-prefix',
+ '--with-oss',
'--with-pthreads',
'--with-qemu-exe',
'--with-sixgill',
diff --git old-configure.in old-configure.in
index dff46614635e..dbbfdb76ab78 100644
--- old-configure.in
+++ old-configure.in
@@ -3128,6 +3128,67 @@ AC_DEFINE(MOZ_WEBM_ENCODER)
AC_SUBST(MOZ_WEBM_ENCODER)
dnl ==================================
+dnl = Check OSS availability
+dnl ==================================
+
+dnl If using Linux, Solaris or BSDs, ensure that OSS is available
+case "$OS_TARGET" in
+Linux|SunOS|DragonFly|FreeBSD|NetBSD|GNU/kFreeBSD)
+ MOZ_OSS=1
+ ;;
+esac
+
+MOZ_ARG_WITH_STRING(oss,
+[ --with-oss[=PFX] Enable OpenSoundSystem support [installed at prefix PFX]],
+ OSSPREFIX=$withval)
+
+if test -n "$OSSPREFIX"; then
+ if test "$OSSPREFIX" != "no"; then
+ MOZ_OSS=1
+ else
+ MOZ_OSS=
+ fi
+fi
+
+_SAVE_CFLAGS=$CFLAGS
+_SAVE_LIBS=$LIBS
+if test -n "$MOZ_OSS"; then
+ dnl Prefer 4Front implementation
+ AC_MSG_CHECKING([MOZ_OSS_CFLAGS])
+ if test "$OSSPREFIX" != "yes"; then
+ oss_conf=${OSSPREFIX%/usr}/etc/oss.conf
+ if test -f "$oss_conf"; then
+ . "$oss_conf"
+ else
+ OSSLIBDIR=$OSSPREFIX/lib/oss
+ fi
+ if test -d "$OSSLIBDIR"; then
+ MOZ_OSS_CFLAGS="$MOZ_OSS_CFLAGS -I$OSSLIBDIR/include"
+ fi
+ fi
+ AC_MSG_RESULT([$MOZ_OSS_CFLAGS])
+
+ CFLAGS="$CFLAGS $MOZ_OSS_CFLAGS"
+ MOZ_CHECK_HEADERS(sys/soundcard.h soundcard.h)
+
+ if test "$ac_cv_header_sys_soundcard_h" != "yes" -a \
+ "$ac_cv_header_soundcard_h" != "yes"; then
+ AC_MSG_ERROR([Need OSS for Ogg, Wave or WebM decoding on $OS_TARGET. Disable with --without-oss.])
+ fi
+
+ dnl Assume NetBSD implementation over SunAudio
+ AC_CHECK_LIB(ossaudio, _oss_ioctl,
+ [AC_DEFINE_UNQUOTED(CUBEB_OSS_DEFAULT_OUTPUT, "/dev/sound")
+ MOZ_OSS_LIBS="$MOZ_OSS_LIBS -lossaudio"])
+fi
+CFLAGS=$_SAVE_CFLAGS
+LIBS=$_SAVE_LIBS
+
+AC_SUBST(MOZ_OSS)
+AC_SUBST_LIST(MOZ_OSS_CFLAGS)
+AC_SUBST_LIST(MOZ_OSS_LIBS)
+
+dnl ==================================
dnl = Check alsa availability on Linux
dnl ==================================
diff --git dom/media/CubebUtils.cpp dom/media/CubebUtils.cpp
index e10e07e06ade..1fd561bea113 100644
--- dom/media/CubebUtils.cpp
+++ dom/media/CubebUtils.cpp
@@ -71,7 +71,8 @@ const char* AUDIOSTREAM_BACKEND_ID_STR[] = {
"sndio",
"opensl",
"audiotrack",
- "kai"
+ "kai",
+ "oss",
};
/* Index for failures to create an audio stream the first time. */
const int CUBEB_BACKEND_INIT_FAILURE_FIRST =
diff --git media/libcubeb/AUTHORS media/libcubeb/AUTHORS
index 0fde65baad34..f8663c43b475 100644
--- media/libcubeb/AUTHORS
+++ media/libcubeb/AUTHORS
@@ -4,6 +4,7 @@ Michael Wu <mwu@mozilla.com>
Paul Adenot <paul@paul.cx>
David Richards <drichards@mozilla.com>
Sebastien Alaiwan <sebastien.alaiwan@gmail.com>
+Evgeniy Vodolazskiy <waterlaz@gmail.com>
KO Myung-Hun <komh@chollian.net>
Haakon Sporsheim <haakon.sporsheim@telenordigital.com>
Alex Chronopoulos <achronop@gmail.com>
diff --git media/libcubeb/src/cubeb.c media/libcubeb/src/cubeb.c
index 57bcb4c13652..68be024f4a68 100644
--- media/libcubeb/src/cubeb.c
+++ media/libcubeb/src/cubeb.c
@@ -54,6 +54,9 @@ int audiotrack_init(cubeb ** context, char const * context_name);
#if defined(USE_KAI)
int kai_init(cubeb ** context, char const * context_name);
#endif
+#if defined(USE_OSS)
+int oss_init(cubeb ** context, char const * context_name);
+#endif
static int
validate_stream_params(cubeb_stream_params * input_stream_params,
@@ -155,6 +158,10 @@ cubeb_init(cubeb ** context, char const * context_name, char const * backend_nam
#if defined(USE_KAI)
init_oneshot = kai_init;
#endif
+ } else if (!strcmp(backend_name, "oss")) {
+#if defined(USE_OSS)
+ init_oneshot = oss_init;
+#endif
} else {
/* Already set */
}
@@ -196,6 +203,9 @@ cubeb_init(cubeb ** context, char const * context_name, char const * backend_nam
#if defined(USE_KAI)
kai_init,
#endif
+#if defined(USE_OSS)
+ oss_init,
+#endif
};
int i;
commit f9bcf9c81c4a
Author: Evgeniy Vodolazskiy <waterlaz@gmail.com>
Date: Tue Sep 9 14:38:00 2014 -0700
Bug 1021761 - Make ALSA optional on Linux, allowing fallback to another backend. r=kinetik r=glandium
---
media/libcubeb/gtest/moz.build | 1 -
media/libcubeb/src/cubeb_alsa.c | 228 +++++++++++++++++++++++++++++-----------
toolkit/library/moz.build | 3 -
3 files changed, 168 insertions(+), 64 deletions(-)
diff --git media/libcubeb/gtest/moz.build media/libcubeb/gtest/moz.build
index 558130188c2e..0cf157d41903 100644
--- media/libcubeb/gtest/moz.build
+++ media/libcubeb/gtest/moz.build
@@ -72,7 +72,6 @@ elif CONFIG['OS_TARGET'] == 'OpenBSD':
'sndio',
]
else:
- OS_LIBS += CONFIG['MOZ_ALSA_LIBS']
OS_LIBS += CONFIG['MOZ_PULSEAUDIO_LIBS']
if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
diff --git media/libcubeb/src/cubeb_alsa.c media/libcubeb/src/cubeb_alsa.c
index 05ad27fef53b..3ea78e994f59 100644
index bfd4d8f199d4..213c1eaa3d07 100644
--- media/libcubeb/src/cubeb_alsa.c
+++ media/libcubeb/src/cubeb_alsa.c
@@ -12,6 +12,7 @@
@ -217,7 +95,7 @@ index 05ad27fef53b..3ea78e994f59 100644
};
enum stream_state {
@@ -243,8 +292,8 @@ set_timeout(struct timeval * timeout, unsigned int ms)
@@ -245,8 +294,8 @@ set_timeout(struct timeval * timeout, unsigned int ms)
static void
stream_buffer_decrement(cubeb_stream * stm, long count)
{
@ -228,7 +106,7 @@ index 05ad27fef53b..3ea78e994f59 100644
stm->bufframes -= count;
}
@@ -276,9 +325,9 @@ alsa_process_stream(cubeb_stream * stm)
@@ -278,9 +327,9 @@ alsa_process_stream(cubeb_stream * stm)
/* Call _poll_descriptors_revents() even if we don't use it
to let underlying plugins clear null events. Otherwise poll()
may wake up again and again, producing unnecessary CPU usage. */
@ -240,7 +118,7 @@ index 05ad27fef53b..3ea78e994f59 100644
/* Got null event? Bail and wait for another wakeup. */
if (avail == 0) {
@@ -301,7 +350,7 @@ alsa_process_stream(cubeb_stream * stm)
@@ -303,7 +352,7 @@ alsa_process_stream(cubeb_stream * stm)
// TODO: should it be marked as DRAINING?
}
@ -249,7 +127,7 @@ index 05ad27fef53b..3ea78e994f59 100644
if (got < 0) {
avail = got; // the error handler below will recover us
@@ -345,7 +394,7 @@ alsa_process_stream(cubeb_stream * stm)
@@ -347,7 +396,7 @@ alsa_process_stream(cubeb_stream * stm)
(!stm->other_stream || stm->other_stream->bufframes > 0)) {
long got = avail - stm->bufframes;
void * other_buffer = stm->other_stream ? stm->other_stream->buffer : NULL;
@ -258,7 +136,7 @@ index 05ad27fef53b..3ea78e994f59 100644
/* Correct read size to the other stream available frames */
if (stm->other_stream && got > (snd_pcm_sframes_t) stm->other_stream->bufframes) {
@@ -372,8 +421,8 @@ alsa_process_stream(cubeb_stream * stm)
@@ -374,8 +423,8 @@ alsa_process_stream(cubeb_stream * stm)
long drain_frames = avail - stm->bufframes;
double drain_time = (double) drain_frames / stm->params.rate;
@ -269,7 +147,7 @@ index 05ad27fef53b..3ea78e994f59 100644
stm->bufframes = avail;
/* Mark as draining, unless we're waiting for capture */
@@ -400,7 +449,7 @@ alsa_process_stream(cubeb_stream * stm)
@@ -402,7 +451,7 @@ alsa_process_stream(cubeb_stream * stm)
}
}
@ -278,7 +156,7 @@ index 05ad27fef53b..3ea78e994f59 100644
if (wrote < 0) {
avail = wrote; // the error handler below will recover us
} else {
@@ -413,13 +462,13 @@ alsa_process_stream(cubeb_stream * stm)
@@ -415,13 +464,13 @@ alsa_process_stream(cubeb_stream * stm)
/* Got some error? Let's try to recover the stream. */
if (avail < 0) {
@ -295,7 +173,7 @@ index 05ad27fef53b..3ea78e994f59 100644
}
}
@@ -535,26 +584,26 @@ get_slave_pcm_node(snd_config_t * lconf, snd_config_t * root_pcm)
@@ -537,26 +586,26 @@ get_slave_pcm_node(snd_config_t * lconf, snd_config_t * root_pcm)
slave_def = NULL;
@ -327,7 +205,7 @@ index 05ad27fef53b..3ea78e994f59 100644
if (r < 0) {
break;
}
@@ -563,7 +612,7 @@ get_slave_pcm_node(snd_config_t * lconf, snd_config_t * root_pcm)
@@ -565,7 +614,7 @@ get_slave_pcm_node(snd_config_t * lconf, snd_config_t * root_pcm)
if (r < 0 || r > (int) sizeof(node_name)) {
break;
}
@ -336,7 +214,7 @@ index 05ad27fef53b..3ea78e994f59 100644
if (r < 0) {
break;
}
@@ -572,7 +621,7 @@ get_slave_pcm_node(snd_config_t * lconf, snd_config_t * root_pcm)
@@ -574,7 +623,7 @@ get_slave_pcm_node(snd_config_t * lconf, snd_config_t * root_pcm)
} while (0);
if (slave_def) {
@ -345,7 +223,7 @@ index 05ad27fef53b..3ea78e994f59 100644
}
return NULL;
@@ -595,22 +644,22 @@ init_local_config_with_workaround(char const * pcm_name)
@@ -597,22 +646,22 @@ init_local_config_with_workaround(char const * pcm_name)
lconf = NULL;
@ -372,7 +250,7 @@ index 05ad27fef53b..3ea78e994f59 100644
if (r < 0) {
break;
}
@@ -619,7 +668,7 @@ init_local_config_with_workaround(char const * pcm_name)
@@ -621,7 +670,7 @@ init_local_config_with_workaround(char const * pcm_name)
if (r < 0 || r > (int) sizeof(node_name)) {
break;
}
@ -381,7 +259,7 @@ index 05ad27fef53b..3ea78e994f59 100644
if (r < 0) {
break;
}
@@ -630,12 +679,12 @@ init_local_config_with_workaround(char const * pcm_name)
@@ -632,12 +681,12 @@ init_local_config_with_workaround(char const * pcm_name)
}
/* Fetch the PCM node's type, and bail out if it's not the PulseAudio plugin. */
@ -396,7 +274,7 @@ index 05ad27fef53b..3ea78e994f59 100644
if (r < 0) {
break;
}
@@ -646,18 +695,18 @@ init_local_config_with_workaround(char const * pcm_name)
@@ -648,18 +697,18 @@ init_local_config_with_workaround(char const * pcm_name)
/* Don't clobber an explicit existing handle_underrun value, set it only
if it doesn't already exist. */
@ -418,7 +296,7 @@ index 05ad27fef53b..3ea78e994f59 100644
if (r < 0) {
break;
}
@@ -665,7 +714,7 @@ init_local_config_with_workaround(char const * pcm_name)
@@ -667,7 +716,7 @@ init_local_config_with_workaround(char const * pcm_name)
return lconf;
} while (0);
@ -427,7 +305,7 @@ index 05ad27fef53b..3ea78e994f59 100644
return NULL;
}
@@ -677,9 +726,9 @@ alsa_locked_pcm_open(snd_pcm_t ** pcm, char const * pcm_name, snd_pcm_stream_t s
@@ -679,9 +728,9 @@ alsa_locked_pcm_open(snd_pcm_t ** pcm, char const * pcm_name, snd_pcm_stream_t s
pthread_mutex_lock(&cubeb_alsa_mutex);
if (local_config) {
@ -439,7 +317,7 @@ index 05ad27fef53b..3ea78e994f59 100644
}
pthread_mutex_unlock(&cubeb_alsa_mutex);
@@ -692,7 +741,7 @@ alsa_locked_pcm_close(snd_pcm_t * pcm)
@@ -694,7 +743,7 @@ alsa_locked_pcm_close(snd_pcm_t * pcm)
int r;
pthread_mutex_lock(&cubeb_alsa_mutex);
@ -448,7 +326,7 @@ index 05ad27fef53b..3ea78e994f59 100644
pthread_mutex_unlock(&cubeb_alsa_mutex);
return r;
@@ -755,12 +804,65 @@ alsa_init(cubeb ** context, char const * context_name)
@@ -757,12 +806,65 @@ alsa_init(cubeb ** context, char const * context_name)
pthread_attr_t attr;
snd_pcm_t * dummy;
@ -515,7 +393,7 @@ index 05ad27fef53b..3ea78e994f59 100644
cubeb_alsa_error_handler_set = 1;
}
pthread_mutex_unlock(&cubeb_alsa_mutex);
@@ -768,6 +870,8 @@ alsa_init(cubeb ** context, char const * context_name)
@@ -770,6 +872,8 @@ alsa_init(cubeb ** context, char const * context_name)
ctx = calloc(1, sizeof(*ctx));
assert(ctx);
@ -524,7 +402,7 @@ index 05ad27fef53b..3ea78e994f59 100644
ctx->ops = &alsa_ops;
r = pthread_mutex_init(&ctx->mutex, NULL);
@@ -817,7 +921,7 @@ alsa_init(cubeb ** context, char const * context_name)
@@ -819,7 +923,7 @@ alsa_init(cubeb ** context, char const * context_name)
config fails with EINVAL, the PA PCM is too old for this workaround. */
if (r == -EINVAL) {
pthread_mutex_lock(&cubeb_alsa_mutex);
@ -533,7 +411,7 @@ index 05ad27fef53b..3ea78e994f59 100644
pthread_mutex_unlock(&cubeb_alsa_mutex);
ctx->local_config = NULL;
} else if (r >= 0) {
@@ -857,9 +961,13 @@ alsa_destroy(cubeb * ctx)
@@ -859,9 +963,13 @@ alsa_destroy(cubeb * ctx)
pthread_mutex_destroy(&ctx->mutex);
free(ctx->fds);
@ -548,7 +426,7 @@ index 05ad27fef53b..3ea78e994f59 100644
pthread_mutex_unlock(&cubeb_alsa_mutex);
}
@@ -939,7 +1047,7 @@ alsa_stream_init_single(cubeb * ctx, cubeb_stream ** stream, char const * stream
@@ -948,7 +1056,7 @@ alsa_stream_init_single(cubeb * ctx, cubeb_stream ** stream, char const * stream
return CUBEB_ERROR;
}
@ -557,7 +435,7 @@ index 05ad27fef53b..3ea78e994f59 100644
assert(r == 0);
latency_us = latency_frames * 1e6 / stm->params.rate;
@@ -952,7 +1060,7 @@ alsa_stream_init_single(cubeb * ctx, cubeb_stream ** stream, char const * stream
@@ -961,7 +1069,7 @@ alsa_stream_init_single(cubeb * ctx, cubeb_stream ** stream, char const * stream
latency_us = latency_us < min_latency ? min_latency: latency_us;
}
@ -566,7 +444,7 @@ index 05ad27fef53b..3ea78e994f59 100644
stm->params.channels, stm->params.rate, 1,
latency_us);
if (r < 0) {
@@ -960,20 +1068,20 @@ alsa_stream_init_single(cubeb * ctx, cubeb_stream ** stream, char const * stream
@@ -969,20 +1077,20 @@ alsa_stream_init_single(cubeb * ctx, cubeb_stream ** stream, char const * stream
return CUBEB_ERROR_INVALID_FORMAT;
}
@ -591,7 +469,7 @@ index 05ad27fef53b..3ea78e994f59 100644
assert((nfds_t) r == stm->nfds);
if (alsa_register_stream(ctx, stm) != 0) {
@@ -1048,7 +1156,7 @@ alsa_stream_destroy(cubeb_stream * stm)
@@ -1054,7 +1162,7 @@ alsa_stream_destroy(cubeb_stream * stm)
pthread_mutex_lock(&stm->mutex);
if (stm->pcm) {
if (stm->state == DRAINING) {
@ -600,7 +478,7 @@ index 05ad27fef53b..3ea78e994f59 100644
}
alsa_locked_pcm_close(stm->pcm);
stm->pcm = NULL;
@@ -1094,12 +1202,12 @@ alsa_get_max_channel_count(cubeb * ctx, uint32_t * max_channels)
@@ -1100,12 +1208,12 @@ alsa_get_max_channel_count(cubeb * ctx, uint32_t * max_channels)
assert(stm);
@ -615,7 +493,7 @@ index 05ad27fef53b..3ea78e994f59 100644
if (r < 0) {
return CUBEB_ERROR;
}
@@ -1120,34 +1228,34 @@ alsa_get_preferred_sample_rate(cubeb * ctx, uint32_t * rate) {
@@ -1126,34 +1234,34 @@ alsa_get_preferred_sample_rate(cubeb * ctx, uint32_t * rate) {
/* get a pcm, disabling resampling, so we get a rate the
* hardware/dmix/pulse/etc. supports. */
@ -658,7 +536,7 @@ index 05ad27fef53b..3ea78e994f59 100644
return CUBEB_OK;
}
@@ -1180,10 +1288,10 @@ alsa_stream_start(cubeb_stream * stm)
@@ -1186,10 +1294,10 @@ alsa_stream_start(cubeb_stream * stm)
pthread_mutex_lock(&stm->mutex);
/* Capture pcm must be started after initial setup/recover */
if (stm->stream_type == SND_PCM_STREAM_CAPTURE &&
@ -672,7 +550,7 @@ index 05ad27fef53b..3ea78e994f59 100644
gettimeofday(&stm->last_activity, NULL);
pthread_mutex_unlock(&stm->mutex);
@@ -1223,7 +1331,7 @@ alsa_stream_stop(cubeb_stream * stm)
@@ -1229,7 +1337,7 @@ alsa_stream_stop(cubeb_stream * stm)
pthread_mutex_unlock(&ctx->mutex);
pthread_mutex_lock(&stm->mutex);
@ -681,7 +559,7 @@ index 05ad27fef53b..3ea78e994f59 100644
pthread_mutex_unlock(&stm->mutex);
return CUBEB_OK;
@@ -1239,8 +1347,8 @@ alsa_stream_get_position(cubeb_stream * stm, uint64_t * position)
@@ -1245,8 +1353,8 @@ alsa_stream_get_position(cubeb_stream * stm, uint64_t * position)
pthread_mutex_lock(&stm->mutex);
delay = -1;
@ -692,7 +570,7 @@ index 05ad27fef53b..3ea78e994f59 100644
*position = stm->last_position;
pthread_mutex_unlock(&stm->mutex);
return CUBEB_OK;
@@ -1265,7 +1373,7 @@ alsa_stream_get_latency(cubeb_stream * stm, uint32_t * latency)
@@ -1271,7 +1379,7 @@ alsa_stream_get_latency(cubeb_stream * stm, uint32_t * latency)
snd_pcm_sframes_t delay;
/* This function returns the delay in frames until a frame written using
snd_pcm_writei is sent to the DAC. The DAC delay should be < 1ms anyways. */
@ -701,12 +579,117 @@ index 05ad27fef53b..3ea78e994f59 100644
return CUBEB_ERROR;
}
diff --git toolkit/library/moz.build toolkit/library/moz.build
index b0df6b98b91f..e06592daa265 100644
--- toolkit/library/moz.build
+++ toolkit/library/moz.build
@@ -247,9 +247,6 @@ if CONFIG['MOZ_SYSTEM_LIBVPX']:
if not CONFIG['MOZ_TREE_PIXMAN']:
OS_LIBS += CONFIG['MOZ_PIXMAN_LIBS']
-if CONFIG['MOZ_ALSA']:
- OS_LIBS += CONFIG['MOZ_ALSA_LIBS']
-
if CONFIG['HAVE_CLOCK_MONOTONIC']:
OS_LIBS += CONFIG['REALTIME_LIBS']
commit 161bcd671217
Author: Evgeniy Vodolazskiy <waterlaz@gmail.com>
Date: Wed Sep 3 10:47:00 2014 -0700
Bug 1021761 - Add OSS backend to libcubeb, default but last on Linux. r=kinetik r=glandium
---
build/moz.configure/old.configure | 1 +
dom/media/CubebUtils.cpp | 3 +-
media/libcubeb/AUTHORS | 1 +
media/libcubeb/src/cubeb.c | 10 +
media/libcubeb/src/cubeb_oss.c | 453 ++++++++++++++++++++++++++++++++++++++
media/libcubeb/src/moz.build | 7 +
media/libcubeb/update.sh | 1 +
old-configure.in | 62 ++++++
toolkit/library/moz.build | 3 +
9 files changed, 540 insertions(+), 1 deletion(-)
diff --git build/moz.configure/old.configure build/moz.configure/old.configure
index 17d0c5bf3420..3e6dbc16ca14 100644
--- build/moz.configure/old.configure
+++ build/moz.configure/old.configure
@@ -262,6 +262,7 @@ def old_configure_options(*options):
'--with-nspr-prefix',
'--with-nss-exec-prefix',
'--with-nss-prefix',
+ '--with-oss',
'--with-pthreads',
'--with-qemu-exe',
'--with-sixgill',
diff --git dom/media/CubebUtils.cpp dom/media/CubebUtils.cpp
index 88063ed3a4d6..8613f86dbd16 100644
--- dom/media/CubebUtils.cpp
+++ dom/media/CubebUtils.cpp
@@ -149,7 +149,8 @@ const char* AUDIOSTREAM_BACKEND_ID_STR[] = {
"sndio",
"opensl",
"audiotrack",
- "kai"
+ "kai",
+ "oss",
};
/* Index for failures to create an audio stream the first time. */
const int CUBEB_BACKEND_INIT_FAILURE_FIRST =
diff --git media/libcubeb/AUTHORS media/libcubeb/AUTHORS
index f0f9595227f2..e7e7048190ab 100644
--- media/libcubeb/AUTHORS
+++ media/libcubeb/AUTHORS
@@ -4,6 +4,7 @@ Michael Wu <mwu@mozilla.com>
Paul Adenot <paul@paul.cx>
David Richards <drichards@mozilla.com>
Sebastien Alaiwan <sebastien.alaiwan@gmail.com>
+Evgeniy Vodolazskiy <waterlaz@gmail.com>
KO Myung-Hun <komh@chollian.net>
Haakon Sporsheim <haakon.sporsheim@telenordigital.com>
Alex Chronopoulos <achronop@gmail.com>
diff --git media/libcubeb/src/cubeb.c media/libcubeb/src/cubeb.c
index bb35e0ce349f..e523d94108a3 100644
--- media/libcubeb/src/cubeb.c
+++ media/libcubeb/src/cubeb.c
@@ -60,6 +60,9 @@ int audiotrack_init(cubeb ** context, char const * context_name);
#if defined(USE_KAI)
int kai_init(cubeb ** context, char const * context_name);
#endif
+#if defined(USE_OSS)
+int oss_init(cubeb ** context, char const * context_name);
+#endif
static int
validate_stream_params(cubeb_stream_params * input_stream_params,
@@ -159,6 +162,10 @@ cubeb_init(cubeb ** context, char const * context_name, char const * backend_nam
} else if (!strcmp(backend_name, "kai")) {
#if defined(USE_KAI)
init_oneshot = kai_init;
+#endif
+ } else if (!strcmp(backend_name, "oss")) {
+#if defined(USE_OSS)
+ init_oneshot = oss_init;
#endif
} else {
/* Already set */
@@ -203,6 +210,9 @@ cubeb_init(cubeb ** context, char const * context_name, char const * backend_nam
#endif
#if defined(USE_KAI)
kai_init,
+#endif
+#if defined(USE_OSS)
+ oss_init,
#endif
};
int i;
diff --git media/libcubeb/src/cubeb_oss.c media/libcubeb/src/cubeb_oss.c
new file mode 100644
index 000000000000..7b0b4f37dbe4
index 000000000000..7d96168b9ea6
--- /dev/null
+++ media/libcubeb/src/cubeb_oss.c
@@ -0,0 +1,445 @@
@@ -0,0 +1,454 @@
+/*
+ * Copyright © 2014 Mozilla Foundation
+ *
@ -743,11 +726,13 @@ index 000000000000..7b0b4f37dbe4
+};
+
+struct cubeb_stream {
+ /* Note: Must match cubeb_stream layout in cubeb.c. */
+ cubeb * context;
+ void * user_ptr;
+ /**/
+
+ cubeb_data_callback data_callback;
+ cubeb_state_callback state_callback;
+ void * user_ptr;
+ float volume;
+ float panning;
+
@ -976,6 +961,11 @@ index 000000000000..7b0b4f37dbe4
+ return CUBEB_ERROR_DEVICE_UNAVAILABLE;
+ }
+
+ if ((input_stream_params && input_stream_params->prefs & CUBEB_STREAM_PREF_LOOPBACK) ||
+ (output_stream_params && output_stream_params->prefs & CUBEB_STREAM_PREF_LOOPBACK)) {
+ return CUBEB_ERROR_NOT_SUPPORTED;
+ }
+
+ if ((stream->fd = open(CUBEB_OSS_DEFAULT_OUTPUT, O_WRONLY)) == -1) {
+ free(stream);
+ return CUBEB_ERROR;
@ -1137,12 +1127,14 @@ index 000000000000..7b0b4f37dbe4
+ .get_min_latency = oss_get_min_latency,
+ .get_preferred_sample_rate = oss_get_preferred_sample_rate,
+ .get_preferred_channel_layout = NULL,
+ .destroy = oss_destroy,
+ .enumerate_devices = NULL,
+ .device_collection_destroy = NULL,
+ .destroy = oss_destroy,
+ .stream_init = oss_stream_init,
+ .stream_destroy = oss_stream_destroy,
+ .stream_start = oss_stream_start,
+ .stream_stop = oss_stream_stop,
+ .stream_reset_default_device = NULL,
+ .stream_get_position = oss_stream_get_position,
+ .stream_get_latency = oss_stream_get_latency,
+ .stream_set_volume = oss_stream_set_volume,
@ -1153,10 +1145,10 @@ index 000000000000..7b0b4f37dbe4
+ .register_device_collection_changed = NULL
+};
diff --git media/libcubeb/src/moz.build media/libcubeb/src/moz.build
index fc9c79198e30..57d039d5a0f2 100644
index e1fea30ca417..a5b1100f1014 100644
--- media/libcubeb/src/moz.build
+++ media/libcubeb/src/moz.build
@@ -20,6 +20,12 @@ if CONFIG['MOZ_ALSA']:
@@ -23,6 +23,12 @@ if CONFIG['MOZ_ALSA']:
]
DEFINES['USE_ALSA'] = True
@ -1169,28 +1161,16 @@ index fc9c79198e30..57d039d5a0f2 100644
if CONFIG['MOZ_PULSEAUDIO'] or CONFIG['MOZ_JACK']:
SOURCES += [
'cubeb_resampler.cpp',
@@ -92,6 +98,7 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
'%' + '%s/system/media/wilhelm/include' % CONFIG['ANDROID_SOURCE'],
]
@@ -88,6 +94,7 @@ if CONFIG['OS_TARGET'] == 'Android':
FINAL_LIBRARY = 'gkmedias'
+CFLAGS += CONFIG['MOZ_OSS_CFLAGS']
CFLAGS += CONFIG['MOZ_ALSA_CFLAGS']
+CFLAGS += CONFIG['MOZ_OSS_CFLAGS']
CFLAGS += CONFIG['MOZ_PULSEAUDIO_CFLAGS']
diff --git media/libcubeb/gtest/moz.build media/libcubeb/gtest/moz.build
index e99968648554..efbbbf779e11 100644
--- media/libcubeb/gtest/moz.build
+++ media/libcubeb/gtest/moz.build
@@ -71,7 +71,6 @@ elif CONFIG['OS_TARGET'] == 'OpenBSD':
'sndio',
]
else:
- OS_LIBS += CONFIG['MOZ_ALSA_LIBS']
OS_LIBS += CONFIG['MOZ_PULSEAUDIO_LIBS']
if CONFIG['GNU_CXX']:
# We allow warnings for third-party code that can be updated from upstream.
diff --git media/libcubeb/update.sh media/libcubeb/update.sh
index b139b8f497fd..d1f8a223c6d8 100755
index 0bb6345c9fa9..78a102dc47cb 100755
--- media/libcubeb/update.sh
+++ media/libcubeb/update.sh
@@ -20,6 +20,7 @@ cp $1/src/cubeb_log.h src
@ -1198,21 +1178,92 @@ index b139b8f497fd..d1f8a223c6d8 100755
cp $1/src/cubeb_mixer.h src
cp $1/src/cubeb_opensl.c src
+cp $1/src/cubeb_oss.c src
cp $1/src/cubeb_osx_run_loop.h src
cp $1/src/cubeb_panner.cpp src
cp $1/src/cubeb_panner.h src
cp $1/src/cubeb-jni.cpp src
cp $1/src/cubeb-jni.h src
cp $1/src/android/cubeb-output-latency.h src/android
diff --git old-configure.in old-configure.in
index 28e1a9e48d61..edacedcf6e5d 100644
--- old-configure.in
+++ old-configure.in
@@ -2598,6 +2598,67 @@ MOZ_WEBM_ENCODER=1
AC_DEFINE(MOZ_WEBM_ENCODER)
AC_SUBST(MOZ_WEBM_ENCODER)
+dnl ==================================
+dnl = Check OSS availability
+dnl ==================================
+
+dnl If using Linux, Solaris or BSDs, ensure that OSS is available
+case "$OS_TARGET" in
+Linux|SunOS|DragonFly|FreeBSD|NetBSD|GNU/kFreeBSD)
+ MOZ_OSS=1
+ ;;
+esac
+
+MOZ_ARG_WITH_STRING(oss,
+[ --with-oss[=PFX] Enable OpenSoundSystem support [installed at prefix PFX]],
+ OSSPREFIX=$withval)
+
+if test -n "$OSSPREFIX"; then
+ if test "$OSSPREFIX" != "no"; then
+ MOZ_OSS=1
+ else
+ MOZ_OSS=
+ fi
+fi
+
+_SAVE_CFLAGS=$CFLAGS
+_SAVE_LIBS=$LIBS
+if test -n "$MOZ_OSS"; then
+ dnl Prefer 4Front implementation
+ AC_MSG_CHECKING([MOZ_OSS_CFLAGS])
+ if test "$OSSPREFIX" != "yes"; then
+ oss_conf=${OSSPREFIX%/usr}/etc/oss.conf
+ if test -f "$oss_conf"; then
+ . "$oss_conf"
+ else
+ OSSLIBDIR=$OSSPREFIX/lib/oss
+ fi
+ if test -d "$OSSLIBDIR"; then
+ MOZ_OSS_CFLAGS="$MOZ_OSS_CFLAGS -I$OSSLIBDIR/include"
+ fi
+ fi
+ AC_MSG_RESULT([$MOZ_OSS_CFLAGS])
+
+ CFLAGS="$CFLAGS $MOZ_OSS_CFLAGS"
+ MOZ_CHECK_HEADERS(sys/soundcard.h soundcard.h)
+
+ if test "$ac_cv_header_sys_soundcard_h" != "yes" -a \
+ "$ac_cv_header_soundcard_h" != "yes"; then
+ AC_MSG_ERROR([Need OSS for Ogg, Wave or WebM decoding on $OS_TARGET. Disable with --without-oss.])
+ fi
+
+ dnl Assume NetBSD implementation over SunAudio
+ AC_CHECK_LIB(ossaudio, _oss_ioctl,
+ [AC_DEFINE_UNQUOTED(CUBEB_OSS_DEFAULT_OUTPUT, "/dev/sound")
+ MOZ_OSS_LIBS="$MOZ_OSS_LIBS -lossaudio"])
+fi
+CFLAGS=$_SAVE_CFLAGS
+LIBS=$_SAVE_LIBS
+
+AC_SUBST(MOZ_OSS)
+AC_SUBST_LIST(MOZ_OSS_CFLAGS)
+AC_SUBST_LIST(MOZ_OSS_LIBS)
+
dnl ==================================
dnl = Check alsa availability on Linux
dnl ==================================
diff --git toolkit/library/moz.build toolkit/library/moz.build
index a61c689c83c3..7764df6f8a6b 100644
index e06592daa265..ce016b96c2bc 100644
--- toolkit/library/moz.build
+++ toolkit/library/moz.build
@@ -242,8 +242,8 @@ if CONFIG['MOZ_SYSTEM_LIBVPX']:
@@ -247,6 +247,9 @@ if CONFIG['MOZ_SYSTEM_LIBVPX']:
if not CONFIG['MOZ_TREE_PIXMAN']:
OS_LIBS += CONFIG['MOZ_PIXMAN_LIBS']
-if CONFIG['MOZ_ALSA']:
- OS_LIBS += CONFIG['MOZ_ALSA_LIBS']
+if CONFIG['MOZ_OSS']:
+ OS_LIBS += CONFIG['MOZ_OSS_LIBS']
+
if CONFIG['HAVE_CLOCK_MONOTONIC']:
OS_LIBS += CONFIG['REALTIME_LIBS']

View File

@ -0,0 +1,82 @@
commit fc25eb4380d0
Author: Lars T Hansen <lhansen@mozilla.com>
Date: Wed Feb 28 13:57:52 2018 +0100
Bug 1375074 - Save and restore non-volatile x28 on ARM64 for generated unboxed object constructor. r=sstangl
--HG--
extra : rebase_source : 4a2824b23cf7453d07c962123f780c0ff2fd5292
extra : source : dec6ab6522a4eb4b3c2defc5078b38ed904f3383
---
js/src/jit-test/tests/bug1375074.js | 18 ++++++++++++++++++
js/src/vm/UnboxedObject.cpp | 25 ++++++++++++++++++++++++-
2 files changed, 42 insertions(+), 1 deletion(-)
diff --git js/src/jit-test/tests/bug1375074.js js/src/jit-test/tests/bug1375074.js
new file mode 100644
index 0000000000000..8bf01d96903fc
--- /dev/null
+++ js/src/jit-test/tests/bug1375074.js
@@ -0,0 +1,18 @@
+// This forces the VM to start creating unboxed objects and thus stresses a
+// particular path into generated code for a specialized unboxed object
+// constructor.
+
+var K = 2000; // 2000 should be plenty
+var s = "[";
+var i;
+for ( i=0; i < K-1; i++ )
+ s = s + `{"i":${i}},`;
+s += `{"i":${i}}]`;
+var v = JSON.parse(s);
+
+assertEq(v.length == K, true);
+
+for ( i=0; i < K; i++) {
+ assertEq(v[i] instanceof Object, true);
+ assertEq(v[i].i, i);
+}
diff --git js/src/vm/UnboxedObject.cpp js/src/vm/UnboxedObject.cpp
index c8c178965c488..5badf328ede4f 100644
--- js/src/vm/UnboxedObject.cpp
+++ js/src/vm/UnboxedObject.cpp
@@ -95,7 +95,15 @@ UnboxedLayout::makeConstructorCode(JSContext* cx, HandleObjectGroup group)
#endif
#ifdef JS_CODEGEN_ARM64
- // ARM64 communicates stack address via sp, but uses a pseudo-sp for addressing.
+ // ARM64 communicates stack address via sp, but uses a pseudo-sp (PSP) for
+ // addressing. The register we use for PSP may however also be used by
+ // calling code, and it is nonvolatile, so save it. Do this as a special
+ // case first because the generic save/restore code needs the PSP to be
+ // initialized already.
+ MOZ_ASSERT(PseudoStackPointer64.Is(masm.GetStackPointer64()));
+ masm.Str(PseudoStackPointer64, vixl::MemOperand(sp, -16, vixl::PreIndex));
+
+ // Initialize the PSP from the SP.
masm.initStackPtr();
#endif
@@ -233,7 +241,22 @@ UnboxedLayout::makeConstructorCode(JSContext* cx, HandleObjectGroup group)
masm.pop(ScratchDoubleReg);
masm.PopRegsInMask(savedNonVolatileRegisters);
+#ifdef JS_CODEGEN_ARM64
+ // Now restore the value that was in the PSP register on entry, and return.
+
+ // Obtain the correct SP from the PSP.
+ masm.Mov(sp, PseudoStackPointer64);
+
+ // Restore the saved value of the PSP register, this value is whatever the
+ // caller had saved in it, not any actual SP value, and it must not be
+ // overwritten subsequently.
+ masm.Ldr(PseudoStackPointer64, vixl::MemOperand(sp, 16, vixl::PostIndex));
+
+ // Perform a plain Ret(), as abiret() will move SP <- PSP and that is wrong.
+ masm.Ret(vixl::lr);
+#else
masm.abiret();
+#endif
masm.bind(&failureStoreOther);

View File

@ -1,24 +0,0 @@
Apply simd@cf87865a998a to unbreak -C target-cpu with Rust >= 1.24
diff --git third_party/rust/simd/.cargo-checksum.json third_party/rust/simd/.cargo-checksum.json
index 65f31b0560e6..f16d0dd4fd61 100644
--- third_party/rust/simd/.cargo-checksum.json
+++ third_party/rust/simd/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{".travis.yml":"e2c720c3633b7671efce49147c62b12bcbf630d7c5d6fc65cd97620bfa4ddcea","Cargo.toml":"608aad04f17a524ee21048fa2ce9f656ae344e0473dd0e331dc954f0f9677c63","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6d3a9431e65e69c73a8923e6517b889d17549b23db406b9ec027710d16af701f","README.md":"249294a9a5f63c64c0f7fe4a607060f43f3507dce2378067aa59d25fb3ae681d","benches/mandelbrot.rs":"051b5199e66bca6cf7774e9024915fd4e1349ab39726a10a14e06b60d65d87a4","benches/matrix.rs":"048a21dacdb62365e0105d00d2c8cd6bd2396ac81134f2bff7eb4f7d095fb735","examples/axpy.rs":"4307626045d64ec08361c97c9c72c5dc8d361bdc88f64453b97ac0212041a1b2","examples/convert.rs":"8e658fde050f8a0d8b84ad7570446b10fcf544afbd551b940ca340474f324840","examples/dot-product.rs":"6fe2e007c147af5353804173a593c5b9d57dbccec156e1da37e9e32537363f91","examples/fannkuch-redux-nosimd.rs":"7b2fbde35e8666929d14d67328471cb0483d038a5325232f8db148b30865312b","examples/fannkuch-redux.rs":"ea21fdbd2274488a62cc984acad6e0b65d52f24fb4ff63b7057a3a667e9c8aae","examples/mandelbrot.rs":"8b8fdca1edac50e5a33e0e0592bd41eb75114f31839ccd40d485c61a9a664380","examples/matrix-inverse.rs":"a378d20ef20c2119bb10a86de27c92fec2c2f77f374e6bfd36707c9825a5fe92","examples/nbody-nosimd.rs":"2c8e0a7feacd202fdd65eeceb6420d6e9f43340b81f20a8e532704a587a2796b","examples/nbody.rs":"a864311affab262024479d6348ff51af43d809e9ad332ec30ea4aacceaa2eae1","examples/ops.rs":"1316f915d0afcfa98fdc4077e965ccccf6b4b21c433cbe487ff0cdc60df3cd39","examples/spectral-norm-nosimd.rs":"ffc8512ecde779078ea467f38f423a0ea623c63da7078193f9dd370200773f79","examples/spectral-norm.rs":"edb09c9d477f83939098cfb77a27cc298bc7a0c8a8e29cece0cccae0d70d890e","src/aarch64/mod.rs":"83f52775364c98de0cecb7e1509530c18972e932469f5f1522aa24a735d0fa37","src/aarch64/neon.rs":"1fe769979e07d8e2bc3c78ce116e05d735860744efe097a894cc9421153257fb","src/arm/mod.rs":"dcdd90bc0b39abaf86a0c8946d442b16313563fbae1ff03248628275c74d8617","src/arm/neon.rs":"51cc509856200e80f8e4cc2c982586e6d1cef593ec4537e153dce0cfe31d3428","src/common.rs":"62f4e7e0fefb52ad190d0f2191bc435ac4deab3f2bc70dc427f2a7f9ccb7856e","src/lib.rs":"25f0b39c038fa85af858318135dfd87865be26c33bb4bd1438aec96a1e68d8b5","src/sixty_four.rs":"510a9e00189a61e4f0a5beb7052d5dee37fc8261f94a2af45ef10327e0f3b7df","src/v256.rs":"2e328e49034876d535e0627c7a62191da2b4fb156a657614bf531a5fc75b1385","src/x86/avx.rs":"c66140abefca634b48eae307c3ec8cf5a40f2279b10e246a7e2ac602a2a2bb28","src/x86/avx2.rs":"efe3006b13a13261a3dec3d37dc1d8cb53950f3803c420069231803374949937","src/x86/mod.rs":"0acc5a5e2672e2a0fddc11065663be8b8fa2da87320ea291fa86ff8c2f33edf5","src/x86/sse2.rs":"5ceda75a401958a135fc9d851b22075314cdeed69fd483b6a7be4f11373f40da","src/x86/sse3.rs":"9bd01a4f08069ca4f445952e744d651efe887e3835b18872e757375f0d053bd2","src/x86/sse4_1.rs":"9ceb80dd70a7e7dfeef508cb935e1a2637175bc87a3b090f5dea691ff6aa0516","src/x86/sse4_2.rs":"c59321aed8decdce4d0d8570cff46aed02e1a8265647ef7702e9b180fc581254","src/x86/ssse3.rs":"2290f0269bae316b8e0491495645ee38a9bd73525c8572759c1328341c3bdb4c"},"package":"7a94d14a2ae1f1f110937de5fb69e494372560181c7e1739a097fcc2cee37ba0"}
\ No newline at end of file
+{"files":{".travis.yml":"e2c720c3633b7671efce49147c62b12bcbf630d7c5d6fc65cd97620bfa4ddcea","Cargo.toml":"608aad04f17a524ee21048fa2ce9f656ae344e0473dd0e331dc954f0f9677c63","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6d3a9431e65e69c73a8923e6517b889d17549b23db406b9ec027710d16af701f","README.md":"249294a9a5f63c64c0f7fe4a607060f43f3507dce2378067aa59d25fb3ae681d","benches/mandelbrot.rs":"051b5199e66bca6cf7774e9024915fd4e1349ab39726a10a14e06b60d65d87a4","benches/matrix.rs":"048a21dacdb62365e0105d00d2c8cd6bd2396ac81134f2bff7eb4f7d095fb735","examples/axpy.rs":"4307626045d64ec08361c97c9c72c5dc8d361bdc88f64453b97ac0212041a1b2","examples/convert.rs":"8e658fde050f8a0d8b84ad7570446b10fcf544afbd551b940ca340474f324840","examples/dot-product.rs":"6fe2e007c147af5353804173a593c5b9d57dbccec156e1da37e9e32537363f91","examples/fannkuch-redux-nosimd.rs":"7b2fbde35e8666929d14d67328471cb0483d038a5325232f8db148b30865312b","examples/fannkuch-redux.rs":"ea21fdbd2274488a62cc984acad6e0b65d52f24fb4ff63b7057a3a667e9c8aae","examples/mandelbrot.rs":"8b8fdca1edac50e5a33e0e0592bd41eb75114f31839ccd40d485c61a9a664380","examples/matrix-inverse.rs":"a378d20ef20c2119bb10a86de27c92fec2c2f77f374e6bfd36707c9825a5fe92","examples/nbody-nosimd.rs":"2c8e0a7feacd202fdd65eeceb6420d6e9f43340b81f20a8e532704a587a2796b","examples/nbody.rs":"a864311affab262024479d6348ff51af43d809e9ad332ec30ea4aacceaa2eae1","examples/ops.rs":"1316f915d0afcfa98fdc4077e965ccccf6b4b21c433cbe487ff0cdc60df3cd39","examples/spectral-norm-nosimd.rs":"ffc8512ecde779078ea467f38f423a0ea623c63da7078193f9dd370200773f79","examples/spectral-norm.rs":"edb09c9d477f83939098cfb77a27cc298bc7a0c8a8e29cece0cccae0d70d890e","src/aarch64/mod.rs":"83f52775364c98de0cecb7e1509530c18972e932469f5f1522aa24a735d0fa37","src/aarch64/neon.rs":"1fe769979e07d8e2bc3c78ce116e05d735860744efe097a894cc9421153257fb","src/arm/mod.rs":"dcdd90bc0b39abaf86a0c8946d442b16313563fbae1ff03248628275c74d8617","src/arm/neon.rs":"51cc509856200e80f8e4cc2c982586e6d1cef593ec4537e153dce0cfe31d3428","src/common.rs":"62f4e7e0fefb52ad190d0f2191bc435ac4deab3f2bc70dc427f2a7f9ccb7856e","src/lib.rs":"25f0b39c038fa85af858318135dfd87865be26c33bb4bd1438aec96a1e68d8b5","src/sixty_four.rs":"510a9e00189a61e4f0a5beb7052d5dee37fc8261f94a2af45ef10327e0f3b7df","src/v256.rs":"2e328e49034876d535e0627c7a62191da2b4fb156a657614bf531a5fc75b1385","src/x86/avx.rs":"c66140abefca634b48eae307c3ec8cf5a40f2279b10e246a7e2ac602a2a2bb28","src/x86/avx2.rs":"3bcb3f391ad5f16f0a6da0bc1301329beb478ad6265bd3b2c9c124fc2e6198e5","src/x86/mod.rs":"0acc5a5e2672e2a0fddc11065663be8b8fa2da87320ea291fa86ff8c2f33edf5","src/x86/sse2.rs":"5ceda75a401958a135fc9d851b22075314cdeed69fd483b6a7be4f11373f40da","src/x86/sse3.rs":"9bd01a4f08069ca4f445952e744d651efe887e3835b18872e757375f0d053bd2","src/x86/sse4_1.rs":"9ceb80dd70a7e7dfeef508cb935e1a2637175bc87a3b090f5dea691ff6aa0516","src/x86/sse4_2.rs":"c59321aed8decdce4d0d8570cff46aed02e1a8265647ef7702e9b180fc581254","src/x86/ssse3.rs":"2290f0269bae316b8e0491495645ee38a9bd73525c8572759c1328341c3bdb4c"},"package":"7a94d14a2ae1f1f110937de5fb69e494372560181c7e1739a097fcc2cee37ba0"}
\ No newline at end of file
diff --git third_party/rust/simd/src/x86/avx2.rs third_party/rust/simd/src/x86/avx2.rs
index fa92e3b60786..e86a33d3b5bb 100644
--- third_party/rust/simd/src/x86/avx2.rs
+++ third_party/rust/simd/src/x86/avx2.rs
@@ -42,7 +42,7 @@ extern "platform-intrinsic" {
fn x86_mm256_packus_epi32(x: i32x8, y: i32x8) -> u16x16;
fn x86_mm256_permutevar8x32_epi32(x: i32x8, y: i32x8) -> i32x8;
fn x86_mm256_permutevar8x32_ps(x: f32x8, y: i32x8) -> f32x8;
- fn x86_mm256_sad_epu8(x: u8x32, y: u8x32) -> u8x32;
+ fn x86_mm256_sad_epu8(x: u8x32, y: u8x32) -> u64x4;
fn x86_mm256_shuffle_epi8(x: i8x32, y: i8x32) -> i8x32;
fn x86_mm256_sign_epi8(x: i8x32, y: i8x32) -> i8x32;
fn x86_mm256_sign_epi16(x: i16x16, y: i16x16) -> i16x16;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,39 @@
commit 7371a080accd
Author: Lars T Hansen <lhansen@mozilla.com>
Date: Mon Mar 5 09:55:28 2018 +0100
Bug 1442583 - Properly initialize ARM64 icache flushing machinery. r=sstangl
--HG--
extra : rebase_source : 73b5921da1fa0a19d6072e35d09bd7b528bb6bfc
extra : intermediate-source : 19516efbbf6750ba04e11c7099586d5be2fe818f
extra : source : 4316cc82d6302edf839a4af6fcb815f0ffa9f65c
---
js/src/jit/ProcessExecutableMemory.cpp | 7 +++++++
1 file changed, 7 insertions(+)
diff --git js/src/jit/ProcessExecutableMemory.cpp js/src/jit/ProcessExecutableMemory.cpp
index e763a9d68dc17..8a6d50b6a7845 100644
--- js/src/jit/ProcessExecutableMemory.cpp
+++ js/src/jit/ProcessExecutableMemory.cpp
@@ -20,6 +20,9 @@
#include "jsutil.h"
#include "gc/Memory.h"
+#ifdef JS_CODEGEN_ARM64
+# include "jit/arm64/vixl/Cpu-vixl.h"
+#endif
#include "threading/LockGuard.h"
#include "threading/Mutex.h"
#include "util/Windows.h"
@@ -621,6 +624,10 @@ js::jit::DeallocateExecutableMemory(void* addr, size_t bytes)
bool
js::jit::InitProcessExecutableMemory()
{
+#ifdef JS_CODEGEN_ARM64
+ // Initialize instruction cache flushing.
+ vixl::CPU::SetUp();
+#endif
return execMemory.init();
}

View File

@ -1,17 +0,0 @@
Disable custom styling for <select> and <option> on Tier3 as well
diff --git modules/libpref/init/all.js modules/libpref/init/all.js
index 322d009da739..06e2fd7f664a 100644
--- modules/libpref/init/all.js
+++ modules/libpref/init/all.js
@@ -1359,8 +1359,8 @@ pref("dom.forms.autocomplete.formautofill", false);
// Enable search in <select> dropdowns (more than 40 options)
pref("dom.forms.selectSearch", false);
// Allow for webpages to provide custom styling for <select>
-// popups. Disabled on Linux due to bug 1338283.
-#ifdef XP_LINUX
+// popups. Disabled on GTK due to bug 1338283.
+#ifdef MOZ_WIDGET_GTK
pref("dom.forms.select.customstyling", false);
#else
pref("dom.forms.select.customstyling", true);

View File

@ -11,7 +11,7 @@ diff --git gfx/webrender_bindings/src/bindings.rs gfx/webrender_bindings/src/bin
index 8517d7dd33e5..cf885ee713f3 100644
--- gfx/webrender_bindings/src/bindings.rs
+++ gfx/webrender_bindings/src/bindings.rs
@@ -290,8 +290,8 @@ struct WrExternalImage {
@@ -312,8 +312,8 @@ struct WrExternalImage {
size: usize,
}
@ -22,17 +22,17 @@ index 8517d7dd33e5..cf885ee713f3 100644
#[repr(C)]
pub struct WrExternalImageHandler {
@@ -305,8 +305,8 @@ impl ExternalImageHandler for WrExternalImageHandler {
@@ -327,7 +327,8 @@ impl ExternalImageHandler for WrExternalImageHandler {
id: ExternalImageId,
channel_index: u8)
-> ExternalImage {
- let image = (self.lock_func)(self.external_image_obj, id.into(), channel_index);
+
+ let image = unsafe { (self.lock_func)(self.external_image_obj, id.into(), channel_index) };
match image.image_type {
WrExternalImageType::NativeTexture => {
ExternalImage {
@@ -341,7 +341,9 @@ impl ExternalImageHandler for WrExternalImageHandler {
ExternalImage {
uv: TexelRect::new(image.u0, image.v0, image.u1, image.v1),
source: match image.image_type {
@@ -341,7 +342,9 @@ impl ExternalImageHandler for WrExternalImageHandler {
fn unlock(&mut self,
id: ExternalImageId,
channel_index: u8) {

View File

@ -0,0 +1,75 @@
commit 0c6dd4a750db
Author: Lars T Hansen <lhansen@mozilla.com>
Date: Mon Mar 19 09:58:06 2018 +0100
Bug 1445907 - Save x28 before clobbering it in the regex compiler. r=sstangl
---
js/src/irregexp/NativeRegExpMacroAssembler.cpp | 25 ++++++++++++++++++++++++-
js/src/jit-test/tests/regexp/bug1445907.js | 15 +++++++++++++++
2 files changed, 39 insertions(+), 1 deletion(-)
diff --git js/src/irregexp/NativeRegExpMacroAssembler.cpp js/src/irregexp/NativeRegExpMacroAssembler.cpp
index 28a4c35e75bfe..c08b005cf856b 100644
--- js/src/irregexp/NativeRegExpMacroAssembler.cpp
+++ js/src/irregexp/NativeRegExpMacroAssembler.cpp
@@ -123,7 +123,15 @@ NativeRegExpMacroAssembler::GenerateCode(JSContext* cx, bool match_only)
masm.bind(&entry_label_);
#ifdef JS_CODEGEN_ARM64
- // ARM64 communicates stack address via sp, but uses a pseudo-sp for addressing.
+ // ARM64 communicates stack address via SP, but uses a pseudo-sp (PSP) for
+ // addressing. The register we use for PSP may however also be used by
+ // calling code, and it is nonvolatile, so save it. Do this as a special
+ // case first because the generic save/restore code needs the PSP to be
+ // initialized already.
+ MOZ_ASSERT(PseudoStackPointer64.Is(masm.GetStackPointer64()));
+ masm.Str(PseudoStackPointer64, vixl::MemOperand(sp, -16, vixl::PreIndex));
+
+ // Initialize the PSP from the SP.
masm.initStackPtr();
#endif
@@ -421,7 +429,22 @@ NativeRegExpMacroAssembler::GenerateCode(JSContext* cx, bool match_only)
for (GeneralRegisterBackwardIterator iter(savedNonVolatileRegisters); iter.more(); ++iter)
masm.Pop(*iter);
+#ifdef JS_CODEGEN_ARM64
+ // Now restore the value that was in the PSP register on entry, and return.
+
+ // Obtain the correct SP from the PSP.
+ masm.Mov(sp, PseudoStackPointer64);
+
+ // Restore the saved value of the PSP register, this value is whatever the
+ // caller had saved in it, not any actual SP value, and it must not be
+ // overwritten subsequently.
+ masm.Ldr(PseudoStackPointer64, vixl::MemOperand(sp, 16, vixl::PostIndex));
+
+ // Perform a plain Ret(), as abiret() will move SP <- PSP and that is wrong.
+ masm.Ret(vixl::lr);
+#else
masm.abiret();
+#endif
// Backtrack code (branch target for conditional backtracks).
if (backtrack_label_.used()) {
diff --git js/src/jit-test/tests/regexp/bug1445907.js js/src/jit-test/tests/regexp/bug1445907.js
new file mode 100644
index 0000000000000..75b23753eaf93
--- /dev/null
+++ js/src/jit-test/tests/regexp/bug1445907.js
@@ -0,0 +1,15 @@
+// On ARM64, we failed to save x28 properly when generating code for the regexp
+// matcher.
+//
+// There's wasm and Debugger code here because the combination forces the use of
+// x28 and exposes the bug when running on the simulator.
+
+if (!wasmIsSupported())
+ quit();
+
+var g = newGlobal('');
+var dbg = new Debugger(g);
+g.eval(`var m = new WebAssembly.Instance(new WebAssembly.Module(wasmTextToBinary('(module (func (export "test")))')))`);
+var re = /./;
+dbg.onEnterFrame = function(frame) { re.exec("x") };
+result = g.eval("m.exports.test()");

View File

@ -0,0 +1,45 @@
commit fef467b5a93d
Author: Luke Wagner <luke@mozilla.com>
Date: Thu Mar 22 10:28:13 2018 -0500
Bug 1447359 - Baldr: add AutoForbidPools in a few missing places (r=lth)
--HG--
extra : rebase_source : 75f1909deb352391529ce5e58a89e5f9cfeb3662
---
js/src/jit/arm64/MacroAssembler-arm64-inl.h | 1 +
js/src/jit/arm64/MacroAssembler-arm64.cpp | 2 ++
2 files changed, 3 insertions(+)
diff --git js/src/jit/arm64/MacroAssembler-arm64-inl.h js/src/jit/arm64/MacroAssembler-arm64-inl.h
index 7061cbfd93ebb..190442f7afa0a 100644
--- js/src/jit/arm64/MacroAssembler-arm64-inl.h
+++ js/src/jit/arm64/MacroAssembler-arm64-inl.h
@@ -359,6 +359,7 @@ MacroAssembler::sub32FromStackPtrWithPatch(Register dest)
{
vixl::UseScratchRegisterScope temps(this);
const ARMRegister scratch = temps.AcquireX();
+ AutoForbidPools afp(this, /* max number of instructions in scope = */ 3);
CodeOffset offs = CodeOffset(currentOffset());
movz(scratch, 0, 0);
movk(scratch, 0, 16);
diff --git js/src/jit/arm64/MacroAssembler-arm64.cpp js/src/jit/arm64/MacroAssembler-arm64.cpp
index 7b599b7e9d610..4e8fdb6a67019 100644
--- js/src/jit/arm64/MacroAssembler-arm64.cpp
+++ js/src/jit/arm64/MacroAssembler-arm64.cpp
@@ -707,6 +707,7 @@ MacroAssembler::patchFarJump(CodeOffset farJump, uint32_t targetOffset)
CodeOffset
MacroAssembler::nopPatchableToCall(const wasm::CallSiteDesc& desc)
{
+ AutoForbidPools afp(this, /* max number of instructions in scope = */ 1);
CodeOffset offset(currentOffset());
Nop();
append(desc, CodeOffset(currentOffset()));
@@ -1077,6 +1078,7 @@ MacroAssembler::comment(const char* msg)
CodeOffset
MacroAssembler::wasmTrapInstruction()
{
+ AutoForbidPools afp(this, /* max number of instructions in scope = */ 1);
CodeOffset offs(currentOffset());
Unreachable();
return offs;

View File

@ -1,447 +0,0 @@
commit d648a9a26195
Author: Martin Stransky <stransky@redhat.com>
Date: Tue Mar 27 15:51:07 2018 +0200
Bug 1447925 - Add GetClipboardText() to get text data from clipboard, r=jhorak
GetClipboardText() calls gtk_clipboard_request_text() to request text clipboard data from Gtk+
and leave Gtk+ to do clipboard text format conversions. Also unify data getting code for text/data/targets.
MozReview-Commit-ID: 9DGSdOACho1
--HG--
extra : rebase_source : f1d95609f8a7587a4abc11739db9d17ec5446a7b
---
widget/gtk/nsClipboard.h | 1 +
widget/gtk/nsClipboardX11.cpp | 177 +++++++++++++++++++++++++++++-------------
widget/gtk/nsClipboardX11.h | 39 +++++++---
3 files changed, 152 insertions(+), 65 deletions(-)
diff --git widget/gtk/nsClipboard.h widget/gtk/nsClipboard.h
index 2be635bca10d..fa3b9b6ff087 100644
--- widget/gtk/nsClipboard.h
+++ widget/gtk/nsClipboard.h
@@ -21,6 +21,7 @@ public:
virtual const char* GetClipboardData(const char* aMimeType,
int32_t aWhichClipboard,
uint32_t* aContentLength) = 0;
+ virtual const char* GetClipboardText(int32_t aWhichClipboard) = 0;
virtual void ReleaseClipboardData(const char* aClipboardData) = 0;
virtual GdkAtom* GetTargets(int32_t aWhichClipboard,
diff --git widget/gtk/nsClipboardX11.cpp widget/gtk/nsClipboardX11.cpp
index 6a574069dcc4..e8d8522651c2 100644
--- widget/gtk/nsClipboardX11.cpp
+++ widget/gtk/nsClipboardX11.cpp
@@ -62,8 +62,10 @@ selection_request_filter(GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data)
nsRetrievalContextX11::nsRetrievalContextX11()
: mState(INITIAL)
- , mData(nullptr)
, mClipboardRequestNumber(0)
+ , mClipboardData(nullptr)
+ , mClipboardDataLength(0)
+ , mTargetMIMEType(gdk_atom_intern("TARGETS", FALSE))
{
// A custom event filter to workaround attempting to dereference a null
// selection requestor in GTK3 versions before 3.11.3. See bug 1178799.
@@ -139,13 +141,11 @@ checkEventProc(Display *display, XEvent *event, XPointer arg)
return False;
}
-void *
-nsRetrievalContextX11::Wait()
+bool
+nsRetrievalContextX11::WaitForX11Content()
{
if (mState == COMPLETED) { // the request completed synchronously
- void *data = mData;
- mData = nullptr;
- return data;
+ return true;
}
GdkDisplay *gdkDisplay = gdk_display_get_default();
@@ -181,9 +181,7 @@ nsRetrievalContextX11::Wait()
DispatchPropertyNotifyEvent(context.cbWidget, &xevent);
if (mState == COMPLETED) {
- void *data = mData;
- mData = nullptr;
- return data;
+ return true;
}
}
@@ -200,11 +198,12 @@ nsRetrievalContextX11::Wait()
printf("exceeded clipboard timeout\n");
#endif
mState = TIMED_OUT;
- return nullptr;
+ return false;
}
// Call this when data has been retrieved.
-void nsRetrievalContextX11::Complete(GtkSelectionData* aData,
+void nsRetrievalContextX11::Complete(ClipboardDataType aDataType,
+ const void* aData,
int aDataRequestNumber)
{
if (mClipboardRequestNumber != aDataRequestNumber) {
@@ -214,8 +213,54 @@ void nsRetrievalContextX11::Complete(GtkSelectionData* aData,
if (mState == INITIAL) {
mState = COMPLETED;
- mData = gtk_selection_data_get_length(aData) >= 0 ?
- gtk_selection_data_copy(aData) : nullptr;
+
+ MOZ_ASSERT(mClipboardData == nullptr &&
+ mClipboardDataLength == 0,
+ "We're leaking clipboard data!");
+
+ switch (aDataType) {
+ case CLIPBOARD_TEXT:
+ {
+ const char* text = static_cast<const char*>(aData);
+ if (text) {
+ mClipboardDataLength = sizeof(char) * (strlen(text) + 1);
+ mClipboardData = moz_xmalloc(mClipboardDataLength);
+ memcpy(mClipboardData, text, mClipboardDataLength);
+ }
+ }
+ break;
+ case CLIPBOARD_TARGETS:
+ {
+ const GtkSelectionData *selection =
+ static_cast<const GtkSelectionData *>(aData);
+
+ gint n_targets = 0;
+ GdkAtom *targets = nullptr;
+
+ if (!gtk_selection_data_get_targets(selection, &targets, &n_targets) ||
+ !n_targets) {
+ return;
+ }
+
+ mClipboardData = targets;
+ mClipboardDataLength = n_targets;
+ }
+ break;
+ case CLIPBOARD_DATA:
+ {
+ const GtkSelectionData *selection =
+ static_cast<const GtkSelectionData *>(aData);
+
+ gint dataLength = gtk_selection_data_get_length(selection);
+ if (dataLength > 0) {
+ mClipboardDataLength = dataLength;
+ mClipboardData = moz_xmalloc(dataLength);
+ memcpy(mClipboardData, gtk_selection_data_get_data(selection),
+ dataLength);
+ }
+ }
+ break;
+ }
} else {
// Already timed out
MOZ_ASSERT(mState == TIMED_OUT);
@@ -233,12 +278,24 @@ clipboard_contents_received(GtkClipboard *clipboard,
delete handler;
}
-GtkSelectionData*
-nsRetrievalContextX11::WaitForContents(GtkClipboard *clipboard,
- const char *aMimeType)
+static void
+clipboard_text_received(GtkClipboard *clipboard,
+ const gchar *text,
+ gpointer data)
+{
+ ClipboardRequestHandler *handler =
+ static_cast<ClipboardRequestHandler*>(data);
+ handler->Complete(text);
+ delete handler;
+}
+
+bool
+nsRetrievalContextX11::WaitForClipboardData(ClipboardDataType aDataType,
+ GtkClipboard *clipboard,
+ const char *aMimeType)
{
mState = INITIAL;
- NS_ASSERTION(!mData, "Leaking clipboard content!");
+ NS_ASSERTION(!mClipboardData, "Leaking clipboard content!");
// Call ClipboardRequestHandler() with unique clipboard request number.
// The request number pairs gtk_clipboard_request_contents() data request
@@ -246,39 +303,45 @@ nsRetrievalContextX11::WaitForContents(GtkClipboard *clipboard,
// is provided by Gtk.
mClipboardRequestNumber++;
ClipboardRequestHandler* handler =
- new ClipboardRequestHandler(this, mClipboardRequestNumber);
+ new ClipboardRequestHandler(this, aDataType, mClipboardRequestNumber);
+
+ switch (aDataType) {
+ case CLIPBOARD_DATA:
+ gtk_clipboard_request_contents(clipboard,
+ gdk_atom_intern(aMimeType, FALSE), clipboard_contents_received,
+ handler);
+ break;
+ case CLIPBOARD_TEXT:
+ gtk_clipboard_request_text(clipboard, clipboard_text_received,
+ handler);
+ break;
+ case CLIPBOARD_TARGETS:
+ gtk_clipboard_request_contents(clipboard,
+ mTargetMIMEType, clipboard_contents_received,
+ handler);
+ break;
+ }
- gtk_clipboard_request_contents(clipboard,
- gdk_atom_intern(aMimeType, FALSE),
- clipboard_contents_received,
- handler);
- return static_cast<GtkSelectionData*>(Wait());
+ return WaitForX11Content();
}
GdkAtom*
nsRetrievalContextX11::GetTargets(int32_t aWhichClipboard, int* aTargetNums)
{
- *aTargetNums = 0;
+ GtkClipboard *clipboard =
+ gtk_clipboard_get(GetSelectionAtom(aWhichClipboard));
- GtkClipboard *clipboard =
- gtk_clipboard_get(GetSelectionAtom(aWhichClipboard));
-
- GtkSelectionData *selection_data = WaitForContents(clipboard, "TARGETS");
- if (!selection_data)
- return nullptr;
+ if (!WaitForClipboardData(CLIPBOARD_TARGETS, clipboard))
+ return nullptr;
- gint n_targets = 0;
- GdkAtom *targets = nullptr;
+ *aTargetNums = mClipboardDataLength;
+ GdkAtom* targets = static_cast<GdkAtom*>(mClipboardData);
- if (!gtk_selection_data_get_targets(selection_data, &targets, &n_targets) ||
- !n_targets) {
- return nullptr;
- }
+ // We don't hold the target list internally but we transfer the ownership.
+ mClipboardData = nullptr;
+ mClipboardDataLength = 0;
- gtk_selection_data_free(selection_data);
-
- *aTargetNums = n_targets;
- return targets;
+ return targets;
}
const char*
@@ -289,25 +352,31 @@ nsRetrievalContextX11::GetClipboardData(const char* aMimeType,
GtkClipboard *clipboard;
clipboard = gtk_clipboard_get(GetSelectionAtom(aWhichClipboard));
- GtkSelectionData *selectionData = WaitForContents(clipboard, aMimeType);
- if (!selectionData)
+ if (!WaitForClipboardData(CLIPBOARD_DATA, clipboard, aMimeType))
return nullptr;
- char* clipboardData = nullptr;
- int contentLength = gtk_selection_data_get_length(selectionData);
- if (contentLength > 0) {
- clipboardData = reinterpret_cast<char*>(
- moz_xmalloc(sizeof(char)*contentLength));
- memcpy(clipboardData, gtk_selection_data_get_data(selectionData),
- sizeof(char)*contentLength);
- }
- gtk_selection_data_free(selectionData);
+ *aContentLength = mClipboardDataLength;
+ return static_cast<const char*>(mClipboardData);
+}
- *aContentLength = contentLength;
- return (const char*)clipboardData;
+const char*
+nsRetrievalContextX11::GetClipboardText(int32_t aWhichClipboard)
+{
+ GtkClipboard *clipboard;
+ clipboard = gtk_clipboard_get(GetSelectionAtom(aWhichClipboard));
+
+ if (!WaitForClipboardData(CLIPBOARD_TEXT, clipboard))
+ return nullptr;
+
+ return static_cast<const char*>(mClipboardData);
}
void nsRetrievalContextX11::ReleaseClipboardData(const char* aClipboardData)
{
- free((void *)aClipboardData);
+ NS_ASSERTION(aClipboardData == mClipboardData,
+ "Releasing unknown clipboard data!");
+ free((void*)aClipboardData);
+
+ mClipboardData = nullptr;
+ mClipboardDataLength = 0;
}
diff --git widget/gtk/nsClipboardX11.h widget/gtk/nsClipboardX11.h
index 210f6b1fdbd4..9e89e08445dd 100644
--- widget/gtk/nsClipboardX11.h
+++ widget/gtk/nsClipboardX11.h
@@ -11,6 +11,12 @@
#include "nsIClipboard.h"
#include <gtk/gtk.h>
+enum ClipboardDataType {
+ CLIPBOARD_DATA,
+ CLIPBOARD_TEXT,
+ CLIPBOARD_TARGETS
+};
+
class nsRetrievalContextX11 : public nsRetrievalContext
{
public:
@@ -19,48 +25,59 @@ public:
virtual const char* GetClipboardData(const char* aMimeType,
int32_t aWhichClipboard,
uint32_t* aContentLength) override;
+ virtual const char* GetClipboardText(int32_t aWhichClipboard) override;
virtual void ReleaseClipboardData(const char* aClipboardData) override;
virtual GdkAtom* GetTargets(int32_t aWhichClipboard,
int* aTargetNums) override;
- // Call this when data has been retrieved.
- void Complete(GtkSelectionData* aData, int aDataRequestNumber);
+ // Call this when data or text has been retrieved.
+ void Complete(ClipboardDataType aDataType,
+ const void* aData,
+ int aDataRequestNumber);
nsRetrievalContextX11();
virtual ~nsRetrievalContextX11() override;
private:
- GtkSelectionData* WaitForContents(GtkClipboard *clipboard,
- const char *aMimeType);
+ bool WaitForClipboardData(ClipboardDataType aDataType,
+ GtkClipboard *clipboard,
+ const char *aMimeType = nullptr);
+
/**
* Spins X event loop until timing out or being completed. Returns
* null if we time out, otherwise returns the completed data (passing
* ownership to caller).
*/
- void *Wait();
+ bool WaitForX11Content();
- State mState;
- void* mData;
- int mClipboardRequestNumber;
+ State mState;
+ int mClipboardRequestNumber;
+ void* mClipboardData;
+ uint32_t mClipboardDataLength;
+ GdkAtom mTargetMIMEType;
};
class ClipboardRequestHandler
{
public:
- ClipboardRequestHandler(nsRetrievalContextX11 *aContext, int aDataRequestNumber)
+ ClipboardRequestHandler(nsRetrievalContextX11 *aContext,
+ ClipboardDataType aDataType,
+ int aDataRequestNumber)
: mContext(aContext)
, mDataRequestNumber(aDataRequestNumber)
+ , mDataType(aDataType)
{}
- void Complete(GtkSelectionData* aData)
+ void Complete(const void *aData)
{
- mContext->Complete(aData, mDataRequestNumber);
+ mContext->Complete(mDataType, aData, mDataRequestNumber);
}
private:
nsRetrievalContextX11 *mContext;
int mDataRequestNumber;
+ ClipboardDataType mDataType;
};
#endif /* __nsClipboardX11_h_ */
commit 3a5fb9d15546
Author: Martin Stransky <stransky@redhat.com>
Date: Tue Apr 3 10:30:37 2018 +0200
Bug 1447925 - Use GetClipboardText() to get text data at nsClipboard::GetData(), r=jhorak
MozReview-Commit-ID: 3JnLLyk0BOF
--HG--
extra : rebase_source : 7bd5faff15d805d19628bdbd9fcd194c89c283a4
---
widget/gtk/nsClipboard.cpp | 7 ++-----
widget/gtk/nsClipboard.h | 7 ++++---
2 files changed, 6 insertions(+), 8 deletions(-)
diff --git widget/gtk/nsClipboard.cpp widget/gtk/nsClipboard.cpp
index 5e8105987842..36e8d6ad5cee 100644
--- widget/gtk/nsClipboard.cpp
+++ widget/gtk/nsClipboard.cpp
@@ -301,11 +301,8 @@ nsClipboard::GetData(nsITransferable *aTransferable, int32_t aWhichClipboard)
// Special case text/unicode since we can convert any
// string into text/unicode
if (flavorStr.EqualsLiteral(kUnicodeMime)) {
- uint32_t clipboardDataLength;
const char* clipboardData =
- mContext->GetClipboardData(GTK_DEFAULT_MIME_TEXT,
- aWhichClipboard,
- &clipboardDataLength);
+ mContext->GetClipboardText(aWhichClipboard);
if (!clipboardData) {
// If the type was text/unicode and we couldn't get
// text off the clipboard, run the next loop
@@ -314,7 +311,7 @@ nsClipboard::GetData(nsITransferable *aTransferable, int32_t aWhichClipboard)
}
// Convert utf-8 into our unicode format.
- NS_ConvertUTF8toUTF16 ucs2string(clipboardData, clipboardDataLength);
+ NS_ConvertUTF8toUTF16 ucs2string(clipboardData);
const char* unicodeData = (const char *)ToNewUnicode(ucs2string);
uint32_t unicodeDataLength = ucs2string.Length() * 2;
SetTransferableData(aTransferable, flavorStr,
diff --git widget/gtk/nsClipboard.h widget/gtk/nsClipboard.h
index fa3b9b6ff087..9b59bf8176f6 100644
--- widget/gtk/nsClipboard.h
+++ widget/gtk/nsClipboard.h
@@ -13,17 +13,18 @@
#include "nsIBinaryOutputStream.h"
#include <gtk/gtk.h>
-// Default Gtk MIME for text
-#define GTK_DEFAULT_MIME_TEXT "UTF8_STRING"
-
class nsRetrievalContext {
public:
+ // Get actual clipboard content (GetClipboardData/GetClipboardText)
+ // which has to be released by ReleaseClipboardData().
virtual const char* GetClipboardData(const char* aMimeType,
int32_t aWhichClipboard,
uint32_t* aContentLength) = 0;
virtual const char* GetClipboardText(int32_t aWhichClipboard) = 0;
virtual void ReleaseClipboardData(const char* aClipboardData) = 0;
+ // Get data mime types which can be obtained from clipboard.
+ // The returned array has to be released by g_free().
virtual GdkAtom* GetTargets(int32_t aWhichClipboard,
int* aTargetNum) = 0;

View File

@ -0,0 +1,33 @@
commit b3a02fddbce8
Author: Lars T Hansen <lhansen@mozilla.com>
Date: Wed Apr 4 15:48:48 2018 +0200
Bug 1451292 - Better payload for arm64 breakpoint instruction. r=sstangl
At least some non-zero payloads confuse GDB and make it iloop on the
breakpoint instruction rather than break to the command line as it
should. There seems to be no reason not to use a zero payload.
--HG--
extra : rebase_source : 6d6f9aa2911b86b02572f88948d48bc2238c6353
extra : amend_source : 9fed9235d481a9eadafc4a3e0075c9fef8b6050d
---
js/src/jit/arm64/MacroAssembler-arm64.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git js/src/jit/arm64/MacroAssembler-arm64.cpp js/src/jit/arm64/MacroAssembler-arm64.cpp
index 4ea64b1225d00..a212de0ec2f45 100644
--- js/src/jit/arm64/MacroAssembler-arm64.cpp
+++ js/src/jit/arm64/MacroAssembler-arm64.cpp
@@ -237,8 +237,9 @@ MacroAssemblerCompat::profilerEnterFrame(RegisterOrSP framePtr, Register scratch
void
MacroAssemblerCompat::breakpoint()
{
- static int code = 0xA77;
- Brk((code++) & 0xffff);
+ // Note, other payloads are possible, but GDB is known to misinterpret them
+ // sometimes and iloop on the breakpoint instead of stopping properly.
+ Brk(0);
}
// Either `any` is valid or `sixtyfour` is valid. Return a 32-bit ARMRegister

View File

@ -1,28 +0,0 @@
commit 90944c5323c3
Author: Martin Stransky <stransky@redhat.com>
Date: Mon Apr 9 13:36:03 2018 +0200
Bug 1452041 - nsClipboard::HasDataMatchingFlavors(): return immediately when there's no clipboard content, r=jhorak a=jcristau
MozReview-Commit-ID: CTz0tRr3p57
--HG--
extra : rebase_source : 35453506a58e698d8f0b6e9681fb87da8511eb9c
extra : source : 4b841d1c7ec0513eb080fb033f54bde12ccb7ddc
---
widget/gtk/nsClipboard.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git widget/gtk/nsClipboard.cpp widget/gtk/nsClipboard.cpp
index 36e8d6ad5cee..61d3ef53ca98 100644
--- widget/gtk/nsClipboard.cpp
+++ widget/gtk/nsClipboard.cpp
@@ -390,6 +390,8 @@ nsClipboard::HasDataMatchingFlavors(const char** aFlavorList, uint32_t aLength,
int targetNums;
GdkAtom* targets = mContext->GetTargets(aWhichClipboard, &targetNums);
+ if (!targets)
+ return NS_OK;
// Walk through the provided types and try to match it to a
// provided type.

View File

@ -0,0 +1,22 @@
commit f6fc0b418aa3
Author: Andrea Marchesini <amarchesini@mozilla.com>
Date: Tue May 1 08:47:13 2018 +0200
Bug 1456556 - FetchConsumer scope-exit RAII must grab 'self' by value, r=erahm
---
dom/fetch/FetchConsumer.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git dom/fetch/FetchConsumer.cpp dom/fetch/FetchConsumer.cpp
index 134bf7f2e703a..3c3687fea1d5a 100644
--- dom/fetch/FetchConsumer.cpp
+++ dom/fetch/FetchConsumer.cpp
@@ -582,7 +582,7 @@ FetchBodyConsumer<Derived>::ContinueConsumeBody(nsresult aStatus,
RefPtr<Promise> localPromise = mConsumePromise.forget();
RefPtr<FetchBodyConsumer<Derived>> self = this;
- auto autoReleaseObject = mozilla::MakeScopeExit([&] {
+ auto autoReleaseObject = mozilla::MakeScopeExit([self] {
self->ReleaseObject();
});

View File

@ -1,171 +0,0 @@
commit 8024d93
Author: Henrik Gulbrandsen <henrik@gulbra.net>
Date: Fri Jan 4 13:49:22 2013 +0100
Bug 826985 - Support more video formats for WebRTC via libv4l2 on Linux.
---
config/system-headers | 1 +
old-configure.in | 7 +++++++
media/webrtc/signaling/test/Makefile.in | 1 +
.../modules/video_capture/linux/device_info_linux.cc | 17 +++++++++++++++++
.../modules/video_capture/linux/video_capture_linux.cc | 16 +++++++++++++++-
.../webrtc/modules/video_capture/video_capture.gypi | 11 +++++++++++
toolkit/library/Makefile.in | 1 +
6 files changed, 52 insertions(+), 1 deletion(-)
diff --git config/system-headers.mozbuild config/system-headers.mozbuild
index e02d381a12e9..7620b4d00623 100644
--- config/system-headers.mozbuild
+++ config/system-headers.mozbuild
@@ -428,6 +428,7 @@ system_headers = [
'libgnomeui/gnome-icon-theme.h',
'libgnomeui/gnome-ui-init.h',
'libutil.h',
+ 'libv4l2.h',
'limits.h',
'link.h',
'linux/ioprio.h',
diff --git old-configure.in configure.in
index 55e4cd1..76567b3 100644
--- old-configure.in
+++ old-configure.in
@@ -2558,6 +2558,9 @@ if test -n "$MOZ_WEBRTC"; then
if test -n "$MOZ_X11"; then
MOZ_WEBRTC_X11_LIBS="-lXext -lXdamage -lXfixes -lXcomposite"
fi
+
+ dnl with libv4l2 we can support more cameras
+ PKG_CHECK_MODULES(MOZ_LIBV4L2, libv4l2)
else
MOZ_SYNTH_PICO=
fi
diff --git build/gyp.mozbuild build/gyp.mozbuild
index b483cd1..f1dd1f0 100644
--- build/gyp.mozbuild
+++ build/gyp.mozbuild
@@ -11,6 +11,7 @@ gyp_vars = {
'have_ethtool_cmd_speed_hi': 1 if CONFIG['MOZ_WEBRTC_HAVE_ETHTOOL_SPEED_HI'] else 0,
'include_alsa_audio': 1 if CONFIG['MOZ_ALSA'] else 0,
'include_pulse_audio': 1 if CONFIG['MOZ_PULSEAUDIO'] else 0,
+ 'use_libv4l2': 1 if CONFIG['MOZ_LIBV4L2_LIBS'] else 0,
# basic stuff for everything
'include_internal_video_render': 0,
'clang_use_chrome_plugins': 0,
diff --git media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
index 239a292..bab496c 100644
--- media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
+++ media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
@@ -25,6 +25,9 @@
#else
#include <linux/videodev2.h>
#endif
+#ifdef HAVE_LIBV4L2
+#include <libv4l2.h>
+#endif
#include "webrtc/system_wrappers/interface/ref_count.h"
#include "webrtc/system_wrappers/interface/trace.h"
@@ -34,6 +37,15 @@
#define BUF_LEN ( 1024 * ( EVENT_SIZE + 16 ) )
#endif
+#ifdef HAVE_LIBV4L2
+#define open v4l2_open
+#define close v4l2_close
+#define dup v4l2_dup
+#define ioctl v4l2_ioctl
+#define mmap v4l2_mmap
+#define munmap v4l2_munmap
+#endif
+
namespace webrtc
{
namespace videocapturemodule
@@ -274,6 +286,11 @@ int32_t DeviceInfoLinux::GetDeviceName(
memset(deviceNameUTF8, 0, deviceNameLength);
memcpy(cameraName, cap.card, sizeof(cap.card));
+ if (cameraName[0] == '\0')
+ {
+ sprintf(cameraName, "Camera at /dev/video%d", deviceNumber);
+ }
+
if (deviceNameLength >= strlen(cameraName))
{
memcpy(deviceNameUTF8, cameraName, strlen(cameraName));
diff --git media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc
index 12df1b3..e9863ba 100644
--- media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc
+++ media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc
@@ -25,6 +25,9 @@
#else
#include <linux/videodev2.h>
#endif
+#ifdef HAVE_LIBV4L2
+#include <libv4l2.h>
+#endif
#include <new>
@@ -32,6 +35,15 @@
#include "webrtc/modules/video_capture/linux/video_capture_linux.h"
#include "webrtc/system_wrappers/include/critical_section_wrapper.h"
#include "webrtc/system_wrappers/include/trace.h"
+
+#ifdef HAVE_LIBV4L2
+#define open v4l2_open
+#define close v4l2_close
+#define dup v4l2_dup
+#define ioctl v4l2_ioctl
+#define mmap v4l2_mmap
+#define munmap v4l2_munmap
+#endif
namespace webrtc {
namespace videocapturemodule {
diff --git media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi
index d46b5aa..e452223 100644
--- media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi
+++ media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi
@@ -7,6 +7,9 @@
# be found in the AUTHORS file in the root of the source tree.
{
+ 'variables': {
+ 'use_libv4l2%': 0,
+ },
'targets': [
{
'target_name': 'video_capture_module',
@@ -76,6 +76,19 @@
'linux/video_capture_linux.cc',
'linux/video_capture_linux.h',
],
+ 'conditions': [
+ ['use_libv4l2==1', {
+ 'defines': [
+ 'HAVE_LIBV4L2',
+ ],
+ 'cflags_mozilla': [
+ '$(MOZ_LIBV4L2_CFLAGS)',
+ ],
+ 'libraries': [
+ '-lv4l2',
+ ],
+ }],
+ ],
}],
['OS=="mac"', {
'sources': [
diff --git toolkit/library/moz.build toolkit/library/moz.build
index 9c16ffa..1db3794 100644
--- toolkit/library/moz.build
+++ toolkit/library/moz.build
@@ -163,6 +163,7 @@ if CONFIG['OS_ARCH'] == 'Linux' and CONF
]
OS_LIBS += CONFIG['MOZ_CAIRO_OSLIBS']
+OS_LIBS += CONFIG['MOZ_LIBV4L2_LIBS']
OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
OS_LIBS += CONFIG['MOZ_APP_EXTRA_LIBS']

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -160,7 +160,7 @@ diff --git dom/media/moz.build dom/media/moz.build
index 86b051c58d33..fb6186dce78b 100644
--- dom/media/moz.build
+++ dom/media/moz.build
@@ -318,6 +318,21 @@ if CONFIG['MOZ_WEBRTC']:
@@ -326,6 +326,21 @@ if CONFIG['MOZ_WEBRTC']:
DEFINES['MOZILLA_INTERNAL_API'] = True
@ -179,16 +179,16 @@ index 86b051c58d33..fb6186dce78b 100644
+if CONFIG['MOZ_SYSTEM_SOUNDTOUCH']:
+ CXXFLAGS += CONFIG['MOZ_SOUNDTOUCH_CFLAGS']
+
if CONFIG['MOZ_ANDROID_HLS_SUPPORT'] and CONFIG['MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE']:
if CONFIG['MOZ_ANDROID_HLS_SUPPORT']:
DEFINES['MOZ_ANDROID_HLS_SUPPORT'] = True
diff --git dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp
index 078f6ea5ef60..c600db067539 100644
--- dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp
+++ dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp
@@ -11,9 +11,13 @@
#include "prmem.h"
#include "prlink.h"
@@ -15,9 +15,13 @@
#include <windows.h>
#endif
+#ifdef MOZ_SYSTEM_SOUNDTOUCH
+#include "nsXPCOMPrivate.h" // for XUL_DLL
@ -200,7 +200,7 @@ index 078f6ea5ef60..c600db067539 100644
namespace mozilla {
@@ -54,6 +58,12 @@ FFVPXRuntimeLinker::Init()
@@ -64,6 +68,12 @@ FFVPXRuntimeLinker::Init()
sLinkStatus = LinkStatus_FAILED;
@ -212,13 +212,13 @@ index 078f6ea5ef60..c600db067539 100644
+#else
// We retrieve the path of the lgpllibs library as this is where mozavcodec
// and mozavutil libs are located.
char* lgpllibsname = PR_GetLibraryName(nullptr, "lgpllibs");
@@ -64,6 +74,7 @@ FFVPXRuntimeLinker::Init()
PR_GetLibraryFilePathname(lgpllibsname,
(PRFuncPtr)&soundtouch::SoundTouch::getVersionId);
PR_FreeLibraryName(lgpllibsname);
PathString lgpllibsname = GetLibraryName(nullptr, "lgpllibs");
@@ -73,6 +83,7 @@ FFVPXRuntimeLinker::Init()
PathString path =
GetLibraryFilePathname(lgpllibsname.get(),
(PRFuncPtr)&soundtouch::SoundTouch::getVersionId);
+#endif
if (!path) {
if (path.IsEmpty()) {
return false;
}
diff --git media/libogg/README_MOZILLA media/libogg/README_MOZILLA
@ -342,7 +342,7 @@ index b614eef85c89..85f9099dba4d 100644
+MOZ_SYSTEM_OGG=)
+
+if test -n "$MOZ_SYSTEM_OGG"; then
+ PKG_CHECK_MODULES(MOZ_OGG, ogg >= 1.3.0)
+ PKG_CHECK_MODULES(MOZ_OGG, ogg >= 1.3.3)
+
+ _SAVE_LIBS=$LIBS
+ LIBS="$LIBS $MOZ_OGG_LIBS"
@ -363,7 +363,7 @@ index b614eef85c89..85f9099dba4d 100644
+MOZ_SYSTEM_VORBIS=)
+
+if test -n "$MOZ_SYSTEM_VORBIS"; then
+ PKG_CHECK_MODULES(MOZ_VORBIS, vorbis vorbisenc >= 1.3.5)
+ PKG_CHECK_MODULES(MOZ_VORBIS, vorbis vorbisenc >= 1.3.6)
+fi
+
+AC_SUBST(MOZ_SYSTEM_VORBIS)

View File

@ -8,7 +8,6 @@ Some features available on other platforms are not implemented:
- Performance profiling (requires GeckoProfiler)
- Gamepad API (requires libusbhid backend)
- WebVR (requires open source runtime)
- U2F Security Keys (requires libusbhid backend)
- TCP fast open
======================================================================