View | Details | Raw Unified | Return to bug 222693 | Differences between
and this patch

Collapse All | Expand All

(-)b/Mk/Uses/gecko.mk (-2 / +2 lines)
Lines 37-48 RUN_DEPENDS+= libxul>=45:www/libxul Link Here
37
.elif ${gecko_ARGS:Mfirefox}
37
.elif ${gecko_ARGS:Mfirefox}
38
38
39
_GECKO_DEFAULT_VERSION=	52
39
_GECKO_DEFAULT_VERSION=	52
40
_GECKO_VERSIONS=		52 56
40
_GECKO_VERSIONS=		52 57
41
_GECKO_TYPE=	firefox
41
_GECKO_TYPE=	firefox
42
42
43
# Dependence lines for different Firefox versions
43
# Dependence lines for different Firefox versions
44
52_DEPENDS=		${LOCALBASE}/lib/firefox/firefox:www/firefox-esr
44
52_DEPENDS=		${LOCALBASE}/lib/firefox/firefox:www/firefox-esr
45
56_DEPENDS=		${LOCALBASE}/lib/firefox/firefox:www/firefox
45
57_DEPENDS=		${LOCALBASE}/lib/firefox/firefox:www/firefox
46
46
47
.if exists(${LOCALBASE}/bin/firefox)
47
.if exists(${LOCALBASE}/bin/firefox)
48
_GECKO_INSTALLED_VER!=	${LOCALBASE}/bin/firefox --version 2>/dev/null
48
_GECKO_INSTALLED_VER!=	${LOCALBASE}/bin/firefox --version 2>/dev/null
(-)b/www/firefox-i18n/Makefile (-2 / +2 lines)
Lines 2-8 Link Here
2
# $FreeBSD$
2
# $FreeBSD$
3
3
4
PORTNAME=	firefox-i18n
4
PORTNAME=	firefox-i18n
5
PORTVERSION=	56.0.2
5
PORTVERSION=	57.0b12
6
CATEGORIES=	www
6
CATEGORIES=	www
7
MASTER_SITES=	MOZILLA/${PORTNAME:S|-i18n||}/releases/${DISTVERSION}/linux-i686/xpi \
7
MASTER_SITES=	MOZILLA/${PORTNAME:S|-i18n||}/releases/${DISTVERSION}/linux-i686/xpi \
8
		MOZILLA/${PORTNAME:S|-i18n||}/candidates/${DISTVERSION}-candidates/build1/linux-i686/xpi
8
		MOZILLA/${PORTNAME:S|-i18n||}/candidates/${DISTVERSION}-candidates/build1/linux-i686/xpi
Lines 15-21 COMMENT= Localized interface for Firefox Link Here
15
15
16
EXTRACT_DEPENDS=	zip:archivers/zip
16
EXTRACT_DEPENDS=	zip:archivers/zip
17
17
18
USES=		zip:infozip gecko:firefox,56,build
18
USES=		zip:infozip gecko:firefox,57,build
19
USE_XPI=	firefox
19
USE_XPI=	firefox
20
20
21
NO_ARCH=	yes
21
NO_ARCH=	yes
(-)b/www/firefox-i18n/distinfo (-191 / +191 lines)
Lines 1-191 Link Here
1
TIMESTAMP = 1508873487
1
TIMESTAMP = 1509060928
2
SHA256 (xpi/firefox-i18n-56.0.2/ach.xpi) = a78c4900c9dac71ea312d5ceda13987f4f8418ab078374c0e292cd30ce79aa23
2
SHA256 (xpi/firefox-i18n-57.0b12/ach.xpi) = 4143dd4c8f1498c1068340a18bb53d451861777d8b193c4a00c0f2a82e3b3dc9
3
SIZE (xpi/firefox-i18n-56.0.2/ach.xpi) = 454896
3
SIZE (xpi/firefox-i18n-57.0b12/ach.xpi) = 441111
4
SHA256 (xpi/firefox-i18n-56.0.2/af.xpi) = e0ea5e99eb7cedd0c3893ae4baa3ca2af7f814bc069dcbf921069dcaba762fc6
4
SHA256 (xpi/firefox-i18n-57.0b12/af.xpi) = d7c883df3e0b089b6a88cbe968545810ee44b46b899c51a63beca2002ae4278e
5
SIZE (xpi/firefox-i18n-56.0.2/af.xpi) = 456214
5
SIZE (xpi/firefox-i18n-57.0b12/af.xpi) = 442206
6
SHA256 (xpi/firefox-i18n-56.0.2/an.xpi) = 18e3c4e6f85fb296bd955b110ba2c6a381ba4ba8de3a0e2990bc4618f9438593
6
SHA256 (xpi/firefox-i18n-57.0b12/an.xpi) = 862a491353b1170cdfc03056d16d89ba933b05a16494d697640d37809dd7b611
7
SIZE (xpi/firefox-i18n-56.0.2/an.xpi) = 475863
7
SIZE (xpi/firefox-i18n-57.0b12/an.xpi) = 462778
8
SHA256 (xpi/firefox-i18n-56.0.2/ar.xpi) = c8dcb494321e5ef34092b7555ec67147461b387803df895c30858314f0509acb
8
SHA256 (xpi/firefox-i18n-57.0b12/ar.xpi) = cd22c677f80ff99b242d23fbac92eee28293322ddb5e7d0562eaa07f4a085a38
9
SIZE (xpi/firefox-i18n-56.0.2/ar.xpi) = 500711
9
SIZE (xpi/firefox-i18n-57.0b12/ar.xpi) = 487707
10
SHA256 (xpi/firefox-i18n-56.0.2/as.xpi) = e77f99a72083b49e30f453d1f40ac670e42e6a637b8bb4e7c914f74b24e6b582
10
SHA256 (xpi/firefox-i18n-57.0b12/as.xpi) = 28a31ba5ac4ca2614a40ee1778ddd52f8149f5af0fc1232f3364a863397a5e2a
11
SIZE (xpi/firefox-i18n-56.0.2/as.xpi) = 508237
11
SIZE (xpi/firefox-i18n-57.0b12/as.xpi) = 491075
12
SHA256 (xpi/firefox-i18n-56.0.2/ast.xpi) = e4fe6028af88b67dce678e6a1215cda2c2aa0cbe76eb95947c46e08d93bb23bc
12
SHA256 (xpi/firefox-i18n-57.0b12/ast.xpi) = e330b60a178a78f758c07b49d07c7d64dbe6052ca9f57494fb6b4133cc4493ea
13
SIZE (xpi/firefox-i18n-56.0.2/ast.xpi) = 469157
13
SIZE (xpi/firefox-i18n-57.0b12/ast.xpi) = 455503
14
SHA256 (xpi/firefox-i18n-56.0.2/az.xpi) = 5d9cd26da6e1afe41c9d032054b066a9e0a13f7cfd9701e8126147f405ae6f1a
14
SHA256 (xpi/firefox-i18n-57.0b12/az.xpi) = 41a576be5f61c904e16eb85ba7ed3b43cb303aa8d92a8c4db501d7031b51dcbc
15
SIZE (xpi/firefox-i18n-56.0.2/az.xpi) = 484984
15
SIZE (xpi/firefox-i18n-57.0b12/az.xpi) = 466042
16
SHA256 (xpi/firefox-i18n-56.0.2/be.xpi) = 647318eb3b3060ba2384ecf4b4b96fb70fb54f1428c20f776d8d99f75eed5f49
16
SHA256 (xpi/firefox-i18n-57.0b12/be.xpi) = 467955c3f7d8eea574db2b0971e5e0c37f3a2b94fa1a7262fb16db7ef56e17ec
17
SIZE (xpi/firefox-i18n-56.0.2/be.xpi) = 531385
17
SIZE (xpi/firefox-i18n-57.0b12/be.xpi) = 514703
18
SHA256 (xpi/firefox-i18n-56.0.2/bg.xpi) = a844374d3453747f30382acf6019d379596f812f68d49ba7245a18993cea5ffb
18
SHA256 (xpi/firefox-i18n-57.0b12/bg.xpi) = 4cd4a92a29278a2a4e7cdbf8a841875e516be9df5514a625e82005521955fd12
19
SIZE (xpi/firefox-i18n-56.0.2/bg.xpi) = 528789
19
SIZE (xpi/firefox-i18n-57.0b12/bg.xpi) = 508741
20
SHA256 (xpi/firefox-i18n-56.0.2/bn-BD.xpi) = caafe8df84189999ed513e4f88e91f8b8c35e8a1d13fa54bd54f3a0654ec1f02
20
SHA256 (xpi/firefox-i18n-57.0b12/bn-BD.xpi) = c1e91eb042e1659f2ceabc0be965c54b8b562428b1c9f2fc1246f2bc4b7a13ac
21
SIZE (xpi/firefox-i18n-56.0.2/bn-BD.xpi) = 542772
21
SIZE (xpi/firefox-i18n-57.0b12/bn-BD.xpi) = 526675
22
SHA256 (xpi/firefox-i18n-56.0.2/bn-IN.xpi) = 4278938cf3be47f2e7a865a2221c10f383b8c7930f71b2bd0c4ce09c1ff8a3c8
22
SHA256 (xpi/firefox-i18n-57.0b12/bn-IN.xpi) = c96414b7a3b435496b579716ac424183c391641a7fed52a5ee5e5e5cd26dd658
23
SIZE (xpi/firefox-i18n-56.0.2/bn-IN.xpi) = 534450
23
SIZE (xpi/firefox-i18n-57.0b12/bn-IN.xpi) = 516175
24
SHA256 (xpi/firefox-i18n-56.0.2/br.xpi) = 65e8b0a3e55e99701e0ecfb9cdb0775afc0946f23eab34d4ada4f0d973d2076d
24
SHA256 (xpi/firefox-i18n-57.0b12/br.xpi) = 0ed02fc603fff04d25cc525ed1405552c2d2c259a545516df623ce2930493b1c
25
SIZE (xpi/firefox-i18n-56.0.2/br.xpi) = 464256
25
SIZE (xpi/firefox-i18n-57.0b12/br.xpi) = 451680
26
SHA256 (xpi/firefox-i18n-56.0.2/bs.xpi) = fef54b5ba9231eaedbe216c1f9e7c86d831ed032d1fcd6e5dd15a06619ad69ac
26
SHA256 (xpi/firefox-i18n-57.0b12/bs.xpi) = e2437ed1ea83c972c922803e3b4dcbd1a6f460159af0b81692e7e9a3cd92c2b2
27
SIZE (xpi/firefox-i18n-56.0.2/bs.xpi) = 472256
27
SIZE (xpi/firefox-i18n-57.0b12/bs.xpi) = 457832
28
SHA256 (xpi/firefox-i18n-56.0.2/ca.xpi) = 11dc866f5f2a16622fa45c36c174150293e123bfd970890e4403ed224d6e4eb6
28
SHA256 (xpi/firefox-i18n-57.0b12/ca.xpi) = 72cf63ab33280e455a23953b6f44fd39e05a2a0b0c1b7ec411a58479f5891f5d
29
SIZE (xpi/firefox-i18n-56.0.2/ca.xpi) = 480364
29
SIZE (xpi/firefox-i18n-57.0b12/ca.xpi) = 466641
30
SHA256 (xpi/firefox-i18n-56.0.2/cak.xpi) = 1ed05bcdb3977850ae21847f70122111ff459cc6669130ec9db5ccf11dde117f
30
SHA256 (xpi/firefox-i18n-57.0b12/cak.xpi) = 195551a9f0fd8e684ab5966fa57a8592058663b75637d8a95b7396ab7b438d3c
31
SIZE (xpi/firefox-i18n-56.0.2/cak.xpi) = 489507
31
SIZE (xpi/firefox-i18n-57.0b12/cak.xpi) = 474622
32
SHA256 (xpi/firefox-i18n-56.0.2/cs.xpi) = 1191121195a77ec1315ec379b307819f1ce6b15bfa1bb9fc31ec0148cb08bcf5
32
SHA256 (xpi/firefox-i18n-57.0b12/cs.xpi) = 4efd0f70abc0ddccaadde68d9dcfd3c55b7d116b604e656c2ad0d0623ae4c4a4
33
SIZE (xpi/firefox-i18n-56.0.2/cs.xpi) = 485090
33
SIZE (xpi/firefox-i18n-57.0b12/cs.xpi) = 468115
34
SHA256 (xpi/firefox-i18n-56.0.2/cy.xpi) = a04d0d37f46b89d2aba85eebc1524daba41b3a6db468e61a924e83b2814d8845
34
SHA256 (xpi/firefox-i18n-57.0b12/cy.xpi) = a04158429a870232984b3aabc00da97e92ac49c691f9ceadfe75d6e79cbd230d
35
SIZE (xpi/firefox-i18n-56.0.2/cy.xpi) = 466288
35
SIZE (xpi/firefox-i18n-57.0b12/cy.xpi) = 454562
36
SHA256 (xpi/firefox-i18n-56.0.2/da.xpi) = 3822d31c6b83317216f5124d603d9a8b8180a06d2407426dd90b71891c155f0c
36
SHA256 (xpi/firefox-i18n-57.0b12/da.xpi) = 9e14dd19701e9f89e01c90dda1e7a9ee23a93101d2993e483b9a962734a54316
37
SIZE (xpi/firefox-i18n-56.0.2/da.xpi) = 460091
37
SIZE (xpi/firefox-i18n-57.0b12/da.xpi) = 446523
38
SHA256 (xpi/firefox-i18n-56.0.2/de.xpi) = ee02b96baf96be7e69ff12f06576a270e48ca454cc8f93c51070ebdd9c2a03f7
38
SHA256 (xpi/firefox-i18n-57.0b12/de.xpi) = f5a3151789e3cf6a11d0813617111b033aa22dc94f37f4614a5c641910e2e0b9
39
SIZE (xpi/firefox-i18n-56.0.2/de.xpi) = 473856
39
SIZE (xpi/firefox-i18n-57.0b12/de.xpi) = 460812
40
SHA256 (xpi/firefox-i18n-56.0.2/dsb.xpi) = 227588519f2ae092f6cbf0531287c5c36b7037c3355cc0d9e0e024d4e84472e3
40
SHA256 (xpi/firefox-i18n-57.0b12/dsb.xpi) = f2901db6838551e82c8e426ad51570668d8c655a405a4739f4003cd3a5eb963a
41
SIZE (xpi/firefox-i18n-56.0.2/dsb.xpi) = 489897
41
SIZE (xpi/firefox-i18n-57.0b12/dsb.xpi) = 478145
42
SHA256 (xpi/firefox-i18n-56.0.2/el.xpi) = ace7c78e28297ea4dcc90a2b8c2881afc812a2416ae4cdba499749349bc2d3f3
42
SHA256 (xpi/firefox-i18n-57.0b12/el.xpi) = 2ed59b99484b487f539e3108a6df6f4c8b13d6facdc545cb025ea621d6b8ec25
43
SIZE (xpi/firefox-i18n-56.0.2/el.xpi) = 554120
43
SIZE (xpi/firefox-i18n-57.0b12/el.xpi) = 534515
44
SHA256 (xpi/firefox-i18n-56.0.2/en-GB.xpi) = 55fb37a478f2521b1b1543498d373ade08126c3ac71127bfbde504d8a3f95e16
44
SHA256 (xpi/firefox-i18n-57.0b12/en-GB.xpi) = df877de1bc899f9c5c7741a06ef222d4fb59bb6a393bf193c1580ff5c57a750f
45
SIZE (xpi/firefox-i18n-56.0.2/en-GB.xpi) = 447375
45
SIZE (xpi/firefox-i18n-57.0b12/en-GB.xpi) = 437750
46
SHA256 (xpi/firefox-i18n-56.0.2/en-US.xpi) = 618f390c9a36aed65860d6ad20444c9c6224471d0a394de92a21262291327ff2
46
SHA256 (xpi/firefox-i18n-57.0b12/en-US.xpi) = 629fd830ad4a5261391aa0a380f4c9e1dc63d2dfb539d9ae3a603b7650573eb5
47
SIZE (xpi/firefox-i18n-56.0.2/en-US.xpi) = 446951
47
SIZE (xpi/firefox-i18n-57.0b12/en-US.xpi) = 437987
48
SHA256 (xpi/firefox-i18n-56.0.2/en-ZA.xpi) = 2fa254426d945152e9eb01cc02a8f86415fa5425aefed9825bd1dea9b6d0b76a
48
SHA256 (xpi/firefox-i18n-57.0b12/en-ZA.xpi) = 712a6476d7aec9001fad6abbf1b762293222b9eb51f184219118dfb0a3499d52
49
SIZE (xpi/firefox-i18n-56.0.2/en-ZA.xpi) = 445916
49
SIZE (xpi/firefox-i18n-57.0b12/en-ZA.xpi) = 432019
50
SHA256 (xpi/firefox-i18n-56.0.2/eo.xpi) = f1d9e7acc5bb36a2acfb1659ad0857e5d2c9800836d096f41ceb87977a6e7377
50
SHA256 (xpi/firefox-i18n-57.0b12/eo.xpi) = 2c5904650501f1932d8977854f697d2f91f1195feb5bfadbbf989489ee2bb39e
51
SIZE (xpi/firefox-i18n-56.0.2/eo.xpi) = 468952
51
SIZE (xpi/firefox-i18n-57.0b12/eo.xpi) = 453632
52
SHA256 (xpi/firefox-i18n-56.0.2/es-AR.xpi) = 12f34c15fb4cf11e5c007ea19a97f91370a66e192cc3c0aed5405659be36eaa3
52
SHA256 (xpi/firefox-i18n-57.0b12/es-AR.xpi) = b387ca8ae7d8f17480bef5536faf9e0e0407065cdb8b332434fcd686e2401ab9
53
SIZE (xpi/firefox-i18n-56.0.2/es-AR.xpi) = 475449
53
SIZE (xpi/firefox-i18n-57.0b12/es-AR.xpi) = 461721
54
SHA256 (xpi/firefox-i18n-56.0.2/es-CL.xpi) = 5239da279a01681c00ece001d1477abba04b41d50fd442e761140ba93b68870f
54
SHA256 (xpi/firefox-i18n-57.0b12/es-CL.xpi) = c8a108779e37dec4137dc8abda99e992341045a99c59095b19a917ff1a3600a4
55
SIZE (xpi/firefox-i18n-56.0.2/es-CL.xpi) = 479922
55
SIZE (xpi/firefox-i18n-57.0b12/es-CL.xpi) = 464422
56
SHA256 (xpi/firefox-i18n-56.0.2/es-ES.xpi) = 98b7422e833226916953ac89201652f406f84c805d293ab949adae475fc03a7c
56
SHA256 (xpi/firefox-i18n-57.0b12/es-ES.xpi) = cab059c1781b8eb87e571531aba3309c7f7c6189158634ca58476e6fbf67b78a
57
SIZE (xpi/firefox-i18n-56.0.2/es-ES.xpi) = 365631
57
SIZE (xpi/firefox-i18n-57.0b12/es-ES.xpi) = 353622
58
SHA256 (xpi/firefox-i18n-56.0.2/es-MX.xpi) = 9516c169b883f8208c996f461221e9bb917e2e56c1f67d01f67026a8f5de3a1b
58
SHA256 (xpi/firefox-i18n-57.0b12/es-MX.xpi) = faa99f584717465b65c073c81bb565034200846ae45208c6ffd9182dcc497859
59
SIZE (xpi/firefox-i18n-56.0.2/es-MX.xpi) = 482565
59
SIZE (xpi/firefox-i18n-57.0b12/es-MX.xpi) = 466764
60
SHA256 (xpi/firefox-i18n-56.0.2/et.xpi) = dff5cbe5b933511fc10c1209dde31c45a521c9e687d909f4915eaf3eac8a3ad3
60
SHA256 (xpi/firefox-i18n-57.0b12/et.xpi) = e4bf4e11f1b70d369f9560b011682ac53049578a94137288aed8e19ef1508227
61
SIZE (xpi/firefox-i18n-56.0.2/et.xpi) = 462104
61
SIZE (xpi/firefox-i18n-57.0b12/et.xpi) = 447277
62
SHA256 (xpi/firefox-i18n-56.0.2/eu.xpi) = d47fe44fcab9328102334596678fe89289d8de44cd9018e13e1bcc70823ec6ec
62
SHA256 (xpi/firefox-i18n-57.0b12/eu.xpi) = 0425be3c9b63f2ce4fd15570b7fd5fd18fa86d8da0199e8f6fbb44fffa1aad02
63
SIZE (xpi/firefox-i18n-56.0.2/eu.xpi) = 467884
63
SIZE (xpi/firefox-i18n-57.0b12/eu.xpi) = 454671
64
SHA256 (xpi/firefox-i18n-56.0.2/fa.xpi) = 8f25e71eb0ee9ad9e90d9948012713013ee03b6fe1b3837b1d903c5102be0a93
64
SHA256 (xpi/firefox-i18n-57.0b12/fa.xpi) = 9dbd3a7d7838fc5505c0ffd2d18f6efc2dd43587bdd737193a941885105f68b8
65
SIZE (xpi/firefox-i18n-56.0.2/fa.xpi) = 522909
65
SIZE (xpi/firefox-i18n-57.0b12/fa.xpi) = 509600
66
SHA256 (xpi/firefox-i18n-56.0.2/ff.xpi) = b8416ca244cb8c99744dc3c6daa55d893754ed051ea9731f57b49edc2f0e18f1
66
SHA256 (xpi/firefox-i18n-57.0b12/ff.xpi) = a49da8d28596dea8adc51c7c809508b9c47fad4552e29ea5d73e04290a3e654d
67
SIZE (xpi/firefox-i18n-56.0.2/ff.xpi) = 463098
67
SIZE (xpi/firefox-i18n-57.0b12/ff.xpi) = 448720
68
SHA256 (xpi/firefox-i18n-56.0.2/fi.xpi) = 1c6ecc0d72a500f5a77a8fdde5e288ce2c578bc1b1de3d1a062e6d7a71765130
68
SHA256 (xpi/firefox-i18n-57.0b12/fi.xpi) = 4d0a93da393fa8a72f8b9275c5abd8433de0af18ae98d7c2b499abd54ae42fcc
69
SIZE (xpi/firefox-i18n-56.0.2/fi.xpi) = 461923
69
SIZE (xpi/firefox-i18n-57.0b12/fi.xpi) = 446316
70
SHA256 (xpi/firefox-i18n-56.0.2/fr.xpi) = 3aa8e3e74e35a4e1ca948cb83b42bb9b2c95ec6abdbc8b0872129f6f75d4e2e1
70
SHA256 (xpi/firefox-i18n-57.0b12/fr.xpi) = 0d5853862d5a4e34a3f7052d7da8f6a8450ff3d1afa1717c5f6dcbbc2da3b7a0
71
SIZE (xpi/firefox-i18n-56.0.2/fr.xpi) = 484561
71
SIZE (xpi/firefox-i18n-57.0b12/fr.xpi) = 471515
72
SHA256 (xpi/firefox-i18n-56.0.2/fy-NL.xpi) = 21b16ee4d0a232d6860c9fa6db296544e13e9500796451a98adebcdf35f88c66
72
SHA256 (xpi/firefox-i18n-57.0b12/fy-NL.xpi) = c36c9bbea4a69e79eda3922f270d41cf61e68ec1a6771e43813d8746e88159c2
73
SIZE (xpi/firefox-i18n-56.0.2/fy-NL.xpi) = 478044
73
SIZE (xpi/firefox-i18n-57.0b12/fy-NL.xpi) = 463923
74
SHA256 (xpi/firefox-i18n-56.0.2/ga-IE.xpi) = 4d780a2c0f362742f069842ae2d7ddf3dd8177e66405c9c570ef52b2e7de1f32
74
SHA256 (xpi/firefox-i18n-57.0b12/ga-IE.xpi) = aafd5de5e8ce591d6f23fa1bd2fd6025056b939a16cf4f520d20f86e3d043ab4
75
SIZE (xpi/firefox-i18n-56.0.2/ga-IE.xpi) = 489379
75
SIZE (xpi/firefox-i18n-57.0b12/ga-IE.xpi) = 475961
76
SHA256 (xpi/firefox-i18n-56.0.2/gd.xpi) = 9e4e1ffc31853fe3e0d4e9e23cd1ccdf0be1b50182cefc9581b902370a3ae2fc
76
SHA256 (xpi/firefox-i18n-57.0b12/gd.xpi) = 7f0d9559ebb46aa423dad25004472349932b12285230f5db69963dea905367a5
77
SIZE (xpi/firefox-i18n-56.0.2/gd.xpi) = 476927
77
SIZE (xpi/firefox-i18n-57.0b12/gd.xpi) = 464659
78
SHA256 (xpi/firefox-i18n-56.0.2/gl.xpi) = 7dc3615f3eca3bc09472207b8d78644923526dd51651a6a04cf8449bf78cca4b
78
SHA256 (xpi/firefox-i18n-57.0b12/gl.xpi) = f514b654dd925a7656eeff0dd2a736eede08257cbd369e885c8d962e5149c852
79
SIZE (xpi/firefox-i18n-56.0.2/gl.xpi) = 466468
79
SIZE (xpi/firefox-i18n-57.0b12/gl.xpi) = 452136
80
SHA256 (xpi/firefox-i18n-56.0.2/gn.xpi) = 32d64cb5ceb3a8b53abafd0699d9697f190e137155484fc06968efe3ab2da294
80
SHA256 (xpi/firefox-i18n-57.0b12/gn.xpi) = 13aa972d3efc44a94144954af13dcef51cc26503d907847f3dcfb5dc18080b64
81
SIZE (xpi/firefox-i18n-56.0.2/gn.xpi) = 485790
81
SIZE (xpi/firefox-i18n-57.0b12/gn.xpi) = 471955
82
SHA256 (xpi/firefox-i18n-56.0.2/gu-IN.xpi) = 574654d88abc8d620d5d29c09a281738ff463f8a0e09386373005a4c33cd7adf
82
SHA256 (xpi/firefox-i18n-57.0b12/gu-IN.xpi) = 4cafdf888b50e94228864dd82b7fdae15f4359b853639042cfde433491868f8a
83
SIZE (xpi/firefox-i18n-56.0.2/gu-IN.xpi) = 513740
83
SIZE (xpi/firefox-i18n-57.0b12/gu-IN.xpi) = 511599
84
SHA256 (xpi/firefox-i18n-56.0.2/he.xpi) = aa4437d071736c8009ff81f79cf51348fa7ce02d82dd603cc08c00997de79ddc
84
SHA256 (xpi/firefox-i18n-57.0b12/he.xpi) = 4bb2134cdc37649e661f0b6e21ef6b89c4eb12a91458b03a00e416acdceca7eb
85
SIZE (xpi/firefox-i18n-56.0.2/he.xpi) = 488495
85
SIZE (xpi/firefox-i18n-57.0b12/he.xpi) = 471921
86
SHA256 (xpi/firefox-i18n-56.0.2/hi-IN.xpi) = 9faa3d8242f2e13e82334c91018137a23a88374d6d8bcbdbca0bac69b709487d
86
SHA256 (xpi/firefox-i18n-57.0b12/hi-IN.xpi) = 9503d8b7864fd301718d70121af4832f9e715f09795ef9b6bee313986e34127f
87
SIZE (xpi/firefox-i18n-56.0.2/hi-IN.xpi) = 538303
87
SIZE (xpi/firefox-i18n-57.0b12/hi-IN.xpi) = 522335
88
SHA256 (xpi/firefox-i18n-56.0.2/hr.xpi) = 78ea8859fc47c3fd35055ad7dacd3c89192619f637d1b10a5515db49c1aabd63
88
SHA256 (xpi/firefox-i18n-57.0b12/hr.xpi) = 00d946df46cf846260e72f45288dc368f622bcc64a483acf065c5442ff0e21cd
89
SIZE (xpi/firefox-i18n-56.0.2/hr.xpi) = 475058
89
SIZE (xpi/firefox-i18n-57.0b12/hr.xpi) = 460721
90
SHA256 (xpi/firefox-i18n-56.0.2/hsb.xpi) = 7e868a01a8c881319703dd2d40aa7a90a2a6afda350a93cdee785c1cee3e334c
90
SHA256 (xpi/firefox-i18n-57.0b12/hsb.xpi) = 813af7f30b4b21d3263191a889fc4cda1a67e1d2fefed9fa33d18ad125f8c1af
91
SIZE (xpi/firefox-i18n-56.0.2/hsb.xpi) = 487599
91
SIZE (xpi/firefox-i18n-57.0b12/hsb.xpi) = 475137
92
SHA256 (xpi/firefox-i18n-56.0.2/hu.xpi) = ba7c06ffe790cb31450c47ffc73c0ef402e759e8d6798c284ab3004aa9b1a154
92
SHA256 (xpi/firefox-i18n-57.0b12/hu.xpi) = 08156d6649eb6a13b6fbedf5f8dae15b12ee364ae12b27a5185f7b3f4a15d6eb
93
SIZE (xpi/firefox-i18n-56.0.2/hu.xpi) = 490102
93
SIZE (xpi/firefox-i18n-57.0b12/hu.xpi) = 475303
94
SHA256 (xpi/firefox-i18n-56.0.2/hy-AM.xpi) = 5a78e97fe3b0a106a9839714e2a811d52501e5c427ba9c943bdcbdd2beb303cb
94
SHA256 (xpi/firefox-i18n-57.0b12/hy-AM.xpi) = b6615791186bdc6ca39ffe6cfba4f9b84231c14baaa40261445fa6f5e4aed1b8
95
SIZE (xpi/firefox-i18n-56.0.2/hy-AM.xpi) = 527711
95
SIZE (xpi/firefox-i18n-57.0b12/hy-AM.xpi) = 510399
96
SHA256 (xpi/firefox-i18n-56.0.2/id.xpi) = 916e89bb2bf8fcd0671a1cfe34944643e3f3bb1aeccf6bc7b86329e1f3261cb3
96
SHA256 (xpi/firefox-i18n-57.0b12/id.xpi) = 5fdf85e7ff40395c8670cb6e13de6edc6588a61cfdec9f03dd0a57aba07cb544
97
SIZE (xpi/firefox-i18n-56.0.2/id.xpi) = 459066
97
SIZE (xpi/firefox-i18n-57.0b12/id.xpi) = 442758
98
SHA256 (xpi/firefox-i18n-56.0.2/is.xpi) = f424cf833f52cb6a57933e6173bad7a1df2e01b9233feb0abfab0e9f3fd13a78
98
SHA256 (xpi/firefox-i18n-57.0b12/is.xpi) = 6d2740ccf0d9807b597aa8e186817024428df88bf3042af31f7d6f30895ac93b
99
SIZE (xpi/firefox-i18n-56.0.2/is.xpi) = 467447
99
SIZE (xpi/firefox-i18n-57.0b12/is.xpi) = 452656
100
SHA256 (xpi/firefox-i18n-56.0.2/it.xpi) = 49e286eecc3e31a2581f728783f25717b994e466a1329f5121efff04d3400ccd
100
SHA256 (xpi/firefox-i18n-57.0b12/it.xpi) = 385606c461a24d9b6828766709966031029413d695b99f39eaf02db4a4f61b8d
101
SIZE (xpi/firefox-i18n-56.0.2/it.xpi) = 358695
101
SIZE (xpi/firefox-i18n-57.0b12/it.xpi) = 346957
102
SHA256 (xpi/firefox-i18n-56.0.2/ja.xpi) = f981b5dd41b2d2479034720d4d8d4ec98b936e5d4b092e954057a3135b802d93
102
SHA256 (xpi/firefox-i18n-57.0b12/ja.xpi) = 7f8c79610ee34075e6aef58ddd596c93fba15e009801e6c0bd5718eef1f19578
103
SIZE (xpi/firefox-i18n-56.0.2/ja.xpi) = 527926
103
SIZE (xpi/firefox-i18n-57.0b12/ja.xpi) = 508431
104
SHA256 (xpi/firefox-i18n-56.0.2/ka.xpi) = c84ec7d427a84290cc760cf35a900a188621c7c8fbc3b48f63d7c000642eb3c1
104
SHA256 (xpi/firefox-i18n-57.0b12/ka.xpi) = 3263099ec73a6e2471862be3c167f921a711f9acb588d96cd8aa189cc7e9dd90
105
SIZE (xpi/firefox-i18n-56.0.2/ka.xpi) = 509096
105
SIZE (xpi/firefox-i18n-57.0b12/ka.xpi) = 490931
106
SHA256 (xpi/firefox-i18n-56.0.2/kab.xpi) = e8ffa26d1acef0cfb554eced0b86656c4ac504b5459bb8fd3eb86c5292df7b3e
106
SHA256 (xpi/firefox-i18n-57.0b12/kab.xpi) = aef7b65162f5a3ea7ee31ba2cf9ab4c1e55900ca791d894e540ecb1124e5ec56
107
SIZE (xpi/firefox-i18n-56.0.2/kab.xpi) = 477420
107
SIZE (xpi/firefox-i18n-57.0b12/kab.xpi) = 461530
108
SHA256 (xpi/firefox-i18n-56.0.2/kk.xpi) = 5c918b32273f6a107c6a8d78be58c9e757884dcc28951949db39bba705c95d37
108
SHA256 (xpi/firefox-i18n-57.0b12/kk.xpi) = 0ef37f26c013c30cdcb079c5950e7814af9f06f61c414d147a980948d8f55dc0
109
SIZE (xpi/firefox-i18n-56.0.2/kk.xpi) = 534932
109
SIZE (xpi/firefox-i18n-57.0b12/kk.xpi) = 517839
110
SHA256 (xpi/firefox-i18n-56.0.2/km.xpi) = 52c280027d92449fda3cd321a091b2f65f401d417bff7fdce692191b748f99c2
110
SHA256 (xpi/firefox-i18n-57.0b12/km.xpi) = 5246f724bf7d6a2b043028f56cfb08f7aa4f8e8f0ccdac819c4c8aa041b805f2
111
SIZE (xpi/firefox-i18n-56.0.2/km.xpi) = 549344
111
SIZE (xpi/firefox-i18n-57.0b12/km.xpi) = 530080
112
SHA256 (xpi/firefox-i18n-56.0.2/kn.xpi) = 03120c4eb742e750c46f266fceb69cd1a8b97d3cf5bd0f2a55485d25af502272
112
SHA256 (xpi/firefox-i18n-57.0b12/kn.xpi) = 6cbac3ed126c129b22f80a15165ab22d994a119f7e7b76ddc0add78b55feb8fd
113
SIZE (xpi/firefox-i18n-56.0.2/kn.xpi) = 545517
113
SIZE (xpi/firefox-i18n-57.0b12/kn.xpi) = 531239
114
SHA256 (xpi/firefox-i18n-56.0.2/ko.xpi) = 60171b4d104a456df4a7fc60dc506eaa0ced1a32a216461bbddd2a215200f61b
114
SHA256 (xpi/firefox-i18n-57.0b12/ko.xpi) = e49b316171a8e621f9cafda29b57332dd511a08b446a7da52436a4acb5001e20
115
SIZE (xpi/firefox-i18n-56.0.2/ko.xpi) = 502895
115
SIZE (xpi/firefox-i18n-57.0b12/ko.xpi) = 486203
116
SHA256 (xpi/firefox-i18n-56.0.2/lij.xpi) = b0b07f9e4be734145b6472ef506b4cb99c85eea98ece31dad6efa2003d59f893
116
SHA256 (xpi/firefox-i18n-57.0b12/lij.xpi) = 96280b88461e4c30f118cc1c85962ae3ace203d6d5d3dbf84cc97854c133b3c1
117
SIZE (xpi/firefox-i18n-56.0.2/lij.xpi) = 467275
117
SIZE (xpi/firefox-i18n-57.0b12/lij.xpi) = 452340
118
SHA256 (xpi/firefox-i18n-56.0.2/lt.xpi) = 09302dfb196300ae49c47cf4a9a1ac9ec4df954defa8abd19bdd985852af94b5
118
SHA256 (xpi/firefox-i18n-57.0b12/lt.xpi) = 6a97705c78e8d278770aef4f76e66b223c7ceab2278202f9eb85e9fcf5ef3369
119
SIZE (xpi/firefox-i18n-56.0.2/lt.xpi) = 488753
119
SIZE (xpi/firefox-i18n-57.0b12/lt.xpi) = 473661
120
SHA256 (xpi/firefox-i18n-56.0.2/lv.xpi) = 9f47b7ef87c55320d6d67a15f61a87b0cc9e891a5aeac382badfe3e3b27b51e4
120
SHA256 (xpi/firefox-i18n-57.0b12/lv.xpi) = 7e22d67417e8bffcee9f78fba2fa8e8388b1cae7a3bf52d3edb4bdca983d1c9a
121
SIZE (xpi/firefox-i18n-56.0.2/lv.xpi) = 481628
121
SIZE (xpi/firefox-i18n-57.0b12/lv.xpi) = 465242
122
SHA256 (xpi/firefox-i18n-56.0.2/mai.xpi) = f16a670648ebdc3b914620d7fbe4f6095952f65c658901ecfcfbbc37645f5fdb
122
SHA256 (xpi/firefox-i18n-57.0b12/mai.xpi) = 6219e7c025fdf3d55e78f7919892490d980f79fe83607fcc19eb41fb7ca008d9
123
SIZE (xpi/firefox-i18n-56.0.2/mai.xpi) = 524702
123
SIZE (xpi/firefox-i18n-57.0b12/mai.xpi) = 507395
124
SHA256 (xpi/firefox-i18n-56.0.2/mk.xpi) = e537b92b6af439a1c1b9e667939f146b7a2ad17eae3d4f9075d1ad70bb958b0f
124
SHA256 (xpi/firefox-i18n-57.0b12/mk.xpi) = e36280ca18da822541ba6cc9bb3e44b4e781edcc921beb33ecf56b24973afee7
125
SIZE (xpi/firefox-i18n-56.0.2/mk.xpi) = 507818
125
SIZE (xpi/firefox-i18n-57.0b12/mk.xpi) = 490528
126
SHA256 (xpi/firefox-i18n-56.0.2/ml.xpi) = 5714a5481f111e1467a596973c824e9d09cb1e464cc74c332582d5079b495efd
126
SHA256 (xpi/firefox-i18n-57.0b12/ml.xpi) = 5cde4795de8ac98c41c73ae77e8d689f5ecad381f3bad697c2a9ab0ee9b6c7c3
127
SIZE (xpi/firefox-i18n-56.0.2/ml.xpi) = 547547
127
SIZE (xpi/firefox-i18n-57.0b12/ml.xpi) = 528255
128
SHA256 (xpi/firefox-i18n-56.0.2/mr.xpi) = 2993e10fa67e526691859805b5bf928be5607d59ceedbbb7aa68962688fa6723
128
SHA256 (xpi/firefox-i18n-57.0b12/mr.xpi) = 7babf73ace523375cdee981c885280a499b859af09d2393b1230b18fa1224f31
129
SIZE (xpi/firefox-i18n-56.0.2/mr.xpi) = 536673
129
SIZE (xpi/firefox-i18n-57.0b12/mr.xpi) = 518645
130
SHA256 (xpi/firefox-i18n-56.0.2/ms.xpi) = 7b4a6353a3b2e6e2fc923dc43191c0bc463aeacc9d9eaadb032f93f00376b6df
130
SHA256 (xpi/firefox-i18n-57.0b12/ms.xpi) = 2b3316cfff25ec677b0f6d4bc4bb76663cadc360868c867461e511fe512417ab
131
SIZE (xpi/firefox-i18n-56.0.2/ms.xpi) = 466107
131
SIZE (xpi/firefox-i18n-57.0b12/ms.xpi) = 449999
132
SHA256 (xpi/firefox-i18n-56.0.2/my.xpi) = 9ef461ae9ec46bc6198456411232ed37a0ed68f11d4bc587d2b8b4d8247868d5
132
SHA256 (xpi/firefox-i18n-57.0b12/my.xpi) = 8b9cbb4bc8e7dec11a30187acf7f74568249324afd7cc9587e8f3e489ccb1088
133
SIZE (xpi/firefox-i18n-56.0.2/my.xpi) = 536722
133
SIZE (xpi/firefox-i18n-57.0b12/my.xpi) = 517703
134
SHA256 (xpi/firefox-i18n-56.0.2/nb-NO.xpi) = ee407654fbfad2523ec72fc921b9072772bacc231636b460ac239c406a43132f
134
SHA256 (xpi/firefox-i18n-57.0b12/nb-NO.xpi) = ab56bbb8dc8cf147ffd00e2c8d7c59eb62e4c757d0f1d355845f20513ab9f862
135
SIZE (xpi/firefox-i18n-56.0.2/nb-NO.xpi) = 465575
135
SIZE (xpi/firefox-i18n-57.0b12/nb-NO.xpi) = 450305
136
SHA256 (xpi/firefox-i18n-56.0.2/nl.xpi) = bbba1d13636b0f03868d202893eb995f3112a56ac2453bbdde6b8fb856fe49b1
136
SHA256 (xpi/firefox-i18n-57.0b12/nl.xpi) = 72cd020ae95c47b1189d0311f44548c4619c63c6b187067fd3a5b36f98e17d29
137
SIZE (xpi/firefox-i18n-56.0.2/nl.xpi) = 469053
137
SIZE (xpi/firefox-i18n-57.0b12/nl.xpi) = 457213
138
SHA256 (xpi/firefox-i18n-56.0.2/nn-NO.xpi) = 8120d52f0e9a0ecd870a0ea0d3b887df12b129d3bfda7c83f09e4036907d08e6
138
SHA256 (xpi/firefox-i18n-57.0b12/nn-NO.xpi) = 0d51ffa8f3eae61c4f45f47be9d7e9a4d941a376b7e4c84aa4075ce409a245c9
139
SIZE (xpi/firefox-i18n-56.0.2/nn-NO.xpi) = 466208
139
SIZE (xpi/firefox-i18n-57.0b12/nn-NO.xpi) = 450730
140
SHA256 (xpi/firefox-i18n-56.0.2/or.xpi) = 325acd5539ec48f65320ff0f5768fbdced82c788750f7c0cd00bf2a264751e32
140
SHA256 (xpi/firefox-i18n-57.0b12/or.xpi) = cf835b40936e1f65915af8affb889264a3246c457a4f2406976356af6e82497f
141
SIZE (xpi/firefox-i18n-56.0.2/or.xpi) = 518165
141
SIZE (xpi/firefox-i18n-57.0b12/or.xpi) = 500864
142
SHA256 (xpi/firefox-i18n-56.0.2/pa-IN.xpi) = 2e3bcfc268606f1496226ca549df40e9c6b8b9f972cdd7f84d4d5c4b32173294
142
SHA256 (xpi/firefox-i18n-57.0b12/pa-IN.xpi) = f6d86a42582c443bdcbda753c6b30763955f15f9b46e0c5e88be1374d978a205
143
SIZE (xpi/firefox-i18n-56.0.2/pa-IN.xpi) = 509046
143
SIZE (xpi/firefox-i18n-57.0b12/pa-IN.xpi) = 490593
144
SHA256 (xpi/firefox-i18n-56.0.2/pl.xpi) = c6123361207e67bfd6f859c65c369fa0b22561fbb46b548d9b322433f209a712
144
SHA256 (xpi/firefox-i18n-57.0b12/pl.xpi) = 71c8fb267b40b32190ca52aae324aeb847b418e4a2d9ee7df01344e7015cf667
145
SIZE (xpi/firefox-i18n-56.0.2/pl.xpi) = 377524
145
SIZE (xpi/firefox-i18n-57.0b12/pl.xpi) = 363377
146
SHA256 (xpi/firefox-i18n-56.0.2/pt-BR.xpi) = 3a45de0fd1d0b18123e4f97de1de8f57c043a8c621a02f5267643fc5fb12c8bf
146
SHA256 (xpi/firefox-i18n-57.0b12/pt-BR.xpi) = 9d118397a5400a010f0f19378c33b880032d7f5cf323ce97283c5cdb0b0d6fbc
147
SIZE (xpi/firefox-i18n-56.0.2/pt-BR.xpi) = 470954
147
SIZE (xpi/firefox-i18n-57.0b12/pt-BR.xpi) = 455251
148
SHA256 (xpi/firefox-i18n-56.0.2/pt-PT.xpi) = b8412464435c2e3c79017bc7ecc6b7b7d7715b1b47d0ca5f6e7c320d2c2b87d1
148
SHA256 (xpi/firefox-i18n-57.0b12/pt-PT.xpi) = 9e60affb7922027e072a0a6a7054a5f7f0e525276057eaa3a5dfc0f8cfed23ac
149
SIZE (xpi/firefox-i18n-56.0.2/pt-PT.xpi) = 472803
149
SIZE (xpi/firefox-i18n-57.0b12/pt-PT.xpi) = 458681
150
SHA256 (xpi/firefox-i18n-56.0.2/rm.xpi) = 2054926b1f43459aa857234466b686553555e2afc2e6072ef3883f28b2ebc676
150
SHA256 (xpi/firefox-i18n-57.0b12/rm.xpi) = 1c955b1a7652c54d8de0acce6901b7537fbb35744cea508e1c9724413c4735db
151
SIZE (xpi/firefox-i18n-56.0.2/rm.xpi) = 467019
151
SIZE (xpi/firefox-i18n-57.0b12/rm.xpi) = 451057
152
SHA256 (xpi/firefox-i18n-56.0.2/ro.xpi) = d69ce50c34f429d4a6724b4b8d954bb3f78e5a7fb42302c2e9de9e5f870c4e0e
152
SHA256 (xpi/firefox-i18n-57.0b12/ro.xpi) = 3beb60c437552d2f59f9c64e5ade243e537d8b29498282bdabbeb9baa8cb84e0
153
SIZE (xpi/firefox-i18n-56.0.2/ro.xpi) = 470785
153
SIZE (xpi/firefox-i18n-57.0b12/ro.xpi) = 455307
154
SHA256 (xpi/firefox-i18n-56.0.2/ru.xpi) = 2339cce445c2c01de77fd89079c121301dfcc082f9f8e3b0f640d0f42a648cac
154
SHA256 (xpi/firefox-i18n-57.0b12/ru.xpi) = 107b76609e32c81a6343001cfab656791482e0286e75e9aea39cef1239f1ecb4
155
SIZE (xpi/firefox-i18n-56.0.2/ru.xpi) = 541437
155
SIZE (xpi/firefox-i18n-57.0b12/ru.xpi) = 525390
156
SHA256 (xpi/firefox-i18n-56.0.2/si.xpi) = 79c3fa18f421923b48505b74e39cd4fab474685584bb5daf71f41ebd8a388402
156
SHA256 (xpi/firefox-i18n-57.0b12/si.xpi) = 94385e7462a2baf65244192835238ad1ca8c0951b70d44ce696e7536687b99c9
157
SIZE (xpi/firefox-i18n-56.0.2/si.xpi) = 515921
157
SIZE (xpi/firefox-i18n-57.0b12/si.xpi) = 498324
158
SHA256 (xpi/firefox-i18n-56.0.2/sk.xpi) = 0292ae81d9ae0af15489b2b420f3156cb2f7266cd881deaa4c9e164c987271c7
158
SHA256 (xpi/firefox-i18n-57.0b12/sk.xpi) = 580639de005cf7a7d5f469da6b195a5d84f3c747839615d4deb3616d1fa72fcd
159
SIZE (xpi/firefox-i18n-56.0.2/sk.xpi) = 495563
159
SIZE (xpi/firefox-i18n-57.0b12/sk.xpi) = 479104
160
SHA256 (xpi/firefox-i18n-56.0.2/sl.xpi) = bea8af482218c1bfde800e3461f64d008b46b1419745127fe838a29724098b5f
160
SHA256 (xpi/firefox-i18n-57.0b12/sl.xpi) = 818a9f42fb804109b728dfbab3a327c0c20fef2d11642000ed72efddbac0e7bc
161
SIZE (xpi/firefox-i18n-56.0.2/sl.xpi) = 473806
161
SIZE (xpi/firefox-i18n-57.0b12/sl.xpi) = 458337
162
SHA256 (xpi/firefox-i18n-56.0.2/son.xpi) = 6f93b52c42355adafc0778516defce16af99a17ee41ec0d25003ab39bfc6dda1
162
SHA256 (xpi/firefox-i18n-57.0b12/son.xpi) = 6fa42e977fe73ab7f5ba40dd365e0c7f27b05aeb4653994bfaa5ef589675fca9
163
SIZE (xpi/firefox-i18n-56.0.2/son.xpi) = 464322
163
SIZE (xpi/firefox-i18n-57.0b12/son.xpi) = 450928
164
SHA256 (xpi/firefox-i18n-56.0.2/sq.xpi) = 867d12980a8d3ee7ae28faa4f09f63ed405f9ea18b6c0c776da8194ecda937ed
164
SHA256 (xpi/firefox-i18n-57.0b12/sq.xpi) = e9c498badc80686e129fde96a219136032591c5e684e9c56bd16a8ab42c2a4a7
165
SIZE (xpi/firefox-i18n-56.0.2/sq.xpi) = 479511
165
SIZE (xpi/firefox-i18n-57.0b12/sq.xpi) = 465051
166
SHA256 (xpi/firefox-i18n-56.0.2/sr.xpi) = b300ada0279186be68dbf292d41d446828acc71e3dcca94cf88a2ef34b38abc9
166
SHA256 (xpi/firefox-i18n-57.0b12/sr.xpi) = 1f1a96136b362b6f16a759969209f31722b076719bad6f3ceaecc3efc1c06ba2
167
SIZE (xpi/firefox-i18n-56.0.2/sr.xpi) = 504487
167
SIZE (xpi/firefox-i18n-57.0b12/sr.xpi) = 485722
168
SHA256 (xpi/firefox-i18n-56.0.2/sv-SE.xpi) = 0ccdf643e1f62ff1e41ceb3fe9c35191aece0efcbfc6b24293f88f7ef1d55043
168
SHA256 (xpi/firefox-i18n-57.0b12/sv-SE.xpi) = f22291ad0c4e5483576b42bfa5122afc6d4fe7a2ecfb93bd5134095ddf3ebec9
169
SIZE (xpi/firefox-i18n-56.0.2/sv-SE.xpi) = 473949
169
SIZE (xpi/firefox-i18n-57.0b12/sv-SE.xpi) = 458420
170
SHA256 (xpi/firefox-i18n-56.0.2/ta.xpi) = 0186d38239a9db92394562eb70a6960eeeee052abce62bc3672c8644a37cb859
170
SHA256 (xpi/firefox-i18n-57.0b12/ta.xpi) = 6733c475f1b07cc2d8a420b1c5cdf185ab4c43270957ec48b9afab208ab205d5
171
SIZE (xpi/firefox-i18n-56.0.2/ta.xpi) = 530646
171
SIZE (xpi/firefox-i18n-57.0b12/ta.xpi) = 513225
172
SHA256 (xpi/firefox-i18n-56.0.2/te.xpi) = 789359330bdfefb1fc379582b098c040cdb6a46f770e2c80b1695a7eb634db40
172
SHA256 (xpi/firefox-i18n-57.0b12/te.xpi) = 77b27d2a0cbb23eb07de9b0350dd1d391598e03eedb41c85cbe8fc91e7c2f6ba
173
SIZE (xpi/firefox-i18n-56.0.2/te.xpi) = 549585
173
SIZE (xpi/firefox-i18n-57.0b12/te.xpi) = 530692
174
SHA256 (xpi/firefox-i18n-56.0.2/th.xpi) = abeb0f7ff018d44efbcea4cba5c0c62a78f42f6395ea1535f757f2045064c880
174
SHA256 (xpi/firefox-i18n-57.0b12/th.xpi) = 695f5133299c3fd4821ea6eaf2039c3a0c5fa73821e2e667f96a2bec08aa61cf
175
SIZE (xpi/firefox-i18n-56.0.2/th.xpi) = 520297
175
SIZE (xpi/firefox-i18n-57.0b12/th.xpi) = 502206
176
SHA256 (xpi/firefox-i18n-56.0.2/tr.xpi) = b3798722e3a732e422a1fbff8d1c9ca7716b3fe9b2f21cc219432ec998556e26
176
SHA256 (xpi/firefox-i18n-57.0b12/tr.xpi) = 9048ff16d4c959e314e00271a929d6d3e833d86b72436d091a0f9619bd7bcb2f
177
SIZE (xpi/firefox-i18n-56.0.2/tr.xpi) = 480549
177
SIZE (xpi/firefox-i18n-57.0b12/tr.xpi) = 464261
178
SHA256 (xpi/firefox-i18n-56.0.2/uk.xpi) = 6854f076f5ef93e72a4f38f03a8dadc61e3a2f8afa402783bbd00bcc63b6f14f
178
SHA256 (xpi/firefox-i18n-57.0b12/uk.xpi) = bd9bbf6d74b991a439d453078573374b4d6ef6583f48cfd05c06fbdc96707007
179
SIZE (xpi/firefox-i18n-56.0.2/uk.xpi) = 535436
179
SIZE (xpi/firefox-i18n-57.0b12/uk.xpi) = 516746
180
SHA256 (xpi/firefox-i18n-56.0.2/ur.xpi) = 01a4d64725be568e148d88dab405545f76a24a695d499a236a2be0599489324a
180
SHA256 (xpi/firefox-i18n-57.0b12/ur.xpi) = 1d60d039f4463280d97b0ce2562a55a0127fd4b14b558f4f585896597274198b
181
SIZE (xpi/firefox-i18n-56.0.2/ur.xpi) = 527354
181
SIZE (xpi/firefox-i18n-57.0b12/ur.xpi) = 510965
182
SHA256 (xpi/firefox-i18n-56.0.2/uz.xpi) = 79092d2f830adbf05cc884aa014fa9348e3449fa206cf91286d5bfb40ebe729c
182
SHA256 (xpi/firefox-i18n-57.0b12/uz.xpi) = 9082bc671556d950ad11ac96482c03f658455fe3f985d0e985357f3e342c0461
183
SIZE (xpi/firefox-i18n-56.0.2/uz.xpi) = 475101
183
SIZE (xpi/firefox-i18n-57.0b12/uz.xpi) = 461694
184
SHA256 (xpi/firefox-i18n-56.0.2/vi.xpi) = 65633b00c1a124a23bfda2bdb7666ab8e12e113c956930cc975f838e3de04038
184
SHA256 (xpi/firefox-i18n-57.0b12/vi.xpi) = d29df71118ca2688de28641b953d239d0095eac62981f71c9f4dddbbae1e8db6
185
SIZE (xpi/firefox-i18n-56.0.2/vi.xpi) = 487150
185
SIZE (xpi/firefox-i18n-57.0b12/vi.xpi) = 471320
186
SHA256 (xpi/firefox-i18n-56.0.2/xh.xpi) = af99554dc838c042310acbb0a7c2623d61ff3b3045667cf301cffeb29821c008
186
SHA256 (xpi/firefox-i18n-57.0b12/xh.xpi) = fc747e21dd3e555c5470622abf3d407bad94d40da360f5a4db12a9750f1f651d
187
SIZE (xpi/firefox-i18n-56.0.2/xh.xpi) = 477838
187
SIZE (xpi/firefox-i18n-57.0b12/xh.xpi) = 464461
188
SHA256 (xpi/firefox-i18n-56.0.2/zh-CN.xpi) = f2a1bb04222fbca3845b00694342a74c8d54cbf1a64104d96f1856879aed0abf
188
SHA256 (xpi/firefox-i18n-57.0b12/zh-CN.xpi) = 808519ac8926b4a60d732cc4bcb4124d089bab17368cba9b7aba6add5adb298e
189
SIZE (xpi/firefox-i18n-56.0.2/zh-CN.xpi) = 498979
189
SIZE (xpi/firefox-i18n-57.0b12/zh-CN.xpi) = 482293
190
SHA256 (xpi/firefox-i18n-56.0.2/zh-TW.xpi) = 8c547d631522048d060be5305c277024e8038386dcad232ed742b1edf14a9471
190
SHA256 (xpi/firefox-i18n-57.0b12/zh-TW.xpi) = 515c835c6cce5321d7377c1b415ced2ae50de48b33f8e1e5bae259031343c3d8
191
SIZE (xpi/firefox-i18n-56.0.2/zh-TW.xpi) = 497765
191
SIZE (xpi/firefox-i18n-57.0b12/zh-TW.xpi) = 481042
(-)b/www/firefox/Makefile (-6 / +5 lines)
Lines 2-10 Link Here
2
# $FreeBSD$
2
# $FreeBSD$
3
3
4
PORTNAME=	firefox
4
PORTNAME=	firefox
5
DISTVERSION=	56.0.2
5
DISTVERSION=	57.0b12
6
DISTVERSIONSUFFIX=.source
6
DISTVERSIONSUFFIX=.source
7
PORTREVISION=	3
8
PORTEPOCH=	1
7
PORTEPOCH=	1
9
CATEGORIES=	www ipv6
8
CATEGORIES=	www ipv6
10
MASTER_SITES=	MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
9
MASTER_SITES=	MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
Lines 13-28 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \ Link Here
13
MAINTAINER=	gecko@FreeBSD.org
12
MAINTAINER=	gecko@FreeBSD.org
14
COMMENT=	Web browser based on the browser portion of Mozilla
13
COMMENT=	Web browser based on the browser portion of Mozilla
15
14
16
BUILD_DEPENDS=	nspr>=4.16:devel/nspr \
15
BUILD_DEPENDS=	nspr>=4.17:devel/nspr \
17
		nss>=3.32.1:security/nss \
16
		nss>=3.33:security/nss \
18
		icu>=59.1,1:devel/icu \
17
		icu>=59.1,1:devel/icu \
19
		libevent>=2.1.8:devel/libevent \
18
		libevent>=2.1.8:devel/libevent \
20
		harfbuzz>=1.4.7:print/harfbuzz \
19
		harfbuzz>=1.5.1:print/harfbuzz \
21
		graphite2>=1.3.10:graphics/graphite2 \
20
		graphite2>=1.3.10:graphics/graphite2 \
22
		png>=1.6.31:graphics/png \
21
		png>=1.6.31:graphics/png \
23
		libvorbis>=1.3.5,3:audio/libvorbis \
22
		libvorbis>=1.3.5,3:audio/libvorbis \
24
		libvpx>=1.5.0:multimedia/libvpx \
23
		libvpx>=1.5.0:multimedia/libvpx \
25
		sqlite3>=3.19.3:databases/sqlite3 \
24
		sqlite3>=3.20.1:databases/sqlite3 \
26
		${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3 \
25
		${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3 \
27
		v4l_compat>0:multimedia/v4l_compat \
26
		v4l_compat>0:multimedia/v4l_compat \
28
		autoconf-2.13:devel/autoconf213 \
27
		autoconf-2.13:devel/autoconf213 \
(-)b/www/firefox/distinfo (-3 / +3 lines)
Lines 1-3 Link Here
1
TIMESTAMP = 1508873487
1
TIMESTAMP = 1509060928
2
SHA256 (firefox-56.0.2.source.tar.xz) = 6f7d284c31383a9860d7b52f05f866526d5a7c31e3ef2959d79122ba074f5ca1
2
SHA256 (firefox-57.0b12.source.tar.xz) = 363981c9008a0ed66db9fcce3d5f84aca348391fe433e0f8bfd6f291e7fb8dad
3
SIZE (firefox-56.0.2.source.tar.xz) = 255658916
3
SIZE (firefox-57.0b12.source.tar.xz) = 250623700
(-)a/www/firefox/files/patch-bug1386887 (-89 lines)
Removed Link Here
1
commit efbe3a9af876
2
Author: Manish Goregaokar <manishearth@gmail.com>
3
Date:   Wed Aug 2 11:24:35 2017 -0700
4
5
    Bug 1386887 - Clean up FFI lifetimes to work on nightly; r=emilio
6
    
7
    MozReview-Commit-ID: 5WAIVd6p2du
8
---
9
 layout/style/ServoBindingList.h  | 4 ++--
10
 layout/style/ServoBindingTypes.h | 2 ++
11
 layout/style/ServoBindings.h     | 4 ++--
12
 layout/style/ServoBindings.toml  | 4 +++-
13
 4 files changed, 9 insertions(+), 5 deletions(-)
14
15
diff --git layout/style/ServoBindingList.h layout/style/ServoBindingList.h
16
index 6c669ebb3d3e..87ade14ea4de 100644
17
--- layout/style/ServoBindingList.h
18
+++ layout/style/ServoBindingList.h
19
@@ -379,10 +379,10 @@ SERVO_BINDING_FUNC(Servo_DeclarationBlock_HasCSSWideKeyword, bool,
20
                    nsCSSPropertyID property)
21
 // Compose animation value for a given property.
22
 // |base_values| is nsRefPtrHashtable<nsUint32HashKey, RawServoAnimationValue>.
23
-// We use void* to avoid exposing nsRefPtrHashtable in FFI.
24
+// We use RawServoAnimationValueTableBorrowed to avoid exposing nsRefPtrHashtable in FFI.
25
 SERVO_BINDING_FUNC(Servo_AnimationCompose, void,
26
                    RawServoAnimationValueMapBorrowedMut animation_values,
27
-                   void* base_values,
28
+                   RawServoAnimationValueTableBorrowed base_values,
29
                    nsCSSPropertyID property,
30
                    RawGeckoAnimationPropertySegmentBorrowed animation_segment,
31
                    RawGeckoAnimationPropertySegmentBorrowed last_segment,
32
diff --git layout/style/ServoBindingTypes.h layout/style/ServoBindingTypes.h
33
index aaf4fc27e1b9..69be15ee9f51 100644
34
--- layout/style/ServoBindingTypes.h
35
+++ layout/style/ServoBindingTypes.h
36
@@ -54,6 +54,8 @@ class nsXBLBinding;
37
 using mozilla::dom::StyleChildrenIterator;
38
 using mozilla::ServoElementSnapshot;
39
 
40
+typedef void* RawServoAnimationValueTableBorrowed;
41
+
42
 typedef nsINode RawGeckoNode;
43
 typedef mozilla::dom::Element RawGeckoElement;
44
 typedef nsIDocument RawGeckoDocument;
45
diff --git layout/style/ServoBindings.h layout/style/ServoBindings.h
46
index 493ca63f932b..c6ced6d1fedb 100644
47
--- layout/style/ServoBindings.h
48
+++ layout/style/ServoBindings.h
49
@@ -268,9 +268,9 @@ double Gecko_GetPositionInSegment(
50
 // Get servo's AnimationValue for |aProperty| from the cached base style
51
 // |aBaseStyles|.
52
 // |aBaseStyles| is nsRefPtrHashtable<nsUint32HashKey, RawServoAnimationValue>.
53
-// We use void* to avoid exposing nsRefPtrHashtable in FFI.
54
+// We use RawServoAnimationValueTableBorrowed to avoid exposing nsRefPtrHashtable in FFI.
55
 RawServoAnimationValueBorrowedOrNull Gecko_AnimationGetBaseStyle(
56
-  void* aBaseStyles,
57
+  RawServoAnimationValueTableBorrowed aBaseStyles,
58
   nsCSSPropertyID aProperty);
59
 void Gecko_StyleTransition_SetUnsupportedProperty(
60
   mozilla::StyleTransition* aTransition,
61
diff --git layout/style/ServoBindings.toml layout/style/ServoBindings.toml
62
index 11e372541235..3c3902beea80 100644
63
--- layout/style/ServoBindings.toml
64
+++ layout/style/ServoBindings.toml
65
@@ -357,6 +357,7 @@ raw-lines = [
66
     "pub type ServoStyleContextBorrowed<'a> = &'a ::properties::ComputedValues;",
67
     "pub type ServoStyleContextBorrowedOrNull<'a> = Option<&'a ::properties::ComputedValues>;",
68
     "pub type ServoComputedDataBorrowed<'a> = &'a ServoComputedData;",
69
+    "pub type RawServoAnimationValueTableBorrowed<'a> = &'a ();"
70
 ]
71
 whitelist-functions = ["Servo_.*", "Gecko_.*"]
72
 structs-types = [
73
@@ -389,7 +390,7 @@ structs-types = [
74
     "RawGeckoPresContext",
75
     "RawGeckoPresContextOwned",
76
     "RawGeckoStyleAnimationList",
77
-    "RawGeckoStyleChildrenIteratorBorrowedMut",
78
+    "RawGeckoStyleChildrenIterator",
79
     "RawGeckoServoStyleRuleList",
80
     "RawGeckoURLExtraData",
81
     "RawGeckoXBLBinding",
82
@@ -526,6 +527,7 @@ servo-borrow-types = [
83
     "RawGeckoFontFaceRuleList",
84
     "RawGeckoServoStyleRuleList",
85
     "RawGeckoServoAnimationValueList",
86
+    "RawGeckoStyleChildrenIterator",
87
 ]
88
 fixups = [
89
     # hack for gecko-owned string
(-)a/www/firefox/files/patch-bug1386957 (-14 lines)
Removed Link Here
1
https://github.com/kinetiknz/cubeb/commit/16f9ccc064f2
2
3
--- media/libcubeb/src/cubeb_jack.cpp.orig	2017-07-07 05:37:16 UTC
4
+++ media/libcubeb/src/cubeb_jack.cpp
5
@@ -8,7 +8,9 @@
6
  */
7
 #define _DEFAULT_SOURCE
8
 #define _BSD_SOURCE
9
+#ifndef __FreeBSD__
10
 #define _POSIX_SOURCE
11
+#endif
12
 #include <dlfcn.h>
13
 #include <stdio.h>
14
 #include <string.h>
(-)a/www/firefox/files/patch-bug1393283 (-144 lines)
Removed Link Here
1
commit d20c7d929c84
2
Author: Ethan <ettseng@mozilla.com>
3
Date:   Fri Sep 1 17:29:44 2017 +0800
4
5
    Bug 1393283 - Use the last ESR version as the spoofed Firefox version. r=tihuang, r=mcmanus
6
---
7
 .../test/browser/browser_navigator.js              |  2 +-
8
 netwerk/protocol/http/nsHttpHandler.cpp            | 16 +++----
9
 .../resistfingerprinting/nsRFPService.cpp          | 56 ++++++++++++++++++++++
10
 .../components/resistfingerprinting/nsRFPService.h |  3 ++
11
 4 files changed, 66 insertions(+), 11 deletions(-)
12
13
diff --git browser/components/resistfingerprinting/test/browser/browser_navigator.js browser/components/resistfingerprinting/test/browser/browser_navigator.js
14
index 25c393d8bb2a..9f52e34a9451 100644
15
--- browser/components/resistfingerprinting/test/browser/browser_navigator.js
16
+++ browser/components/resistfingerprinting/test/browser/browser_navigator.js
17
@@ -91,7 +91,7 @@ add_task(async function setup() {
18
 
19
   let appInfo = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo);
20
   let appVersion = parseInt(appInfo.version);
21
-  let spoofedVersion = appVersion - (appVersion % 10);
22
+  let spoofedVersion = appVersion - ((appVersion - 3) % 7);
23
   spoofedUserAgent = `Mozilla/5.0 (${SPOOFED_OSCPU}; rv:${spoofedVersion}.0) Gecko/20100101 Firefox/${spoofedVersion}.0`;
24
 });
25
 
26
diff --git netwerk/protocol/http/nsHttpHandler.cpp netwerk/protocol/http/nsHttpHandler.cpp
27
index 31d0f8832732..b957d835b52f 100644
28
--- netwerk/protocol/http/nsHttpHandler.cpp
29
+++ netwerk/protocol/http/nsHttpHandler.cpp
30
@@ -461,16 +461,12 @@ nsHttpHandler::Init()
31
         mAppVersion.AssignLiteral(MOZ_APP_UA_VERSION);
32
     }
33
 
34
-    // Generating the spoofed userAgent for fingerprinting resistance.
35
-    // The browser version will be rounded down to a multiple of 10.
36
-    // By doing so, the anonymity group will cover more versions instead of one
37
-    // version.
38
-    uint32_t spoofedVersion = mAppVersion.ToInteger(&rv);
39
-    if (NS_SUCCEEDED(rv)) {
40
-        spoofedVersion = spoofedVersion - (spoofedVersion % 10);
41
-        mSpoofedUserAgent.Assign(nsPrintfCString(
42
-            "Mozilla/5.0 (%s; rv:%d.0) Gecko/%s Firefox/%d.0",
43
-            SPOOFED_OSCPU, spoofedVersion, LEGACY_BUILD_ID, spoofedVersion));
44
+    // Generating the spoofed User Agent for fingerprinting resistance.
45
+    rv = nsRFPService::GetSpoofedUserAgent(mSpoofedUserAgent);
46
+    if (NS_FAILED(rv)) {
47
+      // Empty mSpoofedUserAgent to make sure the unsuccessful spoofed UA string
48
+      // will not be used anywhere.
49
+      mSpoofedUserAgent.Truncate();
50
     }
51
 
52
     mSessionStartTime = NowInSeconds();
53
diff --git toolkit/components/resistfingerprinting/nsRFPService.cpp toolkit/components/resistfingerprinting/nsRFPService.cpp
54
index 94554200c3b8..96a2940c04a0 100644
55
--- toolkit/components/resistfingerprinting/nsRFPService.cpp
56
+++ toolkit/components/resistfingerprinting/nsRFPService.cpp
57
@@ -18,10 +18,13 @@
58
 #include "nsServiceManagerUtils.h"
59
 #include "nsString.h"
60
 #include "nsXULAppAPI.h"
61
+#include "nsPrintfCString.h"
62
 
63
 #include "nsIObserverService.h"
64
 #include "nsIPrefBranch.h"
65
 #include "nsIPrefService.h"
66
+#include "nsIXULAppInfo.h"
67
+#include "nsIXULRuntime.h"
68
 #include "nsJSUtils.h"
69
 
70
 #include "prenv.h"
71
@@ -162,6 +165,59 @@ nsRFPService::GetSpoofedPresentedFrames(double aTime, uint32_t aWidth, uint32_t
72
   return NSToIntFloor(time * sVideoFramesPerSec * ((100 - boundedDroppedRatio) / 100.0));
73
 }
74
 
75
+/* static */
76
+nsresult
77
+nsRFPService::GetSpoofedUserAgent(nsACString &userAgent)
78
+{
79
+  // This function generates the spoofed value of User Agent.
80
+  // We spoof the values of the platform and Firefox version, which could be
81
+  // used as fingerprinting sources to identify individuals.
82
+  // Reference of the format of User Agent:
83
+  // https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID/userAgent
84
+  // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent
85
+
86
+  nsresult rv;
87
+  nsCOMPtr<nsIXULAppInfo> appInfo =
88
+    do_GetService("@mozilla.org/xre/app-info;1", &rv);
89
+  NS_ENSURE_SUCCESS(rv, rv);
90
+
91
+  nsAutoCString appVersion;
92
+  rv = appInfo->GetVersion(appVersion);
93
+  NS_ENSURE_SUCCESS(rv, rv);
94
+
95
+  // The browser version will be spoofed as the last ESR version.
96
+  // By doing so, the anonymity group will cover more versions instead of one
97
+  // version.
98
+  uint32_t firefoxVersion = appVersion.ToInteger(&rv);
99
+  NS_ENSURE_SUCCESS(rv, rv);
100
+
101
+  // Starting from Firefox 10, Firefox ESR was released once every seven
102
+  // Firefox releases, e.g. Firefox 10, 17, 24, 31, and so on.
103
+  // We infer the last and closest ESR version based on this rule.
104
+  nsCOMPtr<nsIXULRuntime> runtime =
105
+    do_GetService("@mozilla.org/xre/runtime;1", &rv);
106
+  NS_ENSURE_SUCCESS(rv, rv);
107
+
108
+  nsAutoCString updateChannel;
109
+  rv = runtime->GetDefaultUpdateChannel(updateChannel);
110
+  NS_ENSURE_SUCCESS(rv, rv);
111
+
112
+  // If we are running in Firefox ESR, determine whether the formula of ESR
113
+  // version has changed.  Once changed, we must update the formula in this
114
+  // function.
115
+  if (updateChannel.Equals("esr")) {
116
+    MOZ_ASSERT(((firefoxVersion % 7) == 3),
117
+      "Please udpate ESR version formula in nsRFPService.cpp");
118
+  }
119
+
120
+  uint32_t spoofedVersion = firefoxVersion - ((firefoxVersion - 3) % 7);
121
+  userAgent.Assign(nsPrintfCString(
122
+    "Mozilla/5.0 (%s; rv:%d.0) Gecko/%s Firefox/%d.0",
123
+    SPOOFED_OSCPU, spoofedVersion, LEGACY_BUILD_ID, spoofedVersion));
124
+
125
+  return rv;
126
+}
127
+
128
 nsresult
129
 nsRFPService::Init()
130
 {
131
diff --git toolkit/components/resistfingerprinting/nsRFPService.h toolkit/components/resistfingerprinting/nsRFPService.h
132
index cf1f688bb992..bad80383883b 100644
133
--- toolkit/components/resistfingerprinting/nsRFPService.h
134
+++ toolkit/components/resistfingerprinting/nsRFPService.h
135
@@ -49,6 +49,9 @@ public:
136
   static uint32_t GetSpoofedDroppedFrames(double aTime, uint32_t aWidth, uint32_t aHeight);
137
   static uint32_t GetSpoofedPresentedFrames(double aTime, uint32_t aWidth, uint32_t aHeight);
138
 
139
+  // This method generates the spoofed value of User Agent.
140
+  static nsresult GetSpoofedUserAgent(nsACString &userAgent);
141
+
142
 private:
143
   nsresult Init();
144
 
(-)a/www/firefox/files/patch-bug1401573 (-27 lines)
Removed Link Here
1
commit d0ed05261f20
2
Author: jason laster <jlaster@mozilla.com>
3
Date:   Wed Sep 20 10:52:54 2017 -0400
4
5
    Bug 1401573 - Fix PoE, Link, and linux issue. r=nchevobbe
6
    
7
    MozReview-Commit-ID: 35TA6bhW1Wr
8
---
9
 devtools/client/debugger/new/debugger.js           | 68 +++++++++++++++++-----
10
 devtools/client/debugger/new/panel.js              | 27 ++++++++-
11
 .../new/test/mochitest/browser_dbg-expressions.js  |  2 +-
12
 3 files changed, 79 insertions(+), 18 deletions(-)
13
14
diff --git devtools/client/debugger/new/debugger.js devtools/client/debugger/new/debugger.js
15
index f52a3e380ab6..c1213180cb13 100644
16
--- devtools/client/debugger/new/debugger.js
17
+++ devtools/client/debugger/new/debugger.js
18
@@ -29493,7 +29493,8 @@ return /******/ (function(modules) { // webpackBootstr
19
 	}
20
 
21
 	function getKeyForOS(os, action) {
22
-	  return KEYS[os][action];
23
+         var osActions = KEYS[os] || KEYS.Linux;
24
+         return osActions[action];
25
 	}
26
 
27
 	function formatKey(action) {
(-)a/www/firefox/files/patch-bug1409680 (-27 lines)
Removed Link Here
1
Bug 1409680 - Extend --disable-debug-symbols to Rust code.
2
3
This reduces disk I/O and memory usage during build that already lacks
4
debugging symbols from C++ code, allowing to use more jobs on 32bit hosts.
5
6
--disable-debug-symbols build on FreeBSD 10.3 i386 (8 cores) host:
7
Max RSS before:  libxul - 612 Mb, libgkrust - 1908 Mb
8
Max RSS after:   libxul - 444 Mb, libgkrust - 1471 Mb
9
Binary before:   libxul - 203 Mb, libgkrust -  732 Mb
10
Binary after:    libxul - 123 Mb, libgkrust -  301 Mb
11
12
--- config/rules.mk.orig	2017-09-14 20:15:53 UTC
13
+++ config/rules.mk
14
@@ -906,11 +906,13 @@ ifdef MOZ_USING_SCCACHE
15
 sccache_wrap := RUSTC_WRAPPER='$(CCACHE)'
16
 endif
17
 
18
+ifdef MOZ_DEBUG_SYMBOLS
19
 # XXX hack to work around dsymutil failing on cross-OSX builds (bug 1380381)
20
 ifeq ($(HOST_OS_ARCH)-$(OS_ARCH),Linux-Darwin)
21
 default_rustflags += -C debuginfo=1
22
 else
23
 default_rustflags += -C debuginfo=2
24
+endif
25
 endif
26
 
27
 # We use the + prefix to pass down the jobserver fds to cargo, but we
(-)b/www/firefox/files/patch-bug847568 (-1 / +1 lines)
Lines 261-267 index 9297e4d6f501..d8e273887e4b 100644 Link Here
261
+option('--with-system-harfbuzz',
261
+option('--with-system-harfbuzz',
262
+       help="Use system harfbuzz (located with pkgconfig)")
262
+       help="Use system harfbuzz (located with pkgconfig)")
263
+
263
+
264
+system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.4.7',
264
+system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.5.1',
265
+                                    when='--with-system-harfbuzz')
265
+                                    when='--with-system-harfbuzz')
266
+
266
+
267
+set_config('MOZ_SYSTEM_HARFBUZZ', depends_if(system_harfbuzz)(lambda _: True))
267
+set_config('MOZ_SYSTEM_HARFBUZZ', depends_if(system_harfbuzz)(lambda _: True))
(-)b/www/firefox/files/patch-build-pgo-profileserver.py (-10 / +10 lines)
Lines 1-11 Link Here
1
--- build/pgo/profileserver.py.orig	2011-02-24 21:49:47.000000000 +0100
1
--- build/pgo/profileserver.py.orig	2017-09-15 04:15:39 UTC
2
+++ build/pgo/profileserver.py	2011-02-24 21:50:30.000000000 +0100
2
+++ build/pgo/profileserver.py
3
@@ -59,7 +59,7 @@ if __name__ == '__main__':
3
@@ -87,7 +87,7 @@ if __name__ == '__main__':
4
       env["MOZ_JAR_LOG_FILE"] = os.path.abspath(jarlog)
4
             env["MOZ_JAR_LOG_FILE"] = os.path.abspath(jarlog)
5
       print "jarlog: %s" % env["MOZ_JAR_LOG_FILE"]
5
             print "jarlog: %s" % env["MOZ_JAR_LOG_FILE"]
6
 
6
 
7
-    cmdargs = ["http://localhost:%d/index.html" % PORT]
7
-        cmdargs = ["http://localhost:%d/index.html" % PORT]
8
+    cmdargs = ["http://127.0.0.1:%d/index.html" % PORT]
8
+        cmdargs = ["http://127.0.0.1:%d/index.html" % PORT]
9
     runner = FirefoxRunner(profile=profile,
9
         runner = FirefoxRunner(profile=profile,
10
                            binary=build.get_binary_path(where="staged-package"),
10
                                binary=build.get_binary_path(
11
                            cmdargs=cmdargs,
11
                                    where="staged-package"),
(-)a/www/firefox/files/patch-servo17934 (-53 lines)
Removed Link Here
1
commit 4cbdfa028752
2
Author: Manish Goregaokar <manishsmail@gmail.com>
3
Date:   Tue Aug 1 12:57:42 2017 -0500
4
5
    servo: Merge #17934 - Remove doc comment on statement (from Manishearth:doc-comment); r=canaltinova
6
    
7
    rustc warns about these now
8
    
9
    Source-Repo: https://github.com/servo/servo
10
    Source-Revision: b49311c65a083a9b8eb03741bf7ea980b64f1e03
11
    
12
    --HG--
13
    extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear
14
    extra : subtree_revision : 6b3c7d7f4ffeb9e271c52d418cda42cac5dd378d
15
---
16
 servo/components/style/values/specified/image.rs | 6 +++---
17
 1 file changed, 3 insertions(+), 3 deletions(-)
18
19
diff --git servo/components/style/values/specified/image.rs servo/components/style/values/specified/image.rs
20
index 37ed00ccf443..687c6f17d432 100644
21
--- servo/components/style/values/specified/image.rs
22
+++ servo/components/style/values/specified/image.rs
23
@@ -686,14 +686,14 @@ impl LineDirection {
24
         input.try(|i| {
25
             let to_ident = i.try(|i| i.expect_ident_matching("to"));
26
             match *compat_mode {
27
-                /// `to` keyword is mandatory in modern syntax.
28
+                // `to` keyword is mandatory in modern syntax.
29
                 CompatMode::Modern => to_ident?,
30
                 // Fall back to Modern compatibility mode in case there is a `to` keyword.
31
                 // According to Gecko, `-moz-linear-gradient(to ...)` should serialize like
32
                 // `linear-gradient(to ...)`.
33
                 CompatMode::Moz if to_ident.is_ok() => *compat_mode = CompatMode::Modern,
34
-                /// There is no `to` keyword in webkit prefixed syntax. If it's consumed,
35
-                /// parsing should throw an error.
36
+                // There is no `to` keyword in webkit prefixed syntax. If it's consumed,
37
+                // parsing should throw an error.
38
                 CompatMode::WebKit if to_ident.is_ok() => {
39
                     return Err(SelectorParseError::UnexpectedIdent("to".into()).into())
40
                 },
41
diff --git servo/components/style/properties/gecko.mako.rs servo/components/style/properties/gecko.mako.rs
42
index 37ed00ccf443..687c6f17d432 100644
43
--- servo/components/style/properties/gecko.mako.rs
44
+++ servo/components/style/properties/gecko.mako.rs
45
@@ -2081,7 +2081,7 @@ fn static_assert() {
46
             return (parent_size, parent_unconstrained_size)
47
         }
48
 
49
-        /// XXXManishearth this should also handle text zoom
50
+        // XXXManishearth this should also handle text zoom
51
         let min = Au(parent.gecko.mScriptMinSize);
52
 
53
         let scale = (parent.gecko.mScriptSizeMultiplier as f32).powi(delta as i32);
(-)a/www/firefox/files/patch-servo17969 (-110 lines)
Removed Link Here
1
commit 9f5c1f2e4b5b
2
Author: Manish Goregaokar <manishsmail@gmail.com>
3
Date:   Thu Aug 3 16:27:12 2017 -0500
4
5
    servo: Merge #17969 - Update stylo code to work on nightly (from Manishearth:rustup); r=emilio
6
    
7
    r=emilio https://bugzilla.mozilla.org/show_bug.cgi?id=1386887
8
    
9
    Source-Repo: https://github.com/servo/servo
10
    Source-Revision: 7cee7d7fcc4194e410fa8a308a77d37ac452778a
11
    
12
    --HG--
13
    extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear
14
    extra : subtree_revision : d9c874ebcfa1e64c86265d0ed2e5cff65d9133be
15
---
16
 servo/components/style/gecko/generated/bindings.rs | 12 +++++++++---
17
 servo/components/style/gecko/wrapper.rs            |  7 ++++++-
18
 servo/ports/geckolib/glue.rs                       |  3 ++-
19
 3 files changed, 17 insertions(+), 5 deletions(-)
20
21
diff --git servo/components/style/gecko/generated/bindings.rs servo/components/style/gecko/generated/bindings.rs
22
index e46bdfe1e1ea..b6703ab95bf7 100644
23
--- servo/components/style/gecko/generated/bindings.rs
24
+++ servo/components/style/gecko/generated/bindings.rs
25
@@ -8,6 +8,7 @@ type nsAString_internal = nsAString;
26
 pub type ServoStyleContextBorrowed<'a> = &'a ::properties::ComputedValues;
27
 pub type ServoStyleContextBorrowedOrNull<'a> = Option<&'a ::properties::ComputedValues>;
28
 pub type ServoComputedDataBorrowed<'a> = &'a ServoComputedData;
29
+pub type RawServoAnimationValueTableBorrowed<'a> = &'a ();
30
 use gecko_bindings::structs::mozilla::css::GridTemplateAreasValue;
31
 use gecko_bindings::structs::mozilla::css::ErrorReporter;
32
 use gecko_bindings::structs::mozilla::css::ImageValue;
33
@@ -37,7 +38,7 @@ use gecko_bindings::structs::RawServoStyleRule;
34
 use gecko_bindings::structs::RawGeckoPresContext;
35
 use gecko_bindings::structs::RawGeckoPresContextOwned;
36
 use gecko_bindings::structs::RawGeckoStyleAnimationList;
37
-use gecko_bindings::structs::RawGeckoStyleChildrenIteratorBorrowedMut;
38
+use gecko_bindings::structs::RawGeckoStyleChildrenIterator;
39
 use gecko_bindings::structs::RawGeckoServoStyleRuleList;
40
 use gecko_bindings::structs::RawGeckoURLExtraData;
41
 use gecko_bindings::structs::RawGeckoXBLBinding;
42
@@ -320,6 +321,10 @@ pub type RawGeckoServoAnimationValueListBorrowed<'a> = &'a RawGeckoServoAnimatio
43
 pub type RawGeckoServoAnimationValueListBorrowedOrNull<'a> = Option<&'a RawGeckoServoAnimationValueList>;
44
 pub type RawGeckoServoAnimationValueListBorrowedMut<'a> = &'a mut RawGeckoServoAnimationValueList;
45
 pub type RawGeckoServoAnimationValueListBorrowedMutOrNull<'a> = Option<&'a mut RawGeckoServoAnimationValueList>;
46
+pub type RawGeckoStyleChildrenIteratorBorrowed<'a> = &'a RawGeckoStyleChildrenIterator;
47
+pub type RawGeckoStyleChildrenIteratorBorrowedOrNull<'a> = Option<&'a RawGeckoStyleChildrenIterator>;
48
+pub type RawGeckoStyleChildrenIteratorBorrowedMut<'a> = &'a mut RawGeckoStyleChildrenIterator;
49
+pub type RawGeckoStyleChildrenIteratorBorrowedMutOrNull<'a> = Option<&'a mut RawGeckoStyleChildrenIterator>;
50
 pub type ServoCssRulesStrong = ::gecko_bindings::sugar::ownership::Strong<ServoCssRules>;
51
 pub type ServoCssRulesBorrowed<'a> = &'a ServoCssRules;
52
 pub type ServoCssRulesBorrowedOrNull<'a> = Option<&'a ServoCssRules>;
53
@@ -840,7 +845,7 @@ extern "C" {
54
 }
55
 extern "C" {
56
     pub fn Gecko_AnimationGetBaseStyle(aBaseStyles:
57
-                                           *mut ::std::os::raw::c_void,
58
+                                           RawServoAnimationValueTableBorrowed,
59
                                        aProperty: nsCSSPropertyID)
60
      -> RawServoAnimationValueBorrowedOrNull;
61
 }
62
@@ -2602,7 +2607,8 @@ extern "C" {
63
 extern "C" {
64
     pub fn Servo_AnimationCompose(animation_values:
65
                                       RawServoAnimationValueMapBorrowedMut,
66
-                                  base_values: *mut ::std::os::raw::c_void,
67
+                                  base_values:
68
+                                      RawServoAnimationValueTableBorrowed,
69
                                   property: nsCSSPropertyID,
70
                                   animation_segment:
71
                                       RawGeckoAnimationPropertySegmentBorrowed,
72
diff --git servo/components/style/gecko/wrapper.rs servo/components/style/gecko/wrapper.rs
73
index dae898692313..6d62f54951cc 100644
74
--- servo/components/style/gecko/wrapper.rs
75
+++ servo/components/style/gecko/wrapper.rs
76
@@ -387,7 +387,12 @@ impl<'a> Iterator for GeckoChildrenIterator<'a> {
77
                 curr
78
             },
79
             GeckoChildrenIterator::GeckoIterator(ref mut it) => unsafe {
80
-                Gecko_GetNextStyleChild(it).map(GeckoNode)
81
+                // We do this unsafe lengthening of the lifetime here because
82
+                // structs::StyleChildrenIterator is actually StyleChildrenIterator<'a>,
83
+                // however we can't express this easily with bindgen, and it would
84
+                // introduce functions with two input lifetimes into bindgen,
85
+                // which would be out of scope for elision.
86
+                Gecko_GetNextStyleChild(&mut * (it as *mut _)).map(GeckoNode)
87
             }
88
         }
89
     }
90
diff --git servo/ports/geckolib/glue.rs servo/ports/geckolib/glue.rs
91
index 367d24ff87b2..e69959f3710b 100644
92
--- servo/ports/geckolib/glue.rs
93
+++ servo/ports/geckolib/glue.rs
94
@@ -59,6 +59,7 @@ use style::gecko_bindings::bindings::RawGeckoServoStyleRuleListBorrowedMut;
95
 use style::gecko_bindings::bindings::RawServoAnimationValueBorrowed;
96
 use style::gecko_bindings::bindings::RawServoAnimationValueMapBorrowedMut;
97
 use style::gecko_bindings::bindings::RawServoAnimationValueStrong;
98
+use style::gecko_bindings::bindings::RawServoAnimationValueTableBorrowed;
99
 use style::gecko_bindings::bindings::RawServoStyleRuleBorrowed;
100
 use style::gecko_bindings::bindings::ServoStyleContextBorrowedOrNull;
101
 use style::gecko_bindings::bindings::nsTArrayBorrowed_uintptr_t;
102
@@ -374,7 +375,7 @@ pub extern "C" fn Servo_AnimationValues_ComputeDistance(from: RawServoAnimationV
103
 
104
 #[no_mangle]
105
 pub extern "C" fn Servo_AnimationCompose(raw_value_map: RawServoAnimationValueMapBorrowedMut,
106
-                                         base_values: *mut ::std::os::raw::c_void,
107
+                                         base_values: RawServoAnimationValueTableBorrowed,
108
                                          css_property: nsCSSPropertyID,
109
                                          segment: RawGeckoAnimationPropertySegmentBorrowed,
110
                                          last_segment: RawGeckoAnimationPropertySegmentBorrowed,
(-)a/www/firefox/files/patch-servo18046 (-763 lines)
Removed Link Here
1
commit ea9c8db790e4
2
Author: Simon Sapin <simon.sapin@exyr.org>
3
Date:   Tue Aug 15 07:31:04 2017 -0500
4
5
    servo: Merge #18046 - Upgrade to rustc 1.21.0-nightly (13d94d5fa 2017-08-10) (from servo:rustup); r=emilio
6
    
7
    Source-Repo: https://github.com/servo/servo
8
    Source-Revision: 7d9b82b9efa7b10a2e34d93df5ac535d99518f7a
9
    
10
    --HG--
11
    extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear
12
    extra : subtree_revision : e1b3d113c3edaea3c4c07f8b206f2e02922e3caf
13
---
14
 servo/Cargo.lock                                   |  6 +++---
15
 servo/components/devtools/lib.rs                   |  2 +-
16
 servo/components/layout/animation.rs               |  2 +-
17
 servo/components/layout/construct.rs               |  6 +++---
18
 servo/components/layout/display_list_builder.rs    |  2 +-
19
 servo/components/layout/flex.rs                    |  6 +++---
20
 servo/components/layout/inline.rs                  |  4 ++--
21
 servo/components/layout/sequential.rs              |  2 +-
22
 servo/components/layout/table_cell.rs              |  2 +-
23
 servo/components/layout/text.rs                    |  2 +-
24
 servo/components/net/cookie_storage.rs             |  2 +-
25
 servo/components/profile/heartbeats.rs             |  4 ++--
26
 servo/components/script/dom/bindings/js.rs         |  4 ++--
27
 servo/components/script/dom/cssstyledeclaration.rs |  8 ++++----
28
 servo/components/script/dom/cssstylerule.rs        |  2 +-
29
 servo/components/script/dom/document.rs            | 12 ++++++------
30
 servo/components/script/dom/medialist.rs           |  4 ++--
31
 servo/components/script/dom/range.rs               |  4 ++--
32
 .../script/dom/servoparser/async_html.rs           |  4 ++--
33
 servo/components/script/dom/url.rs                 |  4 ++--
34
 servo/components/script/dom/vrdisplay.rs           |  2 +-
35
 .../components/script/dom/webglrenderingcontext.rs |  2 +-
36
 servo/components/script/dom/xmlhttprequest.rs      |  2 +-
37
 servo/components/script/lib.rs                     |  1 -
38
 .../script_plugins/unrooted_must_root.rs           | 22 +++++++++++++++-------
39
 servo/components/selectors/matching.rs             |  2 +-
40
 servo/components/selectors/parser.rs               |  2 +-
41
 .../style/invalidation/element/invalidator.rs      |  2 +-
42
 servo/components/style/matching.rs                 |  2 +-
43
 .../components/style/properties/properties.mako.rs |  2 +-
44
 servo/components/style/style_adjuster.rs           |  2 +-
45
 servo/components/style/style_resolver.rs           |  2 +-
46
 servo/components/style/stylesheets/rule_list.rs    |  2 +-
47
 servo/components/style/stylesheets/rule_parser.rs  |  2 +-
48
 .../components/style/stylesheets/rules_iterator.rs |  2 +-
49
 servo/components/style/values/animated/color.rs    |  2 +-
50
 servo/components/style/values/computed/border.rs   |  2 +-
51
 servo/components/webdriver_server/lib.rs           |  2 +-
52
 servo/rust-commit-hash                             |  2 +-
53
 servo/tests/unit/style/stylist.rs                  | 13 -------------
54
 40 files changed, 73 insertions(+), 79 deletions(-)
55
56
diff --git servo/Cargo.lock servo/Cargo.lock
57
index 50dd6e1a785a..2aa7bd8ea3dd 100644
58
--- servo/Cargo.lock
59
+++ servo/Cargo.lock
60
@@ -3577,7 +3577,7 @@ version = "0.1.4"
61
 source = "registry+https://github.com/rust-lang/crates.io-index"
62
 dependencies = [
63
  "error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
64
- "xcb 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)",
65
+ "xcb 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)",
66
 ]
67
 
68
 [[package]]
69
@@ -3592,7 +3592,7 @@ dependencies = [
70
 
71
 [[package]]
72
 name = "xcb"
73
-version = "0.7.6"
74
+version = "0.7.7"
75
 source = "registry+https://github.com/rust-lang/crates.io-index"
76
 dependencies = [
77
  "libc 0.2.23 (registry+https://github.com/rust-lang/crates.io-index)",
78
@@ -3918,7 +3918,7 @@ dependencies = [
79
 "checksum x11 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db27c597c187da52194a4b8232e7d869503911aab9ff726fefb76d7a830f78ed"
80
 "checksum x11-clipboard 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "731230b8edcbb9d99247105e4c9ec0a538594d50ad68d2afa8662195f9db2973"
81
 "checksum x11-dl 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "326c500cdc166fd7c70dd8c8a829cd5c0ce7be5a5d98c25817de2b9bdc67faf8"
82
-"checksum xcb 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "63e3a849b73e4e1905e4f4d48f1750429bc86ea9f473632ab382a6f69ecb6b33"
83
+"checksum xcb 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)" = "7cede38417fcdf2f0a9d8abf1cea1c1b066320a8a316e9583a0d717c334fafb2"
84
 "checksum xdg 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a66b7c2281ebde13cf4391d70d4c7e5946c3c25e72a7b859ca8f677dcd0b0c61"
85
 "checksum xi-unicode 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "12ea8eda4b1eb72f02d148402e23832d56a33f55d8c1b2d5bcdde91d79d47cb1"
86
 "checksum xml-rs 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7ec6c39eaa68382c8e31e35239402c0a9489d4141a8ceb0c716099a0b515b562"
87
diff --git servo/components/devtools/lib.rs servo/components/devtools/lib.rs
88
index d5a2764a7102..6a25696eaed7 100644
89
--- servo/components/devtools/lib.rs
90
+++ servo/components/devtools/lib.rs
91
@@ -306,7 +306,7 @@ fn run_server(sender: Sender<DevtoolsControlMsg>,
92
                 columnNumber: console_message.columnNumber,
93
             },
94
         };
95
-        for mut stream in &mut *console_actor.streams.borrow_mut() {
96
+        for stream in &mut *console_actor.streams.borrow_mut() {
97
             stream.write_json_packet(&msg);
98
         }
99
     }
100
diff --git servo/components/layout/animation.rs servo/components/layout/animation.rs
101
index e4a2782c1271..ebbba82fcc6a 100644
102
--- servo/components/layout/animation.rs
103
+++ servo/components/layout/animation.rs
104
@@ -39,7 +39,7 @@ pub fn update_animation_state(constellation_chan: &IpcSender<ConstellationMsg>,
105
             // run.
106
             if let Some(ref mut animations) = running_animations.get_mut(node) {
107
                 // TODO: This being linear is probably not optimal.
108
-                for mut anim in animations.iter_mut() {
109
+                for anim in animations.iter_mut() {
110
                     if let Animation::Keyframes(_, ref anim_name, ref mut anim_state) = *anim {
111
                         if *name == *anim_name {
112
                             debug!("update_animation_state: Found other animation {}", name);
113
diff --git servo/components/layout/construct.rs servo/components/layout/construct.rs
114
index c863219941e4..7ef391b42183 100644
115
--- servo/components/layout/construct.rs
116
+++ servo/components/layout/construct.rs
117
@@ -1921,7 +1921,7 @@ impl Legalizer {
118
     /// true for anonymous block children of flex flows.
119
     fn try_to_add_child(&mut self, context: &SharedStyleContext, parent: &mut FlowRef, child: &mut FlowRef)
120
                         -> bool {
121
-        let mut parent = self.stack.last_mut().unwrap_or(parent);
122
+        let parent = self.stack.last_mut().unwrap_or(parent);
123
         let (parent_class, child_class) = (parent.class(), child.class());
124
         match (parent_class, child_class) {
125
             (FlowClass::TableWrapper, FlowClass::Table) |
126
@@ -1962,7 +1962,7 @@ impl Legalizer {
127
                     } else {
128
                         IS_BLOCK_FLEX_ITEM
129
                     };
130
-                    let mut block = FlowRef::deref_mut(&mut block_wrapper).as_mut_block();
131
+                    let block = FlowRef::deref_mut(&mut block_wrapper).as_mut_block();
132
                     block.base.flags.insert(MARGINS_CANNOT_COLLAPSE);
133
                     block.fragment.flags.insert(flag);
134
                 }
135
@@ -1979,7 +1979,7 @@ impl Legalizer {
136
                     } else {
137
                         IS_BLOCK_FLEX_ITEM
138
                     };
139
-                    let mut block = FlowRef::deref_mut(child).as_mut_block();
140
+                    let block = FlowRef::deref_mut(child).as_mut_block();
141
                     block.base.flags.insert(MARGINS_CANNOT_COLLAPSE);
142
                     block.fragment.flags.insert(flag);
143
                 }
144
diff --git servo/components/layout/display_list_builder.rs servo/components/layout/display_list_builder.rs
145
index f8b26899b57d..783574afd2a3 100644
146
--- servo/components/layout/display_list_builder.rs
147
+++ servo/components/layout/display_list_builder.rs
148
@@ -2718,7 +2718,7 @@ impl InlineFlowDisplayListBuilding for InlineFlow {
149
         self.base.scroll_root_id = Some(state.current_scroll_root_id);
150
         self.base.clip = state.clip_stack.last().cloned().unwrap_or_else(max_rect);
151
 
152
-        for mut fragment in self.fragments.fragments.iter_mut() {
153
+        for fragment in self.fragments.fragments.iter_mut() {
154
             let previous_containing_block_scroll_root_id = state.containing_block_scroll_root_id;
155
             if establishes_containing_block_for_absolute(fragment.style.get_box().position) {
156
                 state.containing_block_scroll_root_id = state.current_scroll_root_id;
157
diff --git servo/components/layout/flex.rs servo/components/layout/flex.rs
158
index 353c939f58b9..d79580f8cd0d 100644
159
--- servo/components/layout/flex.rs
160
+++ servo/components/layout/flex.rs
161
@@ -415,7 +415,7 @@ impl FlexFlow {
162
 
163
         let items = &mut self.items[start..];
164
         let mut children = self.block_flow.base.children.random_access_mut();
165
-        for mut item in items {
166
+        for item in items {
167
             let kid = children.get(item.index);
168
             item.init_sizes(kid, container_size, self.main_mode);
169
             let outer_main_size = item.outer_main_size(kid, self.main_mode);
170
@@ -607,7 +607,7 @@ impl FlexFlow {
171
 
172
             let mut children = self.block_flow.base.children.random_access_mut();
173
             for item in items.iter_mut() {
174
-                let mut block = children.get(item.index).as_mut_block();
175
+                let block = children.get(item.index).as_mut_block();
176
 
177
                 block.base.block_container_writing_mode = container_mode;
178
                 block.base.block_container_inline_size = inline_size;
179
@@ -659,7 +659,7 @@ impl FlexFlow {
180
 
181
         let mut children = self.block_flow.base.children.random_access_mut();
182
         for item in &mut self.items {
183
-            let mut base = flow::mut_base(children.get(item.index));
184
+            let base = flow::mut_base(children.get(item.index));
185
             if !self.main_reverse {
186
                 base.position.start.b = cur_b;
187
                 cur_b = cur_b + base.position.size.block;
188
diff --git servo/components/layout/inline.rs servo/components/layout/inline.rs
189
index d5813d9bea22..10e091c3c66d 100644
190
--- servo/components/layout/inline.rs
191
+++ servo/components/layout/inline.rs
192
@@ -435,7 +435,7 @@ impl LineBreaker {
193
             return
194
         }
195
         let last_fragment_index = self.pending_line.range.end() - FragmentIndex(1);
196
-        let mut fragment = &mut self.new_fragments[last_fragment_index.get() as usize];
197
+        let fragment = &mut self.new_fragments[last_fragment_index.get() as usize];
198
 
199
         let old_fragment_inline_size = fragment.border_box.size.inline;
200
 
201
@@ -1047,7 +1047,7 @@ impl InlineFlow {
202
         let space_per_expansion_opportunity = slack_inline_size / expansion_opportunities as i32;
203
         for fragment_index in line.range.each_index() {
204
             let fragment = fragments.get_mut(fragment_index.to_usize());
205
-            let mut scanned_text_fragment_info = match fragment.specific {
206
+            let scanned_text_fragment_info = match fragment.specific {
207
                 SpecificFragmentInfo::ScannedText(ref mut info) if !info.range.is_empty() => info,
208
                 _ => continue
209
             };
210
diff --git servo/components/layout/sequential.rs servo/components/layout/sequential.rs
211
index f6f8ce429e4f..4986ebb6c852 100644
212
--- servo/components/layout/sequential.rs
213
+++ servo/components/layout/sequential.rs
214
@@ -133,7 +133,7 @@ pub fn store_overflow(layout_context: &LayoutContext, flow: &mut Flow) {
215
         return;
216
     }
217
 
218
-    for mut kid in flow::mut_base(flow).child_iter_mut() {
219
+    for kid in flow::mut_base(flow).child_iter_mut() {
220
         store_overflow(layout_context, kid);
221
     }
222
 
223
diff --git servo/components/layout/table_cell.rs servo/components/layout/table_cell.rs
224
index 7ef02e28db65..fd807989b463 100644
225
--- servo/components/layout/table_cell.rs
226
+++ servo/components/layout/table_cell.rs
227
@@ -136,7 +136,7 @@ impl TableCellFlow {
228
         }
229
 
230
         for kid in flow::mut_base(self).children.iter_mut() {
231
-            let mut kid_base = flow::mut_base(kid);
232
+            let kid_base = flow::mut_base(kid);
233
             if !kid_base.flags.contains(IS_ABSOLUTELY_POSITIONED) {
234
                 kid_base.position.start.b += offset
235
             }
236
diff --git servo/components/layout/text.rs servo/components/layout/text.rs
237
index 6e1c7b2a43a1..9a207a2bb84e 100644
238
--- servo/components/layout/text.rs
239
+++ servo/components/layout/text.rs
240
@@ -460,7 +460,7 @@ fn split_first_fragment_at_newline_if_necessary(fragments: &mut LinkedList<Fragm
241
     }
242
 
243
     let new_fragment = {
244
-        let mut first_fragment = fragments.front_mut().unwrap();
245
+        let first_fragment = fragments.front_mut().unwrap();
246
         let string_before;
247
         let selection_before;
248
         {
249
diff --git servo/components/net/cookie_storage.rs servo/components/net/cookie_storage.rs
250
index f255f57b56d2..b3147ef4dd32 100644
251
--- servo/components/net/cookie_storage.rs
252
+++ servo/components/net/cookie_storage.rs
253
@@ -103,7 +103,7 @@ impl CookieStorage {
254
 
255
         // Step 12
256
         let domain = reg_host(&cookie.cookie.domain().as_ref().unwrap_or(&""));
257
-        let mut cookies = self.cookies_map.entry(domain).or_insert(vec![]);
258
+        let cookies = self.cookies_map.entry(domain).or_insert(vec![]);
259
 
260
         if cookies.len() == self.max_per_host {
261
             let old_len = cookies.len();
262
diff --git servo/components/profile/heartbeats.rs servo/components/profile/heartbeats.rs
263
index 4661dad61836..0d474fe3a111 100644
264
--- servo/components/profile/heartbeats.rs
265
+++ servo/components/profile/heartbeats.rs
266
@@ -33,7 +33,7 @@ pub fn cleanup() {
267
         )
268
     );
269
     if let Some(mut hbs) = hbs_opt_box {
270
-        for (_, mut v) in hbs.iter_mut() {
271
+        for (_, v) in hbs.iter_mut() {
272
             // log any remaining heartbeat records before dropping
273
             log_heartbeat_records(v);
274
         }
275
@@ -65,7 +65,7 @@ pub fn maybe_heartbeat(category: &ProfilerCategory,
276
                 if !(*hbs_ptr).contains_key(category) {
277
                     maybe_create_heartbeat(&mut (*hbs_ptr), category.clone());
278
                 }
279
-                if let Some(mut h) = (*hbs_ptr).get_mut(category) {
280
+                if let Some(h) = (*hbs_ptr).get_mut(category) {
281
                     (*h).heartbeat(0, 1, start_time, end_time, start_energy, end_energy);
282
                 }
283
             }
284
diff --git servo/components/script/dom/bindings/js.rs servo/components/script/dom/bindings/js.rs
285
index 975ddeda13b0..abfd9f47eff1 100644
286
--- servo/components/script/dom/bindings/js.rs
287
+++ servo/components/script/dom/bindings/js.rs
288
@@ -469,7 +469,7 @@ impl RootCollection {
289
     /// Start tracking a stack-based root
290
     unsafe fn root(&self, untracked_reflector: *const Reflector) {
291
         debug_assert!(thread_state::get().is_script());
292
-        let mut roots = &mut *self.roots.get();
293
+        let roots = &mut *self.roots.get();
294
         roots.push(untracked_reflector);
295
         assert!(!(*untracked_reflector).get_jsobject().is_null())
296
     }
297
@@ -479,7 +479,7 @@ impl RootCollection {
298
         assert!(!tracked_reflector.is_null());
299
         assert!(!(*tracked_reflector).get_jsobject().is_null());
300
         debug_assert!(thread_state::get().is_script());
301
-        let mut roots = &mut *self.roots.get();
302
+        let roots = &mut *self.roots.get();
303
         match roots.iter().rposition(|r| *r == tracked_reflector) {
304
             Some(idx) => {
305
                 roots.remove(idx);
306
diff --git servo/components/script/dom/cssstyledeclaration.rs servo/components/script/dom/cssstyledeclaration.rs
307
index 0732c9af9e45..ddf085b34913 100644
308
--- servo/components/script/dom/cssstyledeclaration.rs
309
+++ servo/components/script/dom/cssstyledeclaration.rs
310
@@ -238,7 +238,7 @@ impl CSSStyleDeclaration {
311
             return Err(Error::NoModificationAllowed);
312
         }
313
 
314
-        self.owner.mutate_associated_block(|ref mut pdb, mut changed| {
315
+        self.owner.mutate_associated_block(|pdb, changed| {
316
             if value.is_empty() {
317
                 // Step 3
318
                 *changed = pdb.remove_property(&id);
319
@@ -360,7 +360,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration {
320
             _ => return Ok(()),
321
         };
322
 
323
-        self.owner.mutate_associated_block(|ref mut pdb, mut changed| {
324
+        self.owner.mutate_associated_block(|pdb, changed| {
325
             // Step 5 & 6
326
             *changed = pdb.set_importance(&id, importance);
327
         });
328
@@ -388,7 +388,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration {
329
         };
330
 
331
         let mut string = String::new();
332
-        self.owner.mutate_associated_block(|mut pdb, mut changed| {
333
+        self.owner.mutate_associated_block(|pdb, changed| {
334
             pdb.property_value_to_css(&id, &mut string).unwrap();
335
             *changed = pdb.remove_property(&id);
336
         });
337
@@ -438,7 +438,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration {
338
         }
339
 
340
         let quirks_mode = window.Document().quirks_mode();
341
-        self.owner.mutate_associated_block(|mut pdb, mut _changed| {
342
+        self.owner.mutate_associated_block(|pdb, _changed| {
343
             // Step 3
344
             *pdb = parse_style_attribute(&value,
345
                                          &self.owner.base_url(),
346
diff --git servo/components/script/dom/cssstylerule.rs servo/components/script/dom/cssstylerule.rs
347
index ea121ef900a9..12e9cdcc8694 100644
348
--- servo/components/script/dom/cssstylerule.rs
349
+++ servo/components/script/dom/cssstylerule.rs
350
@@ -99,7 +99,7 @@ impl CSSStyleRuleMethods for CSSStyleRule {
351
         if let Ok(mut s) = SelectorList::parse(&parser, &mut css_parser) {
352
             // This mirrors what we do in CSSStyleOwner::mutate_associated_block.
353
             let mut guard = self.cssrule.shared_lock().write();
354
-            let mut stylerule = self.stylerule.write_with(&mut guard);
355
+            let stylerule = self.stylerule.write_with(&mut guard);
356
             mem::swap(&mut stylerule.selectors, &mut s);
357
             // It seems like we will want to avoid having to invalidate all
358
             // stylesheets eventually!
359
diff --git servo/components/script/dom/document.rs servo/components/script/dom/document.rs
360
index 90ea06fbe7b4..71bb02eaa364 100644
361
--- servo/components/script/dom/document.rs
362
+++ servo/components/script/dom/document.rs
363
@@ -633,7 +633,7 @@ impl Document {
364
         // reset_form_owner_for_listeners -> reset_form_owner -> GetElementById
365
         {
366
             let mut id_map = self.id_map.borrow_mut();
367
-            let mut elements = id_map.entry(id.clone()).or_insert(Vec::new());
368
+            let elements = id_map.entry(id.clone()).or_insert(Vec::new());
369
             elements.insert_pre_order(element, root.r().upcast::<Node>());
370
         }
371
         self.reset_form_owner_for_listeners(&id);
372
@@ -642,7 +642,7 @@ impl Document {
373
     pub fn register_form_id_listener<T: ?Sized + FormControl>(&self, id: DOMString, listener: &T) {
374
         let mut map = self.form_id_listener_map.borrow_mut();
375
         let listener = listener.to_element();
376
-        let mut set = map.entry(Atom::from(id)).or_insert(HashSet::new());
377
+        let set = map.entry(Atom::from(id)).or_insert(HashSet::new());
378
         set.insert(JS::from_ref(listener));
379
     }
380
 
381
@@ -1572,7 +1572,7 @@ impl Document {
382
     /// https://html.spec.whatwg.org/multipage/#dom-window-cancelanimationframe
383
     pub fn cancel_animation_frame(&self, ident: u32) {
384
         let mut list = self.animation_frame_list.borrow_mut();
385
-        if let Some(mut pair) = list.iter_mut().find(|pair| pair.0 == ident) {
386
+        if let Some(pair) = list.iter_mut().find(|pair| pair.0 == ident) {
387
             pair.1 = None;
388
         }
389
     }
390
@@ -2399,7 +2399,7 @@ impl Document {
391
         if entry.snapshot.is_none() {
392
             entry.snapshot = Some(Snapshot::new(el.html_element_in_html_document()));
393
         }
394
-        let mut snapshot = entry.snapshot.as_mut().unwrap();
395
+        let snapshot = entry.snapshot.as_mut().unwrap();
396
         if snapshot.state.is_none() {
397
             snapshot.state = Some(el.state());
398
         }
399
@@ -2426,7 +2426,7 @@ impl Document {
400
             entry.hint.insert(RESTYLE_SELF);
401
         }
402
 
403
-        let mut snapshot = entry.snapshot.as_mut().unwrap();
404
+        let snapshot = entry.snapshot.as_mut().unwrap();
405
         if attr.local_name() == &local_name!("id") {
406
             snapshot.id_changed = true;
407
         } else if attr.local_name() == &local_name!("class") {
408
@@ -4028,7 +4028,7 @@ impl PendingInOrderScriptVec {
409
 
410
     fn loaded(&self, element: &HTMLScriptElement, result: ScriptResult) {
411
         let mut scripts = self.scripts.borrow_mut();
412
-        let mut entry = scripts.iter_mut().find(|entry| &*entry.element == element).unwrap();
413
+        let entry = scripts.iter_mut().find(|entry| &*entry.element == element).unwrap();
414
         entry.loaded(result);
415
     }
416
 
417
diff --git servo/components/script/dom/medialist.rs servo/components/script/dom/medialist.rs
418
index 0064d0445095..ae20f5aa0422 100644
419
--- servo/components/script/dom/medialist.rs
420
+++ servo/components/script/dom/medialist.rs
421
@@ -63,7 +63,7 @@ impl MediaListMethods for MediaList {
422
     // https://drafts.csswg.org/cssom/#dom-medialist-mediatext
423
     fn SetMediaText(&self, value: DOMString) {
424
         let mut guard = self.shared_lock().write();
425
-        let mut media_queries = self.media_queries.write_with(&mut guard);
426
+        let media_queries = self.media_queries.write_with(&mut guard);
427
         // Step 2
428
         if value.is_empty() {
429
             // Step 1
430
@@ -154,7 +154,7 @@ impl MediaListMethods for MediaList {
431
         // Step 3
432
         let m_serialized = m.unwrap().to_css_string();
433
         let mut guard = self.shared_lock().write();
434
-        let mut media_list = self.media_queries.write_with(&mut guard);
435
+        let media_list = self.media_queries.write_with(&mut guard);
436
         let new_vec = media_list.media_queries.drain(..)
437
                                 .filter(|q| m_serialized != q.to_css_string())
438
                                 .collect();
439
diff --git servo/components/script/dom/range.rs servo/components/script/dom/range.rs
440
index fa849a0fc1a2..1e65caedc9dd 100644
441
--- servo/components/script/dom/range.rs
442
+++ servo/components/script/dom/range.rs
443
@@ -1049,7 +1049,7 @@ impl WeakRangeVec {
444
         let offset = context.index();
445
         let parent = context.parent;
446
         unsafe {
447
-            let mut ranges = &mut *self.cell.get();
448
+            let ranges = &mut *self.cell.get();
449
 
450
             ranges.update(|entry| {
451
                 let range = entry.root().unwrap();
452
@@ -1076,7 +1076,7 @@ impl WeakRangeVec {
453
         }
454
 
455
         unsafe {
456
-            let mut ranges = &mut *self.cell.get();
457
+            let ranges = &mut *self.cell.get();
458
 
459
             ranges.update(|entry| {
460
                 let range = entry.root().unwrap();
461
diff --git servo/components/script/dom/servoparser/async_html.rs servo/components/script/dom/servoparser/async_html.rs
462
index 59411fda1c73..70d2008f49f6 100644
463
--- servo/components/script/dom/servoparser/async_html.rs
464
+++ servo/components/script/dom/servoparser/async_html.rs
465
@@ -568,7 +568,7 @@ impl TreeSink for Sink {
466
         }
467
         let node = self.new_parse_node();
468
         {
469
-            let mut data = self.get_parse_node_data_mut(&target.id);
470
+            let data = self.get_parse_node_data_mut(&target.id);
471
             data.contents = Some(node.clone());
472
         }
473
         self.send_op(ParseOperation::GetTemplateContents { target: target.id, contents: node.id });
474
@@ -596,7 +596,7 @@ impl TreeSink for Sink {
475
         let mut node = self.new_parse_node();
476
         node.qual_name = Some(name.clone());
477
         {
478
-            let mut node_data = self.get_parse_node_data_mut(&node.id);
479
+            let node_data = self.get_parse_node_data_mut(&node.id);
480
             node_data.is_integration_point = html_attrs.iter()
481
             .any(|attr| {
482
                 let attr_value = &String::from(attr.value.clone());
483
diff --git servo/components/script/dom/url.rs servo/components/script/dom/url.rs
484
index a02a735638fc..41de4dcc0c72 100644
485
--- servo/components/script/dom/url.rs
486
+++ servo/components/script/dom/url.rs
487
@@ -96,8 +96,8 @@ impl URL {
488
 
489
     // https://w3c.github.io/FileAPI/#dfn-createObjectURL
490
     pub fn CreateObjectURL(global: &GlobalScope, blob: &Blob) -> DOMString {
491
-        /// XXX: Second field is an unicode-serialized Origin, it is a temporary workaround
492
-        ///      and should not be trusted. See issue https://github.com/servo/servo/issues/11722
493
+        // XXX: Second field is an unicode-serialized Origin, it is a temporary workaround
494
+        //      and should not be trusted. See issue https://github.com/servo/servo/issues/11722
495
         let origin = get_blob_origin(&global.get_url());
496
 
497
         let id = blob.get_blob_url_id();
498
diff --git servo/components/script/dom/vrdisplay.rs servo/components/script/dom/vrdisplay.rs
499
index 3f73a577fad7..54f06fb928f2 100644
500
--- servo/components/script/dom/vrdisplay.rs
501
+++ servo/components/script/dom/vrdisplay.rs
502
@@ -268,7 +268,7 @@ impl VRDisplayMethods for VRDisplay {
503
     fn CancelAnimationFrame(&self, handle: u32) {
504
         if self.presenting.get() {
505
             let mut list = self.raf_callback_list.borrow_mut();
506
-            if let Some(mut pair) = list.iter_mut().find(|pair| pair.0 == handle) {
507
+            if let Some(pair) = list.iter_mut().find(|pair| pair.0 == handle) {
508
                 pair.1 = None;
509
             }
510
         } else {
511
diff --git servo/components/script/dom/webglrenderingcontext.rs servo/components/script/dom/webglrenderingcontext.rs
512
index 73d4ddba1b90..62c92b42785c 100644
513
--- servo/components/script/dom/webglrenderingcontext.rs
514
+++ servo/components/script/dom/webglrenderingcontext.rs
515
@@ -2434,7 +2434,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
516
         }
517
 
518
         typedarray!(in(cx) let mut pixels_data: ArrayBufferView = pixels);
519
-        let (array_type, mut data) = match { pixels_data.as_mut() } {
520
+        let (array_type, data) = match { pixels_data.as_mut() } {
521
             Ok(data) => (data.get_array_type(), data.as_mut_slice()),
522
             Err(_) => return Err(Error::Type("Not an ArrayBufferView".to_owned())),
523
         };
524
diff --git servo/components/script/dom/xmlhttprequest.rs servo/components/script/dom/xmlhttprequest.rs
525
index 6ed2dda1851f..e6652d79d706 100644
526
--- servo/components/script/dom/xmlhttprequest.rs
527
+++ servo/components/script/dom/xmlhttprequest.rs
528
@@ -627,7 +627,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
529
 
530
                 if !content_type_set {
531
                     let ct = request.headers.get_mut::<ContentType>();
532
-                    if let Some(mut ct) = ct {
533
+                    if let Some(ct) = ct {
534
                         if let Some(encoding) = encoding {
535
                             for param in &mut (ct.0).2 {
536
                                 if param.0 == MimeAttr::Charset {
537
diff --git servo/components/script/lib.rs servo/components/script/lib.rs
538
index e1a1ab592cb7..5824d6f2e490 100644
539
--- servo/components/script/lib.rs
540
+++ servo/components/script/lib.rs
541
@@ -9,7 +9,6 @@
542
 #![feature(mpsc_select)]
543
 #![feature(nonzero)]
544
 #![feature(on_unimplemented)]
545
-#![feature(option_entry)]
546
 #![feature(plugin)]
547
 #![feature(proc_macro)]
548
 #![feature(stmt_expr_attributes)]
549
diff --git servo/components/script_plugins/unrooted_must_root.rs servo/components/script_plugins/unrooted_must_root.rs
550
index 5dbd2b1a3bdd..f3f5e60ab62a 100644
551
--- servo/components/script_plugins/unrooted_must_root.rs
552
+++ servo/components/script_plugins/unrooted_must_root.rs
553
@@ -182,7 +182,7 @@ impl<'a, 'b, 'tcx> visit::Visitor<'tcx> for FnDefVisitor<'a, 'b, 'tcx> {
554
         }
555
 
556
         match expr.node {
557
-            /// Trait casts from #[must_root] types are not allowed
558
+            // Trait casts from #[must_root] types are not allowed
559
             hir::ExprCast(ref subexpr, _) => require_rooted(cx, self.in_new_function, &*subexpr),
560
             // This catches assignments... the main point of this would be to catch mutable
561
             // references to `JS<T>`.
562
@@ -206,13 +206,21 @@ impl<'a, 'b, 'tcx> visit::Visitor<'tcx> for FnDefVisitor<'a, 'b, 'tcx> {
563
     fn visit_pat(&mut self, pat: &'tcx hir::Pat) {
564
         let cx = self.cx;
565
 
566
-        if let hir::PatKind::Binding(hir::BindingMode::BindByValue(_), _, _, _) = pat.node {
567
-            let ty = cx.tables.pat_ty(pat);
568
-            if is_unrooted_ty(cx, ty, self.in_new_function) {
569
-                cx.span_lint(UNROOTED_MUST_ROOT,
570
-                            pat.span,
571
-                            &format!("Expression of type {:?} must be rooted", ty))
572
+        // We want to detect pattern bindings that move a value onto the stack.
573
+        // When "default binding modes" https://github.com/rust-lang/rust/issues/42640
574
+        // are implemented, the `Unannotated` case could cause false-positives.
575
+        // These should be fixable by adding an explicit `ref`.
576
+        match pat.node {
577
+            hir::PatKind::Binding(hir::BindingAnnotation::Unannotated, _, _, _) |
578
+            hir::PatKind::Binding(hir::BindingAnnotation::Mutable, _, _, _) => {
579
+                let ty = cx.tables.pat_ty(pat);
580
+                if is_unrooted_ty(cx, ty, self.in_new_function) {
581
+                    cx.span_lint(UNROOTED_MUST_ROOT,
582
+                                pat.span,
583
+                                &format!("Expression of type {:?} must be rooted", ty))
584
+                }
585
             }
586
+            _ => {}
587
         }
588
 
589
         visit::walk_pat(self, pat);
590
diff --git servo/components/selectors/matching.rs servo/components/selectors/matching.rs
591
index 7bd9814d26fb..8f6b2fa6aa54 100644
592
--- servo/components/selectors/matching.rs
593
+++ servo/components/selectors/matching.rs
594
@@ -458,7 +458,7 @@ where
595
 /// Matches a complex selector.
596
 pub fn matches_complex_selector<E, F>(mut iter: SelectorIter<E::Impl>,
597
                                       element: &E,
598
-                                      mut context: &mut LocalMatchingContext<E::Impl>,
599
+                                      context: &mut LocalMatchingContext<E::Impl>,
600
                                       flags_setter: &mut F)
601
                                       -> bool
602
     where E: Element,
603
diff --git servo/components/selectors/parser.rs servo/components/selectors/parser.rs
604
index 490399ce38ce..6b2c1f2b4e86 100644
605
--- servo/components/selectors/parser.rs
606
+++ servo/components/selectors/parser.rs
607
@@ -1464,7 +1464,7 @@ fn parse_negation<'i, 't, P, E, Impl>(parser: &P,
608
 fn parse_compound_selector<'i, 't, P, E, Impl>(
609
     parser: &P,
610
     input: &mut CssParser<'i, 't>,
611
-    mut builder: &mut SelectorBuilder<Impl>)
612
+    builder: &mut SelectorBuilder<Impl>)
613
     -> Result<bool, ParseError<'i, SelectorParseError<'i, E>>>
614
     where P: Parser<'i, Impl=Impl, Error=E>, Impl: SelectorImpl
615
 {
616
diff --git servo/components/style/invalidation/element/invalidator.rs servo/components/style/invalidation/element/invalidator.rs
617
index 848c5cd13dc8..b8510ba3169b 100644
618
--- servo/components/style/invalidation/element/invalidator.rs
619
+++ servo/components/style/invalidation/element/invalidator.rs
620
@@ -154,7 +154,7 @@ impl<'a, 'b: 'a, E> TreeStyleInvalidator<'a, 'b, E>
621
             trace!(" > visitedness change, force subtree restyle");
622
             // We can't just return here because there may also be attribute
623
             // changes as well that imply additional hints.
624
-            let mut data = self.data.as_mut().unwrap();
625
+            let data = self.data.as_mut().unwrap();
626
             data.restyle.hint.insert(RestyleHint::restyle_subtree());
627
         }
628
 
629
diff --git servo/components/style/matching.rs servo/components/style/matching.rs
630
index b62bc54bf768..f58d7cd123e6 100644
631
--- servo/components/style/matching.rs
632
+++ servo/components/style/matching.rs
633
@@ -440,7 +440,7 @@ pub trait MatchMethods : TElement {
634
     fn finish_restyle(
635
         &self,
636
         context: &mut StyleContext<Self>,
637
-        mut data: &mut ElementData,
638
+        data: &mut ElementData,
639
         mut new_styles: ElementStyles,
640
         important_rules_changed: bool,
641
     ) -> ChildCascadeRequirement {
642
diff --git servo/components/style/properties/properties.mako.rs servo/components/style/properties/properties.mako.rs
643
index d98e173db5ba..81ff00fb6d5e 100644
644
--- servo/components/style/properties/properties.mako.rs
645
+++ servo/components/style/properties/properties.mako.rs
646
@@ -3364,7 +3364,7 @@ pub fn modify_border_style_for_inline_sides(style: &mut Arc<ComputedValues>,
647
                 return;
648
             }
649
         }
650
-        let mut style = Arc::make_mut(style);
651
+        let style = Arc::make_mut(style);
652
         let border = Arc::make_mut(&mut style.border);
653
         match side {
654
             PhysicalSide::Left => {
655
diff --git servo/components/style/style_adjuster.rs servo/components/style/style_adjuster.rs
656
index 366641ebe0bc..6e51fa74072a 100644
657
--- servo/components/style/style_adjuster.rs
658
+++ servo/components/style/style_adjuster.rs
659
@@ -269,7 +269,7 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> {
660
 
661
         if overflow_x != original_overflow_x ||
662
            overflow_y != original_overflow_y {
663
-            let mut box_style = self.style.mutate_box();
664
+            let box_style = self.style.mutate_box();
665
             box_style.set_overflow_x(overflow_x);
666
             box_style.set_overflow_y(overflow_y);
667
         }
668
diff --git servo/components/style/style_resolver.rs servo/components/style/style_resolver.rs
669
index cf512c4fbdd2..3fc1d57cc8f7 100644
670
--- servo/components/style/style_resolver.rs
671
+++ servo/components/style/style_resolver.rs
672
@@ -247,7 +247,7 @@ where
673
                         Some(&*primary_style.style)
674
                     };
675
 
676
-                for (i, mut inputs) in pseudo_array.iter_mut().enumerate() {
677
+                for (i, inputs) in pseudo_array.iter_mut().enumerate() {
678
                     if let Some(inputs) = inputs.take() {
679
                         let pseudo = PseudoElement::from_eager_index(i);
680
                         pseudo_styles.set(
681
diff --git servo/components/style/stylesheets/rule_list.rs servo/components/style/stylesheets/rule_list.rs
682
index 82e78015400d..14b3dc5e7696 100644
683
--- servo/components/style/stylesheets/rule_list.rs
684
+++ servo/components/style/stylesheets/rule_list.rs
685
@@ -150,7 +150,7 @@ impl CssRulesHelpers for RawOffsetArc<Locked<CssRules>> {
686
 
687
         {
688
             let mut write_guard = lock.write();
689
-            let mut rules = self.write_with(&mut write_guard);
690
+            let rules = self.write_with(&mut write_guard);
691
             // Step 5
692
             // Computes the maximum allowed parser state at a given index.
693
             let rev_state = rules.0.get(index).map_or(State::Body, CssRule::rule_state);
694
diff --git servo/components/style/stylesheets/rule_parser.rs servo/components/style/stylesheets/rule_parser.rs
695
index 007d7e11026e..f0d224e498a7 100644
696
--- servo/components/style/stylesheets/rule_parser.rs
697
+++ servo/components/style/stylesheets/rule_parser.rs
698
@@ -209,7 +209,7 @@ impl<'a, 'i> AtRuleParser<'i> for TopLevelRuleParser<'a> {
699
                 let id = register_namespace(&url)
700
                     .map_err(|()| StyleParseError::UnspecifiedError)?;
701
 
702
-                let mut namespaces = self.namespaces.as_mut().unwrap();
703
+                let namespaces = self.namespaces.as_mut().unwrap();
704
 
705
                 let opt_prefix = if let Ok(prefix) = prefix_result {
706
                     let prefix = Prefix::from(prefix.as_ref());
707
diff --git servo/components/style/stylesheets/rules_iterator.rs servo/components/style/stylesheets/rules_iterator.rs
708
index 95a3ab8b3885..65e1b637ae52 100644
709
--- servo/components/style/stylesheets/rules_iterator.rs
710
+++ servo/components/style/stylesheets/rules_iterator.rs
711
@@ -70,7 +70,7 @@ impl<'a, 'b, C> Iterator for RulesIterator<'a, 'b, C>
712
 
713
             let rule;
714
             let sub_iter = {
715
-                let mut nested_iter = self.stack.last_mut().unwrap();
716
+                let nested_iter = self.stack.last_mut().unwrap();
717
                 rule = match nested_iter.next() {
718
                     Some(r) => r,
719
                     None => {
720
diff --git servo/components/webdriver_server/lib.rs servo/components/webdriver_server/lib.rs
721
index bd2f667f9892..28a4885f0d41 100644
722
--- servo/components/webdriver_server/lib.rs
723
+++ servo/components/webdriver_server/lib.rs
724
@@ -702,7 +702,7 @@ impl Handler {
725
     fn handle_set_timeouts(&mut self,
726
                            parameters: &TimeoutsParameters)
727
                            -> WebDriverResult<WebDriverResponse> {
728
-        let mut session = self.session
729
+        let session = self.session
730
             .as_mut()
731
             .ok_or(WebDriverError::new(ErrorStatus::SessionNotCreated, ""))?;
732
 
733
diff --git servo/rust-commit-hash servo/rust-commit-hash
734
index d4f08fe97644..a08d23cd1a71 100644
735
--- servo/rust-commit-hash
736
+++ servo/rust-commit-hash
737
@@ -1 +1 @@
738
-599be0d18f4c6ddf36366d2a5a2ca6dc65886896
739
+13d94d5fa8129a34f5c77a1bcd76983f5aed2434
740
diff --git servo/tests/unit/style/stylist.rs servo/tests/unit/style/stylist.rs
741
index da9a9478957a..52067b501788 100644
742
--- servo/tests/unit/style/stylist.rs
743
+++ servo/tests/unit/style/stylist.rs
744
@@ -51,19 +51,6 @@ fn get_mock_rules(css_selectors: &[&str]) -> (Vec<Vec<Rule>>, SharedRwLock) {
745
     }).collect(), shared_lock)
746
 }
747
 
748
-fn get_mock_map(selectors: &[&str]) -> (SelectorMap<Rule>, SharedRwLock) {
749
-    let mut map = SelectorMap::<Rule>::new();
750
-    let (selector_rules, shared_lock) = get_mock_rules(selectors);
751
-
752
-    for rules in selector_rules.into_iter() {
753
-        for rule in rules.into_iter() {
754
-            map.insert(rule, QuirksMode::NoQuirks)
755
-        }
756
-    }
757
-
758
-    (map, shared_lock)
759
-}
760
-
761
 fn parse_selectors(selectors: &[&str]) -> Vec<Selector<SelectorImpl>> {
762
     selectors.iter()
763
              .map(|x| SelectorParser::parse_author_origin_no_namespace(x).unwrap().0
(-)a/www/firefox/files/patch-servo18126 (-232 lines)
Removed Link Here
1
commit f0acf27d189d
2
Author: Simon Sapin <simon.sapin@exyr.org>
3
Date:   Thu Aug 17 11:05:32 2017 -0500
4
5
    servo: Merge #18126 - geckolib: Fix some warnings (treated as error) new in Rust Nigthly (from servo:glow-fox); r=emilio
6
    
7
    Source-Repo: https://github.com/servo/servo
8
    Source-Revision: cc86ca2bcdec5e89ee5279085ea38db63ef41af9
9
    
10
    --HG--
11
    extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear
12
    extra : subtree_revision : 0586dbc81f1411c89821605a6dae4ebd0af8f0d5
13
---
14
 servo/components/style/gecko/conversions.rs            |  2 +-
15
 servo/components/style/gecko/wrapper.rs                |  2 +-
16
 .../style/gecko_bindings/sugar/ns_t_array.rs           |  4 ++--
17
 servo/components/style/properties/gecko.mako.rs        | 18 +++++++++---------
18
 servo/components/style/style_adjuster.rs               |  4 ++--
19
 servo/ports/geckolib/glue.rs                           | 12 ++++++------
20
 6 files changed, 21 insertions(+), 21 deletions(-)
21
22
diff --git servo/components/style/gecko/conversions.rs servo/components/style/gecko/conversions.rs
23
index 8f3fb6bf2d0f..51015997c5c1 100644
24
--- servo/components/style/gecko/conversions.rs
25
+++ servo/components/style/gecko/conversions.rs
26
@@ -348,7 +348,7 @@ impl nsStyleImage {
27
             // NB: stops are guaranteed to be none in the gecko side by
28
             // default.
29
 
30
-            let mut gecko_stop = unsafe {
31
+            let gecko_stop = unsafe {
32
                 &mut (*gecko_gradient).mStops[index]
33
             };
34
             let mut coord = nsStyleCoord::null();
35
diff --git servo/components/style/gecko/wrapper.rs servo/components/style/gecko/wrapper.rs
36
index 034dd94590e2..c402ddaf15bd 100644
37
--- servo/components/style/gecko/wrapper.rs
38
+++ servo/components/style/gecko/wrapper.rs
39
@@ -424,7 +424,7 @@ impl<'lb> GeckoXBLBinding<'lb> {
40
         }
41
     }
42
 
43
-    fn each_xbl_stylist<F>(self, mut f: &mut F)
44
+    fn each_xbl_stylist<F>(self, f: &mut F)
45
     where
46
         F: FnMut(&Stylist),
47
     {
48
diff --git servo/components/style/gecko_bindings/sugar/ns_t_array.rs servo/components/style/gecko_bindings/sugar/ns_t_array.rs
49
index 6bc389702f54..068e10ddea1b 100644
50
--- servo/components/style/gecko_bindings/sugar/ns_t_array.rs
51
+++ servo/components/style/gecko_bindings/sugar/ns_t_array.rs
52
@@ -90,7 +90,7 @@ impl<T> nsTArray<T> {
53
         // this can leak
54
         debug_assert!(len >= self.len() as u32);
55
         self.ensure_capacity(len as usize);
56
-        let mut header = self.header_mut();
57
+        let header = self.header_mut();
58
         header.mLength = len;
59
     }
60
 
61
@@ -99,7 +99,7 @@ impl<T> nsTArray<T> {
62
     /// This will not leak since it only works on POD types (and thus doesn't assert)
63
     pub unsafe fn set_len_pod(&mut self, len: u32) where T: Copy {
64
         self.ensure_capacity(len as usize);
65
-        let mut header = unsafe { self.header_mut() };
66
+        let header = unsafe { self.header_mut() };
67
         header.mLength = len;
68
     }
69
 }
70
diff --git servo/components/style/properties/gecko.mako.rs servo/components/style/properties/gecko.mako.rs
71
index 9a2ab2135fc5..bc41ef139af5 100644
72
--- servo/components/style/properties/gecko.mako.rs
73
+++ servo/components/style/properties/gecko.mako.rs
74
@@ -4136,14 +4136,14 @@ fn static_assert() {
75
                     fn init_shadow(filter: &mut nsStyleFilter) -> &mut nsCSSShadowArray {
76
                         unsafe {
77
                             let ref mut union = filter.__bindgen_anon_1;
78
-                            let mut shadow_array: &mut *mut nsCSSShadowArray = union.mDropShadow.as_mut();
79
+                            let shadow_array: &mut *mut nsCSSShadowArray = union.mDropShadow.as_mut();
80
                             *shadow_array = Gecko_NewCSSShadowArray(1);
81
 
82
                             &mut **shadow_array
83
                         }
84
                     }
85
 
86
-                    let mut gecko_shadow = init_shadow(gecko_filter);
87
+                    let gecko_shadow = init_shadow(gecko_filter);
88
                     gecko_shadow.mArray[0].set_from_simple_shadow(shadow);
89
                 },
90
                 Url(ref url) => {
91
@@ -4665,14 +4665,14 @@ fn static_assert() {
92
                     unsafe {
93
                         // We have to be very careful to avoid a copy here!
94
                         let ref mut union = ${ident}.__bindgen_anon_1;
95
-                        let mut shape: &mut *mut StyleBasicShape = union.mBasicShape.as_mut();
96
+                        let shape: &mut *mut StyleBasicShape = union.mBasicShape.as_mut();
97
                         *shape = Gecko_NewBasicShape(ty);
98
                         &mut **shape
99
                     }
100
                 }
101
                 match servo_shape {
102
                     BasicShape::Inset(inset) => {
103
-                        let mut shape = init_shape(${ident}, StyleBasicShapeType::Inset);
104
+                        let shape = init_shape(${ident}, StyleBasicShapeType::Inset);
105
                         unsafe { shape.mCoordinates.set_len(4) };
106
 
107
                         // set_len() can't call constructors, so the coordinates
108
@@ -4694,7 +4694,7 @@ fn static_assert() {
109
                         set_corners_from_radius(inset.round, &mut shape.mRadius);
110
                     }
111
                     BasicShape::Circle(circ) => {
112
-                        let mut shape = init_shape(${ident}, StyleBasicShapeType::Circle);
113
+                        let shape = init_shape(${ident}, StyleBasicShapeType::Circle);
114
                         unsafe { shape.mCoordinates.set_len(1) };
115
                         shape.mCoordinates[0].leaky_set_null();
116
                         circ.radius.to_gecko_style_coord(&mut shape.mCoordinates[0]);
117
@@ -4702,7 +4702,7 @@ fn static_assert() {
118
                         shape.mPosition = circ.position.into();
119
                     }
120
                     BasicShape::Ellipse(el) => {
121
-                        let mut shape = init_shape(${ident}, StyleBasicShapeType::Ellipse);
122
+                        let shape = init_shape(${ident}, StyleBasicShapeType::Ellipse);
123
                         unsafe { shape.mCoordinates.set_len(2) };
124
                         shape.mCoordinates[0].leaky_set_null();
125
                         el.semiaxis_x.to_gecko_style_coord(&mut shape.mCoordinates[0]);
126
@@ -4712,7 +4712,7 @@ fn static_assert() {
127
                         shape.mPosition = el.position.into();
128
                     }
129
                     BasicShape::Polygon(poly) => {
130
-                        let mut shape = init_shape(${ident}, StyleBasicShapeType::Polygon);
131
+                        let shape = init_shape(${ident}, StyleBasicShapeType::Polygon);
132
                         unsafe {
133
                             shape.mCoordinates.set_len(poly.coordinates.len() as u32 * 2);
134
                         }
135
@@ -4797,7 +4797,7 @@ clip-path
136
             bindings::Gecko_nsStyleSVG_SetDashArrayLength(&mut self.gecko, v.len() as u32);
137
         }
138
 
139
-        for (mut gecko, servo) in self.gecko.mStrokeDasharray.iter_mut().zip(v) {
140
+        for (gecko, servo) in self.gecko.mStrokeDasharray.iter_mut().zip(v) {
141
             match servo {
142
                 Either::First(number) => gecko.set_value(CoordDataValue::Factor(number)),
143
                 Either::Second(lop) => gecko.set(lop),
144
@@ -4885,7 +4885,7 @@ clip-path
145
         }
146
 
147
         self.gecko.mContextPropsBits = 0;
148
-        for (mut gecko, servo) in self.gecko.mContextProps.iter_mut().zip(v) {
149
+        for (gecko, servo) in self.gecko.mContextProps.iter_mut().zip(v) {
150
             if servo.0 == atom!("fill") {
151
                 self.gecko.mContextPropsBits |= structs::NS_STYLE_CONTEXT_PROPERTY_FILL as u8;
152
             } else if servo.0 == atom!("stroke") {
153
diff --git servo/components/style/style_adjuster.rs servo/components/style/style_adjuster.rs
154
index 03b15916b237..366641ebe0bc 100644
155
--- servo/components/style/style_adjuster.rs
156
+++ servo/components/style/style_adjuster.rs
157
@@ -167,7 +167,7 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> {
158
         // When 'contain: paint', update overflow from 'visible' to 'clip'.
159
         if self.style.get_box().clone_contain().contains(contain::PAINT) {
160
             if self.style.get_box().clone_overflow_x() == overflow::visible {
161
-                let mut box_style = self.style.mutate_box();
162
+                let box_style = self.style.mutate_box();
163
                 box_style.set_overflow_x(overflow::_moz_hidden_unscrollable);
164
                 box_style.set_overflow_y(overflow::_moz_hidden_unscrollable);
165
             }
166
@@ -182,7 +182,7 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> {
167
         use properties::longhands::font_style::computed_value::T as font_style;
168
         use properties::longhands::font_weight::computed_value::T as font_weight;
169
         if self.style.get_font().clone__moz_math_variant() != moz_math_variant::none {
170
-            let mut font_style = self.style.mutate_font();
171
+            let font_style = self.style.mutate_font();
172
             // Sadly we don't have a nice name for the computed value
173
             // of "font-weight: normal".
174
             font_style.set_font_weight(font_weight::normal());
175
diff --git servo/ports/geckolib/glue.rs servo/ports/geckolib/glue.rs
176
index 977728286fc3..fa09bee29553 100644
177
--- servo/ports/geckolib/glue.rs
178
+++ servo/ports/geckolib/glue.rs
179
@@ -815,7 +815,7 @@ pub extern "C" fn Servo_StyleSet_AppendStyleSheet(
180
 ) {
181
     let global_style_data = &*GLOBAL_STYLE_DATA;
182
     let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut();
183
-    let mut data = &mut *data;
184
+    let data = &mut *data;
185
     let guard = global_style_data.shared_lock.read();
186
     data.stylesheets.append_stylesheet(
187
         &data.stylist,
188
@@ -867,7 +867,7 @@ pub extern "C" fn Servo_StyleSet_PrependStyleSheet(
189
 ) {
190
     let global_style_data = &*GLOBAL_STYLE_DATA;
191
     let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut();
192
-    let mut data = &mut *data;
193
+    let data = &mut *data;
194
     let guard = global_style_data.shared_lock.read();
195
     data.stylesheets.prepend_stylesheet(
196
         &data.stylist,
197
@@ -885,7 +885,7 @@ pub extern "C" fn Servo_StyleSet_InsertStyleSheetBefore(
198
 ) {
199
     let global_style_data = &*GLOBAL_STYLE_DATA;
200
     let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut();
201
-    let mut data = &mut *data;
202
+    let data = &mut *data;
203
     let guard = global_style_data.shared_lock.read();
204
     data.stylesheets.insert_stylesheet_before(
205
         &data.stylist,
206
@@ -903,7 +903,7 @@ pub extern "C" fn Servo_StyleSet_RemoveStyleSheet(
207
 ) {
208
     let global_style_data = &*GLOBAL_STYLE_DATA;
209
     let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut();
210
-    let mut data = &mut *data;
211
+    let data = &mut *data;
212
     let guard = global_style_data.shared_lock.read();
213
     data.stylesheets.remove_stylesheet(
214
         &data.stylist,
215
@@ -1274,7 +1274,7 @@ pub extern "C" fn Servo_StyleRule_GetSpecificityAtIndex(
216
     specificity: *mut u64
217
 ) {
218
     read_locked_arc(rule, |rule: &StyleRule| {
219
-        let mut specificity =  unsafe { specificity.as_mut().unwrap() };
220
+        let specificity =  unsafe { specificity.as_mut().unwrap() };
221
         let index = index as usize;
222
         if index >= rule.selectors.0.len() {
223
             *specificity = 0;
224
@@ -2775,7 +2775,7 @@ pub extern "C" fn Servo_NoteExplicitHints(element: RawGeckoElementBorrowed,
225
 pub extern "C" fn Servo_TakeChangeHint(element: RawGeckoElementBorrowed,
226
                                        was_restyled: *mut bool) -> nsChangeHint
227
 {
228
-    let mut was_restyled =  unsafe { was_restyled.as_mut().unwrap() };
229
+    let was_restyled =  unsafe { was_restyled.as_mut().unwrap() };
230
     let element = GeckoElement(element);
231
 
232
     let damage = match element.mutate_data() {

Return to bug 222693