FreeBSD Bugzilla – Attachment 187925 Details for
Bug 222693
www/firefox: update to 57.0
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
rc3 (rebased after ports r454000)
ff57.diff (text/plain), 222.97 KB, created by
Jan Beich
on 2017-11-11 20:48:03 UTC
(
hide
)
Description:
rc3 (rebased after ports r454000)
Filename:
MIME Type:
Creator:
Jan Beich
Created:
2017-11-11 20:48:03 UTC
Size:
222.97 KB
patch
obsolete
>From 446adbcc50ce10d608a886279f0ac49c178e32d4 Mon Sep 17 00:00:00 2001 >From: Jan Beich <jbeich@FreeBSD.org> >Date: Sat, 11 Nov 2017 20:45:34 +0000 >Subject: [PATCH] www/firefox: update to 57.0 > >Changes: https://www.mozilla.org/firefox/57.0/releasenotes/ >PR: 222693 >Tested by: pi, tobik, TrueOS >--- > Mk/Uses/gecko.mk | 4 +- > www/firefox-i18n/Makefile | 6 +- > www/firefox-i18n/distinfo | 382 +++++----- > www/firefox/Makefile | 13 +- > www/firefox/distinfo | 6 +- > www/firefox/files/patch-bug1261175 | 25 - > www/firefox/files/patch-bug1343147 | 117 --- > www/firefox/files/patch-bug1355576 | 262 ------- > www/firefox/files/patch-bug1369561 | 66 -- > www/firefox/files/patch-bug1375146 | 37 - > www/firefox/files/patch-bug1384701 | 796 --------------------- > www/firefox/files/patch-bug1386887 | 89 --- > www/firefox/files/patch-bug1386957 | 14 - > www/firefox/files/patch-bug1387799 | 49 -- > www/firefox/files/patch-bug1393283 | 144 ---- > www/firefox/files/patch-bug1394265 | 24 - > www/firefox/files/patch-bug1394530 | 60 -- > www/firefox/files/patch-bug1395138 | 49 -- > www/firefox/files/patch-bug1397811 | 48 -- > www/firefox/files/patch-bug1400003 | 120 ---- > www/firefox/files/patch-bug1400554 | 27 - > www/firefox/files/patch-bug1401573 | 27 - > www/firefox/files/patch-bug1401804 | 31 - > www/firefox/files/patch-bug1402442 | 181 ----- > www/firefox/files/patch-bug1404324 | 299 -------- > www/firefox/files/patch-bug1404636 | 111 --- > www/firefox/files/patch-bug1404910 | 170 ----- > www/firefox/files/patch-bug1406398 | 36 - > www/firefox/files/patch-bug1406750 | 47 -- > www/firefox/files/patch-bug1407375 | 28 - > www/firefox/files/patch-bug1407740 | 26 - > www/firefox/files/patch-bug1407751 | 35 - > www/firefox/files/patch-bug1408005 | 25 - > www/firefox/files/patch-bug1408412 | 37 - > www/firefox/files/patch-bug1408990 | 34 - > www/firefox/files/patch-bug1409680 | 27 - > www/firefox/files/patch-bug1411458 | 44 -- > www/firefox/files/patch-bug1412252 | 42 -- > www/firefox/files/patch-bug847568 | 2 +- > www/firefox/files/patch-build-pgo-profileserver.py | 20 +- > www/firefox/files/patch-servo17934 | 53 -- > www/firefox/files/patch-servo17969 | 110 --- > www/firefox/files/patch-servo18046 | 763 -------------------- > www/firefox/files/patch-servo18126 | 232 ------ > 44 files changed, 216 insertions(+), 4502 deletions(-) > delete mode 100644 www/firefox/files/patch-bug1261175 > delete mode 100644 www/firefox/files/patch-bug1343147 > delete mode 100644 www/firefox/files/patch-bug1355576 > delete mode 100644 www/firefox/files/patch-bug1369561 > delete mode 100644 www/firefox/files/patch-bug1375146 > delete mode 100644 www/firefox/files/patch-bug1384701 > delete mode 100644 www/firefox/files/patch-bug1386887 > delete mode 100644 www/firefox/files/patch-bug1386957 > delete mode 100644 www/firefox/files/patch-bug1387799 > delete mode 100644 www/firefox/files/patch-bug1393283 > delete mode 100644 www/firefox/files/patch-bug1394265 > delete mode 100644 www/firefox/files/patch-bug1394530 > delete mode 100644 www/firefox/files/patch-bug1395138 > delete mode 100644 www/firefox/files/patch-bug1397811 > delete mode 100644 www/firefox/files/patch-bug1400003 > delete mode 100644 www/firefox/files/patch-bug1400554 > delete mode 100644 www/firefox/files/patch-bug1401573 > delete mode 100644 www/firefox/files/patch-bug1401804 > delete mode 100644 www/firefox/files/patch-bug1402442 > delete mode 100644 www/firefox/files/patch-bug1404324 > delete mode 100644 www/firefox/files/patch-bug1404636 > delete mode 100644 www/firefox/files/patch-bug1404910 > delete mode 100644 www/firefox/files/patch-bug1406398 > delete mode 100644 www/firefox/files/patch-bug1406750 > delete mode 100644 www/firefox/files/patch-bug1407375 > delete mode 100644 www/firefox/files/patch-bug1407740 > delete mode 100644 www/firefox/files/patch-bug1407751 > delete mode 100644 www/firefox/files/patch-bug1408005 > delete mode 100644 www/firefox/files/patch-bug1408412 > delete mode 100644 www/firefox/files/patch-bug1408990 > delete mode 100644 www/firefox/files/patch-bug1409680 > delete mode 100644 www/firefox/files/patch-bug1411458 > delete mode 100644 www/firefox/files/patch-bug1412252 > delete mode 100644 www/firefox/files/patch-servo17934 > delete mode 100644 www/firefox/files/patch-servo17969 > delete mode 100644 www/firefox/files/patch-servo18046 > delete mode 100644 www/firefox/files/patch-servo18126 > >diff --git a/Mk/Uses/gecko.mk b/Mk/Uses/gecko.mk >index 1be490172a79..432c60edd28e 100644 >--- a/Mk/Uses/gecko.mk >+++ b/Mk/Uses/gecko.mk >@@ -37,12 +37,12 @@ RUN_DEPENDS+= libxul>=45:www/libxul > .elif ${gecko_ARGS:Mfirefox} > > _GECKO_DEFAULT_VERSION= 52 >-_GECKO_VERSIONS= 52 56 >+_GECKO_VERSIONS= 52 57 > _GECKO_TYPE= firefox > > # Dependence lines for different Firefox versions > 52_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox-esr >-56_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox >+57_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox > > .if exists(${LOCALBASE}/bin/firefox) > _GECKO_INSTALLED_VER!= ${LOCALBASE}/bin/firefox --version 2>/dev/null >diff --git a/www/firefox-i18n/Makefile b/www/firefox-i18n/Makefile >index 2d34e53e1fbe..97434b1330cf 100644 >--- a/www/firefox-i18n/Makefile >+++ b/www/firefox-i18n/Makefile >@@ -2,10 +2,10 @@ > # $FreeBSD$ > > PORTNAME= firefox-i18n >-PORTVERSION= 56.0.2 >+PORTVERSION= 57.0 > CATEGORIES= www > MASTER_SITES= MOZILLA/${PORTNAME:S|-i18n||}/releases/${DISTVERSION}/linux-i686/xpi \ >- MOZILLA/${PORTNAME:S|-i18n||}/candidates/${DISTVERSION}-candidates/build1/linux-i686/xpi >+ MOZILLA/${PORTNAME:S|-i18n||}/candidates/${DISTVERSION}-candidates/build3/linux-i686/xpi > PKGNAMEPREFIX= > DISTFILES= ${FIREFOX_I18N_:S/$/.xpi/} > DIST_SUBDIR= xpi/${DISTNAME} >@@ -15,7 +15,7 @@ COMMENT= Localized interface for Firefox > > EXTRACT_DEPENDS= zip:archivers/zip > >-USES= zip:infozip gecko:firefox,56,build >+USES= zip:infozip gecko:firefox,57,build > USE_XPI= firefox > > NO_ARCH= yes >diff --git a/www/firefox-i18n/distinfo b/www/firefox-i18n/distinfo >index 5361ed4719b4..93494c9f047c 100644 >--- a/www/firefox-i18n/distinfo >+++ b/www/firefox-i18n/distinfo >@@ -1,191 +1,191 @@ >-TIMESTAMP = 1508873487 >-SHA256 (xpi/firefox-i18n-56.0.2/ach.xpi) = a78c4900c9dac71ea312d5ceda13987f4f8418ab078374c0e292cd30ce79aa23 >-SIZE (xpi/firefox-i18n-56.0.2/ach.xpi) = 454896 >-SHA256 (xpi/firefox-i18n-56.0.2/af.xpi) = e0ea5e99eb7cedd0c3893ae4baa3ca2af7f814bc069dcbf921069dcaba762fc6 >-SIZE (xpi/firefox-i18n-56.0.2/af.xpi) = 456214 >-SHA256 (xpi/firefox-i18n-56.0.2/an.xpi) = 18e3c4e6f85fb296bd955b110ba2c6a381ba4ba8de3a0e2990bc4618f9438593 >-SIZE (xpi/firefox-i18n-56.0.2/an.xpi) = 475863 >-SHA256 (xpi/firefox-i18n-56.0.2/ar.xpi) = c8dcb494321e5ef34092b7555ec67147461b387803df895c30858314f0509acb >-SIZE (xpi/firefox-i18n-56.0.2/ar.xpi) = 500711 >-SHA256 (xpi/firefox-i18n-56.0.2/as.xpi) = e77f99a72083b49e30f453d1f40ac670e42e6a637b8bb4e7c914f74b24e6b582 >-SIZE (xpi/firefox-i18n-56.0.2/as.xpi) = 508237 >-SHA256 (xpi/firefox-i18n-56.0.2/ast.xpi) = e4fe6028af88b67dce678e6a1215cda2c2aa0cbe76eb95947c46e08d93bb23bc >-SIZE (xpi/firefox-i18n-56.0.2/ast.xpi) = 469157 >-SHA256 (xpi/firefox-i18n-56.0.2/az.xpi) = 5d9cd26da6e1afe41c9d032054b066a9e0a13f7cfd9701e8126147f405ae6f1a >-SIZE (xpi/firefox-i18n-56.0.2/az.xpi) = 484984 >-SHA256 (xpi/firefox-i18n-56.0.2/be.xpi) = 647318eb3b3060ba2384ecf4b4b96fb70fb54f1428c20f776d8d99f75eed5f49 >-SIZE (xpi/firefox-i18n-56.0.2/be.xpi) = 531385 >-SHA256 (xpi/firefox-i18n-56.0.2/bg.xpi) = a844374d3453747f30382acf6019d379596f812f68d49ba7245a18993cea5ffb >-SIZE (xpi/firefox-i18n-56.0.2/bg.xpi) = 528789 >-SHA256 (xpi/firefox-i18n-56.0.2/bn-BD.xpi) = caafe8df84189999ed513e4f88e91f8b8c35e8a1d13fa54bd54f3a0654ec1f02 >-SIZE (xpi/firefox-i18n-56.0.2/bn-BD.xpi) = 542772 >-SHA256 (xpi/firefox-i18n-56.0.2/bn-IN.xpi) = 4278938cf3be47f2e7a865a2221c10f383b8c7930f71b2bd0c4ce09c1ff8a3c8 >-SIZE (xpi/firefox-i18n-56.0.2/bn-IN.xpi) = 534450 >-SHA256 (xpi/firefox-i18n-56.0.2/br.xpi) = 65e8b0a3e55e99701e0ecfb9cdb0775afc0946f23eab34d4ada4f0d973d2076d >-SIZE (xpi/firefox-i18n-56.0.2/br.xpi) = 464256 >-SHA256 (xpi/firefox-i18n-56.0.2/bs.xpi) = fef54b5ba9231eaedbe216c1f9e7c86d831ed032d1fcd6e5dd15a06619ad69ac >-SIZE (xpi/firefox-i18n-56.0.2/bs.xpi) = 472256 >-SHA256 (xpi/firefox-i18n-56.0.2/ca.xpi) = 11dc866f5f2a16622fa45c36c174150293e123bfd970890e4403ed224d6e4eb6 >-SIZE (xpi/firefox-i18n-56.0.2/ca.xpi) = 480364 >-SHA256 (xpi/firefox-i18n-56.0.2/cak.xpi) = 1ed05bcdb3977850ae21847f70122111ff459cc6669130ec9db5ccf11dde117f >-SIZE (xpi/firefox-i18n-56.0.2/cak.xpi) = 489507 >-SHA256 (xpi/firefox-i18n-56.0.2/cs.xpi) = 1191121195a77ec1315ec379b307819f1ce6b15bfa1bb9fc31ec0148cb08bcf5 >-SIZE (xpi/firefox-i18n-56.0.2/cs.xpi) = 485090 >-SHA256 (xpi/firefox-i18n-56.0.2/cy.xpi) = a04d0d37f46b89d2aba85eebc1524daba41b3a6db468e61a924e83b2814d8845 >-SIZE (xpi/firefox-i18n-56.0.2/cy.xpi) = 466288 >-SHA256 (xpi/firefox-i18n-56.0.2/da.xpi) = 3822d31c6b83317216f5124d603d9a8b8180a06d2407426dd90b71891c155f0c >-SIZE (xpi/firefox-i18n-56.0.2/da.xpi) = 460091 >-SHA256 (xpi/firefox-i18n-56.0.2/de.xpi) = ee02b96baf96be7e69ff12f06576a270e48ca454cc8f93c51070ebdd9c2a03f7 >-SIZE (xpi/firefox-i18n-56.0.2/de.xpi) = 473856 >-SHA256 (xpi/firefox-i18n-56.0.2/dsb.xpi) = 227588519f2ae092f6cbf0531287c5c36b7037c3355cc0d9e0e024d4e84472e3 >-SIZE (xpi/firefox-i18n-56.0.2/dsb.xpi) = 489897 >-SHA256 (xpi/firefox-i18n-56.0.2/el.xpi) = ace7c78e28297ea4dcc90a2b8c2881afc812a2416ae4cdba499749349bc2d3f3 >-SIZE (xpi/firefox-i18n-56.0.2/el.xpi) = 554120 >-SHA256 (xpi/firefox-i18n-56.0.2/en-GB.xpi) = 55fb37a478f2521b1b1543498d373ade08126c3ac71127bfbde504d8a3f95e16 >-SIZE (xpi/firefox-i18n-56.0.2/en-GB.xpi) = 447375 >-SHA256 (xpi/firefox-i18n-56.0.2/en-US.xpi) = 618f390c9a36aed65860d6ad20444c9c6224471d0a394de92a21262291327ff2 >-SIZE (xpi/firefox-i18n-56.0.2/en-US.xpi) = 446951 >-SHA256 (xpi/firefox-i18n-56.0.2/en-ZA.xpi) = 2fa254426d945152e9eb01cc02a8f86415fa5425aefed9825bd1dea9b6d0b76a >-SIZE (xpi/firefox-i18n-56.0.2/en-ZA.xpi) = 445916 >-SHA256 (xpi/firefox-i18n-56.0.2/eo.xpi) = f1d9e7acc5bb36a2acfb1659ad0857e5d2c9800836d096f41ceb87977a6e7377 >-SIZE (xpi/firefox-i18n-56.0.2/eo.xpi) = 468952 >-SHA256 (xpi/firefox-i18n-56.0.2/es-AR.xpi) = 12f34c15fb4cf11e5c007ea19a97f91370a66e192cc3c0aed5405659be36eaa3 >-SIZE (xpi/firefox-i18n-56.0.2/es-AR.xpi) = 475449 >-SHA256 (xpi/firefox-i18n-56.0.2/es-CL.xpi) = 5239da279a01681c00ece001d1477abba04b41d50fd442e761140ba93b68870f >-SIZE (xpi/firefox-i18n-56.0.2/es-CL.xpi) = 479922 >-SHA256 (xpi/firefox-i18n-56.0.2/es-ES.xpi) = 98b7422e833226916953ac89201652f406f84c805d293ab949adae475fc03a7c >-SIZE (xpi/firefox-i18n-56.0.2/es-ES.xpi) = 365631 >-SHA256 (xpi/firefox-i18n-56.0.2/es-MX.xpi) = 9516c169b883f8208c996f461221e9bb917e2e56c1f67d01f67026a8f5de3a1b >-SIZE (xpi/firefox-i18n-56.0.2/es-MX.xpi) = 482565 >-SHA256 (xpi/firefox-i18n-56.0.2/et.xpi) = dff5cbe5b933511fc10c1209dde31c45a521c9e687d909f4915eaf3eac8a3ad3 >-SIZE (xpi/firefox-i18n-56.0.2/et.xpi) = 462104 >-SHA256 (xpi/firefox-i18n-56.0.2/eu.xpi) = d47fe44fcab9328102334596678fe89289d8de44cd9018e13e1bcc70823ec6ec >-SIZE (xpi/firefox-i18n-56.0.2/eu.xpi) = 467884 >-SHA256 (xpi/firefox-i18n-56.0.2/fa.xpi) = 8f25e71eb0ee9ad9e90d9948012713013ee03b6fe1b3837b1d903c5102be0a93 >-SIZE (xpi/firefox-i18n-56.0.2/fa.xpi) = 522909 >-SHA256 (xpi/firefox-i18n-56.0.2/ff.xpi) = b8416ca244cb8c99744dc3c6daa55d893754ed051ea9731f57b49edc2f0e18f1 >-SIZE (xpi/firefox-i18n-56.0.2/ff.xpi) = 463098 >-SHA256 (xpi/firefox-i18n-56.0.2/fi.xpi) = 1c6ecc0d72a500f5a77a8fdde5e288ce2c578bc1b1de3d1a062e6d7a71765130 >-SIZE (xpi/firefox-i18n-56.0.2/fi.xpi) = 461923 >-SHA256 (xpi/firefox-i18n-56.0.2/fr.xpi) = 3aa8e3e74e35a4e1ca948cb83b42bb9b2c95ec6abdbc8b0872129f6f75d4e2e1 >-SIZE (xpi/firefox-i18n-56.0.2/fr.xpi) = 484561 >-SHA256 (xpi/firefox-i18n-56.0.2/fy-NL.xpi) = 21b16ee4d0a232d6860c9fa6db296544e13e9500796451a98adebcdf35f88c66 >-SIZE (xpi/firefox-i18n-56.0.2/fy-NL.xpi) = 478044 >-SHA256 (xpi/firefox-i18n-56.0.2/ga-IE.xpi) = 4d780a2c0f362742f069842ae2d7ddf3dd8177e66405c9c570ef52b2e7de1f32 >-SIZE (xpi/firefox-i18n-56.0.2/ga-IE.xpi) = 489379 >-SHA256 (xpi/firefox-i18n-56.0.2/gd.xpi) = 9e4e1ffc31853fe3e0d4e9e23cd1ccdf0be1b50182cefc9581b902370a3ae2fc >-SIZE (xpi/firefox-i18n-56.0.2/gd.xpi) = 476927 >-SHA256 (xpi/firefox-i18n-56.0.2/gl.xpi) = 7dc3615f3eca3bc09472207b8d78644923526dd51651a6a04cf8449bf78cca4b >-SIZE (xpi/firefox-i18n-56.0.2/gl.xpi) = 466468 >-SHA256 (xpi/firefox-i18n-56.0.2/gn.xpi) = 32d64cb5ceb3a8b53abafd0699d9697f190e137155484fc06968efe3ab2da294 >-SIZE (xpi/firefox-i18n-56.0.2/gn.xpi) = 485790 >-SHA256 (xpi/firefox-i18n-56.0.2/gu-IN.xpi) = 574654d88abc8d620d5d29c09a281738ff463f8a0e09386373005a4c33cd7adf >-SIZE (xpi/firefox-i18n-56.0.2/gu-IN.xpi) = 513740 >-SHA256 (xpi/firefox-i18n-56.0.2/he.xpi) = aa4437d071736c8009ff81f79cf51348fa7ce02d82dd603cc08c00997de79ddc >-SIZE (xpi/firefox-i18n-56.0.2/he.xpi) = 488495 >-SHA256 (xpi/firefox-i18n-56.0.2/hi-IN.xpi) = 9faa3d8242f2e13e82334c91018137a23a88374d6d8bcbdbca0bac69b709487d >-SIZE (xpi/firefox-i18n-56.0.2/hi-IN.xpi) = 538303 >-SHA256 (xpi/firefox-i18n-56.0.2/hr.xpi) = 78ea8859fc47c3fd35055ad7dacd3c89192619f637d1b10a5515db49c1aabd63 >-SIZE (xpi/firefox-i18n-56.0.2/hr.xpi) = 475058 >-SHA256 (xpi/firefox-i18n-56.0.2/hsb.xpi) = 7e868a01a8c881319703dd2d40aa7a90a2a6afda350a93cdee785c1cee3e334c >-SIZE (xpi/firefox-i18n-56.0.2/hsb.xpi) = 487599 >-SHA256 (xpi/firefox-i18n-56.0.2/hu.xpi) = ba7c06ffe790cb31450c47ffc73c0ef402e759e8d6798c284ab3004aa9b1a154 >-SIZE (xpi/firefox-i18n-56.0.2/hu.xpi) = 490102 >-SHA256 (xpi/firefox-i18n-56.0.2/hy-AM.xpi) = 5a78e97fe3b0a106a9839714e2a811d52501e5c427ba9c943bdcbdd2beb303cb >-SIZE (xpi/firefox-i18n-56.0.2/hy-AM.xpi) = 527711 >-SHA256 (xpi/firefox-i18n-56.0.2/id.xpi) = 916e89bb2bf8fcd0671a1cfe34944643e3f3bb1aeccf6bc7b86329e1f3261cb3 >-SIZE (xpi/firefox-i18n-56.0.2/id.xpi) = 459066 >-SHA256 (xpi/firefox-i18n-56.0.2/is.xpi) = f424cf833f52cb6a57933e6173bad7a1df2e01b9233feb0abfab0e9f3fd13a78 >-SIZE (xpi/firefox-i18n-56.0.2/is.xpi) = 467447 >-SHA256 (xpi/firefox-i18n-56.0.2/it.xpi) = 49e286eecc3e31a2581f728783f25717b994e466a1329f5121efff04d3400ccd >-SIZE (xpi/firefox-i18n-56.0.2/it.xpi) = 358695 >-SHA256 (xpi/firefox-i18n-56.0.2/ja.xpi) = f981b5dd41b2d2479034720d4d8d4ec98b936e5d4b092e954057a3135b802d93 >-SIZE (xpi/firefox-i18n-56.0.2/ja.xpi) = 527926 >-SHA256 (xpi/firefox-i18n-56.0.2/ka.xpi) = c84ec7d427a84290cc760cf35a900a188621c7c8fbc3b48f63d7c000642eb3c1 >-SIZE (xpi/firefox-i18n-56.0.2/ka.xpi) = 509096 >-SHA256 (xpi/firefox-i18n-56.0.2/kab.xpi) = e8ffa26d1acef0cfb554eced0b86656c4ac504b5459bb8fd3eb86c5292df7b3e >-SIZE (xpi/firefox-i18n-56.0.2/kab.xpi) = 477420 >-SHA256 (xpi/firefox-i18n-56.0.2/kk.xpi) = 5c918b32273f6a107c6a8d78be58c9e757884dcc28951949db39bba705c95d37 >-SIZE (xpi/firefox-i18n-56.0.2/kk.xpi) = 534932 >-SHA256 (xpi/firefox-i18n-56.0.2/km.xpi) = 52c280027d92449fda3cd321a091b2f65f401d417bff7fdce692191b748f99c2 >-SIZE (xpi/firefox-i18n-56.0.2/km.xpi) = 549344 >-SHA256 (xpi/firefox-i18n-56.0.2/kn.xpi) = 03120c4eb742e750c46f266fceb69cd1a8b97d3cf5bd0f2a55485d25af502272 >-SIZE (xpi/firefox-i18n-56.0.2/kn.xpi) = 545517 >-SHA256 (xpi/firefox-i18n-56.0.2/ko.xpi) = 60171b4d104a456df4a7fc60dc506eaa0ced1a32a216461bbddd2a215200f61b >-SIZE (xpi/firefox-i18n-56.0.2/ko.xpi) = 502895 >-SHA256 (xpi/firefox-i18n-56.0.2/lij.xpi) = b0b07f9e4be734145b6472ef506b4cb99c85eea98ece31dad6efa2003d59f893 >-SIZE (xpi/firefox-i18n-56.0.2/lij.xpi) = 467275 >-SHA256 (xpi/firefox-i18n-56.0.2/lt.xpi) = 09302dfb196300ae49c47cf4a9a1ac9ec4df954defa8abd19bdd985852af94b5 >-SIZE (xpi/firefox-i18n-56.0.2/lt.xpi) = 488753 >-SHA256 (xpi/firefox-i18n-56.0.2/lv.xpi) = 9f47b7ef87c55320d6d67a15f61a87b0cc9e891a5aeac382badfe3e3b27b51e4 >-SIZE (xpi/firefox-i18n-56.0.2/lv.xpi) = 481628 >-SHA256 (xpi/firefox-i18n-56.0.2/mai.xpi) = f16a670648ebdc3b914620d7fbe4f6095952f65c658901ecfcfbbc37645f5fdb >-SIZE (xpi/firefox-i18n-56.0.2/mai.xpi) = 524702 >-SHA256 (xpi/firefox-i18n-56.0.2/mk.xpi) = e537b92b6af439a1c1b9e667939f146b7a2ad17eae3d4f9075d1ad70bb958b0f >-SIZE (xpi/firefox-i18n-56.0.2/mk.xpi) = 507818 >-SHA256 (xpi/firefox-i18n-56.0.2/ml.xpi) = 5714a5481f111e1467a596973c824e9d09cb1e464cc74c332582d5079b495efd >-SIZE (xpi/firefox-i18n-56.0.2/ml.xpi) = 547547 >-SHA256 (xpi/firefox-i18n-56.0.2/mr.xpi) = 2993e10fa67e526691859805b5bf928be5607d59ceedbbb7aa68962688fa6723 >-SIZE (xpi/firefox-i18n-56.0.2/mr.xpi) = 536673 >-SHA256 (xpi/firefox-i18n-56.0.2/ms.xpi) = 7b4a6353a3b2e6e2fc923dc43191c0bc463aeacc9d9eaadb032f93f00376b6df >-SIZE (xpi/firefox-i18n-56.0.2/ms.xpi) = 466107 >-SHA256 (xpi/firefox-i18n-56.0.2/my.xpi) = 9ef461ae9ec46bc6198456411232ed37a0ed68f11d4bc587d2b8b4d8247868d5 >-SIZE (xpi/firefox-i18n-56.0.2/my.xpi) = 536722 >-SHA256 (xpi/firefox-i18n-56.0.2/nb-NO.xpi) = ee407654fbfad2523ec72fc921b9072772bacc231636b460ac239c406a43132f >-SIZE (xpi/firefox-i18n-56.0.2/nb-NO.xpi) = 465575 >-SHA256 (xpi/firefox-i18n-56.0.2/nl.xpi) = bbba1d13636b0f03868d202893eb995f3112a56ac2453bbdde6b8fb856fe49b1 >-SIZE (xpi/firefox-i18n-56.0.2/nl.xpi) = 469053 >-SHA256 (xpi/firefox-i18n-56.0.2/nn-NO.xpi) = 8120d52f0e9a0ecd870a0ea0d3b887df12b129d3bfda7c83f09e4036907d08e6 >-SIZE (xpi/firefox-i18n-56.0.2/nn-NO.xpi) = 466208 >-SHA256 (xpi/firefox-i18n-56.0.2/or.xpi) = 325acd5539ec48f65320ff0f5768fbdced82c788750f7c0cd00bf2a264751e32 >-SIZE (xpi/firefox-i18n-56.0.2/or.xpi) = 518165 >-SHA256 (xpi/firefox-i18n-56.0.2/pa-IN.xpi) = 2e3bcfc268606f1496226ca549df40e9c6b8b9f972cdd7f84d4d5c4b32173294 >-SIZE (xpi/firefox-i18n-56.0.2/pa-IN.xpi) = 509046 >-SHA256 (xpi/firefox-i18n-56.0.2/pl.xpi) = c6123361207e67bfd6f859c65c369fa0b22561fbb46b548d9b322433f209a712 >-SIZE (xpi/firefox-i18n-56.0.2/pl.xpi) = 377524 >-SHA256 (xpi/firefox-i18n-56.0.2/pt-BR.xpi) = 3a45de0fd1d0b18123e4f97de1de8f57c043a8c621a02f5267643fc5fb12c8bf >-SIZE (xpi/firefox-i18n-56.0.2/pt-BR.xpi) = 470954 >-SHA256 (xpi/firefox-i18n-56.0.2/pt-PT.xpi) = b8412464435c2e3c79017bc7ecc6b7b7d7715b1b47d0ca5f6e7c320d2c2b87d1 >-SIZE (xpi/firefox-i18n-56.0.2/pt-PT.xpi) = 472803 >-SHA256 (xpi/firefox-i18n-56.0.2/rm.xpi) = 2054926b1f43459aa857234466b686553555e2afc2e6072ef3883f28b2ebc676 >-SIZE (xpi/firefox-i18n-56.0.2/rm.xpi) = 467019 >-SHA256 (xpi/firefox-i18n-56.0.2/ro.xpi) = d69ce50c34f429d4a6724b4b8d954bb3f78e5a7fb42302c2e9de9e5f870c4e0e >-SIZE (xpi/firefox-i18n-56.0.2/ro.xpi) = 470785 >-SHA256 (xpi/firefox-i18n-56.0.2/ru.xpi) = 2339cce445c2c01de77fd89079c121301dfcc082f9f8e3b0f640d0f42a648cac >-SIZE (xpi/firefox-i18n-56.0.2/ru.xpi) = 541437 >-SHA256 (xpi/firefox-i18n-56.0.2/si.xpi) = 79c3fa18f421923b48505b74e39cd4fab474685584bb5daf71f41ebd8a388402 >-SIZE (xpi/firefox-i18n-56.0.2/si.xpi) = 515921 >-SHA256 (xpi/firefox-i18n-56.0.2/sk.xpi) = 0292ae81d9ae0af15489b2b420f3156cb2f7266cd881deaa4c9e164c987271c7 >-SIZE (xpi/firefox-i18n-56.0.2/sk.xpi) = 495563 >-SHA256 (xpi/firefox-i18n-56.0.2/sl.xpi) = bea8af482218c1bfde800e3461f64d008b46b1419745127fe838a29724098b5f >-SIZE (xpi/firefox-i18n-56.0.2/sl.xpi) = 473806 >-SHA256 (xpi/firefox-i18n-56.0.2/son.xpi) = 6f93b52c42355adafc0778516defce16af99a17ee41ec0d25003ab39bfc6dda1 >-SIZE (xpi/firefox-i18n-56.0.2/son.xpi) = 464322 >-SHA256 (xpi/firefox-i18n-56.0.2/sq.xpi) = 867d12980a8d3ee7ae28faa4f09f63ed405f9ea18b6c0c776da8194ecda937ed >-SIZE (xpi/firefox-i18n-56.0.2/sq.xpi) = 479511 >-SHA256 (xpi/firefox-i18n-56.0.2/sr.xpi) = b300ada0279186be68dbf292d41d446828acc71e3dcca94cf88a2ef34b38abc9 >-SIZE (xpi/firefox-i18n-56.0.2/sr.xpi) = 504487 >-SHA256 (xpi/firefox-i18n-56.0.2/sv-SE.xpi) = 0ccdf643e1f62ff1e41ceb3fe9c35191aece0efcbfc6b24293f88f7ef1d55043 >-SIZE (xpi/firefox-i18n-56.0.2/sv-SE.xpi) = 473949 >-SHA256 (xpi/firefox-i18n-56.0.2/ta.xpi) = 0186d38239a9db92394562eb70a6960eeeee052abce62bc3672c8644a37cb859 >-SIZE (xpi/firefox-i18n-56.0.2/ta.xpi) = 530646 >-SHA256 (xpi/firefox-i18n-56.0.2/te.xpi) = 789359330bdfefb1fc379582b098c040cdb6a46f770e2c80b1695a7eb634db40 >-SIZE (xpi/firefox-i18n-56.0.2/te.xpi) = 549585 >-SHA256 (xpi/firefox-i18n-56.0.2/th.xpi) = abeb0f7ff018d44efbcea4cba5c0c62a78f42f6395ea1535f757f2045064c880 >-SIZE (xpi/firefox-i18n-56.0.2/th.xpi) = 520297 >-SHA256 (xpi/firefox-i18n-56.0.2/tr.xpi) = b3798722e3a732e422a1fbff8d1c9ca7716b3fe9b2f21cc219432ec998556e26 >-SIZE (xpi/firefox-i18n-56.0.2/tr.xpi) = 480549 >-SHA256 (xpi/firefox-i18n-56.0.2/uk.xpi) = 6854f076f5ef93e72a4f38f03a8dadc61e3a2f8afa402783bbd00bcc63b6f14f >-SIZE (xpi/firefox-i18n-56.0.2/uk.xpi) = 535436 >-SHA256 (xpi/firefox-i18n-56.0.2/ur.xpi) = 01a4d64725be568e148d88dab405545f76a24a695d499a236a2be0599489324a >-SIZE (xpi/firefox-i18n-56.0.2/ur.xpi) = 527354 >-SHA256 (xpi/firefox-i18n-56.0.2/uz.xpi) = 79092d2f830adbf05cc884aa014fa9348e3449fa206cf91286d5bfb40ebe729c >-SIZE (xpi/firefox-i18n-56.0.2/uz.xpi) = 475101 >-SHA256 (xpi/firefox-i18n-56.0.2/vi.xpi) = 65633b00c1a124a23bfda2bdb7666ab8e12e113c956930cc975f838e3de04038 >-SIZE (xpi/firefox-i18n-56.0.2/vi.xpi) = 487150 >-SHA256 (xpi/firefox-i18n-56.0.2/xh.xpi) = af99554dc838c042310acbb0a7c2623d61ff3b3045667cf301cffeb29821c008 >-SIZE (xpi/firefox-i18n-56.0.2/xh.xpi) = 477838 >-SHA256 (xpi/firefox-i18n-56.0.2/zh-CN.xpi) = f2a1bb04222fbca3845b00694342a74c8d54cbf1a64104d96f1856879aed0abf >-SIZE (xpi/firefox-i18n-56.0.2/zh-CN.xpi) = 498979 >-SHA256 (xpi/firefox-i18n-56.0.2/zh-TW.xpi) = 8c547d631522048d060be5305c277024e8038386dcad232ed742b1edf14a9471 >-SIZE (xpi/firefox-i18n-56.0.2/zh-TW.xpi) = 497765 >+TIMESTAMP = 1510006447 >+SHA256 (xpi/firefox-i18n-57.0/ach.xpi) = ff5bbdfcca5270cf978173eb13ce10bfb4b51dbd1faeb9b69c50f689a1eb3dc4 >+SIZE (xpi/firefox-i18n-57.0/ach.xpi) = 441112 >+SHA256 (xpi/firefox-i18n-57.0/af.xpi) = 65459a5914dba1de876bee7d867699ff033a9722a957675f973b5cf1213366b9 >+SIZE (xpi/firefox-i18n-57.0/af.xpi) = 442205 >+SHA256 (xpi/firefox-i18n-57.0/an.xpi) = d24b77cfdf3d5badd492c04f5984171bedbafcee31fb447930925e2c911e5261 >+SIZE (xpi/firefox-i18n-57.0/an.xpi) = 462777 >+SHA256 (xpi/firefox-i18n-57.0/ar.xpi) = 06b0d8f7f34eb661f8f4944c26ddeee81e84bb00dd07dec4f1f06e54f1cdbe6f >+SIZE (xpi/firefox-i18n-57.0/ar.xpi) = 488159 >+SHA256 (xpi/firefox-i18n-57.0/as.xpi) = 8229d02b5f8b88dea2a6e8f83db6c335c951ebf786f4d73fe28dde8457ae4d59 >+SIZE (xpi/firefox-i18n-57.0/as.xpi) = 491074 >+SHA256 (xpi/firefox-i18n-57.0/ast.xpi) = 0f46b1d36c23ec86656208241e692f2f4fef6338285dd54621939a53672d497d >+SIZE (xpi/firefox-i18n-57.0/ast.xpi) = 455503 >+SHA256 (xpi/firefox-i18n-57.0/az.xpi) = 68db90d2cc24227407dc20cb8721b5f89ae875fc3e0248981bf5349b2348030d >+SIZE (xpi/firefox-i18n-57.0/az.xpi) = 466042 >+SHA256 (xpi/firefox-i18n-57.0/be.xpi) = 9e9c151874180d2ccf6ac1e7e7a59a5d2e72f9543bb6c128416fad177a2f01cb >+SIZE (xpi/firefox-i18n-57.0/be.xpi) = 516091 >+SHA256 (xpi/firefox-i18n-57.0/bg.xpi) = 10c386468c1d34676a7d4e3992f14d853cd29f61bd1d12b04f3f1b66ebb8993b >+SIZE (xpi/firefox-i18n-57.0/bg.xpi) = 510349 >+SHA256 (xpi/firefox-i18n-57.0/bn-BD.xpi) = 11b541a18a34fee16337dd8648a36e45b6c5371e9c17a845985120e6a7b1997d >+SIZE (xpi/firefox-i18n-57.0/bn-BD.xpi) = 527188 >+SHA256 (xpi/firefox-i18n-57.0/bn-IN.xpi) = f8c912705b760607456a140506f3120e9d7c9f0ee17508d4cbd1eb3e18bc895d >+SIZE (xpi/firefox-i18n-57.0/bn-IN.xpi) = 516175 >+SHA256 (xpi/firefox-i18n-57.0/br.xpi) = 4c76bf9c4b39dac467de391527072ca6d81c83a9ccbead46dbbbb76a8ab7c252 >+SIZE (xpi/firefox-i18n-57.0/br.xpi) = 451865 >+SHA256 (xpi/firefox-i18n-57.0/bs.xpi) = 4d3c483b4e3a20a852ddb5fe6a0d1f447366310dee446317017ebdf332e129c1 >+SIZE (xpi/firefox-i18n-57.0/bs.xpi) = 459649 >+SHA256 (xpi/firefox-i18n-57.0/ca.xpi) = 21fc2934acb751e89badbf215aad67085c310cbb627e44277d9592aaf213a837 >+SIZE (xpi/firefox-i18n-57.0/ca.xpi) = 466640 >+SHA256 (xpi/firefox-i18n-57.0/cak.xpi) = 95c3cff1bd43dc2f14e99a0c10d8f101beb4e940f810279a2912571ddeff6326 >+SIZE (xpi/firefox-i18n-57.0/cak.xpi) = 475934 >+SHA256 (xpi/firefox-i18n-57.0/cs.xpi) = c579929028397c8f93ed7193cc4f2a6511a5b503d59d02d6599701d7fab393db >+SIZE (xpi/firefox-i18n-57.0/cs.xpi) = 469456 >+SHA256 (xpi/firefox-i18n-57.0/cy.xpi) = 3442262d271a47173226ae327be47524ab0237b0ebaea73c61c61177463f81fa >+SIZE (xpi/firefox-i18n-57.0/cy.xpi) = 455787 >+SHA256 (xpi/firefox-i18n-57.0/da.xpi) = 538e9cce1e72af3ce6c6bbfe0a310529099dc95100546974e8b0a228860854a3 >+SIZE (xpi/firefox-i18n-57.0/da.xpi) = 448415 >+SHA256 (xpi/firefox-i18n-57.0/de.xpi) = bb4c883efe6f393ed47d91712901ca0bff04951db9e83ab5c981811e60512461 >+SIZE (xpi/firefox-i18n-57.0/de.xpi) = 460812 >+SHA256 (xpi/firefox-i18n-57.0/dsb.xpi) = 51ef0a8a83770dab060779d6b34478a60d080e743b8c446b791a89236161f29e >+SIZE (xpi/firefox-i18n-57.0/dsb.xpi) = 479506 >+SHA256 (xpi/firefox-i18n-57.0/el.xpi) = 2009672fb40a593061fba725ad6fb5c6b52b330a7724e3e5203c8885df5fce81 >+SIZE (xpi/firefox-i18n-57.0/el.xpi) = 534482 >+SHA256 (xpi/firefox-i18n-57.0/en-GB.xpi) = f24741f6461582b52678ee67262ea5a3c7538de741c5546d6ea6e15026e4af61 >+SIZE (xpi/firefox-i18n-57.0/en-GB.xpi) = 435523 >+SHA256 (xpi/firefox-i18n-57.0/en-US.xpi) = 629fd830ad4a5261391aa0a380f4c9e1dc63d2dfb539d9ae3a603b7650573eb5 >+SIZE (xpi/firefox-i18n-57.0/en-US.xpi) = 437987 >+SHA256 (xpi/firefox-i18n-57.0/en-ZA.xpi) = f1d21809cccea7d4bc649b7337ebde96f3b42185d154e603dbae241e5d8876d1 >+SIZE (xpi/firefox-i18n-57.0/en-ZA.xpi) = 432019 >+SHA256 (xpi/firefox-i18n-57.0/eo.xpi) = 599314153f217433a53671ac0c118be5a6953094bcd94fe8230f192ca5d8995a >+SIZE (xpi/firefox-i18n-57.0/eo.xpi) = 454908 >+SHA256 (xpi/firefox-i18n-57.0/es-AR.xpi) = 6f6d9805f9bba0fac0afce20bdfb1116c1c441cb5463fc271e8a3cec2cfe2bfe >+SIZE (xpi/firefox-i18n-57.0/es-AR.xpi) = 462978 >+SHA256 (xpi/firefox-i18n-57.0/es-CL.xpi) = 141b2502ed61b7ac439910c252c6de9388ab6a6783fb290e77208367317b4fdc >+SIZE (xpi/firefox-i18n-57.0/es-CL.xpi) = 465514 >+SHA256 (xpi/firefox-i18n-57.0/es-ES.xpi) = 73409303fc344d642f2343fd683694b534291c6ca5a8f8c63ee27b13e2ffe8ab >+SIZE (xpi/firefox-i18n-57.0/es-ES.xpi) = 353623 >+SHA256 (xpi/firefox-i18n-57.0/es-MX.xpi) = 69825e5bcd24a4479a8fa46a632acfd0553819054c6a9436b975c09b7289495e >+SIZE (xpi/firefox-i18n-57.0/es-MX.xpi) = 468091 >+SHA256 (xpi/firefox-i18n-57.0/et.xpi) = e5683bf2280fd070dad6855af2f60bd433d9200af66ec0976f5045d5d44e8e30 >+SIZE (xpi/firefox-i18n-57.0/et.xpi) = 447277 >+SHA256 (xpi/firefox-i18n-57.0/eu.xpi) = 562f0ad72e23e6b37969c6b75fd7343cbceb67cfb3db570525b796c3a214b2b2 >+SIZE (xpi/firefox-i18n-57.0/eu.xpi) = 454671 >+SHA256 (xpi/firefox-i18n-57.0/fa.xpi) = 39891a98174cdf50dfea0a69e896049ef8aa66be1c694149eb7da3ff421045a2 >+SIZE (xpi/firefox-i18n-57.0/fa.xpi) = 510827 >+SHA256 (xpi/firefox-i18n-57.0/ff.xpi) = 0b9a56e8b6378b13db3011957c9e040c3b2e74afe8de34d0333b9029b15d3f38 >+SIZE (xpi/firefox-i18n-57.0/ff.xpi) = 454014 >+SHA256 (xpi/firefox-i18n-57.0/fi.xpi) = b81be3f2dd15873dae20b4eced377e3e8d3b40de59d7735c72444e87dc7f476e >+SIZE (xpi/firefox-i18n-57.0/fi.xpi) = 446242 >+SHA256 (xpi/firefox-i18n-57.0/fr.xpi) = 59578e90b9832f216d01755cd52bc5956fa646bc420131f3b00ce09faa8d6271 >+SIZE (xpi/firefox-i18n-57.0/fr.xpi) = 472720 >+SHA256 (xpi/firefox-i18n-57.0/fy-NL.xpi) = e413938e6671a1a98cfff44f70712961a26e70ef9c5f217d1adc315be0b23308 >+SIZE (xpi/firefox-i18n-57.0/fy-NL.xpi) = 465242 >+SHA256 (xpi/firefox-i18n-57.0/ga-IE.xpi) = 563933a54d94fa031fb309157d806b50e694ae42e6723d9a5b6e442fd5d53f21 >+SIZE (xpi/firefox-i18n-57.0/ga-IE.xpi) = 475962 >+SHA256 (xpi/firefox-i18n-57.0/gd.xpi) = 69089bd588762270bd6592b544ed7886b4d092b915cdabb4ffee6c9c499ed924 >+SIZE (xpi/firefox-i18n-57.0/gd.xpi) = 465121 >+SHA256 (xpi/firefox-i18n-57.0/gl.xpi) = ca5195dad2f043d4b530b414061c92f835fe0f9c2f0e8a64de0e3a73079e4e6d >+SIZE (xpi/firefox-i18n-57.0/gl.xpi) = 452030 >+SHA256 (xpi/firefox-i18n-57.0/gn.xpi) = a118e4b81c47da417fe79af3d95788e04aaf42d433e8984d026851c41cd5ee11 >+SIZE (xpi/firefox-i18n-57.0/gn.xpi) = 471954 >+SHA256 (xpi/firefox-i18n-57.0/gu-IN.xpi) = 0cf3579447aa63d495d5ee744d7b7dcd16eb6779c8e398f75a3c12841c1f2461 >+SIZE (xpi/firefox-i18n-57.0/gu-IN.xpi) = 511989 >+SHA256 (xpi/firefox-i18n-57.0/he.xpi) = a2c770fab1787623f9a62a5579e7e2f5e8561ba38f8223ef11c75227abd5c7f3 >+SIZE (xpi/firefox-i18n-57.0/he.xpi) = 471920 >+SHA256 (xpi/firefox-i18n-57.0/hi-IN.xpi) = a07ecdd23d74ea5ae916b4a94ad513696e4000f703ea3e06cdff9c579748e1c2 >+SIZE (xpi/firefox-i18n-57.0/hi-IN.xpi) = 526109 >+SHA256 (xpi/firefox-i18n-57.0/hr.xpi) = f88a0964a4e55a4b904e3e466d78f853b58f99007f920277651b4176f48c1cbd >+SIZE (xpi/firefox-i18n-57.0/hr.xpi) = 460720 >+SHA256 (xpi/firefox-i18n-57.0/hsb.xpi) = bbdb24808af0f07be665ffc8cadf687ef30c47075d0b1ef78a58311ddbf99f7f >+SIZE (xpi/firefox-i18n-57.0/hsb.xpi) = 476500 >+SHA256 (xpi/firefox-i18n-57.0/hu.xpi) = 23767b357e4ae9a470605a7bf5e5231301ffe3d65fea8e11c07f82f53e1fd9c2 >+SIZE (xpi/firefox-i18n-57.0/hu.xpi) = 476603 >+SHA256 (xpi/firefox-i18n-57.0/hy-AM.xpi) = 8106177a21fbfb382dfe26b6106ba35128a03fc25d06b492f948c7a661303add >+SIZE (xpi/firefox-i18n-57.0/hy-AM.xpi) = 510824 >+SHA256 (xpi/firefox-i18n-57.0/id.xpi) = a3cce07b6c2369bfed1c47af5fd3de8254603efe8b7d3e3929ddba32d824237a >+SIZE (xpi/firefox-i18n-57.0/id.xpi) = 444040 >+SHA256 (xpi/firefox-i18n-57.0/is.xpi) = b608ebb8f34a93968fcef85d1c463e32489e999b92197f9b21b094d76db29767 >+SIZE (xpi/firefox-i18n-57.0/is.xpi) = 452655 >+SHA256 (xpi/firefox-i18n-57.0/it.xpi) = b035b10133444b23fbef2c66c8548fdd6703ec304d8a854c5fbec42e79f9778a >+SIZE (xpi/firefox-i18n-57.0/it.xpi) = 347170 >+SHA256 (xpi/firefox-i18n-57.0/ja.xpi) = a7e3af1bbc6bdf3ec139e77e3cc1e39b072dd68b0a434ef96cc288e7424eea8c >+SIZE (xpi/firefox-i18n-57.0/ja.xpi) = 508551 >+SHA256 (xpi/firefox-i18n-57.0/ka.xpi) = 09dd38e2f51b0228dd0302e4afcc6ee6f6f2d89956172c27518cb9c7423e155e >+SIZE (xpi/firefox-i18n-57.0/ka.xpi) = 492355 >+SHA256 (xpi/firefox-i18n-57.0/kab.xpi) = f673912bcc909e9046008803886cf4322653871e7b5b121645566c2b92b5fc39 >+SIZE (xpi/firefox-i18n-57.0/kab.xpi) = 462530 >+SHA256 (xpi/firefox-i18n-57.0/kk.xpi) = 4d93c3e6f982f4b10d614f6d237f8fac8887c347f1ce11aa6728d0918d552a87 >+SIZE (xpi/firefox-i18n-57.0/kk.xpi) = 519248 >+SHA256 (xpi/firefox-i18n-57.0/km.xpi) = 11cb79e402ba96e678fa27bdbd39bb7ec48533eac89f884334b65ad9335eef54 >+SIZE (xpi/firefox-i18n-57.0/km.xpi) = 530079 >+SHA256 (xpi/firefox-i18n-57.0/kn.xpi) = 1230fe7d27fbc3af7196b7258bee255b4d85dd232c117a0a4d515ddef74328c9 >+SIZE (xpi/firefox-i18n-57.0/kn.xpi) = 531315 >+SHA256 (xpi/firefox-i18n-57.0/ko.xpi) = 1d992cbc4f30bff88b40d46c55ceef223f7b66ad489e073a859655461edacb28 >+SIZE (xpi/firefox-i18n-57.0/ko.xpi) = 487304 >+SHA256 (xpi/firefox-i18n-57.0/lij.xpi) = 4e9e6e0661c4bea860128dd870596154e68c3367624fd6cbc690e2c341157f21 >+SIZE (xpi/firefox-i18n-57.0/lij.xpi) = 452340 >+SHA256 (xpi/firefox-i18n-57.0/lt.xpi) = ce3bdff82d4f6baef44d2913e4da76b83e50dd0c9e3102e444425d379e2347f7 >+SIZE (xpi/firefox-i18n-57.0/lt.xpi) = 474955 >+SHA256 (xpi/firefox-i18n-57.0/lv.xpi) = 25bb6e484402d0c7909544031c2fe84f04b8cb0d563c902427542ca8b0f0a996 >+SIZE (xpi/firefox-i18n-57.0/lv.xpi) = 465242 >+SHA256 (xpi/firefox-i18n-57.0/mai.xpi) = 7f3dafefb77ef7d5e73dd9a762b9d51f05c7c739933561b3a0d53c7798fff9d9 >+SIZE (xpi/firefox-i18n-57.0/mai.xpi) = 507395 >+SHA256 (xpi/firefox-i18n-57.0/mk.xpi) = ac348da0f832916715da5111083a4e2b72a7d16b9c96c04a1cc4d5d3e6c862a7 >+SIZE (xpi/firefox-i18n-57.0/mk.xpi) = 490852 >+SHA256 (xpi/firefox-i18n-57.0/ml.xpi) = a4be2963a72230143283d674ddcc3c28c5f09636524af145f5f53ecce0322572 >+SIZE (xpi/firefox-i18n-57.0/ml.xpi) = 528255 >+SHA256 (xpi/firefox-i18n-57.0/mr.xpi) = 410200d49c82a8ba5a0ecae914e1da3f04798506d9625acbc10c5ed3b99cec9d >+SIZE (xpi/firefox-i18n-57.0/mr.xpi) = 521289 >+SHA256 (xpi/firefox-i18n-57.0/ms.xpi) = c1b61b1325581a5c2d927a675b19e9d2e34c708bbc45ce5f6c03f386de5b33e5 >+SIZE (xpi/firefox-i18n-57.0/ms.xpi) = 451254 >+SHA256 (xpi/firefox-i18n-57.0/my.xpi) = 512cb14ae373275c4755c478ac1dce4c51be15cde0b2aaaca5b29c3e45df0a5b >+SIZE (xpi/firefox-i18n-57.0/my.xpi) = 517702 >+SHA256 (xpi/firefox-i18n-57.0/nb-NO.xpi) = a57311847934d5dcff18066ff7bd323f2c2406fa3df4c8e258b8d9d0939b1be8 >+SIZE (xpi/firefox-i18n-57.0/nb-NO.xpi) = 451556 >+SHA256 (xpi/firefox-i18n-57.0/nl.xpi) = 25973c35d308af09a7c5809f84037bc74176eb133cb556e4942ed8ca54915585 >+SIZE (xpi/firefox-i18n-57.0/nl.xpi) = 457659 >+SHA256 (xpi/firefox-i18n-57.0/nn-NO.xpi) = eb127fad8c44a4721fc1cf1d901d0c2aff16041b8bc54d2d3951b03bfac94600 >+SIZE (xpi/firefox-i18n-57.0/nn-NO.xpi) = 452003 >+SHA256 (xpi/firefox-i18n-57.0/or.xpi) = dc0f59099e8d0592b3e61d8d5c88ae22b9a1067fd89911b7799f8b43d13a2f6b >+SIZE (xpi/firefox-i18n-57.0/or.xpi) = 500863 >+SHA256 (xpi/firefox-i18n-57.0/pa-IN.xpi) = 33348a739ae6b01c3629def78a855ea6ea816e0253b696e58ba9ccbff3fa37d6 >+SIZE (xpi/firefox-i18n-57.0/pa-IN.xpi) = 495270 >+SHA256 (xpi/firefox-i18n-57.0/pl.xpi) = fff4c80385e9eec79ec93d4fc35f84301fa28c8a527591196d719f675c9ffe2b >+SIZE (xpi/firefox-i18n-57.0/pl.xpi) = 364229 >+SHA256 (xpi/firefox-i18n-57.0/pt-BR.xpi) = 345c47dde41fb0348dc1cc4d629fc78becd123e2c87eb1e33f1ca50eea77373c >+SIZE (xpi/firefox-i18n-57.0/pt-BR.xpi) = 456485 >+SHA256 (xpi/firefox-i18n-57.0/pt-PT.xpi) = b77f50f7b02a78dc24dc32e9bff82b46bf2e37a62f978c1fe5ac172f6bf63f26 >+SIZE (xpi/firefox-i18n-57.0/pt-PT.xpi) = 459998 >+SHA256 (xpi/firefox-i18n-57.0/rm.xpi) = 695b5483ecc003296cd25b0b441c73c73c475457466fd7cff3f39a8491a44910 >+SIZE (xpi/firefox-i18n-57.0/rm.xpi) = 451057 >+SHA256 (xpi/firefox-i18n-57.0/ro.xpi) = 591ecab4f6e3869da69e612f847a832a802050471655565d29aa8c76febe7b7e >+SIZE (xpi/firefox-i18n-57.0/ro.xpi) = 455509 >+SHA256 (xpi/firefox-i18n-57.0/ru.xpi) = 3b7355af69378f3bf0642d8f93c2c1fb6a9665ddd5a2b6aec4865baa8cd7713f >+SIZE (xpi/firefox-i18n-57.0/ru.xpi) = 527005 >+SHA256 (xpi/firefox-i18n-57.0/si.xpi) = 3392da245426ca4480b478455b61b6d53fe5741e7c0c3772a610e622b0248715 >+SIZE (xpi/firefox-i18n-57.0/si.xpi) = 498323 >+SHA256 (xpi/firefox-i18n-57.0/sk.xpi) = 5ac2035fdb85fb5bb789b6f2723e69bd23e6a15f6a4dfb184c08100aafead6ba >+SIZE (xpi/firefox-i18n-57.0/sk.xpi) = 480395 >+SHA256 (xpi/firefox-i18n-57.0/sl.xpi) = 6c55623bb30635ac67abcd3fab3b4cc30de5fefea2ae0bbb99f15be7c7843245 >+SIZE (xpi/firefox-i18n-57.0/sl.xpi) = 459376 >+SHA256 (xpi/firefox-i18n-57.0/son.xpi) = ac13a973cacd9e4c84401cd11095c0a0f307d07ebb0719174adcfcf957188316 >+SIZE (xpi/firefox-i18n-57.0/son.xpi) = 450929 >+SHA256 (xpi/firefox-i18n-57.0/sq.xpi) = 2b999472e0e6550b63782d15aa713bac47b3ddcf8a212673a30fd6e55090215c >+SIZE (xpi/firefox-i18n-57.0/sq.xpi) = 465050 >+SHA256 (xpi/firefox-i18n-57.0/sr.xpi) = 75849a57f9b44b73445b302279dcb626389670a20dc3a404ad5db774c3ceaa00 >+SIZE (xpi/firefox-i18n-57.0/sr.xpi) = 487002 >+SHA256 (xpi/firefox-i18n-57.0/sv-SE.xpi) = 87ec5cbe45db203cfd1fd49ab7d2fb78df72fdcd4867e2dcc16727463100bb06 >+SIZE (xpi/firefox-i18n-57.0/sv-SE.xpi) = 459664 >+SHA256 (xpi/firefox-i18n-57.0/ta.xpi) = 74382122b90dbd76d128d5a860d40ddc839f315ee7cecbcdb73c2fbf20169199 >+SIZE (xpi/firefox-i18n-57.0/ta.xpi) = 513225 >+SHA256 (xpi/firefox-i18n-57.0/te.xpi) = a40de1d2174392d96bda8cfe65c8e374f4c833add0e1719d6c44616b571e6855 >+SIZE (xpi/firefox-i18n-57.0/te.xpi) = 530692 >+SHA256 (xpi/firefox-i18n-57.0/th.xpi) = 9d7cff5544312d33d44a2728f095e095e646ae2cd904e014fe69ca8016440884 >+SIZE (xpi/firefox-i18n-57.0/th.xpi) = 502450 >+SHA256 (xpi/firefox-i18n-57.0/tr.xpi) = fa1e8613954cae82fa460eb840af561df5857320a33ec5a1f8b032e3ed558dee >+SIZE (xpi/firefox-i18n-57.0/tr.xpi) = 465580 >+SHA256 (xpi/firefox-i18n-57.0/uk.xpi) = b477818ae7061f7523625380e93fbe9bdfc385279e7e96cb06e98e6ed5915d86 >+SIZE (xpi/firefox-i18n-57.0/uk.xpi) = 518137 >+SHA256 (xpi/firefox-i18n-57.0/ur.xpi) = d9b3f9e18241a5abb31906792bae33c6b6b579631678c97236291e388e8bc195 >+SIZE (xpi/firefox-i18n-57.0/ur.xpi) = 511133 >+SHA256 (xpi/firefox-i18n-57.0/uz.xpi) = 4d4fe1f56e5c86f779753eed44f1b5d3f1cceb3a6f46950d175ed31c9f7ff39d >+SIZE (xpi/firefox-i18n-57.0/uz.xpi) = 461693 >+SHA256 (xpi/firefox-i18n-57.0/vi.xpi) = ce81dbf85ddd901acb8c9cf7cfd331d2dfe6f4a7f5e4d799d664ff867bd5d40b >+SIZE (xpi/firefox-i18n-57.0/vi.xpi) = 471319 >+SHA256 (xpi/firefox-i18n-57.0/xh.xpi) = be4d359e06a8a10cfda658a6e7c1e13ff857fd767d76882bedfd1aada3a6900c >+SIZE (xpi/firefox-i18n-57.0/xh.xpi) = 464460 >+SHA256 (xpi/firefox-i18n-57.0/zh-CN.xpi) = 040736b596b614e55ac09aefa3e9f04211f16cb257ea0c2d274ca0df99b787b6 >+SIZE (xpi/firefox-i18n-57.0/zh-CN.xpi) = 483624 >+SHA256 (xpi/firefox-i18n-57.0/zh-TW.xpi) = fa5cf52246a289bc91d60519697977cbd6f999f5bda7eb715cb8303af543b752 >+SIZE (xpi/firefox-i18n-57.0/zh-TW.xpi) = 482346 >diff --git a/www/firefox/Makefile b/www/firefox/Makefile >index 66818c9d6adf..b86e7c9befcc 100644 >--- a/www/firefox/Makefile >+++ b/www/firefox/Makefile >@@ -2,27 +2,26 @@ > # $FreeBSD$ > > PORTNAME= firefox >-DISTVERSION= 56.0.2 >+DISTVERSION= 57.0 > DISTVERSIONSUFFIX=.source >-PORTREVISION= 9 > PORTEPOCH= 1 > CATEGORIES= www ipv6 > MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \ >- MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source >+ MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build3/source > > MAINTAINER= gecko@FreeBSD.org > COMMENT= Web browser based on the browser portion of Mozilla > >-BUILD_DEPENDS= nspr>=4.16:devel/nspr \ >- nss>=3.32.1:security/nss \ >+BUILD_DEPENDS= nspr>=4.17:devel/nspr \ >+ nss>=3.33:security/nss \ > icu>=59.1,1:devel/icu \ > libevent>=2.1.8:devel/libevent \ >- harfbuzz>=1.4.7:print/harfbuzz \ >+ harfbuzz>=1.5.1:print/harfbuzz \ > graphite2>=1.3.10:graphics/graphite2 \ > png>=1.6.31:graphics/png \ > libvorbis>=1.3.5,3:audio/libvorbis \ > libvpx>=1.5.0:multimedia/libvpx \ >- sqlite3>=3.19.3:databases/sqlite3 \ >+ sqlite3>=3.20.1:databases/sqlite3 \ > ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3 \ > v4l_compat>0:multimedia/v4l_compat \ > autoconf-2.13:devel/autoconf213 \ >diff --git a/www/firefox/distinfo b/www/firefox/distinfo >index 1294136080e5..993466e97aef 100644 >--- a/www/firefox/distinfo >+++ b/www/firefox/distinfo >@@ -1,3 +1,3 @@ >-TIMESTAMP = 1508873487 >-SHA256 (firefox-56.0.2.source.tar.xz) = 6f7d284c31383a9860d7b52f05f866526d5a7c31e3ef2959d79122ba074f5ca1 >-SIZE (firefox-56.0.2.source.tar.xz) = 255658916 >+TIMESTAMP = 1510265773 >+SHA256 (firefox-57.0.source.tar.xz) = a68e0a891af2e52423aa8416e2812361da04675f243f6465d805d8b3d4ca7494 >+SIZE (firefox-57.0.source.tar.xz) = 250650020 >diff --git a/www/firefox/files/patch-bug1261175 b/www/firefox/files/patch-bug1261175 >deleted file mode 100644 >index 527f41b4a0b3..000000000000 >--- a/www/firefox/files/patch-bug1261175 >+++ /dev/null >@@ -1,25 +0,0 @@ >-commit deccfad4c8ba >-Author: Matt Woodrow <mwoodrow@mozilla.com> >-Date: Thu Oct 12 13:10:27 2017 +1300 >- >- Bug 1261175. r=tnikkel, a=ritu >- >- --HG-- >- extra : source : 8281ed36bd4946af69af747b199814cc1a51fb52 >---- >- view/nsViewManager.cpp | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >- >-diff --git view/nsViewManager.cpp view/nsViewManager.cpp >-index f3540f3478da..230512c0dcc0 100644 >---- view/nsViewManager.cpp >-+++ view/nsViewManager.cpp >-@@ -100,7 +100,7 @@ nsViewManager::~nsViewManager() >- gViewManagers = nullptr; >- } >- >-- mPresShell = nullptr; >-+ MOZ_RELEASE_ASSERT(!mPresShell, "Releasing nsViewManager without having called Destroy on the PresShell!"); >- } >- >- // We don't hold a reference to the presentation context because it >diff --git a/www/firefox/files/patch-bug1343147 b/www/firefox/files/patch-bug1343147 >deleted file mode 100644 >index a548c655e4dc..000000000000 >--- a/www/firefox/files/patch-bug1343147 >+++ /dev/null >@@ -1,117 +0,0 @@ >-commit e215b167b9b9 >-Author: cku <cku@mozilla.com> >-Date: Tue Oct 3 11:29:19 2017 +0800 >- >- Bug 1343147 - Do not double applying transform vector of the root frame in a glyph mask into the target context. r=mstange, a=ritu >- >- When we generate the glyph mask for a transformed frame in >- GenerateAndPushTextMask, the transform vector had been applied into aContext[1], >- so we should find a way to prevent applying the vector again when painting the >- glyph mask. >- >- In bug 1299715, I tried to prevent double apply at [2], it caused two problems: >- 1. We only skip generating nsDisplayTransform, but we may still create a >- nsDisplayPerspactive bellow. Since the parent of a nsDisplayPerspective must be >- a nsDisplayTransform, which have been ignored, so we hit this assertion. >- 2. We skip all transform for all frames while painting the glyph mask, which is >- not correct. We should only skip double applying transform vector of the root >- frame. >- >- This patch fixes both of these issues: >- a. We will still create a nsDisplayTransform for the root frame if need. But >- the transform matrix we apply into the target context will be an identity >- matrix, so we fix #1 above. >- b. In #a, we change the transform matrix to an identity matrix only for the root >- frame of the glyph mask, so we fix #2. >- >- [1] >- https://hg.mozilla.org/mozilla-central/file/59e5ec5729db/layout/painting/nsDisplayList.cpp#l752 >- [2] >- https://hg.mozilla.org/mozilla-central/file/ce2c129f0a87/layout/generic/nsFrame.cpp#l2806 >- >- MozReview-Commit-ID: 973lkQQxLB6 >- >- --HG-- >- extra : source : 84451d723686bc47b81c44ed2ddf6c61f3e35915 >---- >- layout/generic/nsFrame.cpp | 13 +++++-------- >- layout/painting/nsDisplayList.cpp | 9 ++++++++- >- 2 files changed, 13 insertions(+), 9 deletions(-) >- >-diff --git layout/generic/nsFrame.cpp layout/generic/nsFrame.cpp >-index 37f2e2801220..dbfd61b7e142 100644 >---- layout/generic/nsFrame.cpp >-+++ layout/generic/nsFrame.cpp >-@@ -2803,14 +2803,11 @@ nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder* aBuilder, >- buildingDisplayList.SetReferenceFrameAndCurrentOffset(outerReferenceFrame, >- GetOffsetToCrossDoc(outerReferenceFrame)); >- >-- if (!aBuilder->IsForGenerateGlyphMask() && >-- !aBuilder->IsForPaintingSelectionBG()) { >-- nsDisplayTransform *transformItem = >-- new (aBuilder) nsDisplayTransform(aBuilder, this, >-- &resultList, dirtyRect, 0, >-- allowAsyncAnimation); >-- resultList.AppendNewToTop(transformItem); >-- } >-+ nsDisplayTransform *transformItem = >-+ new (aBuilder) nsDisplayTransform(aBuilder, this, >-+ &resultList, dirtyRect, 0, >-+ allowAsyncAnimation); >-+ resultList.AppendNewToTop(transformItem); >- >- if (hasPerspective) { >- if (clipCapturedBy == ContainerItemType::ePerspective) { >-diff --git layout/painting/nsDisplayList.cpp layout/painting/nsDisplayList.cpp >-index 801e1ea2fb4d..6477bda52f01 100644 >---- layout/painting/nsDisplayList.cpp >-+++ layout/painting/nsDisplayList.cpp >-@@ -7976,11 +7976,18 @@ already_AddRefed<Layer> nsDisplayTransform::BuildLayer(nsDisplayListBuilder *aBu >- LayerManager *aManager, >- const ContainerLayerParameters& aContainerParameters) >- { >-+ // While generating a glyph mask, the transform vector of the root frame had >-+ // been applied into the target context, so stop applying it again here. >-+ const bool shouldSkipTransform = >-+ (aBuilder->RootReferenceFrame() == mFrame) && >-+ (aBuilder->IsForGenerateGlyphMask() || aBuilder->IsForPaintingSelectionBG()); >-+ >- /* For frames without transform, it would not be removed for >- * backface hidden here. But, it would be removed by the init >- * function of nsDisplayTransform. >- */ >-- const Matrix4x4& newTransformMatrix = GetTransformForRendering(); >-+ const Matrix4x4 newTransformMatrix = >-+ shouldSkipTransform ? Matrix4x4(): GetTransformForRendering(); >- >- uint32_t flags = FrameLayerBuilder::CONTAINER_ALLOW_PULL_BACKGROUND_COLOR; >- RefPtr<ContainerLayer> container = aManager->GetLayerBuilder()-> >-diff --git dom/svg/crashtests/1343147.svg dom/svg/crashtests/1343147.svg >-new file mode 100644 >-index 000000000000..d9c2611ca822 >---- /dev/null >-+++ dom/svg/crashtests/1343147.svg >-@@ -0,0 +1,13 @@ >-+<svg xmlns="http://www.w3.org/2000/svg"> >-+<style> >-+<![CDATA[ >-+ svg { >-+ background-image: linear-gradient(lime, lime); >-+ background-clip: text; >-+ } >-+ text { transform: skewy(30grad); } >-+ g { perspective: 0; } >-+]]> >-+</style> >-+ <g><text>hello</text></g> >-+</svg> >-diff --git dom/svg/crashtests/crashtests.list dom/svg/crashtests/crashtests.list >-index 1727a206ec4f..57ab320161e2 100644 >---- dom/svg/crashtests/crashtests.list >-+++ dom/svg/crashtests/crashtests.list >-@@ -90,4 +90,5 @@ load 1329849-5.svg >- load 1329849-6.svg >- load 1329093-1.html >- load 1329093-2.html >-+load 1343147.svg >- load 1402798.html >diff --git a/www/firefox/files/patch-bug1355576 b/www/firefox/files/patch-bug1355576 >deleted file mode 100644 >index cc9c8236a2b4..000000000000 >--- a/www/firefox/files/patch-bug1355576 >+++ /dev/null >@@ -1,262 +0,0 @@ >-commit e530ba4d4394 >-Author: Thomas Wisniewski <wisniewskit@gmail.com> >-Date: Tue Jul 4 20:59:26 2017 -0400 >- >- Bug 1355576 - Add ability to clear all localStorage with the browsingData API; r=bsilverberg,janv >- >- MozReview-Commit-ID: 4UUqg62yIo9 >- >- --HG-- >- extra : rebase_source : 9c6154bbe878fc3921d22027fdc90dbdaed05be9 >---- >- browser/components/extensions/ext-browsingData.js | 10 +++ >- .../extensions/schemas/browsing_data.json | 1 - >- .../extensions/test/browser/browser-common.ini | 1 + >- .../browser_ext_browsingData_localStorage.js | 93 ++++++++++++++++++++++ >- .../test/xpcshell/test_ext_browsingData.js | 4 +- >- dom/storage/LocalStorageManager.cpp | 3 +- >- dom/storage/StorageObserver.cpp | 12 +++ >- .../extensions/schemas/browsing_data.json | 1 - >- 8 files changed, 120 insertions(+), 5 deletions(-) >- >-diff --git browser/components/extensions/ext-browsingData.js browser/components/extensions/ext-browsingData.js >-index fd59141dd15d..109ec9601487 100644 >---- browser/components/extensions/ext-browsingData.js >-+++ browser/components/extensions/ext-browsingData.js >-@@ -83,6 +83,10 @@ const clearHistory = options => { >- return sanitizer.items.history.clear(makeRange(options)); >- }; >- >-+const clearLocalStorage = async function(options) { >-+ Services.obs.notifyObservers(null, "extension:purge-localStorage"); >-+}; >-+ >- const clearPasswords = async function(options) { >- let loginManager = Services.logins; >- let yieldCounter = 0; >-@@ -152,6 +156,9 @@ const doRemoval = (options, dataToRemove, extension) => { >- case "history": >- removalPromises.push(clearHistory(options)); >- break; >-+ case "localStorage": >-+ removalPromises.push(clearLocalStorage(options)); >-+ break; >- case "passwords": >- removalPromises.push(clearPasswords(options)); >- break; >-@@ -225,6 +232,9 @@ this.browsingData = class extends ExtensionAPI { >- removeHistory(options) { >- return doRemoval(options, {history: true}); >- }, >-+ removeLocalStorage(options) { >-+ return doRemoval(options, {localStorage: true}); >-+ }, >- removePasswords(options) { >- return doRemoval(options, {passwords: true}); >- }, >-diff --git browser/components/extensions/schemas/browsing_data.json browser/components/extensions/schemas/browsing_data.json >-index a780f5640c8f..7755714eb898 100644 >---- browser/components/extensions/schemas/browsing_data.json >-+++ browser/components/extensions/schemas/browsing_data.json >-@@ -341,7 +341,6 @@ >- "description": "Clears websites' local storage data.", >- "type": "function", >- "async": "callback", >-- "unsupported": true, >- "parameters": [ >- { >- "$ref": "RemovalOptions", >-diff --git browser/components/extensions/test/browser/browser-common.ini browser/components/extensions/test/browser/browser-common.ini >-index 464b8ba18f37..e3f7700f3939 100644 >---- browser/components/extensions/test/browser/browser-common.ini >-+++ browser/components/extensions/test/browser/browser-common.ini >-@@ -46,6 +46,7 @@ skip-if = (os == 'win' && !debug) # bug 1352668 >- [browser_ext_browserAction_theme_icons.js] >- [browser_ext_browsingData_formData.js] >- [browser_ext_browsingData_history.js] >-+[browser_ext_browsingData_localStorage.js] >- [browser_ext_browsingData_pluginData.js] >- [browser_ext_browsingData_serviceWorkers.js] >- [browser_ext_commands_execute_browser_action.js] >-diff --git browser/components/extensions/test/browser/browser_ext_browsingData_localStorage.js browser/components/extensions/test/browser/browser_ext_browsingData_localStorage.js >-new file mode 100644 >-index 000000000000..215f26d1fcb6 >---- /dev/null >-+++ browser/components/extensions/test/browser/browser_ext_browsingData_localStorage.js >-@@ -0,0 +1,93 @@ >-+/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ >-+/* vim: set sts=2 sw=2 et tw=80: */ >-+"use strict"; >-+ >-+add_task(async function testLocalStorage() { >-+ async function background() { >-+ function openTabs() { >-+ let promise = new Promise(resolve => { >-+ let tabURLs = [ >-+ "http://example.com/", >-+ "http://example.net/", >-+ ]; >-+ >-+ let tabs; >-+ let waitingCount = tabURLs.length; >-+ >-+ let listener = async msg => { >-+ if (msg !== "content-script-ready" || --waitingCount) { >-+ return; >-+ } >-+ browser.runtime.onMessage.removeListener(listener); >-+ resolve(Promise.all(tabs)); >-+ }; >-+ >-+ browser.runtime.onMessage.addListener(listener); >-+ >-+ tabs = tabURLs.map(url => { >-+ return browser.tabs.create({url: url}); >-+ }); >-+ }); >-+ >-+ return promise; >-+ } >-+ >-+ function sendMessageToTabs(tabs, message) { >-+ return Promise.all( >-+ tabs.map(tab => { return browser.tabs.sendMessage(tab.id, message); })); >-+ } >-+ >-+ let tabs = await openTabs(); >-+ >-+ await sendMessageToTabs(tabs, "resetLocalStorage"); >-+ await sendMessageToTabs(tabs, "checkLocalStorageSet"); >-+ await browser.browsingData.removeLocalStorage({}); >-+ await sendMessageToTabs(tabs, "checkLocalStorageCleared"); >-+ >-+ await sendMessageToTabs(tabs, "resetLocalStorage"); >-+ await sendMessageToTabs(tabs, "checkLocalStorageSet"); >-+ await browser.browsingData.remove({}, {localStorage: true}); >-+ await sendMessageToTabs(tabs, "checkLocalStorageCleared"); >-+ >-+ browser.tabs.remove(tabs.map(tab => tab.id)); >-+ >-+ browser.test.notifyPass("done"); >-+ } >-+ >-+ function contentScript() { >-+ browser.runtime.onMessage.addListener(msg => { >-+ if (msg === "resetLocalStorage") { >-+ localStorage.clear(); >-+ localStorage.setItem("test", "test"); >-+ } else if (msg === "checkLocalStorageSet") { >-+ browser.test.assertEq("test", localStorage.getItem("test")); >-+ } else if (msg === "checkLocalStorageCleared") { >-+ browser.test.assertEq(null, localStorage.getItem("test")); >-+ } >-+ }); >-+ browser.runtime.sendMessage("content-script-ready"); >-+ } >-+ >-+ let extension = ExtensionTestUtils.loadExtension({ >-+ background, >-+ manifest: { >-+ "permissions": ["browsingData"], >-+ "content_scripts": [{ >-+ "matches": [ >-+ "http://example.com/", >-+ "http://example.net/", >-+ ], >-+ "js": ["content-script.js"], >-+ "run_at": "document_start", >-+ }], >-+ }, >-+ files: { >-+ "content-script.js": contentScript, >-+ }, >-+ }); >-+ >-+ await extension.startup(); >-+ await extension.awaitFinish("done"); >-+ await extension.unload(); >-+}); >-+ >-diff --git browser/components/extensions/test/xpcshell/test_ext_browsingData.js browser/components/extensions/test/xpcshell/test_ext_browsingData.js >-index 0c1c4874ca44..0b8972058e64 100644 >---- browser/components/extensions/test/xpcshell/test_ext_browsingData.js >-+++ browser/components/extensions/test/xpcshell/test_ext_browsingData.js >-@@ -44,7 +44,7 @@ add_task(async function testInvalidArguments() { >- >- add_task(async function testUnimplementedDataType() { >- function background() { >-- browser.browsingData.remove({}, {localStorage: true}); >-+ browser.browsingData.remove({}, {indexedDB: true}); >- browser.test.sendMessage("finished"); >- } >- >-@@ -61,6 +61,6 @@ add_task(async function testUnimplementedDataType() { >- await extension.unload(); >- }); >- >-- let warningObserved = messages.find(line => /Firefox does not support dataTypes: localStorage/.test(line)); >-+ let warningObserved = messages.find(line => /Firefox does not support dataTypes: indexedDB/.test(line)); >- ok(warningObserved, "Warning issued when calling remove with an unimplemented dataType."); >- }); >-diff --git dom/storage/LocalStorageManager.cpp dom/storage/LocalStorageManager.cpp >-index a161de2bc596..f366e7874a90 100644 >---- dom/storage/LocalStorageManager.cpp >-+++ dom/storage/LocalStorageManager.cpp >-@@ -386,7 +386,8 @@ LocalStorageManager::Observe(const char* aTopic, >- } >- >- // Clear everything, caches + database >-- if (!strcmp(aTopic, "cookie-cleared")) { >-+ if (!strcmp(aTopic, "cookie-cleared") || >-+ !strcmp(aTopic, "extension:purge-localStorage-caches")) { >- ClearCaches(LocalStorageCache::kUnloadComplete, pattern, EmptyCString()); >- return NS_OK; >- } >-diff --git dom/storage/StorageObserver.cpp dom/storage/StorageObserver.cpp >-index e5b010f88c7b..48d484748209 100644 >---- dom/storage/StorageObserver.cpp >-+++ dom/storage/StorageObserver.cpp >-@@ -66,6 +66,7 @@ StorageObserver::Init() >- obs->AddObserver(sSelf, "browser:purge-domain-data", true); >- obs->AddObserver(sSelf, "last-pb-context-exited", true); >- obs->AddObserver(sSelf, "clear-origin-attributes-data", true); >-+ obs->AddObserver(sSelf, "extension:purge-localStorage", true); >- >- // Shutdown >- obs->AddObserver(sSelf, "profile-after-change", true); >-@@ -270,6 +271,23 @@ StorageObserver::Observe(nsISupports* aSubject, >- >- Notify("session-only-cleared", NS_ConvertUTF8toUTF16(originSuffix), >- originScope); >-+ >-+ return NS_OK; >-+ } >-+ >-+ if (!strcmp(aTopic, "extension:purge-localStorage")) { >-+ StorageDBChild* storageChild = StorageDBChild::GetOrCreate(); >-+ if (NS_WARN_IF(!storageChild)) { >-+ return NS_ERROR_FAILURE; >-+ } >-+ >-+ storageChild->AsyncClearAll(); >-+ >-+ if (XRE_IsParentProcess()) { >-+ storageChild->SendClearAll(); >-+ } >-+ >-+ Notify("extension:purge-localStorage-caches"); >- >- return NS_OK; >- } >-diff --git mobile/android/components/extensions/schemas/browsing_data.json mobile/android/components/extensions/schemas/browsing_data.json >-index 483a462d422c..1019c1a23953 100644 >---- mobile/android/components/extensions/schemas/browsing_data.json >-+++ mobile/android/components/extensions/schemas/browsing_data.json >-@@ -345,7 +345,6 @@ >- "description": "Clears websites' local storage data.", >- "type": "function", >- "async": "callback", >-- "unsupported": true, >- "parameters": [ >- { >- "$ref": "RemovalOptions", >diff --git a/www/firefox/files/patch-bug1369561 b/www/firefox/files/patch-bug1369561 >deleted file mode 100644 >index d3de0988830a..000000000000 >--- a/www/firefox/files/patch-bug1369561 >+++ /dev/null >@@ -1,66 +0,0 @@ >-commit 4a1737e0c456 >-Author: David Keeler <dkeeler@mozilla.com> >-Date: Fri Sep 15 14:47:54 2017 -0700 >- >- Bug 1369561 - Address misc. SnprintfLiteral correctness nits. r=jld, r=froydnj, a=ritu >- >- --HG-- >- extra : source : f5533b6cd09c35eef381e311940b5bd5231d3553 >---- >- security/sandbox/linux/SandboxUtil.cpp | 17 ++++++++++------- >- xpcom/base/nsSystemInfo.cpp | 2 +- >- 2 files changed, 11 insertions(+), 8 deletions(-) >- >-diff --git security/sandbox/linux/SandboxUtil.cpp security/sandbox/linux/SandboxUtil.cpp >-index ad6003ecaad5..999329882364 100644 >---- security/sandbox/linux/SandboxUtil.cpp >-+++ security/sandbox/linux/SandboxUtil.cpp >-@@ -62,7 +62,6 @@ UnshareUserNamespace() >- uid_t uid = getuid(); >- gid_t gid = getgid(); >- char buf[80]; >-- size_t len; >- >- if (syscall(__NR_unshare, CLONE_NEWUSER) != 0) { >- return false; >-@@ -84,17 +83,21 @@ UnshareUserNamespace() >- // current thread. However, CLONE_NEWUSER can be unshared only in a >- // single-threaded process, so those are equivalent if we reach this >- // point. >-- len = size_t(SprintfLiteral(buf, "%u %u 1\n", uid, uid)); >-- MOZ_ASSERT(len < sizeof(buf)); >-- if (!WriteStringToFile("/proc/self/uid_map", buf, len)) { >-+ int len = SprintfLiteral(buf, "%u %u 1\n", uid, uid); >-+ if (len >= int(sizeof(buf)) || len < 0) { >-+ return false; >-+ } >-+ if (!WriteStringToFile("/proc/self/uid_map", buf, size_t(len))) { >- MOZ_CRASH("Failed to write /proc/self/uid_map"); >- } >- >- Unused << WriteStringToFile("/proc/self/setgroups", "deny", 4); >- >-- len = size_t(SprintfLiteral(buf, "%u %u 1\n", gid, gid)); >-- MOZ_ASSERT(len < sizeof(buf)); >-- if (!WriteStringToFile("/proc/self/gid_map", buf, len)) { >-+ len = SprintfLiteral(buf, "%u %u 1\n", gid, gid); >-+ if (len >= int(sizeof(buf)) || len < 0) { >-+ return false; >-+ } >-+ if (!WriteStringToFile("/proc/self/gid_map", buf, size_t(len))) { >- MOZ_CRASH("Failed to write /proc/self/gid_map"); >- } >- return true; >-diff --git xpcom/base/nsSystemInfo.cpp xpcom/base/nsSystemInfo.cpp >-index e5a7fe97be03..782dc9abf37d 100644 >---- xpcom/base/nsSystemInfo.cpp >-+++ xpcom/base/nsSystemInfo.cpp >-@@ -706,7 +706,7 @@ nsSystemInfo::Init() >- } >- >- nsAutoCString secondaryLibrary; >-- if (gtkver_len > 0) { >-+ if (gtkver_len > 0 && gtkver_len < int(sizeof(gtkver))) { >- secondaryLibrary.Append(nsDependentCSubstring(gtkver, gtkver_len)); >- } >- >diff --git a/www/firefox/files/patch-bug1375146 b/www/firefox/files/patch-bug1375146 >deleted file mode 100644 >index aa742fd01adb..000000000000 >--- a/www/firefox/files/patch-bug1375146 >+++ /dev/null >@@ -1,37 +0,0 @@ >-commit b481800095d4 >-Author: Stone Shih <sshih@mozilla.com> >-Date: Tue Sep 19 15:41:52 2017 +0800 >- >- Bug 1375146 - Revise sending drag event. r=smaug, a=ritu >- >- --HG-- >- extra : source : d4496b8befbf0ef5ae124a9fbda37ad5b885f9e1 >---- >- dom/events/EventStateManager.cpp | 7 ++++--- >- 1 file changed, 4 insertions(+), 3 deletions(-) >- >-diff --git dom/events/EventStateManager.cpp dom/events/EventStateManager.cpp >-index b94dc0c88e01..1f48884058de 100644 >---- dom/events/EventStateManager.cpp >-+++ dom/events/EventStateManager.cpp >-@@ -1292,8 +1292,9 @@ EventStateManager::DispatchCrossProcessEvent(WidgetEvent* aEvent, >- return; >- } >- case eDragEventClass: { >-- if (remote->Manager()->IsContentParent()) { >-- remote->Manager()->AsContentParent()->MaybeInvokeDragSession(remote); >-+ RefPtr<TabParent> tabParent = remote; >-+ if (tabParent->Manager()->IsContentParent()) { >-+ tabParent->Manager()->AsContentParent()->MaybeInvokeDragSession(tabParent); >- } >- >- nsCOMPtr<nsIDragSession> dragSession = nsContentUtils::GetDragSession(); >-@@ -1309,7 +1310,7 @@ EventStateManager::DispatchCrossProcessEvent(WidgetEvent* aEvent, >- } >- } >- >-- remote->SendRealDragEvent(*aEvent->AsDragEvent(), action, dropEffect); >-+ tabParent->SendRealDragEvent(*aEvent->AsDragEvent(), action, dropEffect); >- return; >- } >- case ePluginEventClass: { >diff --git a/www/firefox/files/patch-bug1384701 b/www/firefox/files/patch-bug1384701 >deleted file mode 100644 >index 142d5430d266..000000000000 >--- a/www/firefox/files/patch-bug1384701 >+++ /dev/null >@@ -1,796 +0,0 @@ >-diff --git widget/gtk/nsLookAndFeel.cpp widget/gtk/nsLookAndFeel.cpp >-index 6bb3e27c6653..f4c35d82200a 100644 >---- widget/gtk/nsLookAndFeel.cpp >-+++ widget/gtk/nsLookAndFeel.cpp >-@@ -29,11 +29,9 @@ >- >- #include "mozilla/gfx/2D.h" >- >--#if MOZ_WIDGET_GTK != 2 >- #include <cairo-gobject.h> >- #include "WidgetStyleCache.h" >- #include "prenv.h" >--#endif >- >- using mozilla::LookAndFeel; >- >-@@ -49,9 +47,6 @@ using mozilla::LookAndFeel; >- >- nsLookAndFeel::nsLookAndFeel() >- : nsXPLookAndFeel(), >--#if (MOZ_WIDGET_GTK == 2) >-- mStyle(nullptr), >--#endif >- mDefaultFontCached(false), mButtonFontCached(false), >- mFieldFontCached(false), mMenuFontCached(false), >- mInitialized(false) >-@@ -66,12 +61,8 @@ nsLookAndFeel::NativeInit() >- >- nsLookAndFeel::~nsLookAndFeel() >- { >--#if (MOZ_WIDGET_GTK == 2) >-- g_object_unref(mStyle); >--#endif >- } >- >--#if MOZ_WIDGET_GTK != 2 >- // Modifies color |*aDest| as if a pattern of color |aSource| was painted with >- // CAIRO_OPERATOR_OVER to a surface with color |*aDest|. >- static void >-@@ -228,42 +219,19 @@ GetBorderColors(GtkStyleContext* aContext, >- *aDarkColor = GDK_RGBA_TO_NS_RGBA(darkColor); >- return ret; >- } >--#endif >- >- nsresult >- nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) >- { >- EnsureInit(); >- >--#if (MOZ_WIDGET_GTK == 3) >- GdkRGBA gdk_color; >--#endif >- nsresult res = NS_OK; >- >- switch (aID) { >- // These colors don't seem to be used for anything anymore in Mozilla >- // (except here at least TextSelectBackground and TextSelectForeground) >- // The CSS2 colors below are used. >--#if (MOZ_WIDGET_GTK == 2) >-- case eColorID_WindowBackground: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->base[GTK_STATE_NORMAL]); >-- break; >-- case eColorID_WindowForeground: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->text[GTK_STATE_NORMAL]); >-- break; >-- case eColorID_WidgetBackground: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]); >-- break; >-- case eColorID_WidgetForeground: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]); >-- break; >-- case eColorID_WidgetSelectBackground: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_SELECTED]); >-- break; >-- case eColorID_WidgetSelectForeground: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_SELECTED]); >-- break; >--#else >- case eColorID_WindowBackground: >- case eColorID_WidgetBackground: >- case eColorID_TextBackground: >-@@ -303,35 +271,12 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) >- case eColorID__moz_html_cellhighlighttext: >- aColor = sTextSelectedText; >- break; >--#endif >- case eColorID_Widget3DHighlight: >- aColor = NS_RGB(0xa0,0xa0,0xa0); >- break; >- case eColorID_Widget3DShadow: >- aColor = NS_RGB(0x40,0x40,0x40); >- break; >--#if (MOZ_WIDGET_GTK == 2) >-- case eColorID_TextBackground: >-- // not used? >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->base[GTK_STATE_NORMAL]); >-- break; >-- case eColorID_TextForeground: >-- // not used? >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->text[GTK_STATE_NORMAL]); >-- break; >-- case eColorID_TextSelectBackground: >-- case eColorID_IMESelectedRawTextBackground: >-- case eColorID_IMESelectedConvertedTextBackground: >-- // still used >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->base[GTK_STATE_SELECTED]); >-- break; >-- case eColorID_TextSelectForeground: >-- case eColorID_IMESelectedRawTextForeground: >-- case eColorID_IMESelectedConvertedTextForeground: >-- // still used >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->text[GTK_STATE_SELECTED]); >-- break; >--#endif >- case eColorID_IMERawInputBackground: >- case eColorID_IMEConvertedTextBackground: >- aColor = NS_TRANSPARENT; >-@@ -352,53 +297,6 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) >- aColor = NS_RGB(0xff, 0, 0); >- break; >- >--#if (MOZ_WIDGET_GTK == 2) >-- // css2 http://www.w3.org/TR/REC-CSS2/ui.html#system-colors >-- case eColorID_activeborder: >-- // active window border >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]); >-- break; >-- case eColorID_activecaption: >-- // active window caption background >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]); >-- break; >-- case eColorID_appworkspace: >-- // MDI background color >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]); >-- break; >-- case eColorID_background: >-- // desktop background >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]); >-- break; >-- case eColorID_captiontext: >-- // text in active window caption, size box, and scrollbar arrow box (!) >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]); >-- break; >-- case eColorID_graytext: >-- // disabled text in windows, menus, etc. >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_INSENSITIVE]); >-- break; >-- case eColorID_highlight: >-- // background of selected item >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->base[GTK_STATE_SELECTED]); >-- break; >-- case eColorID_highlighttext: >-- // text of selected item >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->text[GTK_STATE_SELECTED]); >-- break; >-- case eColorID_inactiveborder: >-- // inactive window border >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]); >-- break; >-- case eColorID_inactivecaption: >-- // inactive window caption >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_INSENSITIVE]); >-- break; >-- case eColorID_inactivecaptiontext: >-- // text in inactive window caption >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_INSENSITIVE]); >-- break; >--#else >- // css2 http://www.w3.org/TR/REC-CSS2/ui.html#system-colors >- case eColorID_activeborder: { >- // active window border >-@@ -433,7 +331,6 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) >- ReleaseStyleContext(style); >- break; >- } >--#endif >- case eColorID_infobackground: >- // tooltip background color >- aColor = sInfoBackground; >-@@ -452,11 +349,7 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) >- break; >- case eColorID_scrollbar: >- // scrollbar gray area >--#if (MOZ_WIDGET_GTK == 2) >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_ACTIVE]); >--#else >- aColor = sMozScrollbar; >--#endif >- break; >- >- case eColorID_threedlightshadow: >-@@ -465,11 +358,7 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) >- case eColorID_threedface: >- case eColorID_buttonface: >- // 3-D face color >--#if (MOZ_WIDGET_GTK == 3) >- aColor = sMozWindowBackground; >--#else >-- aColor = sButtonBackground; >--#endif >- break; >- >- case eColorID_buttontext: >-@@ -491,56 +380,6 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) >- aColor = sFrameInnerDarkBorder; >- break; >- >--#if (MOZ_WIDGET_GTK == 2) >-- case eColorID_threeddarkshadow: >-- // 3-D shadow outer edge color >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->black); >-- break; >-- >-- case eColorID_window: >-- case eColorID_windowframe: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]); >-- break; >-- >-- case eColorID_windowtext: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]); >-- break; >-- >-- case eColorID__moz_eventreerow: >-- case eColorID__moz_field: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->base[GTK_STATE_NORMAL]); >-- break; >-- case eColorID__moz_fieldtext: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->text[GTK_STATE_NORMAL]); >-- break; >-- case eColorID__moz_dialog: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_NORMAL]); >-- break; >-- case eColorID__moz_dialogtext: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_NORMAL]); >-- break; >-- case eColorID__moz_dragtargetzone: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_SELECTED]); >-- break; >-- case eColorID__moz_buttondefault: >-- // default button border color >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->black); >-- break; >-- case eColorID__moz_buttonhoverface: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_PRELIGHT]); >-- break; >-- case eColorID__moz_buttonhovertext: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->fg[GTK_STATE_PRELIGHT]); >-- break; >-- case eColorID__moz_cellhighlight: >-- case eColorID__moz_html_cellhighlight: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->base[GTK_STATE_ACTIVE]); >-- break; >-- case eColorID__moz_cellhighlighttext: >-- case eColorID__moz_html_cellhighlighttext: >-- aColor = GDK_COLOR_TO_NS_RGB(mStyle->text[GTK_STATE_ACTIVE]); >-- break; >--#else >- case eColorID_threeddarkshadow: >- // Hardcode to black >- aColor = NS_RGB(0x00,0x00,0x00); >-@@ -574,7 +413,6 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) >- case eColorID__moz_buttonhovertext: >- aColor = sButtonHoverText; >- break; >--#endif >- case eColorID__moz_menuhover: >- aColor = sMenuHover; >- break; >-@@ -590,11 +428,6 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) >- case eColorID__moz_comboboxtext: >- aColor = sComboBoxText; >- break; >--#if (MOZ_WIDGET_GTK == 2) >-- case eColorID__moz_combobox: >-- aColor = sComboBoxBackground; >-- break; >--#endif >- case eColorID__moz_menubartext: >- aColor = sMenuBarText; >- break; >-@@ -602,11 +435,7 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) >- aColor = sMenuBarHoverText; >- break; >- case eColorID__moz_gtk_info_bar_text: >--#if (MOZ_WIDGET_GTK == 3) >- aColor = sInfoBarText; >--#else >-- aColor = sInfoText; >--#endif >- break; >- default: >- /* default color is BLACK */ >-@@ -618,27 +447,6 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) >- return res; >- } >- >--#if (MOZ_WIDGET_GTK == 2) >--static void darken_gdk_color(GdkColor *src, GdkColor *dest) >--{ >-- gdouble red; >-- gdouble green; >-- gdouble blue; >-- >-- red = (gdouble) src->red / 65535.0; >-- green = (gdouble) src->green / 65535.0; >-- blue = (gdouble) src->blue / 65535.0; >-- >-- red *= 0.93; >-- green *= 0.93; >-- blue *= 0.93; >-- >-- dest->red = red * 65535.0; >-- dest->green = green * 65535.0; >-- dest->blue = blue * 65535.0; >--} >--#endif >-- >- static int32_t CheckWidgetStyle(GtkWidget* aWidget, const char* aStyle, int32_t aResult) { >- gboolean value = FALSE; >- gtk_widget_style_get(aWidget, aStyle, &value, nullptr); >-@@ -826,14 +634,8 @@ nsLookAndFeel::GetIntImpl(IntID aID, int32_t &aResult) >- res = NS_ERROR_NOT_IMPLEMENTED; >- break; >- case eIntID_TouchEnabled: >--#if MOZ_WIDGET_GTK == 3 >- aResult = mozilla::widget::WidgetUtils::IsTouchDeviceSupportPresent(); >- break; >--#else >-- aResult = 0; >-- res = NS_ERROR_NOT_IMPLEMENTED; >--#endif >-- break; >- case eIntID_MacGraphiteTheme: >- aResult = 0; >- res = NS_ERROR_NOT_IMPLEMENTED; >-@@ -905,24 +707,20 @@ nsLookAndFeel::GetFloatImpl(FloatID aID, float &aResult) >- } >- >- static void >--GetSystemFontInfo(GtkWidget *aWidget, >-+GetSystemFontInfo(GtkStyleContext *aStyle, >- nsString *aFontName, >- gfxFontStyle *aFontStyle) >- { >-- GtkSettings *settings = gtk_widget_get_settings(aWidget); >-- >- aFontStyle->style = NS_FONT_STYLE_NORMAL; >- >-- gchar *fontname; >-- g_object_get(settings, "gtk-font-name", &fontname, nullptr); >-- >-+ // As in >-+ // https://git.gnome.org/browse/gtk+/tree/gtk/gtkwidget.c?h=3.22.19#n10333 >- PangoFontDescription *desc; >-- desc = pango_font_description_from_string(fontname); >-+ gtk_style_context_get(aStyle, gtk_style_context_get_state(aStyle), >-+ "font", &desc, nullptr); >- >- aFontStyle->systemFont = true; >- >-- g_free(fontname); >-- >- NS_NAMED_LITERAL_STRING(quote, "\""); >- NS_ConvertUTF8toUTF16 family(pango_font_description_get_family(desc)); >- *aFontName = quote + family + quote; >-@@ -953,96 +751,28 @@ GetSystemFontInfo(GtkWidget *aWidget, >- pango_font_description_free(desc); >- } >- >--static void >--GetSystemFontInfo(LookAndFeel::FontID aID, >-- nsString *aFontName, >-- gfxFontStyle *aFontStyle) >--{ >-- if (aID == LookAndFeel::eFont_Widget) { >-- GtkWidget *label = gtk_label_new("M"); >-- GtkWidget *parent = gtk_fixed_new(); >-- GtkWidget *window = gtk_window_new(GTK_WINDOW_POPUP); >-- >-- gtk_container_add(GTK_CONTAINER(parent), label); >-- gtk_container_add(GTK_CONTAINER(window), parent); >-- >-- gtk_widget_ensure_style(label); >-- GetSystemFontInfo(label, aFontName, aFontStyle); >-- gtk_widget_destroy(window); // no unref, windows are different >-- >-- } else if (aID == LookAndFeel::eFont_Button) { >-- GtkWidget *label = gtk_label_new("M"); >-- GtkWidget *parent = gtk_fixed_new(); >-- GtkWidget *button = gtk_button_new(); >-- GtkWidget *window = gtk_window_new(GTK_WINDOW_POPUP); >-- >-- gtk_container_add(GTK_CONTAINER(button), label); >-- gtk_container_add(GTK_CONTAINER(parent), button); >-- gtk_container_add(GTK_CONTAINER(window), parent); >-- >-- gtk_widget_ensure_style(label); >-- GetSystemFontInfo(label, aFontName, aFontStyle); >-- gtk_widget_destroy(window); // no unref, windows are different >-- >-- } else if (aID == LookAndFeel::eFont_Field) { >-- GtkWidget *entry = gtk_entry_new(); >-- GtkWidget *parent = gtk_fixed_new(); >-- GtkWidget *window = gtk_window_new(GTK_WINDOW_POPUP); >-- >-- gtk_container_add(GTK_CONTAINER(parent), entry); >-- gtk_container_add(GTK_CONTAINER(window), parent); >-- >-- gtk_widget_ensure_style(entry); >-- GetSystemFontInfo(entry, aFontName, aFontStyle); >-- gtk_widget_destroy(window); // no unref, windows are different >-- >-- } else { >-- MOZ_ASSERT(aID == LookAndFeel::eFont_Menu, "unexpected font ID"); >-- GtkWidget *accel_label = gtk_accel_label_new("M"); >-- GtkWidget *menuitem = gtk_menu_item_new(); >-- GtkWidget *menu = gtk_menu_new(); >-- g_object_ref_sink(menu); >-- >-- gtk_container_add(GTK_CONTAINER(menuitem), accel_label); >-- gtk_menu_shell_append((GtkMenuShell *)GTK_MENU(menu), menuitem); >-- >-- gtk_widget_ensure_style(accel_label); >-- GetSystemFontInfo(accel_label, aFontName, aFontStyle); >-- g_object_unref(menu); >-- } >--} >-- >- bool >- nsLookAndFeel::GetFontImpl(FontID aID, nsString& aFontName, >- gfxFontStyle& aFontStyle, >- float aDevPixPerCSSPixel) >- { >-- nsString *cachedFontName = nullptr; >-- gfxFontStyle *cachedFontStyle = nullptr; >-- bool *isCached = nullptr; >-- >- switch (aID) { >- case eFont_Menu: // css2 >- case eFont_PullDownMenu: // css3 >-- cachedFontName = &mMenuFontName; >-- cachedFontStyle = &mMenuFontStyle; >-- isCached = &mMenuFontCached; >-- aID = eFont_Menu; >-- break; >-+ aFontName = mMenuFontName; >-+ aFontStyle = mMenuFontStyle; >-+ return true; >- >- case eFont_Field: // css3 >- case eFont_List: // css3 >-- cachedFontName = &mFieldFontName; >-- cachedFontStyle = &mFieldFontStyle; >-- isCached = &mFieldFontCached; >-- aID = eFont_Field; >-- break; >-+ aFontName = mFieldFontName; >-+ aFontStyle = mFieldFontStyle; >-+ return true; >- >- case eFont_Button: // css3 >-- cachedFontName = &mButtonFontName; >-- cachedFontStyle = &mButtonFontStyle; >-- isCached = &mButtonFontCached; >-- break; >-+ aFontName = mButtonFontName; >-+ aFontStyle = mButtonFontStyle; >-+ return true; >- >- case eFont_Caption: // css2 >- case eFont_Icon: // css2 >-@@ -1057,21 +787,11 @@ nsLookAndFeel::GetFontImpl(FontID aID, nsString& aFontName, >- case eFont_Dialog: // css3 >- case eFont_Tooltips: // moz >- case eFont_Widget: // moz >-- cachedFontName = &mDefaultFontName; >-- cachedFontStyle = &mDefaultFontStyle; >-- isCached = &mDefaultFontCached; >-- aID = eFont_Widget; >-- break; >-- } >-- >-- if (!*isCached) { >-- GetSystemFontInfo(aID, cachedFontName, cachedFontStyle); >-- *isCached = true; >-+ default: >-+ aFontName = mDefaultFontName; >-+ aFontStyle = mDefaultFontStyle; >-+ return true; >- } >-- >-- aFontName = *cachedFontName; >-- aFontStyle = *cachedFontStyle; >-- return true; >- } >- >- void >-@@ -1087,70 +807,6 @@ nsLookAndFeel::EnsureInit() >- // gtk does non threadsafe refcounting >- MOZ_ASSERT(NS_IsMainThread()); >- >--#if (MOZ_WIDGET_GTK == 2) >-- NS_ASSERTION(!mStyle, "already initialized"); >-- // GtkInvisibles come with a refcount that is not floating >-- // (since their initialization code calls g_object_ref_sink) and >-- // their destroy code releases that reference (which means they >-- // have to be explicitly destroyed, since calling unref enough >-- // to cause destruction would lead to *another* unref). >-- // However, this combination means that it's actually still ok >-- // to use the normal pattern, which is to g_object_ref_sink >-- // after construction, and then destroy *and* unref when we're >-- // done. (Though we could skip the g_object_ref_sink and the >-- // corresponding g_object_unref, but that's particular to >-- // GtkInvisibles and GtkWindows.) >-- GtkWidget *widget = gtk_invisible_new(); >-- g_object_ref_sink(widget); // effectively g_object_ref (see above) >-- >-- gtk_widget_ensure_style(widget); >-- mStyle = gtk_style_copy(gtk_widget_get_style(widget)); >-- >-- gtk_widget_destroy(widget); >-- g_object_unref(widget); >-- >-- // tooltip foreground and background >-- GtkStyle *style = gtk_rc_get_style_by_paths(gtk_settings_get_default(), >-- "gtk-tooltips", "GtkWindow", >-- GTK_TYPE_WINDOW); >-- if (style) { >-- sInfoBackground = GDK_COLOR_TO_NS_RGB(style->bg[GTK_STATE_NORMAL]); >-- sInfoText = GDK_COLOR_TO_NS_RGB(style->fg[GTK_STATE_NORMAL]); >-- } >-- >-- // menu foreground & menu background >-- GtkWidget *accel_label = gtk_accel_label_new("M"); >-- GtkWidget *menuitem = gtk_menu_item_new(); >-- GtkWidget *menu = gtk_menu_new(); >-- >-- g_object_ref_sink(menu); >-- >-- gtk_container_add(GTK_CONTAINER(menuitem), accel_label); >-- gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); >-- >-- gtk_widget_set_style(accel_label, nullptr); >-- gtk_widget_set_style(menu, nullptr); >-- gtk_widget_realize(menu); >-- gtk_widget_realize(accel_label); >-- >-- style = gtk_widget_get_style(accel_label); >-- if (style) { >-- sMenuText = GDK_COLOR_TO_NS_RGB(style->fg[GTK_STATE_NORMAL]); >-- } >-- >-- style = gtk_widget_get_style(menu); >-- if (style) { >-- sMenuBackground = GDK_COLOR_TO_NS_RGB(style->bg[GTK_STATE_NORMAL]); >-- } >-- >-- style = gtk_widget_get_style(menuitem); >-- if (style) { >-- sMenuHover = GDK_COLOR_TO_NS_RGB(style->bg[GTK_STATE_PRELIGHT]); >-- sMenuHoverText = GDK_COLOR_TO_NS_RGB(style->fg[GTK_STATE_PRELIGHT]); >-- } >-- >-- g_object_unref(menu); >--#else >- GdkRGBA color; >- GtkStyleContext *style; >- >-@@ -1195,6 +851,12 @@ nsLookAndFeel::EnsureInit() >- } >- } >- >-+ // The label is not added to a parent widget, but shared for constructing >-+ // different style contexts. The node hierarchy is constructed only on >-+ // the label style context. >-+ GtkWidget *labelWidget = gtk_label_new("M"); >-+ g_object_ref_sink(labelWidget); >-+ >- // Scrollbar colors >- style = ClaimStyleContext(MOZ_GTK_SCROLLBAR_TROUGH_VERTICAL); >- gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color); >-@@ -1208,6 +870,13 @@ nsLookAndFeel::EnsureInit() >- gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &color); >- sMozWindowText = GDK_RGBA_TO_NS_RGBA(color); >- ReleaseStyleContext(style); >-+ style = ClaimStyleContext(MOZ_GTK_WINDOW_CONTAINER); >-+ { >-+ GtkStyleContext* labelStyle = CreateStyleForWidget(labelWidget, style); >-+ GetSystemFontInfo(labelStyle, &mDefaultFontName, &mDefaultFontStyle); >-+ g_object_unref(labelStyle); >-+ } >-+ ReleaseStyleContext(style); >- >- // tooltip foreground and background >- style = ClaimStyleContext(MOZ_GTK_TOOLTIP); >-@@ -1224,6 +893,9 @@ nsLookAndFeel::EnsureInit() >- { >- GtkStyleContext* accelStyle = >- CreateStyleForWidget(gtk_accel_label_new("M"), style); >-+ >-+ GetSystemFontInfo(accelStyle, &mMenuFontName, &mMenuFontStyle); >-+ >- gtk_style_context_get_color(accelStyle, GTK_STATE_FLAG_NORMAL, &color); >- sMenuText = GDK_RGBA_TO_NS_RGBA(color); >- gtk_style_context_get_color(accelStyle, GTK_STATE_FLAG_INSENSITIVE, &color); >-@@ -1243,17 +915,8 @@ nsLookAndFeel::EnsureInit() >- gtk_style_context_get_color(style, GTK_STATE_FLAG_PRELIGHT, &color); >- sMenuHoverText = GDK_RGBA_TO_NS_RGBA(color); >- ReleaseStyleContext(style); >--#endif >- >-- // button styles >- GtkWidget *parent = gtk_fixed_new(); >-- GtkWidget *button = gtk_button_new(); >-- GtkWidget *label = gtk_label_new("M"); >--#if (MOZ_WIDGET_GTK == 2) >-- GtkWidget *combobox = gtk_combo_box_new(); >-- GtkWidget *comboboxLabel = gtk_label_new("M"); >-- gtk_container_add(GTK_CONTAINER(combobox), comboboxLabel); >--#endif >- GtkWidget *window = gtk_window_new(GTK_WINDOW_POPUP); >- GtkWidget *treeView = gtk_tree_view_new(); >- GtkWidget *linkButton = gtk_link_button_new("http://example.com/"); >-@@ -1262,94 +925,14 @@ nsLookAndFeel::EnsureInit() >- GtkWidget *entry = gtk_entry_new(); >- GtkWidget *textView = gtk_text_view_new(); >- >-- gtk_container_add(GTK_CONTAINER(button), label); >-- gtk_container_add(GTK_CONTAINER(parent), button); >- gtk_container_add(GTK_CONTAINER(parent), treeView); >- gtk_container_add(GTK_CONTAINER(parent), linkButton); >--#if (MOZ_WIDGET_GTK == 2) >-- gtk_container_add(GTK_CONTAINER(parent), combobox); >--#endif >- gtk_container_add(GTK_CONTAINER(parent), menuBar); >- gtk_menu_shell_append(GTK_MENU_SHELL(menuBar), menuBarItem); >- gtk_container_add(GTK_CONTAINER(window), parent); >- gtk_container_add(GTK_CONTAINER(parent), entry); >- gtk_container_add(GTK_CONTAINER(parent), textView); >- >--#if (MOZ_WIDGET_GTK == 2) >-- gtk_widget_set_style(button, nullptr); >-- gtk_widget_set_style(label, nullptr); >-- gtk_widget_set_style(treeView, nullptr); >-- gtk_widget_set_style(linkButton, nullptr); >-- gtk_widget_set_style(combobox, nullptr); >-- gtk_widget_set_style(comboboxLabel, nullptr); >-- gtk_widget_set_style(menuBar, nullptr); >-- gtk_widget_set_style(entry, nullptr); >-- >-- gtk_widget_realize(button); >-- gtk_widget_realize(label); >-- gtk_widget_realize(treeView); >-- gtk_widget_realize(linkButton); >-- gtk_widget_realize(combobox); >-- gtk_widget_realize(comboboxLabel); >-- gtk_widget_realize(menuBar); >-- gtk_widget_realize(entry); >-- >-- style = gtk_widget_get_style(label); >-- if (style) { >-- sButtonText = GDK_COLOR_TO_NS_RGB(style->fg[GTK_STATE_NORMAL]); >-- } >-- >-- style = gtk_widget_get_style(comboboxLabel); >-- if (style) { >-- sComboBoxText = GDK_COLOR_TO_NS_RGB(style->fg[GTK_STATE_NORMAL]); >-- } >-- style = gtk_widget_get_style(combobox); >-- if (style) { >-- sComboBoxBackground = GDK_COLOR_TO_NS_RGB(style->bg[GTK_STATE_NORMAL]); >-- } >-- >-- style = gtk_widget_get_style(menuBar); >-- if (style) { >-- sMenuBarText = GDK_COLOR_TO_NS_RGB(style->fg[GTK_STATE_NORMAL]); >-- sMenuBarHoverText = GDK_COLOR_TO_NS_RGB(style->fg[GTK_STATE_SELECTED]); >-- } >-- >-- // GTK's guide to fancy odd row background colors: >-- // 1) Check if a theme explicitly defines an odd row color >-- // 2) If not, check if it defines an even row color, and darken it >-- // slightly by a hardcoded value (gtkstyle.c) >-- // 3) If neither are defined, take the base background color and >-- // darken that by a hardcoded value >-- colorValuePtr = nullptr; >-- gtk_widget_style_get(treeView, >-- "odd-row-color", &colorValuePtr, >-- nullptr); >-- >-- if (colorValuePtr) { >-- colorValue = *colorValuePtr; >-- } else { >-- gtk_widget_style_get(treeView, >-- "even-row-color", &colorValuePtr, >-- nullptr); >-- if (colorValuePtr) >-- darken_gdk_color(colorValuePtr, &colorValue); >-- else >-- darken_gdk_color(&treeView->style->base[GTK_STATE_NORMAL], &colorValue); >-- } >-- >-- sOddCellBackground = GDK_COLOR_TO_NS_RGB(colorValue); >-- if (colorValuePtr) >-- gdk_color_free(colorValuePtr); >-- >-- style = gtk_widget_get_style(button); >-- if (style) { >-- sButtonBackground = GDK_COLOR_TO_NS_RGB(style->bg[GTK_STATE_NORMAL]); >-- sFrameOuterLightBorder = >-- GDK_COLOR_TO_NS_RGB(style->light[GTK_STATE_NORMAL]); >-- sFrameInnerDarkBorder = >-- GDK_COLOR_TO_NS_RGB(style->dark[GTK_STATE_NORMAL]); >-- } >--#else >- // Text colors >- GdkRGBA bgColor; >- // If the text window background is translucent, then the background of >-@@ -1381,8 +964,10 @@ nsLookAndFeel::EnsureInit() >- // Button text color >- style = ClaimStyleContext(MOZ_GTK_BUTTON); >- { >-- GtkStyleContext* labelStyle = >-- CreateStyleForWidget(gtk_label_new("M"), style); >-+ GtkStyleContext* labelStyle = CreateStyleForWidget(labelWidget, style); >-+ >-+ GetSystemFontInfo(labelStyle, &mButtonFontName, &mButtonFontStyle); >-+ >- gtk_style_context_get_color(labelStyle, GTK_STATE_FLAG_NORMAL, &color); >- sButtonText = GDK_RGBA_TO_NS_RGBA(color); >- gtk_style_context_get_color(labelStyle, GTK_STATE_FLAG_PRELIGHT, &color); >-@@ -1446,7 +1031,6 @@ nsLookAndFeel::EnsureInit() >- gtk_style_context_add_class(style, GTK_STYLE_CLASS_INFO); >- gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &color); >- sInfoBarText = GDK_RGBA_TO_NS_RGBA(color); >--#endif >- // Some themes have a unified menu bar, and support window dragging on it >- gboolean supports_menubar_drag = FALSE; >- GParamSpec *param_spec = >-@@ -1493,7 +1074,11 @@ nsLookAndFeel::EnsureInit() >- "cursor-aspect-ratio", &sCaretRatio, >- nullptr); >- >-+ GetSystemFontInfo(gtk_widget_get_style_context(entry), >-+ &mFieldFontName, &mFieldFontStyle); >-+ >- gtk_widget_destroy(window); >-+ g_object_unref(labelWidget); >- } >- >- // virtual >-@@ -1515,11 +1100,6 @@ nsLookAndFeel::RefreshImpl() >- mFieldFontCached = false; >- mMenuFontCached = false; >- >--#if (MOZ_WIDGET_GTK == 2) >-- g_object_unref(mStyle); >-- mStyle = nullptr; >--#endif >-- >- mInitialized = false; >- } >- >-diff --git widget/gtk/nsLookAndFeel.h widget/gtk/nsLookAndFeel.h >-index 9a4015e95415..38cd51c056d6 100644 >---- widget/gtk/nsLookAndFeel.h >-+++ widget/gtk/nsLookAndFeel.h >-@@ -33,9 +33,6 @@ public: >- virtual bool GetEchoPasswordImpl(); >- >- protected: >--#if (MOZ_WIDGET_GTK == 2) >-- struct _GtkStyle *mStyle; >--#endif >- >- // Cached fonts >- bool mDefaultFontCached; >-@@ -63,7 +60,6 @@ protected: >- nscolor sMenuHoverText; >- nscolor sButtonText; >- nscolor sButtonHoverText; >-- nscolor sButtonBackground; >- nscolor sFrameOuterLightBorder; >- nscolor sFrameInnerDarkBorder; >- nscolor sOddCellBackground; >-@@ -77,9 +73,7 @@ protected: >- nscolor sTextSelectedText; >- nscolor sTextSelectedBackground; >- nscolor sMozScrollbar; >--#if (MOZ_WIDGET_GTK == 3) >- nscolor sInfoBarText; >--#endif >- char16_t sInvisibleCharacter; >- float sCaretRatio; >- bool sMenuSupportsDrag; >diff --git a/www/firefox/files/patch-bug1386887 b/www/firefox/files/patch-bug1386887 >deleted file mode 100644 >index 7421a8d84012..000000000000 >--- a/www/firefox/files/patch-bug1386887 >+++ /dev/null >@@ -1,89 +0,0 @@ >-commit efbe3a9af876 >-Author: Manish Goregaokar <manishearth@gmail.com> >-Date: Wed Aug 2 11:24:35 2017 -0700 >- >- Bug 1386887 - Clean up FFI lifetimes to work on nightly; r=emilio >- >- MozReview-Commit-ID: 5WAIVd6p2du >---- >- layout/style/ServoBindingList.h | 4 ++-- >- layout/style/ServoBindingTypes.h | 2 ++ >- layout/style/ServoBindings.h | 4 ++-- >- layout/style/ServoBindings.toml | 4 +++- >- 4 files changed, 9 insertions(+), 5 deletions(-) >- >-diff --git layout/style/ServoBindingList.h layout/style/ServoBindingList.h >-index 6c669ebb3d3e..87ade14ea4de 100644 >---- layout/style/ServoBindingList.h >-+++ layout/style/ServoBindingList.h >-@@ -379,10 +379,10 @@ SERVO_BINDING_FUNC(Servo_DeclarationBlock_HasCSSWideKeyword, bool, >- nsCSSPropertyID property) >- // Compose animation value for a given property. >- // |base_values| is nsRefPtrHashtable<nsUint32HashKey, RawServoAnimationValue>. >--// We use void* to avoid exposing nsRefPtrHashtable in FFI. >-+// We use RawServoAnimationValueTableBorrowed to avoid exposing nsRefPtrHashtable in FFI. >- SERVO_BINDING_FUNC(Servo_AnimationCompose, void, >- RawServoAnimationValueMapBorrowedMut animation_values, >-- void* base_values, >-+ RawServoAnimationValueTableBorrowed base_values, >- nsCSSPropertyID property, >- RawGeckoAnimationPropertySegmentBorrowed animation_segment, >- RawGeckoAnimationPropertySegmentBorrowed last_segment, >-diff --git layout/style/ServoBindingTypes.h layout/style/ServoBindingTypes.h >-index aaf4fc27e1b9..69be15ee9f51 100644 >---- layout/style/ServoBindingTypes.h >-+++ layout/style/ServoBindingTypes.h >-@@ -54,6 +54,8 @@ class nsXBLBinding; >- using mozilla::dom::StyleChildrenIterator; >- using mozilla::ServoElementSnapshot; >- >-+typedef void* RawServoAnimationValueTableBorrowed; >-+ >- typedef nsINode RawGeckoNode; >- typedef mozilla::dom::Element RawGeckoElement; >- typedef nsIDocument RawGeckoDocument; >-diff --git layout/style/ServoBindings.h layout/style/ServoBindings.h >-index 493ca63f932b..c6ced6d1fedb 100644 >---- layout/style/ServoBindings.h >-+++ layout/style/ServoBindings.h >-@@ -268,9 +268,9 @@ double Gecko_GetPositionInSegment( >- // Get servo's AnimationValue for |aProperty| from the cached base style >- // |aBaseStyles|. >- // |aBaseStyles| is nsRefPtrHashtable<nsUint32HashKey, RawServoAnimationValue>. >--// We use void* to avoid exposing nsRefPtrHashtable in FFI. >-+// We use RawServoAnimationValueTableBorrowed to avoid exposing nsRefPtrHashtable in FFI. >- RawServoAnimationValueBorrowedOrNull Gecko_AnimationGetBaseStyle( >-- void* aBaseStyles, >-+ RawServoAnimationValueTableBorrowed aBaseStyles, >- nsCSSPropertyID aProperty); >- void Gecko_StyleTransition_SetUnsupportedProperty( >- mozilla::StyleTransition* aTransition, >-diff --git layout/style/ServoBindings.toml layout/style/ServoBindings.toml >-index 11e372541235..3c3902beea80 100644 >---- layout/style/ServoBindings.toml >-+++ layout/style/ServoBindings.toml >-@@ -357,6 +357,7 @@ raw-lines = [ >- "pub type ServoStyleContextBorrowed<'a> = &'a ::properties::ComputedValues;", >- "pub type ServoStyleContextBorrowedOrNull<'a> = Option<&'a ::properties::ComputedValues>;", >- "pub type ServoComputedDataBorrowed<'a> = &'a ServoComputedData;", >-+ "pub type RawServoAnimationValueTableBorrowed<'a> = &'a ();" >- ] >- whitelist-functions = ["Servo_.*", "Gecko_.*"] >- structs-types = [ >-@@ -389,7 +390,7 @@ structs-types = [ >- "RawGeckoPresContext", >- "RawGeckoPresContextOwned", >- "RawGeckoStyleAnimationList", >-- "RawGeckoStyleChildrenIteratorBorrowedMut", >-+ "RawGeckoStyleChildrenIterator", >- "RawGeckoServoStyleRuleList", >- "RawGeckoURLExtraData", >- "RawGeckoXBLBinding", >-@@ -526,6 +527,7 @@ servo-borrow-types = [ >- "RawGeckoFontFaceRuleList", >- "RawGeckoServoStyleRuleList", >- "RawGeckoServoAnimationValueList", >-+ "RawGeckoStyleChildrenIterator", >- ] >- fixups = [ >- # hack for gecko-owned string >diff --git a/www/firefox/files/patch-bug1386957 b/www/firefox/files/patch-bug1386957 >deleted file mode 100644 >index 34b38c5c1298..000000000000 >--- a/www/firefox/files/patch-bug1386957 >+++ /dev/null >@@ -1,14 +0,0 @@ >-https://github.com/kinetiknz/cubeb/commit/16f9ccc064f2 >- >---- media/libcubeb/src/cubeb_jack.cpp.orig 2017-07-07 05:37:16 UTC >-+++ media/libcubeb/src/cubeb_jack.cpp >-@@ -8,7 +8,9 @@ >- */ >- #define _DEFAULT_SOURCE >- #define _BSD_SOURCE >-+#ifndef __FreeBSD__ >- #define _POSIX_SOURCE >-+#endif >- #include <dlfcn.h> >- #include <stdio.h> >- #include <string.h> >diff --git a/www/firefox/files/patch-bug1387799 b/www/firefox/files/patch-bug1387799 >deleted file mode 100644 >index e79b52603427..000000000000 >--- a/www/firefox/files/patch-bug1387799 >+++ /dev/null >@@ -1,49 +0,0 @@ >-commit e1c252eab1f4 >-Author: Milan Sreckovic <milan@mozilla.com> >-Date: Mon Oct 23 16:22:47 2017 -0400 >- >- Bug 1387799 - Keep an extra reference. r=jrmuizel, a=ritu >- >- --HG-- >- extra : source : 8199078921c6b4c0ee4c984100d33750dfe8e144 >---- >- gfx/layers/ipc/CompositorBridgeChild.cpp | 11 ++++++++--- >- 1 file changed, 8 insertions(+), 3 deletions(-) >- >-diff --git gfx/layers/ipc/CompositorBridgeChild.cpp gfx/layers/ipc/CompositorBridgeChild.cpp >-index 9419f4b2da36..55fd9c10871b 100644 >---- gfx/layers/ipc/CompositorBridgeChild.cpp >-+++ gfx/layers/ipc/CompositorBridgeChild.cpp >-@@ -523,10 +523,14 @@ CompositorBridgeChild::RecvHideAllPlugins(const uintptr_t& aParentWidget) >- } >- >- mozilla::ipc::IPCResult >--CompositorBridgeChild::RecvDidComposite(const uint64_t& aId, const uint64_t& aTransactionId, >-+CompositorBridgeChild::RecvDidComposite(const uint64_t& aId, >-+ const uint64_t& aTransactionId, >- const TimeStamp& aCompositeStart, >- const TimeStamp& aCompositeEnd) >- { >-+ // Hold a reference to keep texture pools alive. See bug 1387799 >-+ AutoTArray<RefPtr<TextureClientPool>,2> texturePools = mTexturePools; >-+ >- if (mLayerManager) { >- MOZ_ASSERT(aId == 0); >- MOZ_ASSERT(mLayerManager->GetBackendType() == LayersBackend::LAYERS_CLIENT || >-@@ -541,13 +545,14 @@ CompositorBridgeChild::RecvDidComposite(const uint64_t& aId, const uint64_t& aTr >- } >- } >- >-- for (size_t i = 0; i < mTexturePools.Length(); i++) { >-- mTexturePools[i]->ReturnDeferredClients(); >-+ for (size_t i = 0; i < texturePools.Length(); i++) { >-+ texturePools[i]->ReturnDeferredClients(); >- } >- >- return IPC_OK(); >- } >- >-+ >- void >- CompositorBridgeChild::ActorDestroy(ActorDestroyReason aWhy) >- { >diff --git a/www/firefox/files/patch-bug1393283 b/www/firefox/files/patch-bug1393283 >deleted file mode 100644 >index 0a4b9327ea2b..000000000000 >--- a/www/firefox/files/patch-bug1393283 >+++ /dev/null >@@ -1,144 +0,0 @@ >-commit d20c7d929c84 >-Author: Ethan <ettseng@mozilla.com> >-Date: Fri Sep 1 17:29:44 2017 +0800 >- >- Bug 1393283 - Use the last ESR version as the spoofed Firefox version. r=tihuang, r=mcmanus >---- >- .../test/browser/browser_navigator.js | 2 +- >- netwerk/protocol/http/nsHttpHandler.cpp | 16 +++---- >- .../resistfingerprinting/nsRFPService.cpp | 56 ++++++++++++++++++++++ >- .../components/resistfingerprinting/nsRFPService.h | 3 ++ >- 4 files changed, 66 insertions(+), 11 deletions(-) >- >-diff --git browser/components/resistfingerprinting/test/browser/browser_navigator.js browser/components/resistfingerprinting/test/browser/browser_navigator.js >-index 25c393d8bb2a..9f52e34a9451 100644 >---- browser/components/resistfingerprinting/test/browser/browser_navigator.js >-+++ browser/components/resistfingerprinting/test/browser/browser_navigator.js >-@@ -91,7 +91,7 @@ add_task(async function setup() { >- >- let appInfo = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo); >- let appVersion = parseInt(appInfo.version); >-- let spoofedVersion = appVersion - (appVersion % 10); >-+ let spoofedVersion = appVersion - ((appVersion - 3) % 7); >- spoofedUserAgent = `Mozilla/5.0 (${SPOOFED_OSCPU}; rv:${spoofedVersion}.0) Gecko/20100101 Firefox/${spoofedVersion}.0`; >- }); >- >-diff --git netwerk/protocol/http/nsHttpHandler.cpp netwerk/protocol/http/nsHttpHandler.cpp >-index 31d0f8832732..b957d835b52f 100644 >---- netwerk/protocol/http/nsHttpHandler.cpp >-+++ netwerk/protocol/http/nsHttpHandler.cpp >-@@ -461,16 +461,12 @@ nsHttpHandler::Init() >- mAppVersion.AssignLiteral(MOZ_APP_UA_VERSION); >- } >- >-- // Generating the spoofed userAgent for fingerprinting resistance. >-- // The browser version will be rounded down to a multiple of 10. >-- // By doing so, the anonymity group will cover more versions instead of one >-- // version. >-- uint32_t spoofedVersion = mAppVersion.ToInteger(&rv); >-- if (NS_SUCCEEDED(rv)) { >-- spoofedVersion = spoofedVersion - (spoofedVersion % 10); >-- mSpoofedUserAgent.Assign(nsPrintfCString( >-- "Mozilla/5.0 (%s; rv:%d.0) Gecko/%s Firefox/%d.0", >-- SPOOFED_OSCPU, spoofedVersion, LEGACY_BUILD_ID, spoofedVersion)); >-+ // Generating the spoofed User Agent for fingerprinting resistance. >-+ rv = nsRFPService::GetSpoofedUserAgent(mSpoofedUserAgent); >-+ if (NS_FAILED(rv)) { >-+ // Empty mSpoofedUserAgent to make sure the unsuccessful spoofed UA string >-+ // will not be used anywhere. >-+ mSpoofedUserAgent.Truncate(); >- } >- >- mSessionStartTime = NowInSeconds(); >-diff --git toolkit/components/resistfingerprinting/nsRFPService.cpp toolkit/components/resistfingerprinting/nsRFPService.cpp >-index 94554200c3b8..96a2940c04a0 100644 >---- toolkit/components/resistfingerprinting/nsRFPService.cpp >-+++ toolkit/components/resistfingerprinting/nsRFPService.cpp >-@@ -18,10 +18,13 @@ >- #include "nsServiceManagerUtils.h" >- #include "nsString.h" >- #include "nsXULAppAPI.h" >-+#include "nsPrintfCString.h" >- >- #include "nsIObserverService.h" >- #include "nsIPrefBranch.h" >- #include "nsIPrefService.h" >-+#include "nsIXULAppInfo.h" >-+#include "nsIXULRuntime.h" >- #include "nsJSUtils.h" >- >- #include "prenv.h" >-@@ -162,6 +165,59 @@ nsRFPService::GetSpoofedPresentedFrames(double aTime, uint32_t aWidth, uint32_t >- return NSToIntFloor(time * sVideoFramesPerSec * ((100 - boundedDroppedRatio) / 100.0)); >- } >- >-+/* static */ >-+nsresult >-+nsRFPService::GetSpoofedUserAgent(nsACString &userAgent) >-+{ >-+ // This function generates the spoofed value of User Agent. >-+ // We spoof the values of the platform and Firefox version, which could be >-+ // used as fingerprinting sources to identify individuals. >-+ // Reference of the format of User Agent: >-+ // https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID/userAgent >-+ // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent >-+ >-+ nsresult rv; >-+ nsCOMPtr<nsIXULAppInfo> appInfo = >-+ do_GetService("@mozilla.org/xre/app-info;1", &rv); >-+ NS_ENSURE_SUCCESS(rv, rv); >-+ >-+ nsAutoCString appVersion; >-+ rv = appInfo->GetVersion(appVersion); >-+ NS_ENSURE_SUCCESS(rv, rv); >-+ >-+ // The browser version will be spoofed as the last ESR version. >-+ // By doing so, the anonymity group will cover more versions instead of one >-+ // version. >-+ uint32_t firefoxVersion = appVersion.ToInteger(&rv); >-+ NS_ENSURE_SUCCESS(rv, rv); >-+ >-+ // Starting from Firefox 10, Firefox ESR was released once every seven >-+ // Firefox releases, e.g. Firefox 10, 17, 24, 31, and so on. >-+ // We infer the last and closest ESR version based on this rule. >-+ nsCOMPtr<nsIXULRuntime> runtime = >-+ do_GetService("@mozilla.org/xre/runtime;1", &rv); >-+ NS_ENSURE_SUCCESS(rv, rv); >-+ >-+ nsAutoCString updateChannel; >-+ rv = runtime->GetDefaultUpdateChannel(updateChannel); >-+ NS_ENSURE_SUCCESS(rv, rv); >-+ >-+ // If we are running in Firefox ESR, determine whether the formula of ESR >-+ // version has changed. Once changed, we must update the formula in this >-+ // function. >-+ if (updateChannel.Equals("esr")) { >-+ MOZ_ASSERT(((firefoxVersion % 7) == 3), >-+ "Please udpate ESR version formula in nsRFPService.cpp"); >-+ } >-+ >-+ uint32_t spoofedVersion = firefoxVersion - ((firefoxVersion - 3) % 7); >-+ userAgent.Assign(nsPrintfCString( >-+ "Mozilla/5.0 (%s; rv:%d.0) Gecko/%s Firefox/%d.0", >-+ SPOOFED_OSCPU, spoofedVersion, LEGACY_BUILD_ID, spoofedVersion)); >-+ >-+ return rv; >-+} >-+ >- nsresult >- nsRFPService::Init() >- { >-diff --git toolkit/components/resistfingerprinting/nsRFPService.h toolkit/components/resistfingerprinting/nsRFPService.h >-index cf1f688bb992..bad80383883b 100644 >---- toolkit/components/resistfingerprinting/nsRFPService.h >-+++ toolkit/components/resistfingerprinting/nsRFPService.h >-@@ -49,6 +49,9 @@ public: >- static uint32_t GetSpoofedDroppedFrames(double aTime, uint32_t aWidth, uint32_t aHeight); >- static uint32_t GetSpoofedPresentedFrames(double aTime, uint32_t aWidth, uint32_t aHeight); >- >-+ // This method generates the spoofed value of User Agent. >-+ static nsresult GetSpoofedUserAgent(nsACString &userAgent); >-+ >- private: >- nsresult Init(); >- >diff --git a/www/firefox/files/patch-bug1394265 b/www/firefox/files/patch-bug1394265 >deleted file mode 100644 >index 15d00bc63722..000000000000 >--- a/www/firefox/files/patch-bug1394265 >+++ /dev/null >@@ -1,24 +0,0 @@ >-commit a51675964a63 >-Author: Jeff Gilbert <jgilbert@mozilla.com> >-Date: Tue Oct 17 17:14:29 2017 -0700 >- >- Bug 1394265 - Set MAX_COMBINED_TEXTURE_IMAGE_UNITS to 0 if GetIntegeriv fails. - r=daoshengmu a=ritu >- >- MozReview-Commit-ID: 5h6UPXczKhb >---- >- dom/canvas/WebGLContextValidate.cpp | 2 +- >- 1 file changed, 1 insertion(+), 1 deletion(-) >- >-diff --git dom/canvas/WebGLContextValidate.cpp dom/canvas/WebGLContextValidate.cpp >-index a8334e546414..ebf0aa8c2d78 100644 >---- dom/canvas/WebGLContextValidate.cpp >-+++ dom/canvas/WebGLContextValidate.cpp >-@@ -554,7 +554,7 @@ WebGLContext::InitAndValidateGL(FailureReason* const out_failReason) >- if (MinCapabilityMode()) >- mGLMaxTextureUnits = MINVALUE_GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS; >- else >-- gl->fGetIntegerv(LOCAL_GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &mGLMaxTextureUnits); >-+ mGLMaxTextureUnits = gl->GetIntAs<GLint>(LOCAL_GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS); >- >- if (mGLMaxTextureUnits < 8) { >- const nsPrintfCString reason("GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: %d is < 8!", >diff --git a/www/firefox/files/patch-bug1394530 b/www/firefox/files/patch-bug1394530 >deleted file mode 100644 >index 92b6e587ce1d..000000000000 >--- a/www/firefox/files/patch-bug1394530 >+++ /dev/null >@@ -1,60 +0,0 @@ >-commit a2b75aa9409c >-Author: Tooru Fujisawa <arai_a@mac.com> >-Date: Sun Sep 17 19:52:04 2017 +0900 >- >- Bug 1394530 - Stop using optimized path for non PromiseObject. r=till, a=sledru >- >- --HG-- >- extra : source : 079ff8998fd50540948d3262a3a8b1f4d61b43e9 >---- >- js/src/builtin/Promise.cpp | 21 ++++++++++++++++----- >- 1 file changed, 16 insertions(+), 5 deletions(-) >- >-diff --git js/src/builtin/Promise.cpp js/src/builtin/Promise.cpp >-index 1cb1cff0682e..e316f090504d 100644 >---- js/src/builtin/Promise.cpp >-+++ js/src/builtin/Promise.cpp >-@@ -2365,6 +2365,15 @@ NewReactionRecord(JSContext* cx, HandleObject resultPromise, HandleValue onFulfi >- HandleValue onRejected, HandleObject resolve, HandleObject reject, >- HandleObject incumbentGlobalObject) >- { >-+ // Either of the following conditions must be met: >-+ // * resultPromise is a PromiseObject >-+ // * resolve and reject are callable >-+ // except for Async Generator, there resultPromise can be nullptr. >-+ MOZ_ASSERT_IF(resultPromise && !resultPromise->is<PromiseObject>(), resolve); >-+ MOZ_ASSERT_IF(resultPromise && !resultPromise->is<PromiseObject>(), IsCallable(resolve)); >-+ MOZ_ASSERT_IF(resultPromise && !resultPromise->is<PromiseObject>(), reject); >-+ MOZ_ASSERT_IF(resultPromise && !resultPromise->is<PromiseObject>(), IsCallable(reject)); >-+ >- Rooted<PromiseReactionRecord*> reaction(cx, NewObjectWithClassProto<PromiseReactionRecord>(cx)); >- if (!reaction) >- return nullptr; >-@@ -3072,7 +3081,7 @@ BlockOnPromise(JSContext* cx, HandleValue promiseVal, HandleObject blockedPromis >- // rejected promises list. >- bool addToDependent = true; >- >-- if (C == PromiseCtor) { >-+ if (C == PromiseCtor && resultPromise->is<PromiseObject>()) { >- addToDependent = false; >- } else { >- // 25.4.5.3., step 4. >-@@ -3131,12 +3140,14 @@ BlockOnPromise(JSContext* cx, HandleValue promiseVal, HandleObject blockedPromis >- return false; >- } >- >-- // If the object to depend on isn't a, maybe-wrapped, Promise instance, >-- // we ignore it. All this does is lose some small amount of debug >-- // information in scenarios that are highly unlikely to occur in useful >-- // code. >-+ // If either the object to depend on or the object that gets blocked isn't >-+ // a, maybe-wrapped, Promise instance, we ignore it. All this does is lose >-+ // some small amount of debug information in scenarios that are highly >-+ // unlikely to occur in useful code. >- if (!unwrappedPromiseObj->is<PromiseObject>()) >- return true; >-+ if (!blockedPromise_->is<PromiseObject>()) >-+ return true; >- >- Rooted<PromiseObject*> promise(cx, &unwrappedPromiseObj->as<PromiseObject>()); >- return AddPromiseReaction(cx, promise, UndefinedHandleValue, UndefinedHandleValue, >diff --git a/www/firefox/files/patch-bug1395138 b/www/firefox/files/patch-bug1395138 >deleted file mode 100644 >index 5422a708ab5c..000000000000 >--- a/www/firefox/files/patch-bug1395138 >+++ /dev/null >@@ -1,49 +0,0 @@ >-commit 8ab8a207d511 >-Author: Jamie Nicol <jnicol@mozilla.com> >-Date: Mon Oct 9 17:48:59 2017 +0100 >- >- Bug 1395138 - Hold reference to layers in ContainerLayerComposite::mPrepared. r=mattwoodrow, a=sledru >- >- MozReview-Commit-ID: 6qUDRnRcFAw >---- >- gfx/layers/composite/ContainerLayerComposite.cpp | 9 +++++---- >- 1 file changed, 5 insertions(+), 4 deletions(-) >- >-diff --git gfx/layers/composite/ContainerLayerComposite.cpp gfx/layers/composite/ContainerLayerComposite.cpp >-index aad2993629fc..28d9e79925a0 100755 >---- gfx/layers/composite/ContainerLayerComposite.cpp >-+++ gfx/layers/composite/ContainerLayerComposite.cpp >-@@ -161,12 +161,12 @@ static gfx::IntRect ContainerVisibleRect(ContainerT* aContainer) >- /* all of the per-layer prepared data we need to maintain */ >- struct PreparedLayer >- { >-- PreparedLayer(LayerComposite *aLayer, >-+ PreparedLayer(Layer *aLayer, >- RenderTargetIntRect aClipRect, >- Maybe<gfx::Polygon>&& aGeometry) >- : mLayer(aLayer), mClipRect(aClipRect), mGeometry(Move(aGeometry)) {} >- >-- LayerComposite* mLayer; >-+ RefPtr<Layer> mLayer; >- RenderTargetIntRect mClipRect; >- Maybe<Polygon> mGeometry; >- }; >-@@ -230,7 +230,8 @@ ContainerPrepare(ContainerT* aContainer, >- CULLING_LOG("Preparing sublayer %p\n", layerToRender->GetLayer()); >- >- layerToRender->Prepare(clipRect); >-- aContainer->mPrepared->mLayers.AppendElement(PreparedLayer(layerToRender, clipRect, >-+ aContainer->mPrepared->mLayers.AppendElement(PreparedLayer(layerToRender->GetLayer(), >-+ clipRect, >- Move(layer.geometry))); >- } >- >-@@ -408,7 +409,7 @@ RenderLayers(ContainerT* aContainer, LayerManagerComposite* aManager, >- PreparedLayer& preparedData = aContainer->mPrepared->mLayers[i]; >- >- const gfx::IntRect clipRect = preparedData.mClipRect.ToUnknownRect(); >-- LayerComposite* layerToRender = preparedData.mLayer; >-+ LayerComposite* layerToRender = static_cast<LayerComposite*>(preparedData.mLayer->ImplData()); >- const Maybe<gfx::Polygon>& childGeometry = preparedData.mGeometry; >- >- Layer* layer = layerToRender->GetLayer(); >diff --git a/www/firefox/files/patch-bug1397811 b/www/firefox/files/patch-bug1397811 >deleted file mode 100644 >index 4df98338ece5..000000000000 >--- a/www/firefox/files/patch-bug1397811 >+++ /dev/null >@@ -1,48 +0,0 @@ >-commit 2bffd0136caf >-Author: Olli Pettay <Olli.Pettay@helsinki.fi> >-Date: Fri Oct 20 11:02:29 2017 +0100 >- >- Bug 1397811 - In order to not leak properties, ensure all the properties of adopted nodes are removed in case the adopt call fails. r=bz, a=lizzard >- >- --HG-- >- extra : source : b609906f34b50f8e4236d0fee8d01338181dd906 >---- >- dom/base/nsNodeUtils.cpp | 21 +++++++++------------ >- 1 file changed, 9 insertions(+), 12 deletions(-) >- >-diff --git dom/base/nsNodeUtils.cpp dom/base/nsNodeUtils.cpp >-index dd958aa443ce..20e714d54065 100644 >---- dom/base/nsNodeUtils.cpp >-+++ dom/base/nsNodeUtils.cpp >-@@ -605,6 +605,15 @@ nsNodeUtils::CloneAndAdopt(nsINode *aNode, bool aClone, bool aDeep, >- } >- } >- >-+ if (aNodesWithProperties && aNode->HasProperties()) { >-+ bool ok = aNodesWithProperties->AppendObject(aNode); >-+ MOZ_RELEASE_ASSERT(ok, "Out of memory"); >-+ if (aClone) { >-+ ok = aNodesWithProperties->AppendObject(clone); >-+ MOZ_RELEASE_ASSERT(ok, "Out of memory"); >-+ } >-+ } >-+ >- if (aDeep && (!aClone || !aNode->IsNodeOfType(nsINode::eATTRIBUTE))) { >- // aNode's children. >- for (nsIContent* cloneChild = aNode->GetFirstChild(); >-@@ -664,15 +673,6 @@ nsNodeUtils::CloneAndAdopt(nsINode *aNode, bool aClone, bool aDeep, >- } >- #endif >- >-- if (aNodesWithProperties && aNode->HasProperties()) { >-- bool ok = aNodesWithProperties->AppendObject(aNode); >-- if (aClone) { >-- ok = ok && aNodesWithProperties->AppendObject(clone); >-- } >-- >-- NS_ENSURE_TRUE(ok, NS_ERROR_OUT_OF_MEMORY); >-- } >-- >- clone.forget(aResult); >- >- return NS_OK; >diff --git a/www/firefox/files/patch-bug1400003 b/www/firefox/files/patch-bug1400003 >deleted file mode 100644 >index 5039150992e6..000000000000 >--- a/www/firefox/files/patch-bug1400003 >+++ /dev/null >@@ -1,120 +0,0 @@ >-commit 677c707a4f11 >-Author: Jon Coppeard <jcoppeard@mozilla.com> >-Date: Mon Oct 9 10:03:20 2017 +0100 >- >- Bug 1400003 - Mark Heap<T> and barrier classes as MOZ_NON_MEMMOVABLE. r=sfink, r=froydnj, a=lizzard >- >- --HG-- >- extra : source : 6ad5b916c9659aeb4b901d8f9ec7f121dc2c4418 >---- >- js/public/RootingAPI.h | 10 +++++++++- >- js/src/gc/Barrier.h | 5 ++++- >- xpcom/ds/nsTArray.h | 27 +++++++++++++-------------- >- 3 files changed, 26 insertions(+), 16 deletions(-) >- >-diff --git js/public/RootingAPI.h js/public/RootingAPI.h >-index 74a61af93703..f8ec7c5a1f5b 100644 >---- js/public/RootingAPI.h >-+++ js/public/RootingAPI.h >-@@ -231,7 +231,7 @@ AssertGCThingIsNotAnObjectSubclass(js::gc::Cell* cell) {} >- * Type T must be a public GC pointer type. >- */ >- template <typename T> >--class Heap : public js::HeapBase<T, Heap<T>> >-+class MOZ_NON_MEMMOVABLE Heap : public js::HeapBase<T, Heap<T>> >- { >- // Please note: this can actually also be used by nsXBLMaybeCompiled<T>, for legacy reasons. >- static_assert(js::IsHeapConstructibleType<T>::value, >-@@ -1246,6 +1246,14 @@ class JS_PUBLIC_API(ObjectPtr) >- >- explicit ObjectPtr(JSObject* obj) : value(obj) {} >- >-+ ObjectPtr(const ObjectPtr& other) : value(other.value) {} >-+ >-+ ObjectPtr(ObjectPtr&& other) >-+ : value(other.value) >-+ { >-+ other.value = nullptr; >-+ } >-+ >- /* Always call finalize before the destructor. */ >- ~ObjectPtr() { MOZ_ASSERT(!value); } >- >-diff --git js/src/gc/Barrier.h js/src/gc/Barrier.h >-index 9c4f53975752..1740315c14e9 100644 >---- js/src/gc/Barrier.h >-+++ js/src/gc/Barrier.h >-@@ -318,8 +318,11 @@ struct InternalBarrierMethods<jsid> >- }; >- >- // Base class of all barrier types. >-+// >-+// This is marked non-memmovable since post barriers added by derived classes >-+// can add pointers to class instances to the store buffer. >- template <typename T> >--class BarrieredBase >-+class MOZ_NON_MEMMOVABLE BarrieredBase >- { >- protected: >- // BarrieredBase is not directly instantiable. >-diff --git xpcom/ds/nsTArray.h xpcom/ds/nsTArray.h >-index 424a50ba421e..4e9b57126bfb 100644 >---- xpcom/ds/nsTArray.h >-+++ xpcom/ds/nsTArray.h >-@@ -37,6 +37,7 @@ >- namespace JS { >- template<class T> >- class Heap; >-+class ObjectPtr; >- } /* namespace JS */ >- >- class nsRegion; >-@@ -708,7 +709,7 @@ struct nsTArray_CopyWithConstructors >- template<class E> >- struct MOZ_NEEDS_MEMMOVABLE_TYPE nsTArray_CopyChooser >- { >-- typedef nsTArray_CopyWithMemutils Type; >-+ using Type = nsTArray_CopyWithMemutils; >- }; >- >- // >-@@ -719,14 +720,18 @@ struct MOZ_NEEDS_MEMMOVABLE_TYPE nsTArray_CopyChooser >- template<> \ >- struct nsTArray_CopyChooser<T> \ >- { \ >-- typedef nsTArray_CopyWithConstructors<T> Type; \ >-+ using Type = nsTArray_CopyWithConstructors<T>; \ >- }; >- >--template<class E> >--struct nsTArray_CopyChooser<JS::Heap<E>> >--{ >-- typedef nsTArray_CopyWithConstructors<JS::Heap<E>> Type; >--}; >-+#define DECLARE_USE_COPY_CONSTRUCTORS_FOR_TEMPLATE(T) \ >-+ template<typename S> \ >-+ struct nsTArray_CopyChooser<T<S>> \ >-+ { \ >-+ using Type = nsTArray_CopyWithConstructors<T<S>>; \ >-+ }; >-+ >-+DECLARE_USE_COPY_CONSTRUCTORS_FOR_TEMPLATE(JS::Heap) >-+DECLARE_USE_COPY_CONSTRUCTORS_FOR_TEMPLATE(std::function) >- >- DECLARE_USE_COPY_CONSTRUCTORS(nsRegion) >- DECLARE_USE_COPY_CONSTRUCTORS(nsIntRegion) >-@@ -740,13 +745,7 @@ DECLARE_USE_COPY_CONSTRUCTORS(mozilla::dom::indexedDB::SerializedStructuredClone >- DECLARE_USE_COPY_CONSTRUCTORS(JSStructuredCloneData) >- DECLARE_USE_COPY_CONSTRUCTORS(mozilla::dom::MessagePortMessage) >- DECLARE_USE_COPY_CONSTRUCTORS(mozilla::SourceBufferTask) >-- >--template<typename T> >--struct nsTArray_CopyChooser<std::function<T>> >--{ >-- typedef nsTArray_CopyWithConstructors<std::function<T>> Type; >--}; >-- >-+DECLARE_USE_COPY_CONSTRUCTORS(JS::ObjectPtr) >- >- // >- // Base class for nsTArray_Impl that is templated on element type and derived >diff --git a/www/firefox/files/patch-bug1400554 b/www/firefox/files/patch-bug1400554 >deleted file mode 100644 >index b8ed7dec089a..000000000000 >--- a/www/firefox/files/patch-bug1400554 >+++ /dev/null >@@ -1,27 +0,0 @@ >-commit 62b41b600acc >-Author: Dragana Damjanovic <dd.mozilla@gmail.com> >-Date: Mon Oct 9 14:59:32 2017 -0400 >- >- Bug 1400554 - Cancel a time in TLSFilterTransaction if transaction is canceled. r=mcmanus, a=ritu >- >- --HG-- >- extra : source : 67315954145e9cae0efe8c5323452a70a13c5484 >---- >- netwerk/protocol/http/TunnelUtils.cpp | 4 ++++ >- 1 file changed, 4 insertions(+) >- >-diff --git netwerk/protocol/http/TunnelUtils.cpp netwerk/protocol/http/TunnelUtils.cpp >-index d0f6ef0b1873..0cf3ea4f3008 100644 >---- netwerk/protocol/http/TunnelUtils.cpp >-+++ netwerk/protocol/http/TunnelUtils.cpp >-@@ -126,6 +126,10 @@ TLSFilterTransaction::Close(nsresult aReason) >- return; >- } >- >-+ if (mTimer) { >-+ mTimer->Cancel(); >-+ mTimer = nullptr; >-+ } >- mTransaction->Close(aReason); >- mTransaction = nullptr; >- } >diff --git a/www/firefox/files/patch-bug1401573 b/www/firefox/files/patch-bug1401573 >deleted file mode 100644 >index 22fc6f569a59..000000000000 >--- a/www/firefox/files/patch-bug1401573 >+++ /dev/null >@@ -1,27 +0,0 @@ >-commit d0ed05261f20 >-Author: jason laster <jlaster@mozilla.com> >-Date: Wed Sep 20 10:52:54 2017 -0400 >- >- Bug 1401573 - Fix PoE, Link, and linux issue. r=nchevobbe >- >- MozReview-Commit-ID: 35TA6bhW1Wr >---- >- devtools/client/debugger/new/debugger.js | 68 +++++++++++++++++----- >- devtools/client/debugger/new/panel.js | 27 ++++++++- >- .../new/test/mochitest/browser_dbg-expressions.js | 2 +- >- 3 files changed, 79 insertions(+), 18 deletions(-) >- >-diff --git devtools/client/debugger/new/debugger.js devtools/client/debugger/new/debugger.js >-index f52a3e380ab6..c1213180cb13 100644 >---- devtools/client/debugger/new/debugger.js >-+++ devtools/client/debugger/new/debugger.js >-@@ -29493,7 +29493,8 @@ return /******/ (function(modules) { // webpackBootstr >- } >- >- function getKeyForOS(os, action) { >-- return KEYS[os][action]; >-+ var osActions = KEYS[os] || KEYS.Linux; >-+ return osActions[action]; >- } >- >- function formatKey(action) { >diff --git a/www/firefox/files/patch-bug1401804 b/www/firefox/files/patch-bug1401804 >deleted file mode 100644 >index c3b4688dc744..000000000000 >--- a/www/firefox/files/patch-bug1401804 >+++ /dev/null >@@ -1,31 +0,0 @@ >-commit 38e6bb85066b >-Author: Jon Coppeard <jcoppeard@mozilla.com> >-Date: Fri Sep 22 13:09:44 2017 +0100 >- >- Bug 1401804 - Fix IsMarkedBlack check used in gray marking asserts r=sfink a=sylvestre >---- >- js/src/gc/Barrier.cpp | 11 ++--------- >- 1 file changed, 2 insertions(+), 9 deletions(-) >- >-diff --git js/src/gc/Barrier.cpp js/src/gc/Barrier.cpp >-index 5a5dfbe9bed0..0c42d16e7117 100644 >---- js/src/gc/Barrier.cpp >-+++ js/src/gc/Barrier.cpp >-@@ -33,15 +33,8 @@ RuntimeFromActiveCooperatingThreadIsHeapMajorCollecting(JS::shadow::Zone* shadow >- bool >- IsMarkedBlack(JSObject* obj) >- { >-- // Note: we assume conservatively that Nursery things will be live. >-- if (!obj->isTenured()) >-- return true; >-- >-- gc::TenuredCell& tenured = obj->asTenured(); >-- if (tenured.isMarkedAny() || tenured.arena()->allocatedDuringIncremental) >-- return true; >-- >-- return false; >-+ return obj->isMarkedBlack() || >-+ (obj->isTenured() && obj->asTenured().arena()->allocatedDuringIncremental); >- } >- >- bool >diff --git a/www/firefox/files/patch-bug1402442 b/www/firefox/files/patch-bug1402442 >deleted file mode 100644 >index 18bf1c88ca47..000000000000 >--- a/www/firefox/files/patch-bug1402442 >+++ /dev/null >@@ -1,181 +0,0 @@ >-commit 44b4458e2d21 >-Author: Emilio Cobos Ãlvarez <emilio@crisal.io> >-Date: Mon Sep 25 18:25:29 2017 +0200 >- >- Bug 1402442 - Properly remove display: contents pseudo-frames. r=mats, a=ritu >- >- MozReview-Commit-ID: 4pjVLQfv3YR >- Signed-off-by: Emilio Cobos Ãlvarez <emilio@crisal.io> >- >- --HG-- >- extra : source : faa69ac1c14b79838cc0aac842b470a110542ebd >- extra : amend_source : 3a76e0123bf3f7d10295000cc44fd8bdddf700df >---- >- layout/base/nsCSSFrameConstructor.cpp | 26 +++++++++++++++------- >- testing/web-platform/meta/MANIFEST.json | 25 +++++++++++++++++++++ >- ...dynamic-generated-content-fieldset-001.html.ini | 4 ++++ >- ...dynamic-generated-content-fieldset-001-ref.html | 16 +++++++++++++ >- ...nts-dynamic-generated-content-fieldset-001.html | 26 ++++++++++++++++++++++ >- 5 files changed, 89 insertions(+), 8 deletions(-) >- >-diff --git layout/base/nsCSSFrameConstructor.cpp layout/base/nsCSSFrameConstructor.cpp >-index 99b1211b399b..4fce3fb381a7 100644 >---- layout/base/nsCSSFrameConstructor.cpp >-+++ layout/base/nsCSSFrameConstructor.cpp >-@@ -1698,6 +1698,17 @@ nsCSSFrameConstructor::NotifyDestroyingFrame(nsIFrame* aFrame) >- nsFrameManager::NotifyDestroyingFrame(aFrame); >- } >- >-+static bool >-+HasGeneratedContent(const nsIContent* aChild) >-+{ >-+ if (!aChild->MayHaveAnonymousChildren()) { >-+ return false; >-+ } >-+ >-+ return nsLayoutUtils::GetBeforeFrame(aChild) || >-+ nsLayoutUtils::GetAfterFrame(aChild); >-+} >-+ >- struct nsGenConInitializer { >- nsAutoPtr<nsGenConNode> mNode; >- nsGenConList* mList; >-@@ -8642,16 +8653,15 @@ nsCSSFrameConstructor::ContentRemoved(nsIContent* aCo >- MOZ_ASSERT(!childFrame || !GetDisplayContentsStyleFor(aChild), >- "display:contents nodes shouldn't have a frame"); >- if (!childFrame && GetDisplayContentsStyleFor(aChild)) { >-- nsIContent* ancestor = aContainer; >-- MOZ_ASSERT(ancestor, "display: contents on the root?"); >-- while (!ancestor->GetPrimaryFrame()) { >-- // FIXME(emilio): Should this use the flattened tree parent instead? >-- ancestor = ancestor->GetParent(); >-- MOZ_ASSERT(ancestor, "we can't have a display: contents subtree root!"); >-- } >-+ if (HasGeneratedContent(aChild)) { >-+ nsIContent* ancestor = aContainer; >-+ MOZ_ASSERT(ancestor, "display: contents on the root?"); >-+ while (!ancestor->GetPrimaryFrame()) { >-+ // FIXME(emilio): Should this use the flattened tree parent instead? >-+ ancestor = ancestor->GetParent(); >-+ MOZ_ASSERT(ancestor, "we can't have a display: contents subtree root!"); >-+ } >- >-- nsIFrame* ancestorFrame = ancestor->GetPrimaryFrame(); >-- if (ancestorFrame->GetProperty(nsIFrame::GenConProperty())) { >- *aDidReconstruct = true; >- LAYOUT_PHASE_TEMP_EXIT(); >- >-diff --git testing/web-platform/meta/MANIFEST.json testing/web-platform/meta/MANIFEST.json >-index 5f05321c5a70..8aed4a4b5078 100644 >---- testing/web-platform/meta/MANIFEST.json >-+++ testing/web-platform/meta/MANIFEST.json >-@@ -102975,6 +102975,18 @@ >- {} >- ] >- ], >-+ "css/css-display-3/display-contents-dynamic-generated-content-fieldset-001.html": [ >-+ [ >-+ "/css/css-display-3/display-contents-dynamic-generated-content-fieldset-001.html", >-+ [ >-+ [ >-+ "/css/css-display-3/display-contents-dynamic-generated-content-fieldset-001-ref.html", >-+ "==" >-+ ] >-+ ], >-+ {} >-+ ] >-+ ], >- "css/css-display-3/display-contents-dynamic-inline-flex-001-inline.html": [ >- [ >- "/css/css-display-3/display-contents-dynamic-inline-flex-001-inline.html", >-@@ -227658,6 +227670,11 @@ >- {} >- ] >- ], >-+ "css/css-display-3/display-contents-dynamic-generated-content-fieldset-001-ref.html": [ >-+ [ >-+ {} >-+ ] >-+ ], >- "css/css-display-3/display-contents-flex-001-ref.html": [ >- [ >- {} >-@@ -502880,6 +502897,14 @@ >- "a2d7c9368ed8c01ca06c36646666270e85aee070", >- "reftest" >- ], >-+ "css/css-display-3/display-contents-dynamic-generated-content-fieldset-001-ref.html": [ >-+ "30ec5c8ddacfbfef8434c37ca7a0a766f2bbc89a", >-+ "support" >-+ ], >-+ "css/css-display-3/display-contents-dynamic-generated-content-fieldset-001.html": [ >-+ "984bebb3c3b8661aedef4a229848dfa818bb1f4a", >-+ "reftest" >-+ ], >- "css/css-display-3/display-contents-dynamic-inline-flex-001-inline.html": [ >- "40fb07e8ada1530e6835ff2d4e49c5571ffb0baa", >- "reftest" >-diff --git testing/web-platform/meta/css/css-display-3/display-contents-dynamic-generated-content-fieldset-001.html.ini testing/web-platform/meta/css/css-display-3/display-contents-dynamic-generated-content-fieldset-001.html.ini >-new file mode 100644 >-index 000000000000..63c7442a2362 >---- /dev/null >-+++ testing/web-platform/meta/css/css-display-3/display-contents-dynamic-generated-content-fieldset-001.html.ini >-@@ -0,0 +1,4 @@ >-+[display-contents-dynamic-generated-content-fieldset-001.html] >-+ type: reftest >-+ expected: >-+ if not stylo: FAIL >-diff --git testing/web-platform/tests/css/css-display-3/display-contents-dynamic-generated-content-fieldset-001-ref.html testing/web-platform/tests/css/css-display-3/display-contents-dynamic-generated-content-fieldset-001-ref.html >-new file mode 100644 >-index 000000000000..651bc19b83e9 >---- /dev/null >-+++ testing/web-platform/tests/css/css-display-3/display-contents-dynamic-generated-content-fieldset-001-ref.html >-@@ -0,0 +1,16 @@ >-+<!doctype html> >-+<meta charset="utf-8"> >-+<title>CSS Reftest Reference</title> >-+<link rel="author" title="Emilio Cobos Ãlvarez" href="mailto:emilio@crisal.io"> >-+<style> >-+div { >-+ display: contents; >-+ border: 10px solid red; >-+} >-+</style> >-+<p> >-+ Test passes if there is no red text and no red border. >-+</p> >-+<fieldset> >-+ <div></div> >-+</fieldset> >-diff --git testing/web-platform/tests/css/css-display-3/display-contents-dynamic-generated-content-fieldset-001.html testing/web-platform/tests/css/css-display-3/display-contents-dynamic-generated-content-fieldset-001.html >-new file mode 100644 >-index 000000000000..8f8a0ba47971 >---- /dev/null >-+++ testing/web-platform/tests/css/css-display-3/display-contents-dynamic-generated-content-fieldset-001.html >-@@ -0,0 +1,26 @@ >-+<!doctype html> >-+<meta charset="utf-8"> >-+<title>CSS Test: Dynamic changes to display: contents generated content in fieldsets.</title> >-+<link rel="author" title="Emilio Cobos Ãlvarez" href="mailto:emilio@crisal.io"> >-+<link rel="help" href="https://drafts.csswg.org/css-display-3/#valdef-display-contents"> >-+<link rel="match" href="display-contents-dynamic-generated-content-fieldset-001-ref.html"> >-+<style> >-+.after::after { >-+ content: "FAIL"; >-+ color: red; >-+} >-+div { >-+ display: contents; >-+ border: 10px solid red; >-+} >-+</style> >-+<p> >-+ Test passes if there is no red text and no red border. >-+</p> >-+<fieldset> >-+ <div class="after"></div> >-+</fieldset> >-+<script> >-+document.body.offsetHeight; >-+document.querySelector("div").classList.remove("after"); >-+</script> >diff --git a/www/firefox/files/patch-bug1404324 b/www/firefox/files/patch-bug1404324 >deleted file mode 100644 >index afcbc3efb2ec..000000000000 >--- a/www/firefox/files/patch-bug1404324 >+++ /dev/null >@@ -1,299 +0,0 @@ >-commit 5647dde295f4 >-Author: Emilio Cobos Ãlvarez <emilio@crisal.io> >-Date: Wed Oct 4 11:36:20 2017 +0200 >- >- Bug 1404324 - Use the placeholder state to remove out-of-flows that aren't real descendants of the destruction root. r=bz, a=ritu >- >- Using the style of the frame can mess things up when we reparent them due to >- ::first-line before removing them. >- >- MozReview-Commit-ID: 3Dt0wF2XRAH >- >- --HG-- >- extra : source : 5a034cdb513208dd19adf0babf30ee734968a78f >- extra : histedit_source : 4cd958939c5a76e013695e931d721454268a0dc7%2C96bdeda302c567493c7db5105f306595d25332e1 >---- >- layout/base/nsCSSFrameConstructor.cpp | 8 +++--- >- layout/base/nsLayoutUtils.cpp | 46 +++------------------------------ >- layout/generic/nsPlaceholderFrame.cpp | 27 ++++++++++++++++--- >- layout/generic/nsPlaceholderFrame.h | 21 ++++++++------- >- layout/style/crashtests/1404324-1.html | 12 +++++++++ >- layout/style/crashtests/1404324-2.html | 10 +++++++ >- layout/style/crashtests/1404324-3.html | 14 ++++++++++ >- layout/style/crashtests/crashtests.list | 3 +++ >- 8 files changed, 83 insertions(+), 58 deletions(-) >- >-diff --git layout/base/nsCSSFrameConstructor.cpp layout/base/nsCSSFrameConstructor.cpp >-index c840416fd6a7..99b1211b399b 100644 >---- layout/base/nsCSSFrameConstructor.cpp >-+++ layout/base/nsCSSFrameConstructor.cpp >-@@ -1260,8 +1260,10 @@ nsFrameConstructorState::GetOutOfFlowFrameItems(nsIFrame* aNewFrame, >- if (disp->mTopLayer != NS_STYLE_TOP_LAYER_NONE) { >- *aPlaceholderType = PLACEHOLDER_FOR_TOPLAYER; >- if (disp->mPosition == NS_STYLE_POSITION_FIXED) { >-+ *aPlaceholderType |= PLACEHOLDER_FOR_FIXEDPOS; >- return &mTopLayerFixedItems; >- } >-+ *aPlaceholderType |= PLACEHOLDER_FOR_ABSPOS; >- return &mTopLayerAbsoluteItems; >- } >- if (disp->mPosition == NS_STYLE_POSITION_ABSOLUTE) { >-@@ -1303,11 +1305,11 @@ nsFrameConstructorState::ConstructBackdropFrameFor(nsIContent* aContent, >- nsAbsoluteItems* frameItems = GetOutOfFlowFrameItems(backdropFrame, >- true, true, false, >- &placeholderType); >-- MOZ_ASSERT(placeholderType == PLACEHOLDER_FOR_TOPLAYER); >-+ MOZ_ASSERT(placeholderType & PLACEHOLDER_FOR_TOPLAYER); >- >- nsIFrame* placeholder = nsCSSFrameConstructor:: >- CreatePlaceholderFrameFor(mPresShell, aContent, backdropFrame, >-- frame, nullptr, PLACEHOLDER_FOR_TOPLAYER); >-+ frame, nullptr, placeholderType); >- nsFrameList temp(placeholder, placeholder); >- frame->SetInitialChildList(nsIFrame::kBackdropList, temp); >- >-@@ -1361,7 +1363,7 @@ nsFrameConstructorState::AddChild(nsIFrame* aNewFrame, >- // Add the placeholder frame to the flow >- aFrameItems.AddChild(placeholderFrame); >- >-- if (placeholderType == PLACEHOLDER_FOR_TOPLAYER) { >-+ if (placeholderType & PLACEHOLDER_FOR_TOPLAYER) { >- ConstructBackdropFrameFor(aContent, aNewFrame); >- } >- } >-diff --git layout/base/nsLayoutUtils.cpp layout/base/nsLayoutUtils.cpp >-index cb010c0a1a80..94ead9830c25 100644 >---- layout/base/nsLayoutUtils.cpp >-+++ layout/base/nsLayoutUtils.cpp >-@@ -1525,6 +1525,8 @@ nsLayoutUtils::GetChildListNameFor(nsIFrame* aChildFrame) >- { >- nsIFrame::ChildListID id = nsIFrame::kPrincipalList; >- >-+ MOZ_DIAGNOSTIC_ASSERT(!(aChildFrame->GetStateBits() & NS_FRAME_OUT_OF_FLOW)); >-+ >- if (aChildFrame->GetStateBits() & NS_FRAME_IS_OVERFLOW_CONTAINER) { >- nsIFrame* pif = aChildFrame->GetPrevInFlow(); >- if (pif->GetParent() == aChildFrame->GetParent()) { >-@@ -1533,35 +1535,6 @@ nsLayoutUtils::GetChildListNameFor(nsIFrame* aChildFrame) >- else { >- id = nsIFrame::kOverflowContainersList; >- } >-- } >-- // See if the frame is moved out of the flow >-- else if (aChildFrame->GetStateBits() & NS_FRAME_OUT_OF_FLOW) { >-- // Look at the style information to tell >-- const nsStyleDisplay* disp = aChildFrame->StyleDisplay(); >-- >-- if (NS_STYLE_POSITION_ABSOLUTE == disp->mPosition) { >-- id = nsIFrame::kAbsoluteList; >-- } else if (NS_STYLE_POSITION_FIXED == disp->mPosition) { >-- if (nsLayoutUtils::IsReallyFixedPos(aChildFrame)) { >-- id = nsIFrame::kFixedList; >-- } else { >-- id = nsIFrame::kAbsoluteList; >-- } >--#ifdef MOZ_XUL >-- } else if (StyleDisplay::MozPopup == disp->mDisplay) { >-- // Out-of-flows that are DISPLAY_POPUP must be kids of the root popup set >--#ifdef DEBUG >-- nsIFrame* parent = aChildFrame->GetParent(); >-- NS_ASSERTION(parent && parent->IsPopupSetFrame(), "Unexpected parent"); >--#endif // DEBUG >-- >-- id = nsIFrame::kPopupList; >--#endif // MOZ_XUL >-- } else { >-- NS_ASSERTION(aChildFrame->IsFloating(), "not a floated frame"); >-- id = nsIFrame::kFloatList; >-- } >-- >- } else { >- LayoutFrameType childType = aChildFrame->Type(); >- if (LayoutFrameType::MenuPopup == childType) { >-@@ -1596,19 +1569,8 @@ nsLayoutUtils::GetChildListNameFor(nsIFrame* aChildFrame) >- nsContainerFrame* parent = aChildFrame->GetParent(); >- bool found = parent->GetChildList(id).ContainsFrame(aChildFrame); >- if (!found) { >-- if (!(aChildFrame->GetStateBits() & NS_FRAME_OUT_OF_FLOW)) { >-- found = parent->GetChildList(nsIFrame::kOverflowList) >-- .ContainsFrame(aChildFrame); >-- } >-- else if (aChildFrame->IsFloating()) { >-- found = parent->GetChildList(nsIFrame::kOverflowOutOfFlowList) >-- .ContainsFrame(aChildFrame); >-- if (!found) { >-- found = parent->GetChildList(nsIFrame::kPushedFloatsList) >-- .ContainsFrame(aChildFrame); >-- } >-- } >-- // else it's positioned and should have been on the 'id' child list. >-+ found = parent->GetChildList(nsIFrame::kOverflowList) >-+ .ContainsFrame(aChildFrame); >- NS_POSTCONDITION(found, "not in child list"); >- } >- #endif >-diff --git layout/generic/nsPlaceholderFrame.cpp layout/generic/nsPlaceholderFrame.cpp >-index 7da2582ae526..4b2e1bf84b36 100644 >---- layout/generic/nsPlaceholderFrame.cpp >-+++ layout/generic/nsPlaceholderFrame.cpp >-@@ -25,9 +25,9 @@ using namespace mozilla::gfx; >- >- nsIFrame* >- NS_NewPlaceholderFrame(nsIPresShell* aPresShell, nsStyleContext* aContext, >-- nsFrameState aTypeBit) >-+ nsFrameState aTypeBits) >- { >-- return new (aPresShell) nsPlaceholderFrame(aContext, aTypeBit); >-+ return new (aPresShell) nsPlaceholderFrame(aContext, aTypeBits); >- } >- >- NS_IMPL_FRAMEARENA_HELPERS(nsPlaceholderFrame) >-@@ -155,6 +155,26 @@ nsPlaceholderFrame::Reflow(nsPresContext* aPresContext, >- NS_FRAME_SET_TRUNCATION(aStatus, aReflowInput, aDesiredSize); >- } >- >-+static nsIFrame::ChildListID >-+ChildListIDForOutOfFlow(nsFrameState aPlaceholderState, nsIFrame* aChild) >-+{ >-+ if (aPlaceholderState & PLACEHOLDER_FOR_FLOAT) { >-+ return nsIFrame::kFloatList; >-+ } >-+ if (aPlaceholderState & PLACEHOLDER_FOR_POPUP) { >-+ return nsIFrame::kPopupList; >-+ } >-+ if (aPlaceholderState & PLACEHOLDER_FOR_FIXEDPOS) { >-+ return nsLayoutUtils::IsReallyFixedPos(aChild) >-+ ? nsIFrame::kFixedList : nsIFrame::kAbsoluteList; >-+ } >-+ if (aPlaceholderState & PLACEHOLDER_FOR_ABSPOS) { >-+ return nsIFrame::kAbsoluteList; >-+ } >-+ MOZ_DIAGNOSTIC_ASSERT(false, "unknown list"); >-+ return nsIFrame::kFloatList; >-+} >-+ >- void >- nsPlaceholderFrame::DestroyFrom(nsIFrame* aDestructRoot) >- { >-@@ -162,12 +182,13 @@ nsPlaceholderFrame::DestroyFrom(nsIFrame* aDestructRoot) >- if (oof) { >- mOutOfFlowFrame = nullptr; >- oof->DeleteProperty(nsIFrame::PlaceholderFrameProperty()); >-+ >- // If aDestructRoot is not an ancestor of the out-of-flow frame, >- // then call RemoveFrame on it here. >- // Also destroy it here if it's a popup frame. (Bug 96291) >- if ((GetStateBits() & PLACEHOLDER_FOR_POPUP) || >- !nsLayoutUtils::IsProperAncestorFrame(aDestructRoot, oof)) { >-- ChildListID listId = nsLayoutUtils::GetChildListNameFor(oof); >-+ ChildListID listId = ChildListIDForOutOfFlow(GetStateBits(), oof); >- nsFrameManager* fm = PresContext()->GetPresShell()->FrameManager(); >- fm->RemoveFrame(listId, oof); >- } >-diff --git layout/generic/nsPlaceholderFrame.h layout/generic/nsPlaceholderFrame.h >-index e270c76cdd31..2af9b4ccbc93 100644 >---- layout/generic/nsPlaceholderFrame.h >-+++ layout/generic/nsPlaceholderFrame.h >-@@ -40,7 +40,7 @@ >- >- nsIFrame* NS_NewPlaceholderFrame(nsIPresShell* aPresShell, >- nsStyleContext* aContext, >-- nsFrameState aTypeBit); >-+ nsFrameState aTypeBits); >- >- #define PLACEHOLDER_TYPE_MASK (PLACEHOLDER_FOR_FLOAT | \ >- PLACEHOLDER_FOR_ABSPOS | \ >-@@ -65,18 +65,19 @@ public: >- */ >- friend nsIFrame* NS_NewPlaceholderFrame(nsIPresShell* aPresShell, >- nsStyleContext* aContext, >-- nsFrameState aTypeBit); >-- nsPlaceholderFrame(nsStyleContext* aContext, nsFrameState aTypeBit) >-+ nsFrameState aTypeBits); >-+ nsPlaceholderFrame(nsStyleContext* aContext, nsFrameState aTypeBits) >- : nsFrame(aContext, kClassID) >- , mOutOfFlowFrame(nullptr) >- { >-- NS_PRECONDITION(aTypeBit == PLACEHOLDER_FOR_FLOAT || >-- aTypeBit == PLACEHOLDER_FOR_ABSPOS || >-- aTypeBit == PLACEHOLDER_FOR_FIXEDPOS || >-- aTypeBit == PLACEHOLDER_FOR_POPUP || >-- aTypeBit == PLACEHOLDER_FOR_TOPLAYER, >-- "Unexpected type bit"); >-- AddStateBits(aTypeBit); >-+ MOZ_ASSERT(aTypeBits == PLACEHOLDER_FOR_FLOAT || >-+ aTypeBits == PLACEHOLDER_FOR_ABSPOS || >-+ aTypeBits == PLACEHOLDER_FOR_FIXEDPOS || >-+ aTypeBits == PLACEHOLDER_FOR_POPUP || >-+ aTypeBits == (PLACEHOLDER_FOR_TOPLAYER | PLACEHOLDER_FOR_ABSPOS) || >-+ aTypeBits == (PLACEHOLDER_FOR_TOPLAYER | PLACEHOLDER_FOR_FIXEDPOS), >-+ "Unexpected type bit"); >-+ AddStateBits(aTypeBits); >- } >- >- // Get/Set the associated out of flow frame >-diff --git layout/style/crashtests/1404324-1.html layout/style/crashtests/1404324-1.html >-new file mode 100644 >-index 000000000000..574a5437cb1b >---- /dev/null >-+++ layout/style/crashtests/1404324-1.html >-@@ -0,0 +1,12 @@ >-+<style></style> >-+<script> >-+document.documentElement.className = 'c1' >-+o1 = document.createElement('form') >-+o2 = document.createElement('e') >-+o1.className = 'c2' >-+document.documentElement.appendChild(o1) >-+document.documentElement.appendChild(o2) >-+document.styleSheets[0].insertRule('.c1:first-line, .c2 { position:fixed', 0); >-+document.documentElement.getBoundingClientRect() >-+document.styleSheets[0].cssRules[0].style.position = 'relative' >-+</script> >-diff --git layout/style/crashtests/1404324-2.html layout/style/crashtests/1404324-2.html >-new file mode 100644 >-index 000000000000..797347d5c058 >---- /dev/null >-+++ layout/style/crashtests/1404324-2.html >-@@ -0,0 +1,10 @@ >-+<style> >-+ del, *::first-line { >-+ position: absolute; >-+ } >-+</style> >-+<del></del> >-+<script> >-+ document.documentElement.offsetTop; >-+ document.styleSheets[0].cssRules[0].style.position = 'sticky' >-+</script> >-diff --git layout/style/crashtests/1404324-3.html layout/style/crashtests/1404324-3.html >-new file mode 100644 >-index 000000000000..3b06f12a2bf6 >---- /dev/null >-+++ layout/style/crashtests/1404324-3.html >-@@ -0,0 +1,14 @@ >-+<style> >-+del { >-+ position: absolute; >-+} >-+ >-+body::first-line { >-+ color: red; >-+} >-+</style> >-+<del></del> >-+<script> >-+ document.documentElement.offsetTop; >-+ document.styleSheets[0].cssRules[0].style.position = 'sticky' >-+</script> >-diff --git layout/style/crashtests/crashtests.list layout/style/crashtests/crashtests.list >-index be9a46c52bfa..5eaba6935ee2 100644 >---- layout/style/crashtests/crashtests.list >-+++ layout/style/crashtests/crashtests.list >-@@ -238,3 +238,6 @@ load 1403615.html >- load 1387481-1.html >- load 1387499.html >- load 1391577.html >-+asserts-if(stylo,1) load 1404324-1.html # bug 1405605 >-+load 1404324-2.html >-+load 1404324-3.html >diff --git a/www/firefox/files/patch-bug1404636 b/www/firefox/files/patch-bug1404636 >deleted file mode 100644 >index 0fcf35bcb131..000000000000 >--- a/www/firefox/files/patch-bug1404636 >+++ /dev/null >@@ -1,111 +0,0 @@ >-commit 3eff0850dd67 >-Author: Jan de Mooij <jdemooij@mozilla.com> >-Date: Thu Oct 26 16:15:35 2017 +0200 >- >- Bug 1404636 - Special-case typed arrays in PropertyReadNeedsTypeBarrier. r=bhackett, a=lizzard >- >- --HG-- >- extra : source : 74d76655c9192b20dc69ddfa40c38e65fa9a47e3 >---- >- js/src/jit/IonBuilder.cpp | 26 -------------------------- >- js/src/jit/MIR.cpp | 8 ++++++++ >- js/src/jit/MIR.h | 23 +++++++++++++++++++++++ >- 3 files changed, 31 insertions(+), 26 deletions(-) >- >-diff --git js/src/jit/IonBuilder.cpp js/src/jit/IonBuilder.cpp >-index 0f78e9d5d3b7..f0ef380da2bc 100644 >---- js/src/jit/IonBuilder.cpp >-+++ js/src/jit/IonBuilder.cpp >-@@ -7825,9 +7825,6 @@ IonBuilder::getElemTryTypedObject(bool* emitted, MDefinition* obj, MDefinition* >- MOZ_CRASH("Bad kind"); >- } >- >--static MIRType >--MIRTypeForTypedArrayRead(Scalar::Type arrayType, bool observedDouble); >-- >- bool >- IonBuilder::checkTypedObjectIndexInBounds(uint32_t elemSize, >- MDefinition* obj, >-@@ -8793,29 +8790,6 @@ IonBuilder::convertShiftToMaskForStaticTypedArray(MDefinition* id, >- return ptr; >- } >- >--static MIRType >--MIRTypeForTypedArrayRead(Scalar::Type arrayType, bool observedDouble) >--{ >-- switch (arrayType) { >-- case Scalar::Int8: >-- case Scalar::Uint8: >-- case Scalar::Uint8Clamped: >-- case Scalar::Int16: >-- case Scalar::Uint16: >-- case Scalar::Int32: >-- return MIRType::Int32; >-- case Scalar::Uint32: >-- return observedDouble ? MIRType::Double : MIRType::Int32; >-- case Scalar::Float32: >-- return MIRType::Float32; >-- case Scalar::Float64: >-- return MIRType::Double; >-- default: >-- break; >-- } >-- MOZ_CRASH("Unknown typed array type"); >--} >-- >- AbortReasonOr<Ok> >- IonBuilder::jsop_getelem_typed(MDefinition* obj, MDefinition* index, >- Scalar::Type arrayType) >-diff --git js/src/jit/MIR.cpp js/src/jit/MIR.cpp >-index bac5948bfc21..ef286b7d546c 100644 >---- js/src/jit/MIR.cpp >-+++ js/src/jit/MIR.cpp >-@@ -6235,6 +6235,14 @@ PropertyReadNeedsTypeBarrier(CompilerConstraintList* constraints, >- return BarrierKind::TypeSet; >- } >- >-+ if (!name && IsTypedArrayClass(key->clasp())) { >-+ Scalar::Type arrayType = Scalar::Type(key->clasp() - &TypedArrayObject::classes[0]); >-+ MIRType type = MIRTypeForTypedArrayRead(arrayType, true); >-+ if (observed->mightBeMIRType(type)) >-+ return BarrierKind::NoBarrier; >-+ return BarrierKind::TypeSet; >-+ } >-+ >- jsid id = name ? NameToId(name) : JSID_VOID; >- HeapTypeSetKey property = key->property(id); >- if (property.maybeTypes()) { >-diff --git js/src/jit/MIR.h js/src/jit/MIR.h >-index d6d895b2caf2..16824b3f67ad 100644 >---- js/src/jit/MIR.h >-+++ js/src/jit/MIR.h >-@@ -15107,6 +15107,29 @@ ArrayPrototypeHasIndexedProperty(IonBuilder* builder, JSScript* script); >- AbortReasonOr<bool> >- TypeCanHaveExtraIndexedProperties(IonBuilder* builder, TemporaryTypeSet* types); >- >-+inline MIRType >-+MIRTypeForTypedArrayRead(Scalar::Type arrayType, bool observedDouble) >-+{ >-+ switch (arrayType) { >-+ case Scalar::Int8: >-+ case Scalar::Uint8: >-+ case Scalar::Uint8Clamped: >-+ case Scalar::Int16: >-+ case Scalar::Uint16: >-+ case Scalar::Int32: >-+ return MIRType::Int32; >-+ case Scalar::Uint32: >-+ return observedDouble ? MIRType::Double : MIRType::Int32; >-+ case Scalar::Float32: >-+ return MIRType::Float32; >-+ case Scalar::Float64: >-+ return MIRType::Double; >-+ default: >-+ break; >-+ } >-+ MOZ_CRASH("Unknown typed array type"); >-+} >-+ >- } // namespace jit >- } // namespace js >- >diff --git a/www/firefox/files/patch-bug1404910 b/www/firefox/files/patch-bug1404910 >deleted file mode 100644 >index 1157ce538381..000000000000 >--- a/www/firefox/files/patch-bug1404910 >+++ /dev/null >@@ -1,170 +0,0 @@ >-commit 2c8bf0ecbc5d >-Author: Andrea Marchesini <amarchesini@mozilla.com> >-Date: Wed Oct 4 14:18:19 2017 +0200 >- >- Bug 1404910 - WebSocket should consider the corrent top-level window principal. r=smaug, a=ritu >- >- --HG-- >- extra : source : c543c0a50db700883b57c052710c97b5ef731e1f >---- >- dom/base/WebSocket.cpp | 15 ++++--- >- dom/base/test/iframe_webSocket_sandbox.html | 65 +++++++++++++++++++++++++++++ >- dom/base/test/mochitest.ini | 3 ++ >- dom/base/test/test_webSocket_sandbox.html | 34 +++++++++++++++ >- 4 files changed, 109 insertions(+), 8 deletions(-) >- >-diff --git dom/base/WebSocket.cpp dom/base/WebSocket.cpp >-index dc2c1c70107b..982c67cd2abd 100644 >---- dom/base/WebSocket.cpp >-+++ dom/base/WebSocket.cpp >-@@ -1666,18 +1666,17 @@ WebSocketImpl::Init(JSContext* aCx, >- nsCOMPtr<nsPIDOMWindowInner> innerWindow; >- >- while (true) { >-- if (principal) { >-- bool isNullPrincipal = true; >-- isNullPrincipal = principal->GetIsNullPrincipal(); >-- if (isNullPrincipal || nsContentUtils::IsSystemPrincipal(principal)) { >-- break; >-- } >-+ if (principal && !principal->GetIsNullPrincipal()) { >-+ break; >- } >- >- if (!innerWindow) { >- innerWindow = do_QueryInterface(globalObject); >-- if (NS_WARN_IF(!innerWindow)) { >-- return NS_ERROR_DOM_SECURITY_ERR; >-+ if (!innerWindow) { >-+ // If we are in a XPConnect sandbox or in a JS component, >-+ // innerWindow will be null. There is nothing on top of this to be >-+ // considered. >-+ break; >- } >- } >- >-diff --git dom/base/test/iframe_webSocket_sandbox.html dom/base/test/iframe_webSocket_sandbox.html >-new file mode 100644 >-index 000000000000..d889a79b05da >---- /dev/null >-+++ dom/base/test/iframe_webSocket_sandbox.html >-@@ -0,0 +1,65 @@ >-+<html><body> >-+<iframe id="frame" sandbox="allow-scripts allow-popups"></iframe> >-+<script type="application/javascript;version=1.8"> >-+onmessage = function(e) { >-+ parent.postMessage(e.data, '*'); >-+} >-+ >-+var ifr = document.getElementById('frame'); >-+ >-+if (location.search == '?nested') { >-+ var url = new URL(location); >-+ url.search = ""; >-+ ifr.src = url.href; >-+} else if (location.search == '?popup') { >-+ var url = new URL(location); >-+ url.search = "?opener"; >-+ >-+ ifr.srcdoc = "<html><script>" + >-+ "window.open('" + url.href + "', 'foobar');" + >-+ "onmessage = function(e) { " + >-+ " parent.postMessage(e.data, '*'); " + >-+ "}" + >-+ "</scr" + "ipt></html>"; >-+} else if (location.search == '?opener') { >-+ try{ >-+ var socket = new WebSocket('ws://mochi.test:8888/tests/dom/base/test/file_websocket_basic'); >-+ socket.onerror = function(e) { >-+ opener.postMessage('WS onerror', '*'); >-+ close(); >-+ }; >-+ socket.onopen = function(event) { >-+ opener.postMessage('WS onopen', '*'); >-+ close(); >-+ }; >-+ } catch(e) { >-+ if (e.name == 'SecurityError') { >-+ opener.postMessage('WS Throws!', '*'); >-+ } else { >-+ opener.postMessage('WS Throws something else!', '*'); >-+ } >-+ close(); >-+ } >-+} else { >-+ ifr.srcdoc = ` >-+ <html><script> >-+ try{ >-+ var socket = new WebSocket('ws://mochi.test:8888/tests/dom/base/test/file_websocket_basic'); >-+ socket.onerror = function(e) { >-+ parent.postMessage('WS onerror', '*'); >-+ }; >-+ socket.onopen = function(event) { >-+ parent.postMessage('WS onopen', '*'); >-+ }; >-+ } catch(e) { >-+ if (e.name == 'SecurityError') { >-+ parent.postMessage('WS Throws!', '*'); >-+ } else { >-+ parent.postMessage('WS Throws something else!', '*'); >-+ } >-+ } >-+ </scr`+`ipt> >-+ </html>`; >-+} >-+</script> >-+</body></html> >-diff --git dom/base/test/mochitest.ini dom/base/test/mochitest.ini >-index 670dd5ae0a06..5d59fe1ea7b8 100644 >---- dom/base/test/mochitest.ini >-+++ dom/base/test/mochitest.ini >-@@ -804,6 +804,9 @@ skip-if = toolkit == 'android' >- skip-if = toolkit == 'android' >- [test_websocket_permessage_deflate.html] >- skip-if = toolkit == 'android' >-+[test_webSocket_sandbox.html] >-+skip-if = toolkit == 'android' >-+support-files = iframe_webSocket_sandbox.html >- [test_websocket1.html] >- skip-if = toolkit == 'android' >- [test_websocket2.html] >-diff --git dom/base/test/test_webSocket_sandbox.html dom/base/test/test_webSocket_sandbox.html >-new file mode 100644 >-index 000000000000..b343fa784f39 >---- /dev/null >-+++ dom/base/test/test_webSocket_sandbox.html >-@@ -0,0 +1,34 @@ >-+<!DOCTYPE HTML> >-+<html> >-+<head> >-+ <title>Bug 1252751</title> >-+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> >-+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> >-+</head> >-+<body> >-+<div id="container"></div> >-+<iframe id="frame"></iframe> >-+<script type="application/javascript;version=1.8"> >-+var urls = [ "https://example.com/tests/dom/base/test/iframe_webSocket_sandbox.html", >-+ "https://example.com/tests/dom/base/test/iframe_webSocket_sandbox.html?nested", >-+ "https://example.com/tests/dom/base/test/iframe_webSocket_sandbox.html?popup" ]; >-+ >-+onmessage = function(e) { >-+ is(e.data, "WS Throws!", "ws://URI cannot be used by a https iframe"); >-+ runTest(); >-+} >-+ >-+function runTest() { >-+ if (!urls.length) { >-+ SimpleTest.finish(); >-+ return; >-+ } >-+ >-+ document.getElementById("frame").src = urls.shift(); >-+} >-+ >-+SimpleTest.waitForExplicitFinish(); >-+runTest(); >-+</script> >-+</body> >-+</html> >diff --git a/www/firefox/files/patch-bug1406398 b/www/firefox/files/patch-bug1406398 >deleted file mode 100644 >index 356c2bde3746..000000000000 >--- a/www/firefox/files/patch-bug1406398 >+++ /dev/null >@@ -1,36 +0,0 @@ >-commit c79dd79bdb5c >-Author: André Bargull <andre.bargull@gmail.com> >-Date: Thu Oct 12 09:20:07 2017 -0700 >- >- Bug 1406398 - Avoid rooting the object twice in EnumerableOwnProperties. r=jandem, a=lizzard >- >- --HG-- >- extra : source : c2cecb6d6f9bb85f258a66cf8e94c1860adde7e5 >---- >- js/src/builtin/Object.cpp | 6 ++---- >- 1 file changed, 2 insertions(+), 4 deletions(-) >- >-diff --git js/src/builtin/Object.cpp js/src/builtin/Object.cpp >-index dff377a1cd97..ff4dd029cb52 100644 >---- js/src/builtin/Object.cpp >-+++ js/src/builtin/Object.cpp >-@@ -1246,9 +1246,6 @@ EnumerableOwnProperties(JSContext* cx, const JS::CallArgs& args, EnumerableOwnPr >- RootedId id(cx); >- RootedValue key(cx); >- RootedValue value(cx); >-- RootedNativeObject nobj(cx); >-- if (obj->is<NativeObject>()) >-- nobj = &obj->as<NativeObject>(); >- RootedShape shape(cx); >- Rooted<PropertyDescriptor> desc(cx); >- // Step 4. >-@@ -1265,7 +1262,8 @@ EnumerableOwnProperties(JSContext* cx, const JS::CallArgs& args, EnumerableOwnPr >- } >- >- // Step 4.a.i. >-- if (nobj) { >-+ if (obj->is<NativeObject>()) { >-+ HandleNativeObject nobj = obj.as<NativeObject>(); >- if (JSID_IS_INT(id) && nobj->containsDenseElement(JSID_TO_INT(id))) { >- value = nobj->getDenseOrTypedArrayElement(JSID_TO_INT(id)); >- } else { >diff --git a/www/firefox/files/patch-bug1406750 b/www/firefox/files/patch-bug1406750 >deleted file mode 100644 >index 0235d6d7c907..000000000000 >--- a/www/firefox/files/patch-bug1406750 >+++ /dev/null >@@ -1,47 +0,0 @@ >-commit f2e38d27a7e3 >-Author: Emilio Cobos Ãlvarez <emilio@crisal.io> >-Date: Tue Oct 24 17:44:12 2017 -0400 >- >- Bug 1406750 - Use GetStyleContextNoFlush in UpdateCurrentStyleSources, and avoid flushing mPresShell twice. r=bz, a=abillings >- >- MozReview-Commit-ID: Nfu9FZcIzQ >- >- --HG-- >- extra : source : c73db1c3b6e78a5fad216ca7cc7e4ce312c30a98 >- extra : amend_source : 9b31fa281368a9dc39a4a949cb85ae2f354a4308 >---- >- layout/style/nsComputedDOMStyle.cpp | 14 ++++++++++---- >- 1 file changed, 10 insertions(+), 4 deletions(-) >- >-diff --git layout/style/nsComputedDOMStyle.cpp layout/style/nsComputedDOMStyle.cpp >-index 062e00ffebc5..1aa07e691d4a 100644 >---- layout/style/nsComputedDOMStyle.cpp >-+++ layout/style/nsComputedDOMStyle.cpp >-@@ -832,6 +832,11 @@ nsComputedDOMStyle::UpdateCurrentStyleSources(bool aNeedsLayoutFlush) >- return; >- } >- >-+ nsCOMPtr<nsIPresShell> presShellForContent = GetPresShellForContent(mContent); >-+ if (presShellForContent && presShellForContent != mPresShell) { >-+ presShellForContent->FlushPendingNotifications(FlushType::Style); >-+ } >-+ >- // We need to use GetUndisplayedRestyleGeneration instead of >- // GetRestyleGeneration, because the caching of mStyleContext is an >- // optimization that is useful only for displayed elements. >-@@ -922,10 +927,11 @@ nsComputedDOMStyle::UpdateCurrentStyleSources(bool aNeedsLayoutFlush) >- #endif >- // Need to resolve a style context >- RefPtr<nsStyleContext> resolvedStyleContext = >-- nsComputedDOMStyle::GetStyleContext(mContent->AsElement(), >-- mPseudo, >-- mPresShell, >-- mStyleType); >-+ nsComputedDOMStyle::GetStyleContextNoFlush( >-+ mContent->AsElement(), >-+ mPseudo, >-+ presShellForContent ? presShellForContent.get() : mPresShell, >-+ mStyleType); >- if (!resolvedStyleContext) { >- ClearStyleContext(); >- return; >diff --git a/www/firefox/files/patch-bug1407375 b/www/firefox/files/patch-bug1407375 >deleted file mode 100644 >index 6768dc9bc072..000000000000 >--- a/www/firefox/files/patch-bug1407375 >+++ /dev/null >@@ -1,28 +0,0 @@ >-commit b2d46387afc9 >-Author: Boris Zbarsky <bzbarsky@mit.edu> >-Date: Wed Oct 11 22:19:06 2017 -0400 >- >- Bug 1407375 - Make sure to call NodeInfoChanged whenever we change the nodeinfo on a node. r=peterv, a=ritu >- >- MozReview-Commit-ID: 71k1jv8thFA >- >- --HG-- >- extra : source : 51ff2d13e50c1e8f7731e4c7243064bb96d2e4d0 >---- >- dom/base/nsNodeUtils.cpp | 3 +++ >- 1 file changed, 3 insertions(+) >- >-diff --git dom/base/nsNodeUtils.cpp dom/base/nsNodeUtils.cpp >-index 64ab9e852966..dd958aa443ce 100644 >---- dom/base/nsNodeUtils.cpp >-+++ dom/base/nsNodeUtils.cpp >-@@ -593,6 +593,9 @@ nsNodeUtils::CloneAndAdopt(nsINode *aNode, bool aClone, bool aDeep, >- aNode->OwnerDoc()->UnregisterActivityObserver(aNode->AsElement()); >- } >- aNode->mNodeInfo.swap(newNodeInfo); >-+ if (elem) { >-+ elem->NodeInfoChanged(newDoc); >-+ } >- if (wasRegistered) { >- aNode->OwnerDoc()->RegisterActivityObserver(aNode->AsElement()); >- } >diff --git a/www/firefox/files/patch-bug1407740 b/www/firefox/files/patch-bug1407740 >deleted file mode 100644 >index 11f575fa40e2..000000000000 >--- a/www/firefox/files/patch-bug1407740 >+++ /dev/null >@@ -1,26 +0,0 @@ >-commit a8fee72c6fc1 >-Author: Andrew McCreight <continuation@gmail.com> >-Date: Fri Oct 20 16:11:26 2017 -0400 >- >- Bug 1407740 - Fix a crash by setting a flag to true. r=bz, a=lizzard >- >- --HG-- >- extra : source : 23d3b458f69c56b0f3b2b8faa1453f79e32ce70c >---- >- docshell/base/nsDocShell.cpp | 3 +++ >- 1 file changed, 3 insertions(+) >- >-diff --git docshell/base/nsDocShell.cpp docshell/base/nsDocShell.cpp >-index 6748a2722e5a..f7dc1508a74d 100644 >---- docshell/base/nsDocShell.cpp >-+++ docshell/base/nsDocShell.cpp >-@@ -881,6 +881,9 @@ nsDocShell::~nsDocShell() >- { >- MOZ_ASSERT(!mObserved); >- >-+ // Avoid notifying observers while we're in the dtor. >-+ mIsBeingDestroyed = true; >-+ >- Destroy(); >- >- nsCOMPtr<nsISHistoryInternal> shPrivate(do_QueryInterface(mSessionHistory)); >diff --git a/www/firefox/files/patch-bug1407751 b/www/firefox/files/patch-bug1407751 >deleted file mode 100644 >index c2137f510e1d..000000000000 >--- a/www/firefox/files/patch-bug1407751 >+++ /dev/null >@@ -1,35 +0,0 @@ >-commit 390b56f13f00 >-Author: Andrea Marchesini <amarchesini@mozilla.com> >-Date: Fri Oct 13 07:11:40 2017 +0200 >- >- Bug 1407751 - DefineOSFileConstants should return false if OSFileConstants service is not initialized. r=froydnj, a=ritu >- >- --HG-- >- extra : source : 2f76e40db328035331dd6aa79d0e5fbf04db7c96 >---- >- dom/system/OSFileConstants.cpp | 5 ++--- >- 1 file changed, 2 insertions(+), 3 deletions(-) >- >-diff --git dom/system/OSFileConstants.cpp dom/system/OSFileConstants.cpp >-index edafe9f1c560..3cd77f6c3c12 100644 >---- dom/system/OSFileConstants.cpp >-+++ dom/system/OSFileConstants.cpp >-@@ -346,6 +346,7 @@ void CleanupOSFileConstants() >- >- gInitialized = false; >- delete gPaths; >-+ gPaths = nullptr; >- } >- >- >-@@ -874,9 +875,7 @@ bool SetStringProperty(JSContext *cx, JS::Handle<JSObject*> aObject, const char >- */ >- bool DefineOSFileConstants(JSContext *cx, JS::Handle<JSObject*> global) >- { >-- MOZ_ASSERT(gInitialized); >-- >-- if (gPaths == nullptr) { >-+ if (!gInitialized || gPaths == nullptr) { >- // If an initialization error was ignored, we may end up with >- // |gInitialized == true| but |gPaths == nullptr|. We cannot >- // |MOZ_ASSERT| this, as this would kill precompile_cache.js, >diff --git a/www/firefox/files/patch-bug1408005 b/www/firefox/files/patch-bug1408005 >deleted file mode 100644 >index fafa9861305d..000000000000 >--- a/www/firefox/files/patch-bug1408005 >+++ /dev/null >@@ -1,25 +0,0 @@ >-commit 988e61cc6282 >-Author: Andrew McCreight <continuation@gmail.com> >-Date: Mon Oct 23 10:18:42 2017 -0400 >- >- Bug 1408005 - Clear gApplicationReputationService in the dtor. r=francois, a=abillings >- >- --HG-- >- extra : source : 1613834d8d1145200886a039f733b1e066c63cbd >---- >- toolkit/components/downloads/ApplicationReputation.cpp | 2 ++ >- 1 file changed, 2 insertions(+) >- >-diff --git toolkit/components/downloads/ApplicationReputation.cpp toolkit/components/downloads/ApplicationReputation.cpp >-index b19841d8235d..18bc3b71728d 100644 >---- toolkit/components/downloads/ApplicationReputation.cpp >-+++ toolkit/components/downloads/ApplicationReputation.cpp >-@@ -1576,6 +1576,8 @@ ApplicationReputationService::ApplicationReputationService() >- >- ApplicationReputationService::~ApplicationReputationService() { >- LOG(("Application reputation service shutting down")); >-+ MOZ_ASSERT(gApplicationReputationService == this); >-+ gApplicationReputationService = nullptr; >- } >- >- NS_IMETHODIMP >diff --git a/www/firefox/files/patch-bug1408412 b/www/firefox/files/patch-bug1408412 >deleted file mode 100644 >index 52ced3d9ec0d..000000000000 >--- a/www/firefox/files/patch-bug1408412 >+++ /dev/null >@@ -1,37 +0,0 @@ >-commit 81f184512a09 >-Author: Jan de Mooij <jdemooij@mozilla.com> >-Date: Wed Oct 25 11:30:17 2017 +0200 >- >- Bug 1408412 - Use ARGS_LENGTH_MAX as upper bound in MArgumentsLength::computeRange. r=nbp, a=lizzard >- >- --HG-- >- extra : source : aaf54dce048a85806833529a5d53ecc46156ef47 >---- >- js/src/jit/RangeAnalysis.cpp | 7 ++++--- >- 1 file changed, 4 insertions(+), 3 deletions(-) >- >-diff --git js/src/jit/RangeAnalysis.cpp js/src/jit/RangeAnalysis.cpp >-index a3daefa848a7..19715ccc250a 100644 >---- js/src/jit/RangeAnalysis.cpp >-+++ js/src/jit/RangeAnalysis.cpp >-@@ -15,6 +15,7 @@ >- #include "jit/MIRGenerator.h" >- #include "jit/MIRGraph.h" >- #include "js/Conversions.h" >-+#include "vm/ArgumentsObject.h" >- #include "vm/TypedArrayObject.h" >- >- #include "jsopcodeinlines.h" >-@@ -1845,9 +1846,9 @@ MArgumentsLength::computeRange(TempAllocator& alloc) >- { >- // This is is a conservative upper bound on what |TooManyActualArguments| >- // checks. If exceeded, Ion will not be entered in the first place. >-- MOZ_ASSERT(JitOptions.maxStackArgs <= UINT32_MAX, >-- "NewUInt32Range requires a uint32 value"); >-- setRange(Range::NewUInt32Range(alloc, 0, JitOptions.maxStackArgs)); >-+ static_assert(ARGS_LENGTH_MAX <= UINT32_MAX, >-+ "NewUInt32Range requires a uint32 value"); >-+ setRange(Range::NewUInt32Range(alloc, 0, ARGS_LENGTH_MAX)); >- } >- >- void >diff --git a/www/firefox/files/patch-bug1408990 b/www/firefox/files/patch-bug1408990 >deleted file mode 100644 >index 9c089b728499..000000000000 >--- a/www/firefox/files/patch-bug1408990 >+++ /dev/null >@@ -1,34 +0,0 @@ >-commit 53a3958e0a76 >-Author: Valentin Gosu <valentin.gosu@gmail.com> >-Date: Sat Oct 28 00:15:01 2017 +0200 >- >- Bug 1408990 - Only add the entry to the performance object if the loading document's principal is the same as the triggering principal. r=bz, r=dragana, a=lizzard >- >- MozReview-Commit-ID: 7o8XKHioP1p >- >- --HG-- >- extra : rebase_source : 33d4044b4901cee460cc69a0bae1fe0e84dab2aa >- extra : source : ff9e841ff8544053f184d2e425500d5dd13ee14d >---- >- netwerk/protocol/http/HttpBaseChannel.cpp | 8 ++++++++ >- 1 file changed, 8 insertions(+) >- >-diff --git netwerk/protocol/http/HttpBaseChannel.cpp netwerk/protocol/http/HttpBaseChannel.cpp >-index 8a5c4d8d9f45..16e59241e2fc 100644 >---- netwerk/protocol/http/HttpBaseChannel.cpp >-+++ netwerk/protocol/http/HttpBaseChannel.cpp >-@@ -4088,6 +4088,14 @@ HttpBaseChannel::GetPerformance() >- return nullptr; >- } >- >-+ // We only add to the document's performance object if it has the same >-+ // principal as the one triggering the load. This is to prevent navigations >-+ // triggered _by_ the iframe from showing up in the parent document's >-+ // performance entries if they have different origins. >-+ if (!mLoadInfo->TriggeringPrincipal()->Equals(loadingDocument->NodePrincipal())) { >-+ return nullptr; >-+ } >-+ >- nsCOMPtr<nsPIDOMWindowInner> innerWindow = loadingDocument->GetInnerWindow(); >- if (!innerWindow) { >- return nullptr; >diff --git a/www/firefox/files/patch-bug1409680 b/www/firefox/files/patch-bug1409680 >deleted file mode 100644 >index 37c71ec234b2..000000000000 >--- a/www/firefox/files/patch-bug1409680 >+++ /dev/null >@@ -1,27 +0,0 @@ >-Bug 1409680 - Extend --disable-debug-symbols to Rust code. >- >-This reduces disk I/O and memory usage during build that already lacks >-debugging symbols from C++ code, allowing to use more jobs on 32bit hosts. >- >---disable-debug-symbols build on FreeBSD 10.3 i386 (8 cores) host: >-Max RSS before: libxul - 612 Mb, libgkrust - 1908 Mb >-Max RSS after: libxul - 444 Mb, libgkrust - 1471 Mb >-Binary before: libxul - 203 Mb, libgkrust - 732 Mb >-Binary after: libxul - 123 Mb, libgkrust - 301 Mb >- >---- config/rules.mk.orig 2017-09-14 20:15:53 UTC >-+++ config/rules.mk >-@@ -906,11 +906,13 @@ ifdef MOZ_USING_SCCACHE >- sccache_wrap := RUSTC_WRAPPER='$(CCACHE)' >- endif >- >-+ifdef MOZ_DEBUG_SYMBOLS >- # XXX hack to work around dsymutil failing on cross-OSX builds (bug 1380381) >- ifeq ($(HOST_OS_ARCH)-$(OS_ARCH),Linux-Darwin) >- default_rustflags += -C debuginfo=1 >- else >- default_rustflags += -C debuginfo=2 >-+endif >- endif >- >- # We use the + prefix to pass down the jobserver fds to cargo, but we >diff --git a/www/firefox/files/patch-bug1411458 b/www/firefox/files/patch-bug1411458 >deleted file mode 100644 >index 8caf1f602279..000000000000 >--- a/www/firefox/files/patch-bug1411458 >+++ /dev/null >@@ -1,44 +0,0 @@ >-commit da2637dd8a23 >-Author: David Keeler <dkeeler@mozilla.com> >-Date: Wed Oct 25 09:54:13 2017 -0700 >- >- Bug 1411458 - Confirm we actually have a PKCS#7 signedData content info. r=jcj, a=ritu >- >- MozReview-Commit-ID: GKfL1C0EPWt >- >- --HG-- >- extra : source : 22a772cfa62ae6908751b1cdd98a9234f2ea6105 >---- >- security/manager/ssl/nsDataSignatureVerifier.cpp | 6 ++++++ >- security/nss.symbols | 1 + >- 2 files changed, 7 insertions(+) >- >-diff --git security/manager/ssl/nsDataSignatureVerifier.cpp security/manager/ssl/nsDataSignatureVerifier.cpp >-index f78740365e1a..2527431dd9ae 100644 >---- security/manager/ssl/nsDataSignatureVerifier.cpp >-+++ security/manager/ssl/nsDataSignatureVerifier.cpp >-@@ -170,6 +170,12 @@ VerifyCMSDetachedSignatureIncludingCertificate( >- return NS_ERROR_CMS_VERIFY_NO_CONTENT_INFO; >- } >- >-+ // We're expecting this to be a PKCS#7 signedData content info. >-+ if (NSS_CMSContentInfo_GetContentTypeTag(cinfo) >-+ != SEC_OID_PKCS7_SIGNED_DATA) { >-+ return NS_ERROR_CMS_VERIFY_NO_CONTENT_INFO; >-+ } >-+ >- // signedData is non-owning >- NSSCMSSignedData* signedData = >- static_cast<NSSCMSSignedData*>(NSS_CMSContentInfo_GetContent(cinfo)); >-diff --git security/nss.symbols security/nss.symbols >-index 626fc64d96f9..517a577a8de4 100644 >---- security/nss.symbols >-+++ security/nss.symbols >-@@ -181,6 +181,7 @@ HASH_ResultLenByOidTag >- HASH_Update >- NSSBase64_EncodeItem_Util >- NSS_CMSContentInfo_GetContent >-+NSS_CMSContentInfo_GetContentTypeTag >- NSS_CMSContentInfo_SetContent_Data >- NSS_CMSContentInfo_SetContent_EnvelopedData >- NSS_CMSContentInfo_SetContent_SignedData >diff --git a/www/firefox/files/patch-bug1412252 b/www/firefox/files/patch-bug1412252 >deleted file mode 100644 >index 9e89513a47cc..000000000000 >--- a/www/firefox/files/patch-bug1412252 >+++ /dev/null >@@ -1,42 +0,0 @@ >-commit 4bb201af8ede >-Author: Emilio Cobos Ãlvarez <emilio@crisal.io> >-Date: Sun Oct 29 17:39:20 2017 -0400 >- >- Bug 1412252 - Only fetch mPresShell after flushing the relevant content pres shell. r=bz, a=ritu >- >- MozReview-Commit-ID: BkcYtu2MsNs >- >- --HG-- >- extra : rebase_source : aaf4e69af1cfb4e6becd491f3f4a6e4924cb307a >- extra : source : 044406030675adf7dfdb0317fca3852fa1ea3ff7 >---- >- layout/style/nsComputedDOMStyle.cpp | 10 +++++----- >- 1 file changed, 5 insertions(+), 5 deletions(-) >- >-diff --git layout/style/nsComputedDOMStyle.cpp layout/style/nsComputedDOMStyle.cpp >-index 1aa07e691d4a..1eb9fbebdc8d 100644 >---- layout/style/nsComputedDOMStyle.cpp >-+++ layout/style/nsComputedDOMStyle.cpp >-@@ -826,17 +826,17 @@ nsComputedDOMStyle::UpdateCurrentStyleSources(bool aNeedsLayoutFlush) >- mFlushedPendingReflows = aNeedsLayoutFlush; >- #endif >- >-+ nsCOMPtr<nsIPresShell> presShellForContent = GetPresShellForContent(mContent); >-+ if (presShellForContent && presShellForContent != document->GetShell()) { >-+ presShellForContent->FlushPendingNotifications(FlushType::Style); >-+ } >-+ >- mPresShell = document->GetShell(); >- if (!mPresShell || !mPresShell->GetPresContext()) { >- ClearStyleContext(); >- return; >- } >- >-- nsCOMPtr<nsIPresShell> presShellForContent = GetPresShellForContent(mContent); >-- if (presShellForContent && presShellForContent != mPresShell) { >-- presShellForContent->FlushPendingNotifications(FlushType::Style); >-- } >-- >- // We need to use GetUndisplayedRestyleGeneration instead of >- // GetRestyleGeneration, because the caching of mStyleContext is an >- // optimization that is useful only for displayed elements. >diff --git a/www/firefox/files/patch-bug847568 b/www/firefox/files/patch-bug847568 >index c2c40cc26b26..ed16b8d7caac 100644 >--- a/www/firefox/files/patch-bug847568 >+++ b/www/firefox/files/patch-bug847568 >@@ -261,7 +261,7 @@ index 9297e4d6f501..d8e273887e4b 100644 > +option('--with-system-harfbuzz', > + help="Use system harfbuzz (located with pkgconfig)") > + >-+system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.4.7', >++system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.5.1', > + when='--with-system-harfbuzz') > + > +set_config('MOZ_SYSTEM_HARFBUZZ', depends_if(system_harfbuzz)(lambda _: True)) >diff --git a/www/firefox/files/patch-build-pgo-profileserver.py b/www/firefox/files/patch-build-pgo-profileserver.py >index 31a3a0889c0a..aec54852f395 100644 >--- a/www/firefox/files/patch-build-pgo-profileserver.py >+++ b/www/firefox/files/patch-build-pgo-profileserver.py >@@ -1,11 +1,11 @@ >---- build/pgo/profileserver.py.orig 2011-02-24 21:49:47.000000000 +0100 >-+++ build/pgo/profileserver.py 2011-02-24 21:50:30.000000000 +0100 >-@@ -59,7 +59,7 @@ if __name__ == '__main__': >- env["MOZ_JAR_LOG_FILE"] = os.path.abspath(jarlog) >- print "jarlog: %s" % env["MOZ_JAR_LOG_FILE"] >+--- build/pgo/profileserver.py.orig 2017-09-15 04:15:39 UTC >++++ build/pgo/profileserver.py >+@@ -87,7 +87,7 @@ if __name__ == '__main__': >+ env["MOZ_JAR_LOG_FILE"] = os.path.abspath(jarlog) >+ print "jarlog: %s" % env["MOZ_JAR_LOG_FILE"] > >-- cmdargs = ["http://localhost:%d/index.html" % PORT] >-+ cmdargs = ["http://127.0.0.1:%d/index.html" % PORT] >- runner = FirefoxRunner(profile=profile, >- binary=build.get_binary_path(where="staged-package"), >- cmdargs=cmdargs, >+- cmdargs = ["http://localhost:%d/index.html" % PORT] >++ cmdargs = ["http://127.0.0.1:%d/index.html" % PORT] >+ runner = FirefoxRunner(profile=profile, >+ binary=build.get_binary_path( >+ where="staged-package"), >diff --git a/www/firefox/files/patch-servo17934 b/www/firefox/files/patch-servo17934 >deleted file mode 100644 >index c6e4193a1f6c..000000000000 >--- a/www/firefox/files/patch-servo17934 >+++ /dev/null >@@ -1,53 +0,0 @@ >-commit 4cbdfa028752 >-Author: Manish Goregaokar <manishsmail@gmail.com> >-Date: Tue Aug 1 12:57:42 2017 -0500 >- >- servo: Merge #17934 - Remove doc comment on statement (from Manishearth:doc-comment); r=canaltinova >- >- rustc warns about these now >- >- Source-Repo: https://github.com/servo/servo >- Source-Revision: b49311c65a083a9b8eb03741bf7ea980b64f1e03 >- >- --HG-- >- extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear >- extra : subtree_revision : 6b3c7d7f4ffeb9e271c52d418cda42cac5dd378d >---- >- servo/components/style/values/specified/image.rs | 6 +++--- >- 1 file changed, 3 insertions(+), 3 deletions(-) >- >-diff --git servo/components/style/values/specified/image.rs servo/components/style/values/specified/image.rs >-index 37ed00ccf443..687c6f17d432 100644 >---- servo/components/style/values/specified/image.rs >-+++ servo/components/style/values/specified/image.rs >-@@ -686,14 +686,14 @@ impl LineDirection { >- input.try(|i| { >- let to_ident = i.try(|i| i.expect_ident_matching("to")); >- match *compat_mode { >-- /// `to` keyword is mandatory in modern syntax. >-+ // `to` keyword is mandatory in modern syntax. >- CompatMode::Modern => to_ident?, >- // Fall back to Modern compatibility mode in case there is a `to` keyword. >- // According to Gecko, `-moz-linear-gradient(to ...)` should serialize like >- // `linear-gradient(to ...)`. >- CompatMode::Moz if to_ident.is_ok() => *compat_mode = CompatMode::Modern, >-- /// There is no `to` keyword in webkit prefixed syntax. If it's consumed, >-- /// parsing should throw an error. >-+ // There is no `to` keyword in webkit prefixed syntax. If it's consumed, >-+ // parsing should throw an error. >- CompatMode::WebKit if to_ident.is_ok() => { >- return Err(SelectorParseError::UnexpectedIdent("to".into()).into()) >- }, >-diff --git servo/components/style/properties/gecko.mako.rs servo/components/style/properties/gecko.mako.rs >-index 37ed00ccf443..687c6f17d432 100644 >---- servo/components/style/properties/gecko.mako.rs >-+++ servo/components/style/properties/gecko.mako.rs >-@@ -2081,7 +2081,7 @@ fn static_assert() { >- return (parent_size, parent_unconstrained_size) >- } >- >-- /// XXXManishearth this should also handle text zoom >-+ // XXXManishearth this should also handle text zoom >- let min = Au(parent.gecko.mScriptMinSize); >- >- let scale = (parent.gecko.mScriptSizeMultiplier as f32).powi(delta as i32); >diff --git a/www/firefox/files/patch-servo17969 b/www/firefox/files/patch-servo17969 >deleted file mode 100644 >index ca16754b987f..000000000000 >--- a/www/firefox/files/patch-servo17969 >+++ /dev/null >@@ -1,110 +0,0 @@ >-commit 9f5c1f2e4b5b >-Author: Manish Goregaokar <manishsmail@gmail.com> >-Date: Thu Aug 3 16:27:12 2017 -0500 >- >- servo: Merge #17969 - Update stylo code to work on nightly (from Manishearth:rustup); r=emilio >- >- r=emilio https://bugzilla.mozilla.org/show_bug.cgi?id=1386887 >- >- Source-Repo: https://github.com/servo/servo >- Source-Revision: 7cee7d7fcc4194e410fa8a308a77d37ac452778a >- >- --HG-- >- extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear >- extra : subtree_revision : d9c874ebcfa1e64c86265d0ed2e5cff65d9133be >---- >- servo/components/style/gecko/generated/bindings.rs | 12 +++++++++--- >- servo/components/style/gecko/wrapper.rs | 7 ++++++- >- servo/ports/geckolib/glue.rs | 3 ++- >- 3 files changed, 17 insertions(+), 5 deletions(-) >- >-diff --git servo/components/style/gecko/generated/bindings.rs servo/components/style/gecko/generated/bindings.rs >-index e46bdfe1e1ea..b6703ab95bf7 100644 >---- servo/components/style/gecko/generated/bindings.rs >-+++ servo/components/style/gecko/generated/bindings.rs >-@@ -8,6 +8,7 @@ type nsAString_internal = nsAString; >- pub type ServoStyleContextBorrowed<'a> = &'a ::properties::ComputedValues; >- pub type ServoStyleContextBorrowedOrNull<'a> = Option<&'a ::properties::ComputedValues>; >- pub type ServoComputedDataBorrowed<'a> = &'a ServoComputedData; >-+pub type RawServoAnimationValueTableBorrowed<'a> = &'a (); >- use gecko_bindings::structs::mozilla::css::GridTemplateAreasValue; >- use gecko_bindings::structs::mozilla::css::ErrorReporter; >- use gecko_bindings::structs::mozilla::css::ImageValue; >-@@ -37,7 +38,7 @@ use gecko_bindings::structs::RawServoStyleRule; >- use gecko_bindings::structs::RawGeckoPresContext; >- use gecko_bindings::structs::RawGeckoPresContextOwned; >- use gecko_bindings::structs::RawGeckoStyleAnimationList; >--use gecko_bindings::structs::RawGeckoStyleChildrenIteratorBorrowedMut; >-+use gecko_bindings::structs::RawGeckoStyleChildrenIterator; >- use gecko_bindings::structs::RawGeckoServoStyleRuleList; >- use gecko_bindings::structs::RawGeckoURLExtraData; >- use gecko_bindings::structs::RawGeckoXBLBinding; >-@@ -320,6 +321,10 @@ pub type RawGeckoServoAnimationValueListBorrowed<'a> = &'a RawGeckoServoAnimatio >- pub type RawGeckoServoAnimationValueListBorrowedOrNull<'a> = Option<&'a RawGeckoServoAnimationValueList>; >- pub type RawGeckoServoAnimationValueListBorrowedMut<'a> = &'a mut RawGeckoServoAnimationValueList; >- pub type RawGeckoServoAnimationValueListBorrowedMutOrNull<'a> = Option<&'a mut RawGeckoServoAnimationValueList>; >-+pub type RawGeckoStyleChildrenIteratorBorrowed<'a> = &'a RawGeckoStyleChildrenIterator; >-+pub type RawGeckoStyleChildrenIteratorBorrowedOrNull<'a> = Option<&'a RawGeckoStyleChildrenIterator>; >-+pub type RawGeckoStyleChildrenIteratorBorrowedMut<'a> = &'a mut RawGeckoStyleChildrenIterator; >-+pub type RawGeckoStyleChildrenIteratorBorrowedMutOrNull<'a> = Option<&'a mut RawGeckoStyleChildrenIterator>; >- pub type ServoCssRulesStrong = ::gecko_bindings::sugar::ownership::Strong<ServoCssRules>; >- pub type ServoCssRulesBorrowed<'a> = &'a ServoCssRules; >- pub type ServoCssRulesBorrowedOrNull<'a> = Option<&'a ServoCssRules>; >-@@ -840,7 +845,7 @@ extern "C" { >- } >- extern "C" { >- pub fn Gecko_AnimationGetBaseStyle(aBaseStyles: >-- *mut ::std::os::raw::c_void, >-+ RawServoAnimationValueTableBorrowed, >- aProperty: nsCSSPropertyID) >- -> RawServoAnimationValueBorrowedOrNull; >- } >-@@ -2602,7 +2607,8 @@ extern "C" { >- extern "C" { >- pub fn Servo_AnimationCompose(animation_values: >- RawServoAnimationValueMapBorrowedMut, >-- base_values: *mut ::std::os::raw::c_void, >-+ base_values: >-+ RawServoAnimationValueTableBorrowed, >- property: nsCSSPropertyID, >- animation_segment: >- RawGeckoAnimationPropertySegmentBorrowed, >-diff --git servo/components/style/gecko/wrapper.rs servo/components/style/gecko/wrapper.rs >-index dae898692313..6d62f54951cc 100644 >---- servo/components/style/gecko/wrapper.rs >-+++ servo/components/style/gecko/wrapper.rs >-@@ -387,7 +387,12 @@ impl<'a> Iterator for GeckoChildrenIterator<'a> { >- curr >- }, >- GeckoChildrenIterator::GeckoIterator(ref mut it) => unsafe { >-- Gecko_GetNextStyleChild(it).map(GeckoNode) >-+ // We do this unsafe lengthening of the lifetime here because >-+ // structs::StyleChildrenIterator is actually StyleChildrenIterator<'a>, >-+ // however we can't express this easily with bindgen, and it would >-+ // introduce functions with two input lifetimes into bindgen, >-+ // which would be out of scope for elision. >-+ Gecko_GetNextStyleChild(&mut * (it as *mut _)).map(GeckoNode) >- } >- } >- } >-diff --git servo/ports/geckolib/glue.rs servo/ports/geckolib/glue.rs >-index 367d24ff87b2..e69959f3710b 100644 >---- servo/ports/geckolib/glue.rs >-+++ servo/ports/geckolib/glue.rs >-@@ -59,6 +59,7 @@ use style::gecko_bindings::bindings::RawGeckoServoStyleRuleListBorrowedMut; >- use style::gecko_bindings::bindings::RawServoAnimationValueBorrowed; >- use style::gecko_bindings::bindings::RawServoAnimationValueMapBorrowedMut; >- use style::gecko_bindings::bindings::RawServoAnimationValueStrong; >-+use style::gecko_bindings::bindings::RawServoAnimationValueTableBorrowed; >- use style::gecko_bindings::bindings::RawServoStyleRuleBorrowed; >- use style::gecko_bindings::bindings::ServoStyleContextBorrowedOrNull; >- use style::gecko_bindings::bindings::nsTArrayBorrowed_uintptr_t; >-@@ -374,7 +375,7 @@ pub extern "C" fn Servo_AnimationValues_ComputeDistance(from: RawServoAnimationV >- >- #[no_mangle] >- pub extern "C" fn Servo_AnimationCompose(raw_value_map: RawServoAnimationValueMapBorrowedMut, >-- base_values: *mut ::std::os::raw::c_void, >-+ base_values: RawServoAnimationValueTableBorrowed, >- css_property: nsCSSPropertyID, >- segment: RawGeckoAnimationPropertySegmentBorrowed, >- last_segment: RawGeckoAnimationPropertySegmentBorrowed, >diff --git a/www/firefox/files/patch-servo18046 b/www/firefox/files/patch-servo18046 >deleted file mode 100644 >index 574e91f8831f..000000000000 >--- a/www/firefox/files/patch-servo18046 >+++ /dev/null >@@ -1,763 +0,0 @@ >-commit ea9c8db790e4 >-Author: Simon Sapin <simon.sapin@exyr.org> >-Date: Tue Aug 15 07:31:04 2017 -0500 >- >- servo: Merge #18046 - Upgrade to rustc 1.21.0-nightly (13d94d5fa 2017-08-10) (from servo:rustup); r=emilio >- >- Source-Repo: https://github.com/servo/servo >- Source-Revision: 7d9b82b9efa7b10a2e34d93df5ac535d99518f7a >- >- --HG-- >- extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear >- extra : subtree_revision : e1b3d113c3edaea3c4c07f8b206f2e02922e3caf >---- >- servo/Cargo.lock | 6 +++--- >- servo/components/devtools/lib.rs | 2 +- >- servo/components/layout/animation.rs | 2 +- >- servo/components/layout/construct.rs | 6 +++--- >- servo/components/layout/display_list_builder.rs | 2 +- >- servo/components/layout/flex.rs | 6 +++--- >- servo/components/layout/inline.rs | 4 ++-- >- servo/components/layout/sequential.rs | 2 +- >- servo/components/layout/table_cell.rs | 2 +- >- servo/components/layout/text.rs | 2 +- >- servo/components/net/cookie_storage.rs | 2 +- >- servo/components/profile/heartbeats.rs | 4 ++-- >- servo/components/script/dom/bindings/js.rs | 4 ++-- >- servo/components/script/dom/cssstyledeclaration.rs | 8 ++++---- >- servo/components/script/dom/cssstylerule.rs | 2 +- >- servo/components/script/dom/document.rs | 12 ++++++------ >- servo/components/script/dom/medialist.rs | 4 ++-- >- servo/components/script/dom/range.rs | 4 ++-- >- .../script/dom/servoparser/async_html.rs | 4 ++-- >- servo/components/script/dom/url.rs | 4 ++-- >- servo/components/script/dom/vrdisplay.rs | 2 +- >- .../components/script/dom/webglrenderingcontext.rs | 2 +- >- servo/components/script/dom/xmlhttprequest.rs | 2 +- >- servo/components/script/lib.rs | 1 - >- .../script_plugins/unrooted_must_root.rs | 22 +++++++++++++++------- >- servo/components/selectors/matching.rs | 2 +- >- servo/components/selectors/parser.rs | 2 +- >- .../style/invalidation/element/invalidator.rs | 2 +- >- servo/components/style/matching.rs | 2 +- >- .../components/style/properties/properties.mako.rs | 2 +- >- servo/components/style/style_adjuster.rs | 2 +- >- servo/components/style/style_resolver.rs | 2 +- >- servo/components/style/stylesheets/rule_list.rs | 2 +- >- servo/components/style/stylesheets/rule_parser.rs | 2 +- >- .../components/style/stylesheets/rules_iterator.rs | 2 +- >- servo/components/style/values/animated/color.rs | 2 +- >- servo/components/style/values/computed/border.rs | 2 +- >- servo/components/webdriver_server/lib.rs | 2 +- >- servo/rust-commit-hash | 2 +- >- servo/tests/unit/style/stylist.rs | 13 ------------- >- 40 files changed, 73 insertions(+), 79 deletions(-) >- >-diff --git servo/Cargo.lock servo/Cargo.lock >-index 50dd6e1a785a..2aa7bd8ea3dd 100644 >---- servo/Cargo.lock >-+++ servo/Cargo.lock >-@@ -3577,7 +3577,7 @@ version = "0.1.4" >- source = "registry+https://github.com/rust-lang/crates.io-index" >- dependencies = [ >- "error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", >-- "xcb 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", >-+ "xcb 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)", >- ] >- >- [[package]] >-@@ -3592,7 +3592,7 @@ dependencies = [ >- >- [[package]] >- name = "xcb" >--version = "0.7.6" >-+version = "0.7.7" >- source = "registry+https://github.com/rust-lang/crates.io-index" >- dependencies = [ >- "libc 0.2.23 (registry+https://github.com/rust-lang/crates.io-index)", >-@@ -3918,7 +3918,7 @@ dependencies = [ >- "checksum x11 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db27c597c187da52194a4b8232e7d869503911aab9ff726fefb76d7a830f78ed" >- "checksum x11-clipboard 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "731230b8edcbb9d99247105e4c9ec0a538594d50ad68d2afa8662195f9db2973" >- "checksum x11-dl 2.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "326c500cdc166fd7c70dd8c8a829cd5c0ce7be5a5d98c25817de2b9bdc67faf8" >--"checksum xcb 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "63e3a849b73e4e1905e4f4d48f1750429bc86ea9f473632ab382a6f69ecb6b33" >-+"checksum xcb 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)" = "7cede38417fcdf2f0a9d8abf1cea1c1b066320a8a316e9583a0d717c334fafb2" >- "checksum xdg 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a66b7c2281ebde13cf4391d70d4c7e5946c3c25e72a7b859ca8f677dcd0b0c61" >- "checksum xi-unicode 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "12ea8eda4b1eb72f02d148402e23832d56a33f55d8c1b2d5bcdde91d79d47cb1" >- "checksum xml-rs 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7ec6c39eaa68382c8e31e35239402c0a9489d4141a8ceb0c716099a0b515b562" >-diff --git servo/components/devtools/lib.rs servo/components/devtools/lib.rs >-index d5a2764a7102..6a25696eaed7 100644 >---- servo/components/devtools/lib.rs >-+++ servo/components/devtools/lib.rs >-@@ -306,7 +306,7 @@ fn run_server(sender: Sender<DevtoolsControlMsg>, >- columnNumber: console_message.columnNumber, >- }, >- }; >-- for mut stream in &mut *console_actor.streams.borrow_mut() { >-+ for stream in &mut *console_actor.streams.borrow_mut() { >- stream.write_json_packet(&msg); >- } >- } >-diff --git servo/components/layout/animation.rs servo/components/layout/animation.rs >-index e4a2782c1271..ebbba82fcc6a 100644 >---- servo/components/layout/animation.rs >-+++ servo/components/layout/animation.rs >-@@ -39,7 +39,7 @@ pub fn update_animation_state(constellation_chan: &IpcSender<ConstellationMsg>, >- // run. >- if let Some(ref mut animations) = running_animations.get_mut(node) { >- // TODO: This being linear is probably not optimal. >-- for mut anim in animations.iter_mut() { >-+ for anim in animations.iter_mut() { >- if let Animation::Keyframes(_, ref anim_name, ref mut anim_state) = *anim { >- if *name == *anim_name { >- debug!("update_animation_state: Found other animation {}", name); >-diff --git servo/components/layout/construct.rs servo/components/layout/construct.rs >-index c863219941e4..7ef391b42183 100644 >---- servo/components/layout/construct.rs >-+++ servo/components/layout/construct.rs >-@@ -1921,7 +1921,7 @@ impl Legalizer { >- /// true for anonymous block children of flex flows. >- fn try_to_add_child(&mut self, context: &SharedStyleContext, parent: &mut FlowRef, child: &mut FlowRef) >- -> bool { >-- let mut parent = self.stack.last_mut().unwrap_or(parent); >-+ let parent = self.stack.last_mut().unwrap_or(parent); >- let (parent_class, child_class) = (parent.class(), child.class()); >- match (parent_class, child_class) { >- (FlowClass::TableWrapper, FlowClass::Table) | >-@@ -1962,7 +1962,7 @@ impl Legalizer { >- } else { >- IS_BLOCK_FLEX_ITEM >- }; >-- let mut block = FlowRef::deref_mut(&mut block_wrapper).as_mut_block(); >-+ let block = FlowRef::deref_mut(&mut block_wrapper).as_mut_block(); >- block.base.flags.insert(MARGINS_CANNOT_COLLAPSE); >- block.fragment.flags.insert(flag); >- } >-@@ -1979,7 +1979,7 @@ impl Legalizer { >- } else { >- IS_BLOCK_FLEX_ITEM >- }; >-- let mut block = FlowRef::deref_mut(child).as_mut_block(); >-+ let block = FlowRef::deref_mut(child).as_mut_block(); >- block.base.flags.insert(MARGINS_CANNOT_COLLAPSE); >- block.fragment.flags.insert(flag); >- } >-diff --git servo/components/layout/display_list_builder.rs servo/components/layout/display_list_builder.rs >-index f8b26899b57d..783574afd2a3 100644 >---- servo/components/layout/display_list_builder.rs >-+++ servo/components/layout/display_list_builder.rs >-@@ -2718,7 +2718,7 @@ impl InlineFlowDisplayListBuilding for InlineFlow { >- self.base.scroll_root_id = Some(state.current_scroll_root_id); >- self.base.clip = state.clip_stack.last().cloned().unwrap_or_else(max_rect); >- >-- for mut fragment in self.fragments.fragments.iter_mut() { >-+ for fragment in self.fragments.fragments.iter_mut() { >- let previous_containing_block_scroll_root_id = state.containing_block_scroll_root_id; >- if establishes_containing_block_for_absolute(fragment.style.get_box().position) { >- state.containing_block_scroll_root_id = state.current_scroll_root_id; >-diff --git servo/components/layout/flex.rs servo/components/layout/flex.rs >-index 353c939f58b9..d79580f8cd0d 100644 >---- servo/components/layout/flex.rs >-+++ servo/components/layout/flex.rs >-@@ -415,7 +415,7 @@ impl FlexFlow { >- >- let items = &mut self.items[start..]; >- let mut children = self.block_flow.base.children.random_access_mut(); >-- for mut item in items { >-+ for item in items { >- let kid = children.get(item.index); >- item.init_sizes(kid, container_size, self.main_mode); >- let outer_main_size = item.outer_main_size(kid, self.main_mode); >-@@ -607,7 +607,7 @@ impl FlexFlow { >- >- let mut children = self.block_flow.base.children.random_access_mut(); >- for item in items.iter_mut() { >-- let mut block = children.get(item.index).as_mut_block(); >-+ let block = children.get(item.index).as_mut_block(); >- >- block.base.block_container_writing_mode = container_mode; >- block.base.block_container_inline_size = inline_size; >-@@ -659,7 +659,7 @@ impl FlexFlow { >- >- let mut children = self.block_flow.base.children.random_access_mut(); >- for item in &mut self.items { >-- let mut base = flow::mut_base(children.get(item.index)); >-+ let base = flow::mut_base(children.get(item.index)); >- if !self.main_reverse { >- base.position.start.b = cur_b; >- cur_b = cur_b + base.position.size.block; >-diff --git servo/components/layout/inline.rs servo/components/layout/inline.rs >-index d5813d9bea22..10e091c3c66d 100644 >---- servo/components/layout/inline.rs >-+++ servo/components/layout/inline.rs >-@@ -435,7 +435,7 @@ impl LineBreaker { >- return >- } >- let last_fragment_index = self.pending_line.range.end() - FragmentIndex(1); >-- let mut fragment = &mut self.new_fragments[last_fragment_index.get() as usize]; >-+ let fragment = &mut self.new_fragments[last_fragment_index.get() as usize]; >- >- let old_fragment_inline_size = fragment.border_box.size.inline; >- >-@@ -1047,7 +1047,7 @@ impl InlineFlow { >- let space_per_expansion_opportunity = slack_inline_size / expansion_opportunities as i32; >- for fragment_index in line.range.each_index() { >- let fragment = fragments.get_mut(fragment_index.to_usize()); >-- let mut scanned_text_fragment_info = match fragment.specific { >-+ let scanned_text_fragment_info = match fragment.specific { >- SpecificFragmentInfo::ScannedText(ref mut info) if !info.range.is_empty() => info, >- _ => continue >- }; >-diff --git servo/components/layout/sequential.rs servo/components/layout/sequential.rs >-index f6f8ce429e4f..4986ebb6c852 100644 >---- servo/components/layout/sequential.rs >-+++ servo/components/layout/sequential.rs >-@@ -133,7 +133,7 @@ pub fn store_overflow(layout_context: &LayoutContext, flow: &mut Flow) { >- return; >- } >- >-- for mut kid in flow::mut_base(flow).child_iter_mut() { >-+ for kid in flow::mut_base(flow).child_iter_mut() { >- store_overflow(layout_context, kid); >- } >- >-diff --git servo/components/layout/table_cell.rs servo/components/layout/table_cell.rs >-index 7ef02e28db65..fd807989b463 100644 >---- servo/components/layout/table_cell.rs >-+++ servo/components/layout/table_cell.rs >-@@ -136,7 +136,7 @@ impl TableCellFlow { >- } >- >- for kid in flow::mut_base(self).children.iter_mut() { >-- let mut kid_base = flow::mut_base(kid); >-+ let kid_base = flow::mut_base(kid); >- if !kid_base.flags.contains(IS_ABSOLUTELY_POSITIONED) { >- kid_base.position.start.b += offset >- } >-diff --git servo/components/layout/text.rs servo/components/layout/text.rs >-index 6e1c7b2a43a1..9a207a2bb84e 100644 >---- servo/components/layout/text.rs >-+++ servo/components/layout/text.rs >-@@ -460,7 +460,7 @@ fn split_first_fragment_at_newline_if_necessary(fragments: &mut LinkedList<Fragm >- } >- >- let new_fragment = { >-- let mut first_fragment = fragments.front_mut().unwrap(); >-+ let first_fragment = fragments.front_mut().unwrap(); >- let string_before; >- let selection_before; >- { >-diff --git servo/components/net/cookie_storage.rs servo/components/net/cookie_storage.rs >-index f255f57b56d2..b3147ef4dd32 100644 >---- servo/components/net/cookie_storage.rs >-+++ servo/components/net/cookie_storage.rs >-@@ -103,7 +103,7 @@ impl CookieStorage { >- >- // Step 12 >- let domain = reg_host(&cookie.cookie.domain().as_ref().unwrap_or(&"")); >-- let mut cookies = self.cookies_map.entry(domain).or_insert(vec![]); >-+ let cookies = self.cookies_map.entry(domain).or_insert(vec![]); >- >- if cookies.len() == self.max_per_host { >- let old_len = cookies.len(); >-diff --git servo/components/profile/heartbeats.rs servo/components/profile/heartbeats.rs >-index 4661dad61836..0d474fe3a111 100644 >---- servo/components/profile/heartbeats.rs >-+++ servo/components/profile/heartbeats.rs >-@@ -33,7 +33,7 @@ pub fn cleanup() { >- ) >- ); >- if let Some(mut hbs) = hbs_opt_box { >-- for (_, mut v) in hbs.iter_mut() { >-+ for (_, v) in hbs.iter_mut() { >- // log any remaining heartbeat records before dropping >- log_heartbeat_records(v); >- } >-@@ -65,7 +65,7 @@ pub fn maybe_heartbeat(category: &ProfilerCategory, >- if !(*hbs_ptr).contains_key(category) { >- maybe_create_heartbeat(&mut (*hbs_ptr), category.clone()); >- } >-- if let Some(mut h) = (*hbs_ptr).get_mut(category) { >-+ if let Some(h) = (*hbs_ptr).get_mut(category) { >- (*h).heartbeat(0, 1, start_time, end_time, start_energy, end_energy); >- } >- } >-diff --git servo/components/script/dom/bindings/js.rs servo/components/script/dom/bindings/js.rs >-index 975ddeda13b0..abfd9f47eff1 100644 >---- servo/components/script/dom/bindings/js.rs >-+++ servo/components/script/dom/bindings/js.rs >-@@ -469,7 +469,7 @@ impl RootCollection { >- /// Start tracking a stack-based root >- unsafe fn root(&self, untracked_reflector: *const Reflector) { >- debug_assert!(thread_state::get().is_script()); >-- let mut roots = &mut *self.roots.get(); >-+ let roots = &mut *self.roots.get(); >- roots.push(untracked_reflector); >- assert!(!(*untracked_reflector).get_jsobject().is_null()) >- } >-@@ -479,7 +479,7 @@ impl RootCollection { >- assert!(!tracked_reflector.is_null()); >- assert!(!(*tracked_reflector).get_jsobject().is_null()); >- debug_assert!(thread_state::get().is_script()); >-- let mut roots = &mut *self.roots.get(); >-+ let roots = &mut *self.roots.get(); >- match roots.iter().rposition(|r| *r == tracked_reflector) { >- Some(idx) => { >- roots.remove(idx); >-diff --git servo/components/script/dom/cssstyledeclaration.rs servo/components/script/dom/cssstyledeclaration.rs >-index 0732c9af9e45..ddf085b34913 100644 >---- servo/components/script/dom/cssstyledeclaration.rs >-+++ servo/components/script/dom/cssstyledeclaration.rs >-@@ -238,7 +238,7 @@ impl CSSStyleDeclaration { >- return Err(Error::NoModificationAllowed); >- } >- >-- self.owner.mutate_associated_block(|ref mut pdb, mut changed| { >-+ self.owner.mutate_associated_block(|pdb, changed| { >- if value.is_empty() { >- // Step 3 >- *changed = pdb.remove_property(&id); >-@@ -360,7 +360,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { >- _ => return Ok(()), >- }; >- >-- self.owner.mutate_associated_block(|ref mut pdb, mut changed| { >-+ self.owner.mutate_associated_block(|pdb, changed| { >- // Step 5 & 6 >- *changed = pdb.set_importance(&id, importance); >- }); >-@@ -388,7 +388,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { >- }; >- >- let mut string = String::new(); >-- self.owner.mutate_associated_block(|mut pdb, mut changed| { >-+ self.owner.mutate_associated_block(|pdb, changed| { >- pdb.property_value_to_css(&id, &mut string).unwrap(); >- *changed = pdb.remove_property(&id); >- }); >-@@ -438,7 +438,7 @@ impl CSSStyleDeclarationMethods for CSSStyleDeclaration { >- } >- >- let quirks_mode = window.Document().quirks_mode(); >-- self.owner.mutate_associated_block(|mut pdb, mut _changed| { >-+ self.owner.mutate_associated_block(|pdb, _changed| { >- // Step 3 >- *pdb = parse_style_attribute(&value, >- &self.owner.base_url(), >-diff --git servo/components/script/dom/cssstylerule.rs servo/components/script/dom/cssstylerule.rs >-index ea121ef900a9..12e9cdcc8694 100644 >---- servo/components/script/dom/cssstylerule.rs >-+++ servo/components/script/dom/cssstylerule.rs >-@@ -99,7 +99,7 @@ impl CSSStyleRuleMethods for CSSStyleRule { >- if let Ok(mut s) = SelectorList::parse(&parser, &mut css_parser) { >- // This mirrors what we do in CSSStyleOwner::mutate_associated_block. >- let mut guard = self.cssrule.shared_lock().write(); >-- let mut stylerule = self.stylerule.write_with(&mut guard); >-+ let stylerule = self.stylerule.write_with(&mut guard); >- mem::swap(&mut stylerule.selectors, &mut s); >- // It seems like we will want to avoid having to invalidate all >- // stylesheets eventually! >-diff --git servo/components/script/dom/document.rs servo/components/script/dom/document.rs >-index 90ea06fbe7b4..71bb02eaa364 100644 >---- servo/components/script/dom/document.rs >-+++ servo/components/script/dom/document.rs >-@@ -633,7 +633,7 @@ impl Document { >- // reset_form_owner_for_listeners -> reset_form_owner -> GetElementById >- { >- let mut id_map = self.id_map.borrow_mut(); >-- let mut elements = id_map.entry(id.clone()).or_insert(Vec::new()); >-+ let elements = id_map.entry(id.clone()).or_insert(Vec::new()); >- elements.insert_pre_order(element, root.r().upcast::<Node>()); >- } >- self.reset_form_owner_for_listeners(&id); >-@@ -642,7 +642,7 @@ impl Document { >- pub fn register_form_id_listener<T: ?Sized + FormControl>(&self, id: DOMString, listener: &T) { >- let mut map = self.form_id_listener_map.borrow_mut(); >- let listener = listener.to_element(); >-- let mut set = map.entry(Atom::from(id)).or_insert(HashSet::new()); >-+ let set = map.entry(Atom::from(id)).or_insert(HashSet::new()); >- set.insert(JS::from_ref(listener)); >- } >- >-@@ -1572,7 +1572,7 @@ impl Document { >- /// https://html.spec.whatwg.org/multipage/#dom-window-cancelanimationframe >- pub fn cancel_animation_frame(&self, ident: u32) { >- let mut list = self.animation_frame_list.borrow_mut(); >-- if let Some(mut pair) = list.iter_mut().find(|pair| pair.0 == ident) { >-+ if let Some(pair) = list.iter_mut().find(|pair| pair.0 == ident) { >- pair.1 = None; >- } >- } >-@@ -2399,7 +2399,7 @@ impl Document { >- if entry.snapshot.is_none() { >- entry.snapshot = Some(Snapshot::new(el.html_element_in_html_document())); >- } >-- let mut snapshot = entry.snapshot.as_mut().unwrap(); >-+ let snapshot = entry.snapshot.as_mut().unwrap(); >- if snapshot.state.is_none() { >- snapshot.state = Some(el.state()); >- } >-@@ -2426,7 +2426,7 @@ impl Document { >- entry.hint.insert(RESTYLE_SELF); >- } >- >-- let mut snapshot = entry.snapshot.as_mut().unwrap(); >-+ let snapshot = entry.snapshot.as_mut().unwrap(); >- if attr.local_name() == &local_name!("id") { >- snapshot.id_changed = true; >- } else if attr.local_name() == &local_name!("class") { >-@@ -4028,7 +4028,7 @@ impl PendingInOrderScriptVec { >- >- fn loaded(&self, element: &HTMLScriptElement, result: ScriptResult) { >- let mut scripts = self.scripts.borrow_mut(); >-- let mut entry = scripts.iter_mut().find(|entry| &*entry.element == element).unwrap(); >-+ let entry = scripts.iter_mut().find(|entry| &*entry.element == element).unwrap(); >- entry.loaded(result); >- } >- >-diff --git servo/components/script/dom/medialist.rs servo/components/script/dom/medialist.rs >-index 0064d0445095..ae20f5aa0422 100644 >---- servo/components/script/dom/medialist.rs >-+++ servo/components/script/dom/medialist.rs >-@@ -63,7 +63,7 @@ impl MediaListMethods for MediaList { >- // https://drafts.csswg.org/cssom/#dom-medialist-mediatext >- fn SetMediaText(&self, value: DOMString) { >- let mut guard = self.shared_lock().write(); >-- let mut media_queries = self.media_queries.write_with(&mut guard); >-+ let media_queries = self.media_queries.write_with(&mut guard); >- // Step 2 >- if value.is_empty() { >- // Step 1 >-@@ -154,7 +154,7 @@ impl MediaListMethods for MediaList { >- // Step 3 >- let m_serialized = m.unwrap().to_css_string(); >- let mut guard = self.shared_lock().write(); >-- let mut media_list = self.media_queries.write_with(&mut guard); >-+ let media_list = self.media_queries.write_with(&mut guard); >- let new_vec = media_list.media_queries.drain(..) >- .filter(|q| m_serialized != q.to_css_string()) >- .collect(); >-diff --git servo/components/script/dom/range.rs servo/components/script/dom/range.rs >-index fa849a0fc1a2..1e65caedc9dd 100644 >---- servo/components/script/dom/range.rs >-+++ servo/components/script/dom/range.rs >-@@ -1049,7 +1049,7 @@ impl WeakRangeVec { >- let offset = context.index(); >- let parent = context.parent; >- unsafe { >-- let mut ranges = &mut *self.cell.get(); >-+ let ranges = &mut *self.cell.get(); >- >- ranges.update(|entry| { >- let range = entry.root().unwrap(); >-@@ -1076,7 +1076,7 @@ impl WeakRangeVec { >- } >- >- unsafe { >-- let mut ranges = &mut *self.cell.get(); >-+ let ranges = &mut *self.cell.get(); >- >- ranges.update(|entry| { >- let range = entry.root().unwrap(); >-diff --git servo/components/script/dom/servoparser/async_html.rs servo/components/script/dom/servoparser/async_html.rs >-index 59411fda1c73..70d2008f49f6 100644 >---- servo/components/script/dom/servoparser/async_html.rs >-+++ servo/components/script/dom/servoparser/async_html.rs >-@@ -568,7 +568,7 @@ impl TreeSink for Sink { >- } >- let node = self.new_parse_node(); >- { >-- let mut data = self.get_parse_node_data_mut(&target.id); >-+ let data = self.get_parse_node_data_mut(&target.id); >- data.contents = Some(node.clone()); >- } >- self.send_op(ParseOperation::GetTemplateContents { target: target.id, contents: node.id }); >-@@ -596,7 +596,7 @@ impl TreeSink for Sink { >- let mut node = self.new_parse_node(); >- node.qual_name = Some(name.clone()); >- { >-- let mut node_data = self.get_parse_node_data_mut(&node.id); >-+ let node_data = self.get_parse_node_data_mut(&node.id); >- node_data.is_integration_point = html_attrs.iter() >- .any(|attr| { >- let attr_value = &String::from(attr.value.clone()); >-diff --git servo/components/script/dom/url.rs servo/components/script/dom/url.rs >-index a02a735638fc..41de4dcc0c72 100644 >---- servo/components/script/dom/url.rs >-+++ servo/components/script/dom/url.rs >-@@ -96,8 +96,8 @@ impl URL { >- >- // https://w3c.github.io/FileAPI/#dfn-createObjectURL >- pub fn CreateObjectURL(global: &GlobalScope, blob: &Blob) -> DOMString { >-- /// XXX: Second field is an unicode-serialized Origin, it is a temporary workaround >-- /// and should not be trusted. See issue https://github.com/servo/servo/issues/11722 >-+ // XXX: Second field is an unicode-serialized Origin, it is a temporary workaround >-+ // and should not be trusted. See issue https://github.com/servo/servo/issues/11722 >- let origin = get_blob_origin(&global.get_url()); >- >- let id = blob.get_blob_url_id(); >-diff --git servo/components/script/dom/vrdisplay.rs servo/components/script/dom/vrdisplay.rs >-index 3f73a577fad7..54f06fb928f2 100644 >---- servo/components/script/dom/vrdisplay.rs >-+++ servo/components/script/dom/vrdisplay.rs >-@@ -268,7 +268,7 @@ impl VRDisplayMethods for VRDisplay { >- fn CancelAnimationFrame(&self, handle: u32) { >- if self.presenting.get() { >- let mut list = self.raf_callback_list.borrow_mut(); >-- if let Some(mut pair) = list.iter_mut().find(|pair| pair.0 == handle) { >-+ if let Some(pair) = list.iter_mut().find(|pair| pair.0 == handle) { >- pair.1 = None; >- } >- } else { >-diff --git servo/components/script/dom/webglrenderingcontext.rs servo/components/script/dom/webglrenderingcontext.rs >-index 73d4ddba1b90..62c92b42785c 100644 >---- servo/components/script/dom/webglrenderingcontext.rs >-+++ servo/components/script/dom/webglrenderingcontext.rs >-@@ -2434,7 +2434,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { >- } >- >- typedarray!(in(cx) let mut pixels_data: ArrayBufferView = pixels); >-- let (array_type, mut data) = match { pixels_data.as_mut() } { >-+ let (array_type, data) = match { pixels_data.as_mut() } { >- Ok(data) => (data.get_array_type(), data.as_mut_slice()), >- Err(_) => return Err(Error::Type("Not an ArrayBufferView".to_owned())), >- }; >-diff --git servo/components/script/dom/xmlhttprequest.rs servo/components/script/dom/xmlhttprequest.rs >-index 6ed2dda1851f..e6652d79d706 100644 >---- servo/components/script/dom/xmlhttprequest.rs >-+++ servo/components/script/dom/xmlhttprequest.rs >-@@ -627,7 +627,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest { >- >- if !content_type_set { >- let ct = request.headers.get_mut::<ContentType>(); >-- if let Some(mut ct) = ct { >-+ if let Some(ct) = ct { >- if let Some(encoding) = encoding { >- for param in &mut (ct.0).2 { >- if param.0 == MimeAttr::Charset { >-diff --git servo/components/script/lib.rs servo/components/script/lib.rs >-index e1a1ab592cb7..5824d6f2e490 100644 >---- servo/components/script/lib.rs >-+++ servo/components/script/lib.rs >-@@ -9,7 +9,6 @@ >- #![feature(mpsc_select)] >- #![feature(nonzero)] >- #![feature(on_unimplemented)] >--#![feature(option_entry)] >- #![feature(plugin)] >- #![feature(proc_macro)] >- #![feature(stmt_expr_attributes)] >-diff --git servo/components/script_plugins/unrooted_must_root.rs servo/components/script_plugins/unrooted_must_root.rs >-index 5dbd2b1a3bdd..f3f5e60ab62a 100644 >---- servo/components/script_plugins/unrooted_must_root.rs >-+++ servo/components/script_plugins/unrooted_must_root.rs >-@@ -182,7 +182,7 @@ impl<'a, 'b, 'tcx> visit::Visitor<'tcx> for FnDefVisitor<'a, 'b, 'tcx> { >- } >- >- match expr.node { >-- /// Trait casts from #[must_root] types are not allowed >-+ // Trait casts from #[must_root] types are not allowed >- hir::ExprCast(ref subexpr, _) => require_rooted(cx, self.in_new_function, &*subexpr), >- // This catches assignments... the main point of this would be to catch mutable >- // references to `JS<T>`. >-@@ -206,13 +206,21 @@ impl<'a, 'b, 'tcx> visit::Visitor<'tcx> for FnDefVisitor<'a, 'b, 'tcx> { >- fn visit_pat(&mut self, pat: &'tcx hir::Pat) { >- let cx = self.cx; >- >-- if let hir::PatKind::Binding(hir::BindingMode::BindByValue(_), _, _, _) = pat.node { >-- let ty = cx.tables.pat_ty(pat); >-- if is_unrooted_ty(cx, ty, self.in_new_function) { >-- cx.span_lint(UNROOTED_MUST_ROOT, >-- pat.span, >-- &format!("Expression of type {:?} must be rooted", ty)) >-+ // We want to detect pattern bindings that move a value onto the stack. >-+ // When "default binding modes" https://github.com/rust-lang/rust/issues/42640 >-+ // are implemented, the `Unannotated` case could cause false-positives. >-+ // These should be fixable by adding an explicit `ref`. >-+ match pat.node { >-+ hir::PatKind::Binding(hir::BindingAnnotation::Unannotated, _, _, _) | >-+ hir::PatKind::Binding(hir::BindingAnnotation::Mutable, _, _, _) => { >-+ let ty = cx.tables.pat_ty(pat); >-+ if is_unrooted_ty(cx, ty, self.in_new_function) { >-+ cx.span_lint(UNROOTED_MUST_ROOT, >-+ pat.span, >-+ &format!("Expression of type {:?} must be rooted", ty)) >-+ } >- } >-+ _ => {} >- } >- >- visit::walk_pat(self, pat); >-diff --git servo/components/selectors/matching.rs servo/components/selectors/matching.rs >-index 7bd9814d26fb..8f6b2fa6aa54 100644 >---- servo/components/selectors/matching.rs >-+++ servo/components/selectors/matching.rs >-@@ -458,7 +458,7 @@ where >- /// Matches a complex selector. >- pub fn matches_complex_selector<E, F>(mut iter: SelectorIter<E::Impl>, >- element: &E, >-- mut context: &mut LocalMatchingContext<E::Impl>, >-+ context: &mut LocalMatchingContext<E::Impl>, >- flags_setter: &mut F) >- -> bool >- where E: Element, >-diff --git servo/components/selectors/parser.rs servo/components/selectors/parser.rs >-index 490399ce38ce..6b2c1f2b4e86 100644 >---- servo/components/selectors/parser.rs >-+++ servo/components/selectors/parser.rs >-@@ -1464,7 +1464,7 @@ fn parse_negation<'i, 't, P, E, Impl>(parser: &P, >- fn parse_compound_selector<'i, 't, P, E, Impl>( >- parser: &P, >- input: &mut CssParser<'i, 't>, >-- mut builder: &mut SelectorBuilder<Impl>) >-+ builder: &mut SelectorBuilder<Impl>) >- -> Result<bool, ParseError<'i, SelectorParseError<'i, E>>> >- where P: Parser<'i, Impl=Impl, Error=E>, Impl: SelectorImpl >- { >-diff --git servo/components/style/invalidation/element/invalidator.rs servo/components/style/invalidation/element/invalidator.rs >-index 848c5cd13dc8..b8510ba3169b 100644 >---- servo/components/style/invalidation/element/invalidator.rs >-+++ servo/components/style/invalidation/element/invalidator.rs >-@@ -154,7 +154,7 @@ impl<'a, 'b: 'a, E> TreeStyleInvalidator<'a, 'b, E> >- trace!(" > visitedness change, force subtree restyle"); >- // We can't just return here because there may also be attribute >- // changes as well that imply additional hints. >-- let mut data = self.data.as_mut().unwrap(); >-+ let data = self.data.as_mut().unwrap(); >- data.restyle.hint.insert(RestyleHint::restyle_subtree()); >- } >- >-diff --git servo/components/style/matching.rs servo/components/style/matching.rs >-index b62bc54bf768..f58d7cd123e6 100644 >---- servo/components/style/matching.rs >-+++ servo/components/style/matching.rs >-@@ -440,7 +440,7 @@ pub trait MatchMethods : TElement { >- fn finish_restyle( >- &self, >- context: &mut StyleContext<Self>, >-- mut data: &mut ElementData, >-+ data: &mut ElementData, >- mut new_styles: ElementStyles, >- important_rules_changed: bool, >- ) -> ChildCascadeRequirement { >-diff --git servo/components/style/properties/properties.mako.rs servo/components/style/properties/properties.mako.rs >-index d98e173db5ba..81ff00fb6d5e 100644 >---- servo/components/style/properties/properties.mako.rs >-+++ servo/components/style/properties/properties.mako.rs >-@@ -3364,7 +3364,7 @@ pub fn modify_border_style_for_inline_sides(style: &mut Arc<ComputedValues>, >- return; >- } >- } >-- let mut style = Arc::make_mut(style); >-+ let style = Arc::make_mut(style); >- let border = Arc::make_mut(&mut style.border); >- match side { >- PhysicalSide::Left => { >-diff --git servo/components/style/style_adjuster.rs servo/components/style/style_adjuster.rs >-index 366641ebe0bc..6e51fa74072a 100644 >---- servo/components/style/style_adjuster.rs >-+++ servo/components/style/style_adjuster.rs >-@@ -269,7 +269,7 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { >- >- if overflow_x != original_overflow_x || >- overflow_y != original_overflow_y { >-- let mut box_style = self.style.mutate_box(); >-+ let box_style = self.style.mutate_box(); >- box_style.set_overflow_x(overflow_x); >- box_style.set_overflow_y(overflow_y); >- } >-diff --git servo/components/style/style_resolver.rs servo/components/style/style_resolver.rs >-index cf512c4fbdd2..3fc1d57cc8f7 100644 >---- servo/components/style/style_resolver.rs >-+++ servo/components/style/style_resolver.rs >-@@ -247,7 +247,7 @@ where >- Some(&*primary_style.style) >- }; >- >-- for (i, mut inputs) in pseudo_array.iter_mut().enumerate() { >-+ for (i, inputs) in pseudo_array.iter_mut().enumerate() { >- if let Some(inputs) = inputs.take() { >- let pseudo = PseudoElement::from_eager_index(i); >- pseudo_styles.set( >-diff --git servo/components/style/stylesheets/rule_list.rs servo/components/style/stylesheets/rule_list.rs >-index 82e78015400d..14b3dc5e7696 100644 >---- servo/components/style/stylesheets/rule_list.rs >-+++ servo/components/style/stylesheets/rule_list.rs >-@@ -150,7 +150,7 @@ impl CssRulesHelpers for RawOffsetArc<Locked<CssRules>> { >- >- { >- let mut write_guard = lock.write(); >-- let mut rules = self.write_with(&mut write_guard); >-+ let rules = self.write_with(&mut write_guard); >- // Step 5 >- // Computes the maximum allowed parser state at a given index. >- let rev_state = rules.0.get(index).map_or(State::Body, CssRule::rule_state); >-diff --git servo/components/style/stylesheets/rule_parser.rs servo/components/style/stylesheets/rule_parser.rs >-index 007d7e11026e..f0d224e498a7 100644 >---- servo/components/style/stylesheets/rule_parser.rs >-+++ servo/components/style/stylesheets/rule_parser.rs >-@@ -209,7 +209,7 @@ impl<'a, 'i> AtRuleParser<'i> for TopLevelRuleParser<'a> { >- let id = register_namespace(&url) >- .map_err(|()| StyleParseError::UnspecifiedError)?; >- >-- let mut namespaces = self.namespaces.as_mut().unwrap(); >-+ let namespaces = self.namespaces.as_mut().unwrap(); >- >- let opt_prefix = if let Ok(prefix) = prefix_result { >- let prefix = Prefix::from(prefix.as_ref()); >-diff --git servo/components/style/stylesheets/rules_iterator.rs servo/components/style/stylesheets/rules_iterator.rs >-index 95a3ab8b3885..65e1b637ae52 100644 >---- servo/components/style/stylesheets/rules_iterator.rs >-+++ servo/components/style/stylesheets/rules_iterator.rs >-@@ -70,7 +70,7 @@ impl<'a, 'b, C> Iterator for RulesIterator<'a, 'b, C> >- >- let rule; >- let sub_iter = { >-- let mut nested_iter = self.stack.last_mut().unwrap(); >-+ let nested_iter = self.stack.last_mut().unwrap(); >- rule = match nested_iter.next() { >- Some(r) => r, >- None => { >-diff --git servo/components/webdriver_server/lib.rs servo/components/webdriver_server/lib.rs >-index bd2f667f9892..28a4885f0d41 100644 >---- servo/components/webdriver_server/lib.rs >-+++ servo/components/webdriver_server/lib.rs >-@@ -702,7 +702,7 @@ impl Handler { >- fn handle_set_timeouts(&mut self, >- parameters: &TimeoutsParameters) >- -> WebDriverResult<WebDriverResponse> { >-- let mut session = self.session >-+ let session = self.session >- .as_mut() >- .ok_or(WebDriverError::new(ErrorStatus::SessionNotCreated, ""))?; >- >-diff --git servo/rust-commit-hash servo/rust-commit-hash >-index d4f08fe97644..a08d23cd1a71 100644 >---- servo/rust-commit-hash >-+++ servo/rust-commit-hash >-@@ -1 +1 @@ >--599be0d18f4c6ddf36366d2a5a2ca6dc65886896 >-+13d94d5fa8129a34f5c77a1bcd76983f5aed2434 >-diff --git servo/tests/unit/style/stylist.rs servo/tests/unit/style/stylist.rs >-index da9a9478957a..52067b501788 100644 >---- servo/tests/unit/style/stylist.rs >-+++ servo/tests/unit/style/stylist.rs >-@@ -51,19 +51,6 @@ fn get_mock_rules(css_selectors: &[&str]) -> (Vec<Vec<Rule>>, SharedRwLock) { >- }).collect(), shared_lock) >- } >- >--fn get_mock_map(selectors: &[&str]) -> (SelectorMap<Rule>, SharedRwLock) { >-- let mut map = SelectorMap::<Rule>::new(); >-- let (selector_rules, shared_lock) = get_mock_rules(selectors); >-- >-- for rules in selector_rules.into_iter() { >-- for rule in rules.into_iter() { >-- map.insert(rule, QuirksMode::NoQuirks) >-- } >-- } >-- >-- (map, shared_lock) >--} >-- >- fn parse_selectors(selectors: &[&str]) -> Vec<Selector<SelectorImpl>> { >- selectors.iter() >- .map(|x| SelectorParser::parse_author_origin_no_namespace(x).unwrap().0 >diff --git a/www/firefox/files/patch-servo18126 b/www/firefox/files/patch-servo18126 >deleted file mode 100644 >index ec5e77ad94e0..000000000000 >--- a/www/firefox/files/patch-servo18126 >+++ /dev/null >@@ -1,232 +0,0 @@ >-commit f0acf27d189d >-Author: Simon Sapin <simon.sapin@exyr.org> >-Date: Thu Aug 17 11:05:32 2017 -0500 >- >- servo: Merge #18126 - geckolib: Fix some warnings (treated as error) new in Rust Nigthly (from servo:glow-fox); r=emilio >- >- Source-Repo: https://github.com/servo/servo >- Source-Revision: cc86ca2bcdec5e89ee5279085ea38db63ef41af9 >- >- --HG-- >- extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear >- extra : subtree_revision : 0586dbc81f1411c89821605a6dae4ebd0af8f0d5 >---- >- servo/components/style/gecko/conversions.rs | 2 +- >- servo/components/style/gecko/wrapper.rs | 2 +- >- .../style/gecko_bindings/sugar/ns_t_array.rs | 4 ++-- >- servo/components/style/properties/gecko.mako.rs | 18 +++++++++--------- >- servo/components/style/style_adjuster.rs | 4 ++-- >- servo/ports/geckolib/glue.rs | 12 ++++++------ >- 6 files changed, 21 insertions(+), 21 deletions(-) >- >-diff --git servo/components/style/gecko/conversions.rs servo/components/style/gecko/conversions.rs >-index 8f3fb6bf2d0f..51015997c5c1 100644 >---- servo/components/style/gecko/conversions.rs >-+++ servo/components/style/gecko/conversions.rs >-@@ -348,7 +348,7 @@ impl nsStyleImage { >- // NB: stops are guaranteed to be none in the gecko side by >- // default. >- >-- let mut gecko_stop = unsafe { >-+ let gecko_stop = unsafe { >- &mut (*gecko_gradient).mStops[index] >- }; >- let mut coord = nsStyleCoord::null(); >-diff --git servo/components/style/gecko/wrapper.rs servo/components/style/gecko/wrapper.rs >-index 034dd94590e2..c402ddaf15bd 100644 >---- servo/components/style/gecko/wrapper.rs >-+++ servo/components/style/gecko/wrapper.rs >-@@ -424,7 +424,7 @@ impl<'lb> GeckoXBLBinding<'lb> { >- } >- } >- >-- fn each_xbl_stylist<F>(self, mut f: &mut F) >-+ fn each_xbl_stylist<F>(self, f: &mut F) >- where >- F: FnMut(&Stylist), >- { >-diff --git servo/components/style/gecko_bindings/sugar/ns_t_array.rs servo/components/style/gecko_bindings/sugar/ns_t_array.rs >-index 6bc389702f54..068e10ddea1b 100644 >---- servo/components/style/gecko_bindings/sugar/ns_t_array.rs >-+++ servo/components/style/gecko_bindings/sugar/ns_t_array.rs >-@@ -90,7 +90,7 @@ impl<T> nsTArray<T> { >- // this can leak >- debug_assert!(len >= self.len() as u32); >- self.ensure_capacity(len as usize); >-- let mut header = self.header_mut(); >-+ let header = self.header_mut(); >- header.mLength = len; >- } >- >-@@ -99,7 +99,7 @@ impl<T> nsTArray<T> { >- /// This will not leak since it only works on POD types (and thus doesn't assert) >- pub unsafe fn set_len_pod(&mut self, len: u32) where T: Copy { >- self.ensure_capacity(len as usize); >-- let mut header = unsafe { self.header_mut() }; >-+ let header = unsafe { self.header_mut() }; >- header.mLength = len; >- } >- } >-diff --git servo/components/style/properties/gecko.mako.rs servo/components/style/properties/gecko.mako.rs >-index 9a2ab2135fc5..bc41ef139af5 100644 >---- servo/components/style/properties/gecko.mako.rs >-+++ servo/components/style/properties/gecko.mako.rs >-@@ -4136,14 +4136,14 @@ fn static_assert() { >- fn init_shadow(filter: &mut nsStyleFilter) -> &mut nsCSSShadowArray { >- unsafe { >- let ref mut union = filter.__bindgen_anon_1; >-- let mut shadow_array: &mut *mut nsCSSShadowArray = union.mDropShadow.as_mut(); >-+ let shadow_array: &mut *mut nsCSSShadowArray = union.mDropShadow.as_mut(); >- *shadow_array = Gecko_NewCSSShadowArray(1); >- >- &mut **shadow_array >- } >- } >- >-- let mut gecko_shadow = init_shadow(gecko_filter); >-+ let gecko_shadow = init_shadow(gecko_filter); >- gecko_shadow.mArray[0].set_from_simple_shadow(shadow); >- }, >- Url(ref url) => { >-@@ -4665,14 +4665,14 @@ fn static_assert() { >- unsafe { >- // We have to be very careful to avoid a copy here! >- let ref mut union = ${ident}.__bindgen_anon_1; >-- let mut shape: &mut *mut StyleBasicShape = union.mBasicShape.as_mut(); >-+ let shape: &mut *mut StyleBasicShape = union.mBasicShape.as_mut(); >- *shape = Gecko_NewBasicShape(ty); >- &mut **shape >- } >- } >- match servo_shape { >- BasicShape::Inset(inset) => { >-- let mut shape = init_shape(${ident}, StyleBasicShapeType::Inset); >-+ let shape = init_shape(${ident}, StyleBasicShapeType::Inset); >- unsafe { shape.mCoordinates.set_len(4) }; >- >- // set_len() can't call constructors, so the coordinates >-@@ -4694,7 +4694,7 @@ fn static_assert() { >- set_corners_from_radius(inset.round, &mut shape.mRadius); >- } >- BasicShape::Circle(circ) => { >-- let mut shape = init_shape(${ident}, StyleBasicShapeType::Circle); >-+ let shape = init_shape(${ident}, StyleBasicShapeType::Circle); >- unsafe { shape.mCoordinates.set_len(1) }; >- shape.mCoordinates[0].leaky_set_null(); >- circ.radius.to_gecko_style_coord(&mut shape.mCoordinates[0]); >-@@ -4702,7 +4702,7 @@ fn static_assert() { >- shape.mPosition = circ.position.into(); >- } >- BasicShape::Ellipse(el) => { >-- let mut shape = init_shape(${ident}, StyleBasicShapeType::Ellipse); >-+ let shape = init_shape(${ident}, StyleBasicShapeType::Ellipse); >- unsafe { shape.mCoordinates.set_len(2) }; >- shape.mCoordinates[0].leaky_set_null(); >- el.semiaxis_x.to_gecko_style_coord(&mut shape.mCoordinates[0]); >-@@ -4712,7 +4712,7 @@ fn static_assert() { >- shape.mPosition = el.position.into(); >- } >- BasicShape::Polygon(poly) => { >-- let mut shape = init_shape(${ident}, StyleBasicShapeType::Polygon); >-+ let shape = init_shape(${ident}, StyleBasicShapeType::Polygon); >- unsafe { >- shape.mCoordinates.set_len(poly.coordinates.len() as u32 * 2); >- } >-@@ -4797,7 +4797,7 @@ clip-path >- bindings::Gecko_nsStyleSVG_SetDashArrayLength(&mut self.gecko, v.len() as u32); >- } >- >-- for (mut gecko, servo) in self.gecko.mStrokeDasharray.iter_mut().zip(v) { >-+ for (gecko, servo) in self.gecko.mStrokeDasharray.iter_mut().zip(v) { >- match servo { >- Either::First(number) => gecko.set_value(CoordDataValue::Factor(number)), >- Either::Second(lop) => gecko.set(lop), >-@@ -4885,7 +4885,7 @@ clip-path >- } >- >- self.gecko.mContextPropsBits = 0; >-- for (mut gecko, servo) in self.gecko.mContextProps.iter_mut().zip(v) { >-+ for (gecko, servo) in self.gecko.mContextProps.iter_mut().zip(v) { >- if servo.0 == atom!("fill") { >- self.gecko.mContextPropsBits |= structs::NS_STYLE_CONTEXT_PROPERTY_FILL as u8; >- } else if servo.0 == atom!("stroke") { >-diff --git servo/components/style/style_adjuster.rs servo/components/style/style_adjuster.rs >-index 03b15916b237..366641ebe0bc 100644 >---- servo/components/style/style_adjuster.rs >-+++ servo/components/style/style_adjuster.rs >-@@ -167,7 +167,7 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { >- // When 'contain: paint', update overflow from 'visible' to 'clip'. >- if self.style.get_box().clone_contain().contains(contain::PAINT) { >- if self.style.get_box().clone_overflow_x() == overflow::visible { >-- let mut box_style = self.style.mutate_box(); >-+ let box_style = self.style.mutate_box(); >- box_style.set_overflow_x(overflow::_moz_hidden_unscrollable); >- box_style.set_overflow_y(overflow::_moz_hidden_unscrollable); >- } >-@@ -182,7 +182,7 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { >- use properties::longhands::font_style::computed_value::T as font_style; >- use properties::longhands::font_weight::computed_value::T as font_weight; >- if self.style.get_font().clone__moz_math_variant() != moz_math_variant::none { >-- let mut font_style = self.style.mutate_font(); >-+ let font_style = self.style.mutate_font(); >- // Sadly we don't have a nice name for the computed value >- // of "font-weight: normal". >- font_style.set_font_weight(font_weight::normal()); >-diff --git servo/ports/geckolib/glue.rs servo/ports/geckolib/glue.rs >-index 977728286fc3..fa09bee29553 100644 >---- servo/ports/geckolib/glue.rs >-+++ servo/ports/geckolib/glue.rs >-@@ -815,7 +815,7 @@ pub extern "C" fn Servo_StyleSet_AppendStyleSheet( >- ) { >- let global_style_data = &*GLOBAL_STYLE_DATA; >- let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut(); >-- let mut data = &mut *data; >-+ let data = &mut *data; >- let guard = global_style_data.shared_lock.read(); >- data.stylesheets.append_stylesheet( >- &data.stylist, >-@@ -867,7 +867,7 @@ pub extern "C" fn Servo_StyleSet_PrependStyleSheet( >- ) { >- let global_style_data = &*GLOBAL_STYLE_DATA; >- let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut(); >-- let mut data = &mut *data; >-+ let data = &mut *data; >- let guard = global_style_data.shared_lock.read(); >- data.stylesheets.prepend_stylesheet( >- &data.stylist, >-@@ -885,7 +885,7 @@ pub extern "C" fn Servo_StyleSet_InsertStyleSheetBefore( >- ) { >- let global_style_data = &*GLOBAL_STYLE_DATA; >- let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut(); >-- let mut data = &mut *data; >-+ let data = &mut *data; >- let guard = global_style_data.shared_lock.read(); >- data.stylesheets.insert_stylesheet_before( >- &data.stylist, >-@@ -903,7 +903,7 @@ pub extern "C" fn Servo_StyleSet_RemoveStyleSheet( >- ) { >- let global_style_data = &*GLOBAL_STYLE_DATA; >- let mut data = PerDocumentStyleData::from_ffi(raw_data).borrow_mut(); >-- let mut data = &mut *data; >-+ let data = &mut *data; >- let guard = global_style_data.shared_lock.read(); >- data.stylesheets.remove_stylesheet( >- &data.stylist, >-@@ -1274,7 +1274,7 @@ pub extern "C" fn Servo_StyleRule_GetSpecificityAtIndex( >- specificity: *mut u64 >- ) { >- read_locked_arc(rule, |rule: &StyleRule| { >-- let mut specificity = unsafe { specificity.as_mut().unwrap() }; >-+ let specificity = unsafe { specificity.as_mut().unwrap() }; >- let index = index as usize; >- if index >= rule.selectors.0.len() { >- *specificity = 0; >-@@ -2775,7 +2775,7 @@ pub extern "C" fn Servo_NoteExplicitHints(element: RawGeckoElementBorrowed, >- pub extern "C" fn Servo_TakeChangeHint(element: RawGeckoElementBorrowed, >- was_restyled: *mut bool) -> nsChangeHint >- { >-- let mut was_restyled = unsafe { was_restyled.as_mut().unwrap() }; >-+ let was_restyled = unsafe { was_restyled.as_mut().unwrap() }; >- let element = GeckoElement(element); >- >- let damage = match element.mutate_data() {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 222693
:
186805
|
186872
|
186941
|
187066
|
187135
|
187228
|
187315
|
187320
|
187407
|
187456
|
187510
|
187598
|
187676
|
187784
|
187810
|
187898
|
187925
|
187967